Fail2ban

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten




Was ist Fail2Ban?

Fail2Ban durchsucht Logdateien wie /var/log/pwdfail oder /var/log/apache/error_log und blockt IP-Adressen, die zu viele fehlgeschlagene Loginversuche haben. Es aktualisiert Firewallregeln, um diese IP-Adressen zu sperren. Fail2Ban kann mehrere Logfiles lesen - beispielsweise die von sshd oder apache. Die IP-Adressen werden nach einer vorher festgelegten Zeitspanne wieder aktiviert.

fail2ban ist ein kleines Tool, welches unter Linux Logs durchsucht und bei bestimmten Inhalten entsprechende Aktionen ausführen kann. Es kann z.B. Spambots und Vulnerability Scanner dynamisch erkennen und aussperren. Das bringt einige Vorteile mit sich:

   * Logs können daran gehindert werden, durch Attacken Speicherplatz zu fressen bis keiner mehr da ist 
   * ScriptKidis können sich schön herrlich die Milchzähne an dem Server ausbeißen
   * Bots, die nach bekannten Sicherheitslücken suchen können leicht gesperrt werden.
   * Brutefoce-Attacken können leicht und automatisch geblockt werden.

Ist Fail2Ban freie Software?

Fail2Ban ist freie Software, Sie können sie unter den Bedingungen der GNU General Public License Version 2 oder optional jede neuere Version ändern oder weitergeben.

Wie interpretiere ich die Versionsnummer von Fail2Ban?

Die Struktur der Versionsnummer ist major.minor.revision. Die derzeitige major Version ist 0, die Richtlinie für minor ist wie folgt:

  • ungerade Zahlen (0.5, 0.7, etc) sind Entwicklerversionen
  • gerade Zahlen (0.6, 0.8, etc) sind stabile Versionen

Neue Versionen und Änderungen an der API werden in den Entwicklerversionen durchgeführt. Stabile Versionen beinhalten nur Security Updates und kleine Verbesserungen.

Revisionen sind benannt nach alpha, beta, release candidate und stable. Stabile Versionen mit einer geraden minor Versionsnummer heissen immer stable. Entwicklerversionen folgen dem Schema das sie zuerst alpha mit steigender Stabilität beta und kurz vor dem Release release candidate benannt werden.

Wo finde ich Hilfe, kann ein neues Feature beantragen oder einen Bug Report erstellen?

Die erste Anlaufstelle ist diese Seite. Lesen Sie die FAQ das Manual und die HOWTOs. Suchen Sie in den Archiven der Mailing Liste und des Bug Trackers. Wenn Sie keine Antwort gefunden haben registrieren Sie sich bei der Mailing Liste. Die Registrierung ist notwendig um Spam Probleme zu vermeiden.

Wenn Sie überzeugt davon sind einen neuen Bug gefunden zu haben können Sie ein neues Ticket unter anlegen.

Wenn Sie ein neues Feature vorschlagen möchten Erstellen Sie hier ein neues Ticket.

Stellen Sie bitte in beiden Fällen sicher, dass nicht bereits ein Ticket vorhanden ist das Ihren Anwendungsfall abdeckt.

In jedem Fall sollten sie die folgenden Informationen angeben:

  • Die Version von Fail2Ban die Sie benutzen (-V oder --version)
  • Die Python Version
  • Wie haben Sie Fail2Ban installiert (Sourcen, .deb, .rpm, etc)
  • Relevante Teile der Konfiguration von Fail2Ban
  • Logging Ausgabe von Fail2Ban unter Benutzung des DEBUG mode (-vvv und loglevel = 4)

Und natürlich eine genaue und klare Beschreibung des Problems.

fail2ban schützt vor Double Logins, Bad command" oder Signature failed und sperrt die IP von der es ausgeht über die Dauer eine frei definierbare Zeit. fail2ban überwacht das Logfile daemon.log und wird dannach aktiv.

Es ist erst mit diesen Einstellungen möglich ab Verision CCcam 2.1.2 oder höher. Hier im Thread gibt es auch Möglichkeiten für ältere Versionen.


Howto: fail2ban für CCcam installieren

Was ist fail2ban nicht?

