Fail2Ban - "Neuer Filter" für Asterisk

Alle Fragen, die rund um Fail2Ban (Konfiguration, Fehler, Filter...) sind.
Antworten
Hobbystern
Beiträge: 2
Registriert: 6. Nov 2015, 14:42

Fail2Ban - "Neuer Filter" für Asterisk

Beitrag von Hobbystern » 6. Nov 2015, 14:47

Hallo Gemeinde,

ich habe meinen Asterisken manuell verändert um auch nervige "Testanfragen" von Bots zu unterbinden, es wird versucht den Nutzernamen oder Nummer zu erraten um dann, bei der Antwort "Falsches Passwort" fröhlich die Passwörter abzuklappern.

Die Antwort, welche im Log erscheint ist diese:

Code: Alles auswählen

[2015-11-06 14:32:33] NOTICE[19362]: chan_sip.c:15103 handle_request_invite: Sending fake auth rejection for device '[b]HACKVERSUCH-NR[/b]<sip:[b]HACKVERSUCH-NR[/b]@[b]MEINE-IP[/b]>;tag=a1e1b9d0' to '[b]ANGREIFER-IP[/b]'
HACKVERSUCH-NR ist die Nummer des getesten Anschlusses
MEINE-IP ist meine öffentliche IP
ANGREIFER-IP ist die, welche wir nun ins Ban senden wollen.

Hat jemand für mich da einen Ansatz oder sogar eine fertige Lösung?

Grüsse, Stefan

Benutzeravatar
Martin
Beiträge: 400
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Re: Fail2Ban - "Neuer Filter" für Asterisk

Beitrag von Martin » 6. Nov 2015, 23:43

Hi,

also das erweitern des Regex um:

Code: Alles auswählen

failregex = xxxx original regex von default sip
                 NOTIC.*:.* handle_request_invite: Sending fake auth rejection for device .* to '[b]<HOST>[/b]'
Sollte darauf matchen. Am besten mit "fail2ban-regex $logs /etc/fail2ban/filter.d/sipxxx.conf" testen, ob der Regex funktioniert.
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

Hobbystern
Beiträge: 2
Registriert: 6. Nov 2015, 14:42

Re: Fail2Ban - "Neuer Filter" für Asterisk

Beitrag von Hobbystern » 9. Nov 2015, 00:45

Hey,

Danke für Deine Hilfe sei vorangestellt. Für mich sieht dieses "sed"-like pattern matching immer noch aus wie alt-hebräisch.. :-)

Also:

Sei angenommen, das hier steht voran, dann sieht die komplette Eintragung so aus - fett markiert ist unsere Zeile:

Code: Alles auswählen

__pid_re = (?:\[\d+\])

# All Asterisk log messages begin like this:
log_prefix= (?:NOTICE|SECURITY)%(__pid_re)s:?(?:\[C-[\da-f]*\])? \S+:\d*( in \w+:)?

failregex = ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Registration from '[^']*' failed for '<HOST>(:\d+)?' - (Wrong password|Username/auth name mismatch|No matching peer found|Not a loca$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Call from '[^']*' \(<HOST>:\d+\) to extension '\d+' rejected because extension not found in context 'default'\.$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed to authenticate as '[^']*'$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s No registration for peer '[^']*' \(from <HOST>\)$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed MD5 authentication for '[^']*' \([^)]+\)$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Failed to authenticate (user|device) [^@]+@<HOST>\S*$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s (?:handle_request_subscribe: )?Sending fake auth rejection for (device|user) \d*<sip:[^@]+@<HOST>>;tag=\w+\S*$ to '[^']*'
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[\d-]+",Severity="[\w]+",Service="[\w]$
            ^(%(__prefix_line)s|\[\]\s*WARNING%(__pid_re)s:?(?:\[C-[\da-f]*\])? )Ext\. s: "Rejecting unknown SIP connection from <HOST>"$
            ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Sending fake auth rejection for device .* to '<HOST>'
So sollte auch die Nachwelt etwas von dieser Lösung haben - ich muss sie nur noch testen ;)

EDIT:

Getestet und läuft einwandfrei. Die Testvariante war mir neu, aber eigentlich sehr einfach:

Code: Alles auswählen

|      194.63.143.70  Sun Nov 08 20:03:31 2015
|      194.63.143.70  Sun Nov 08 20:47:51 2015
2x Logfiles eingesetzt, 2 x IPs gefunden...

Tada.

Danke nochmals - Stefan

Antworten