bruteforce – Finn Christiansen https://blogarchive.finnchristiansen.de Softwareentwickler mit einer Vorliebe für freie Software und GNU / Linux Sat, 08 Dec 2018 16:50:58 +0000 de-DE hourly 1 https://wordpress.org/?v=5.1.1 https://blogarchive.finnchristiansen.de/wp-content/uploads/2017/01/cropped-FinnsBlog512-32x32.png bruteforce – Finn Christiansen https://blogarchive.finnchristiansen.de 32 32 Brute Force Angriffe mit Fail2Ban abwehren https://blogarchive.finnchristiansen.de/2016/04/26/brute-force-angriffe-mit-fail2ban-abwehren/ https://blogarchive.finnchristiansen.de/2016/04/26/brute-force-angriffe-mit-fail2ban-abwehren/#comments Tue, 26 Apr 2016 16:47:29 +0000 https://www.finnchristiansen.de/?p=102 Continue reading ]]> Wie ich in einem vorherigen Beitrag ja bereits erwähnt hatte, ist eine (Software-) Firewall ein wichtiges Werkzeug, mit dem die Sicherheit eines Linux Servers erhöht werden kann. Problematisch sind aber Dienste, die generell für alle aus dem Internet verfügbar sein müssen, wie beispielsweise Mail- und Web-Dienste. Oft kann ein Angreifer tage- oder gar wochenlang automatisiert und systematisch Passwörter für beispielsweise einen SSH Zugang oder ein E-Mail Konto durchprobieren. Abhilfe schafft hier Fail2Ban, welches nach fehlerhaften Anmeldeversuchen in Log-Dateien sucht und bei einem Fund die entsprechende IP Adresse mit Hilfe der Firewall sperrt.

Installation

Unter Debian 8 Jessie ist die Installation leicht und es sind bereits ebenfalls viele nützliche Filter vorhanden:

# Installation
apt-get install fail2ban
# In das Konfigurationsverzeichnis wechseln
cd /etc/fail2ban
# Die Standard-Konfiguration jail.conf studieren
vim jail.conf
# oder mit more 
more jail.conf 
# jail.local für eigene Einstellungen im nächsten Schritt anlegen
touch jail.local

Konfiguration

Die Standard-Konfigurationsdatei jail.conf sollte aufgrund späterer Paketaktualisierungen nicht verändert werden, stattdessen wird eine jail.local angelegt, in der Parameter überschrieben und neue hinzugefügt werden können. Meine jail.local auf dem Mail-Server sieht so aus:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 3

[ssh-ddos]
enabled  = true
port     = ssh
filter   = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

[postfix]
enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix
logpath  = /var/log/mail.log

[dovecot]
enabled = true
port    = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter  = dovecot
logpath = /var/log/mail.log

Roundcube und Apache Filter

Wenn in 10 Minuten (findtime) 3 Zeilen mit fehlerhaften Login (maxretry) gefunden wurden, wird die entsprechende IP Adresse für einen Tag (bantime) blockiert. Auf dem Webserver verwende ich andere Regeln, u.a.:

[roundcube-auth]
enabled  = true
filter   = roundcube-auth
port     = http,https
logpath  = /var/log/apache2/webmail.pimux.de_access.log

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 6

Die Webmail Anwendung Roundcube läuft bei mir nicht auf dem Mail-, sondern auf dem etwas schnelleren Webserver, weshalb ich diese Regel an dieser Stelle verwende.

WordPress Filter

Auch für WordPress lässt sich ein Filter implementieren, allerdings ist die Log-Datei des Webservers nicht aussagekräftig genug. Deswegen muss für die jeweilige WordPress Installation noch das Plugin WP fail2ban installiert werden. Anschließend müssen die Zwei Filter-Dateien noch nach in das Fail2Ban Verzeichnis kopiert werden:

# Pfad zur Wordpress Installation muss natürlich entsprechend angepasst werden
cp /var/www/wordpress/wp-content/plugins/wp-fail2ban/wordpress-*.conf /etc/fail2ban/filter.d/

Nun müssen die Filter noch in der jail.local aktiviert werden:

[wordpress-hard]
enabled  = true
filter   = wordpress-hard
logpath  = /var/log/auth.log
port     = http,https
maxretry = 1

[wordpress-soft]
enabled  = true
filter   = wordpress-soft
logpath  = /var/log/auth.log
port     = http,https
maxretry = 3

Bedienung

Für die Bedienung von Fail2Ban kommt man mit wenigen Kommandos gut zurecht:

# Jails anzeigen
fail2ban-client status
# Den Status des Postfix Jails anzeigen (u.a. gesperrte IPs anzeigen)
fail2ban-client status postfix
# Eine IP des Postfix Jails entsperren
fail2ban-client set postfix unbanip 192.168.1.23

Wenn die Konfiguration erledigt ist, muss Fail2Ban noch einmal mit 

systemctl restart fail2ban
  neugestartet werden. Funde und Sperrungen kann man in der 
/var/log/fail2ban.log
  finden.

]]>
https://blogarchive.finnchristiansen.de/2016/04/26/brute-force-angriffe-mit-fail2ban-abwehren/feed/ 3