Es ist kein Sicherheitstool! fail2ban ist ein kleines Teil im Puzzle und kann gewisse Grauzonen abdecken. Jedoch nie für Sicherheit in dem Sinne sorgen.


Installation der Software fail2ban:

apt-get install fail2ban -y


Bearbeiten von /etc/fail2ban/jail.conf und folgende Zeilen anfügen. Ggf. muss Port an den Port von eurem CCcam Server angepasst werden. Mit maxretry geben wir die Fehlversuche an. Nach diesen wird die IP via iptable Regel für eine halbe Stunde gesperrt. Diese Zeit können wir durch bantime anpassen. Die Angabe ist in Sekunden. 30 Minuten = 1800 Sekunden.


	
[cccam_signaturefailed] 
enabled = true 
port = 12000 
filter = cccam-signature 
logpath = /var/log/daemon.log 
bantime = 1800 
maxretry = 10 

[cccam_badcommand] 
enabled = 
true port = 12000 
filter = cccam-command
logpath = /var/log/daemon.log 
bantime = 1800 
maxretry = 10 

[cccam_doublelogin] 
enabled = true 
port = 12000 
ilter = cccam-login 
logpath = /var/log/daemon.log 
bantime = 1800 
maxretry = 10

maxretry = Fehlversuche die erlaubt sind, bevor die IP gebannt wird bantime = Bandauer - Angabe erfolgt in Sekunden Gegebenenfalls müsst Ihr noch den Port an euren CCcam Port anpassen.


Jetzt noch die drei Filter unter /etc/fail2ban/filter.d/ anlegen. Das könnt ihr mit eurem Lieblingseditor machen

cccam-signature.conf

	
# Fail2Ban configuration file 
# 
# Author: Cyril Jaquier 
# 
# $Revision: 510 $ 
# 
[Definition] 
# 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 = CCcam: kick <HOST>, signature failed 
# Option: ignoreregex 
# Notes.: regex to ignore. If this regex matches, the line is ignored. 
# Values: TEXT 
# 
ignoreregex =

cccam-login.conf

		
# Fail2Ban configuration file 
# 
# Author: Cyril Jaquier 
# 
# $Revision: 510 $ 
# 
[Definition]
# 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 = CCcam: double login .*, .* \(<HOST>\) 
# Option: ignoreregex 
# Notes.: regex to ignore. If this regex matches, the line is ignored. 
# Values: TEXT 
# 
ignoreregex =

cccam-command.conf

		
# Fail2Ban configuration file 
# 
# Author: Cyril Jaquier 
# 
# $Revision: 510 $ 
# 
[Definition] 
# 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 = CCcam: kick <HOST>.*, bad command 
# Option: ignoreregex 
# Notes.: regex to ignore. If this regex matches, the line is ignored. 
# Values: TEXT 
# 
ignoreregex =

Am Ende muss fail2ban noch durchgestartet werden.

/etc/init.d/fail2ban restart


Warnungen und Banvorgänge könnt ihr von nun an unter /var/log/fail2ban.log sehen. Sieht zum Beispiel dann so aus.

2009-08-04 15:30:19,863 fail2ban.actions: WARNING [cccam_signaturefailed] Ban 80.137.xxx.xxx
2009-08-04 15:32:09,002 fail2ban.actions: WARNING [cccam_signaturefailed] Unban 92.50.xxx.xxx
2009-08-04 15:33:26,104 fail2ban.actions: WARNING [cccam_signaturefailed] Ban 92.50.xxx.xxx
2009-08-04 15:38:51,471 fail2ban.actions: WARNING [cccam_badcommand] Unban 88.152.xxx.xxx
2009-08-04 15:42:38,764 fail2ban.actions: WARNING [cccam_badcommand] Ban 88.152.xxx.xxx
2009-08-04 16:00:20,017 fail2ban.actions: WARNING [cccam_signaturefailed] Unban 80.137.xxx.xxx
2009-08-04 16:03:26,240 fail2ban.actions: WARNING [cccam_signaturefailed] Unban 92.50.xxx.xxx
2009-08-04 16:04:15,312 fail2ban.actions: WARNING [cccam_signaturefailed] Ban 92.50.xxx.xxx


Quellenangaben und Links