[Problem] Neue Hackversuche - fail2ban muss angepasst werden.

Mathias-R

Neuer User
Mitglied seit
20 Jul 2005
Beiträge
165
Punkte für Reaktionen
1
Punkte
18
Hallo,

seit einiger Zeit bemerke ich neue Einträge in meinen Logs (für eine eigene IP 80.90.100.110):
Code:
[Feb 18 08:47:29] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T08:47:29.410+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x220de78",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/89.163.146.220/5071",Challenge="526e7f2d"
[Feb 18 09:10:45] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T09:10:45.010+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x284cf88",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/89.163.146.220/5077",Challenge="42937e32"
[Feb 18 09:37:25] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T09:37:25.794+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x220de78",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/89.163.146.220/5091",Challenge="119e7358"
[Feb 18 10:04:11] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T10:04:11.565+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x27f2348",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/89.163.146.220/5071",Challenge="1e9e37ba"
[Feb 18 10:31:04] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T10:31:04.944+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x2927448",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/89.163.146.220/5071",Challenge="683f95a1"
Asterisk gibt leider keine Fehlermeldungen für diese Fehlversuche aus.
Das Problem daran ist, dass auch eine korrekte Registrierung ähnliche Zeilen erzeugt:
Code:
[Feb 18 11:44:21] SECURITY[29418] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="2016-02-18T11:44:21.424+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="<AccountName>",SessionID="0x2a3b728",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/217.244.100.200/7888",Challenge="3a722cc3"
[Feb 18 11:44:21] SECURITY[29418] res_security_log.c: SecurityEvent="SuccessfulAuth",EventTV="2016-02-18T11:44:21.463+0100",Severity="Informational",Service="SIP",EventVersion="1",AccountID="<AccountName>",SessionID="0x2a3b728",LocalAddress="IPV4/UDP/80.90.100.110/5060",RemoteAddress="IPV4/UDP/217.244.100.200/7888",UsingPassword="1"
[Feb 18 11:44:21] NOTICE[29408] chan_sip.c: Received SIP subscribe for peer without mailbox: <AccountName>
Da fail2ban nicht die Folgezeile berücksichtigen kann erkennt man die Einträge nur daran, dass die AccountID unbekannt ist und meist auf "@80.90.100.110" endet oder der Häufigkeit der Anfragen.

Zur Abwehr ist also noch eine Erweiterung der asterisk.conf im fail2ban erforderlich.

Gruß,
Mathias
 
Zuletzt bearbeitet:
was für eine Erweiterung der asterisk.conf würdest du vorschlagen ?
Gruß Rene
 
Könnte man nicht über die Rufnummer/Account-Namen filtern?
Wenn also versucht wird, über eine nicht vergebene User-ID anzumelden, wird ein Ereignis ausgelöst.

Könnte man, zu Sicherheit, auch erst zuschlagen lassen, wenn eine bestimmte Anzahl in x Minuten zusammengekommen ist.
 
Hallo,

Vorschlag zur Erweiterung der /etc/fail2ban/filter.d/asterisk.conf

Code:
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="ChallengeSent",EventTV="[^"]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="(sip:[^"]+@[\da-fA-F:.]+|\<unknown\>)",SessionID="[\da-fx]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+",Challenge="\w*"

In Anlehnung an die Zeile aus der aktuellen Datei.
Bei mir muss auch eine Zeile in der Original-Datei geändert werden, damit sie arbeitet:
Code:
 ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[^"]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d*",SessionID="[\da-fx]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+"(,Challenge="\w+",ReceivedChallenge="\w*")?(,ReceivedHash="[\da-f]+")?(,ACLName="\w+")?$

Wichtig:

In /etc/asterisk/logger.conf das Logging einschalten:

messages => security,notice,warning,error,verbose

Sofern man eine klare Syntax für berechtigte Account-Namen hat kann man den Filter sicher noch verfeinern.
Aber vorher prüfen, dass man keine korrekten Peers mit aussperrt.
Code:
fail2ban-regex /var/log/asterisk/messages /etc/fail2ban/filter.d/asterisk.conf

MfG Mathias
 
Zuletzt bearbeitet:
  • Like
Reaktionen: lorn10
Hallo,
i
Ich habe neuerdingd login-Versuche mit einer IP in der AccountID. Ich möchte alles Filtern mit einem @ in der AccountID.

Also z.B. sowas:
Code:
[2018-07-15 13:11:20] SECURITY[7686] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="1531653080-478749",Severity="Informational",Service="SIP",EventVersion="1",AccountID="sip:[email protected]",SessionID="0x7fdb60069648",LocalAddress="IPV4/UDP/95.141.xx.xx/5060",RemoteAddress="IPV4/UDP/216.244.78.82/5070",Challenge="2bd48a3d"

Da die Fritzboxen sich nur so registrieren:
Code:
[2018-07-15 13:14:34] SECURITY[7686] res_security_log.c: SecurityEvent="ChallengeSent",EventTV="1531653274-330726",Severity="Informational",Service="SIP",EventVersion="1",AccountID="202",SessionID="0x7fdb6002aa38",LocalAddress="IPV4/UDP/95.141.xx.xx/5060",RemoteAddress="IPV4/UDP/213.220.xx.xx/63597",Challenge="0619dfc3"
dürfte der "Verlust" gering sein.

Hat jemand einen passenden Filter?

//edit by stoney: [CODE] TAGs [/CODE] gesetzt[/COLOR][/SIZE]
 
Zuletzt bearbeitet von einem Moderator:
Bin etwas spät dran, - sorry. Wie auch immer, vielen Dank für diese sehr interessanten Code Beispiele. :)

Kann bestätigen, folgender Code scheint (jedenfalls teilweise) zu funktionieren:

Code:
 ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[^"]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d*",SessionID="[\da-fx]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+"(,Challenge="\w+",ReceivedChallenge="\w*")?(,ReceivedHash="[\da-f]+")?(,ACLName="\w+")?$

Hoffe ich hab den richtigen erwischt, - der originale Beitrag hat mich etwas überfordert.... ;)

Verwende momentan noch eine relativ betagte 11er Version von Asterisk (in FreePBX 2.11).

Zuerst habe ich die asterisk.conf als asterisk-challengesent.conf dupliziert. Dann alle bestehenden failregex (in der asterisk-challengesent.conf) gelöscht und den oben stehenden Code eingesetzt.

(In meinem Fall musste kein Logging aktiviert werden.)

Im Anschluss habe ich dann nur noch einen neuen Filter "asterisk-challengesent" in der fail2ban jail.local erstellt:

Code:
[asterisk-challengesent]

enabled = true
filter = asterisk-challengesent
action = iptables-allports[name=SIP, protocol=all]
logpath = /var/log/asterisk/fail2ban

Gegebenenfalls würde es noch Sinn ergeben gleich alle fail2ban logs einzubeziehen. Dann müsste der Logpath wohl folgendermassen lauten:

Code:
logpath = /var/log/asterisk/fail2ban*

Auf diese Weise bleibt die originale asterisk.conf Datei unberührt. Das war mir wichtig....;)
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.