Fail2ban

Aus Triopsi Wiki
Wechseln zu: Navigation, Suche

Fail2Ban ist ein nützliches Werkzeug, um in Logs nach verdächtige IP Adressen zu suchen um dann Aktionen, wie Sperren, auszulösen.

Installation

Um Fail2Ban installieren genügt es sich, das aktuelle Paket aus dem Repositories zu holen:

apt-get install fail2ban

Nun befindet sich ein Ordner im /etc/ Ordner namens fail2ban. Sie finden in diesem Ordner eine jail.cons unf einen Ordner namens filter.d. In der Jails werden Regeln definiert (Jails), um nach Suchmustern in den verschiedenen Logs zu suchen.

  • [NAME] - Name der Regel
  • enabled – Regel Aktivieren oder Deaktivieren (true/false)
  • findtime – Zeitraum in Sekunden
  • filter – Filter-Name aus gleichnamiger Datei (/etc/fail2ban/filter.d)
  • logpath – Logdateien für die Überwachung
  • maxretry – Anzahl der Treffer im findtime-Zeitraum
  • bantime – Zeitraum in Sekunden, für den geblockt wird (-1 = für immer)

Filter erstellen

im Ordner filter.d wird dann eine Datei erstellt. Diese Datei enthält dann das Suchmuster.

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
			SECURITY.* .*: SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[\d-]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d+",SessionID="0x[\da-f]+",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]+")?
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

Regeln Prüfen

Um Regeln zu überprüfen, benutzt man folgenden Befehl.

fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf

Starten/Stoppen

/etc/init.d/fail2ban restart|start|stop|reload

Log lesen

tail -f /var/log/fail2ban.log

Regeln Überprüfen

iptables -L -n