R
rentier-s
Guest
Hier geht es um die technischen Aspekte, nicht um Mutmaßungen über den Erfolg einer Anzeige. BTT bitte.
[general]
language=de
bindport=7010
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.255.0
;bindaddr = 80.xxx.yyyy.zzz ;nur wenn der Server direkt im Netz stehet
bindaddr=0.0.0.0
context = waehlplan
rtpkeepalive=5
externrefresh=180
useragent=portasipfriendly
allowguest=no
qualify=yes
insecure=port,invite
canreinvite=no
nat=yes ;wurde im internen Netz aktiviert 28.7
videosupport=yes
t38pt_udptl=yes
disallow=all
allow=ulaw
allow=g729
allow=gsm
allow=h263
allow=h264
tos_sip=cs3
tos_audio=ef
tos_video=af41
externip=xyz.dyndns.org
localnet=192.168.0.0/255.255.255.0
jbenable=yes
;jbforce=yes
;jbmaxsize=200
jbimpl=adaptive
;jbtargetextra=40
;jblog=yes
100/100 192.168.0.1 D N 7010 OK (73 ms)
101/101 46.xyz.xyz.xyz D N 5060 OK (73 ms)
Was ich aber etwas seltsam finde ist, in der sip.conf habe ich deny 0.0.0.0/0.0.0.0 und permit 192.168.0.0/255.255.255.0 wieso aber kann ich mich von meinem zweiten WAN port einlogen?
Wieso wird hier eigentlich das eine Telefon welches an einem anderen WAN hängt mit 5060 eingelogt und nich wie in der sip.conf eingestellt mit 7010
bis anhin:
[externL1]
exten => _[0123456].,1,Dial(SIP/${EXTEN}@Provider_out1)
neu so:
[externL1_portable]
exten => _8608[0123456].,1,Dial(SIP/${EXTEN}@Provider_out1)
fail2ban hat auch ssh support, kennst Du den?Erst hat er es via Brute Force gegen ssh mittels immer wechselden Ports und Usern versucht, zum Glück ohne Erfolg.
Welche Version von * und warum gab es keine Logmeldungen für fail2ban?Anschließend hat er verschiedene SIP User probiert. Asterisk hat es da natürlich mal wieder nicht geschafft die fake rejection zu senden.
Und als er dann einen getroffen hat, bekam ich nur einmal die Meldung:
- Wrong password
Direkt danach hat er sich alle CAPI Channel geschnappt, ohne das der Peer angemeldet gewesen wäre und konnte fleißig in allen Kontexten rumspielen.
Außerdem konnte er trotz dynamischer IP wiederkommen, das gibt so den Hauch von Insider Job...
<-- ab da hat er dann telefonieren können, und ja; das Log startet tatsächlich mit Call from extension, da hatte er vorher nichts anderes angeworfen, er hat zwar vorher direkt eine fake auth provoziert auf einen anderen Nutzernamen, aber das war es. Da hätte meine intrusion detection greifen müssen, hat sie aber nicht (ist eine pearl Lösung, die manchmal versagt), allerdings sind davor auch nur fünf verschiedene Nutzer die er probiert.[Feb 5 07:10:24] NOTICE[886] chan_sip.c: Call from 'anderernutzername' to extension '900972592581502' rejected because extension not found.
[Feb 5 07:19:46] NOTICE[886] chan_sip.c: Registration from '<sip:[email protected]>' failed for '37.8.16.175' - Wrong password
[Feb 5 07:20:00] NOTICE[886] chan_sip.c: Call from 'anderernutzername' to extension '900972592995047' rejected because extension not found.
[Feb 5 07:20:06] NOTICE[886] chan_sip.c: Registration from '<sip:[email protected]>' failed for '37.8.16.175' - Wrong password
[Feb 5 07:20:47] NOTICE[886] chan_sip.c: Registration from '<sip:[email protected]>' failed for '37.8.16.175' - Wrong password
[Feb 5 07:21:42] WARNING[4508] app_dial.c: Unable to create channel of type 'CAPI' (cause 44 - Requested channel not available)
...
[Feb 5 07:20:00] NOTICE[886] chan_sip.c: Call from 'anderernutzername' to extension '900972592995047' rejected because extension not found.
[general]
port=
bindport=
context=telefone
binaddr=0.0.0.0
disallow=all
allow=gsm
allow=ulaw
allow=alaw
localnet=192.168.x.x/255.255.255.0
externhost=unbekannt
externrefresh=10
nat=yes
insecure=invite
qualify=yes
allowguest=no
alwaysauthreject=yes
registerattempts=20
maxexpirey=240
defaultexpirey=240
;die peers sehen so aus
[peer]
type=friend
context=der eigentliche context mit den peers
secret=
host=dynamic
username=username
canreinvite=no
port=
dtmfmode=rfc2833
[default]
exten => _X.,1,Goto(vm-intro,${5000},1)
[telefone]
exten => _X.,1,Goto(vm-intro,${5000},1)
[der eigentliche context mit den peers]
;hier darf auch auf die capi channel zugegriffen werden
address: Palestinian Internet Services
address: P. O. BOX 5111 Gaza City, Palestine
[eintelefon-lokal]
...
contactdeny=0.0.0.0/0.0.0.0
contactpermit=10.0.0.0/255.255.0.0
call-limit=2
contactdeny=0.0.0.0/0.0.0.0
contactpermit=217.74.179.0/255.255.0.0
extenpatternmatchnew=no
context=INVALID
userscontext=default
[INVALID] ; Hier kommen Leute hin die nicht registrieren duerfen !
exten => s,1,Answer
exten => s,2,Playback(/var/www/ansagen/invalid1)
exten => s,3,Hangup()
[sondernummern] ; Sondernummern abfangen
exten => _0800.,1,Set(ZIELNR=${EXTEN})
exten => _0800.,n,Set(MIXMONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${EXTEN}-SONDERNUMMER-VON-${CALLERID(num)})
exten => _0800.,n,Monitor(wav,${MIXMONITOR_FILENAME},m)
exten => _0800.,n,Goto(sondernummern,s,1)
exten => _01[8-9].,1,Set(ZIELNR=${EXTEN})
exten => _01[8-9].,n,Set(MIXMONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${EXTEN}-SONDERNUMMER-VON-${CALLERID(num)})
exten => _01[8-9].,n,Monitor(wav,${MIXMONITOR_FILENAME},m)
exten => _01[8-9].,n,Goto(sondernummern,s,1)
exten => _0900.,1,Set(ZIELNR=${EXTEN})
exten => _0900.,n,Set(MIXMONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${EXTEN}-SONDERNUMMER-VON-${CALLERID(num)})
exten => _0900.,n,Monitor(wav,${MIXMONITOR_FILENAME},m)
exten => _0900.,n,Goto(sondernummern,s,1)
exten => s,1,NoOp()
exten => s,2,Set(NUMINVALID=0)
exten => s,3,Set(NUMTIMEOUTS=0)
exten => s,4,Background(/var/www/ansagen/international)
exten => s,5,Set(TIMEOUT(digit)=5)
exten => s,6,Set(TIMEOUT(response)=10)
exten => s,7,WaitExten(2)
exten => t,1,Set(NUMTIMEOUTS=$[${NUMTIMEOUTS}+1]})
exten => t,2,Gotoif($["${NUMTIMEOUTS}" < "2"]?:s,3)
exten => t,3,Background(vm-goodbye)
exten => t,4,Hangup()
exten => i,1,Set(NUMINVALID=$[${NUMINVALID}+1]})
exten => i,2,Gotoif($["${NUMINVALID}" < "2"]?:10)
exten => i,3,Background(invalid)
exten => i,4,Goto(s,3)
exten => i,10,Playback(vm-goodbye)
exten => i,11,Hangup()
exten => <die Zahl welche die Antwort ist>,1,Goto(isdn_ausgehend,${ZIELNR},1) ; Tippfehler oder int.Anruf (Ausland)
Guest Zugänge gibt es keine, nur die registrierten Peers kommen in den ausgehenden Kontext. In meinem default Kontext war er nie! Das war definitiv nicht der Angriffspunkt :evil:INVALID verhindert genau dieses Szenario welches hier anscheinend auftrat - invalid sieht dann so aus :
Das Problem besteht doch genau darin, dass Telefone nicht so gesichert werden können. Die liegen auf Rechnern oder hängen an ATAs hinter einfachen dynamsichen IPS. In meinem Fall ALLE.
Außerdem woher die Meldung wrong password, wenn er das genackt hätte?
[logfiles]
stefan.fehler.log => error
stefan.warnungen.log => warning
stefan.verbose.log => verbose,notice,warning,error
console => notice,warning,error
Laut logs hat er telefoniert ohne sich anzumelden, kann SIP ja.
alwaysauthreject=yes ; Wir lassen abgewiesene User nicht wissen DAS es diesen User mit falschem Pwd auch wirklich gibt..!
allowguest=no ; Allow or reject guest calls (default is yes)
Ist mir gestern Abend auch passiert. Einmal "wrong password" dann war er drin. Und die Passworte sind lang. Zum Glück hat er einen Peer erwischt, der Ausland ins "invalid" schickt. Und ich habe es zufällig zeitnah gesehen, so dass er keine anderen Peers testen konnte. Wie trifft man im zweiten Versuch ein 12-stelliges Passwort? Will mir nicht in den Kopf.Evt. muss ich aber das Ding doch noch schärfer stellen...
gesprächigeres Log
im zweiten Versuch ein 12-stelliges Passwort?
>> deny=ipv4,0.0.0.0
>> deny=ipv6,0::0 ; Just deny all IPv6, but allow IPv4
> You shouldn't have to specify "ipv4" or "ipv6" in the config file. It's
> easy to distinguish between the two types based on just the address itself.