Letztes Update: 2015/11/02 18:02 Fail2ban Fail2ban ist ein Dienst, welcher Logs überwacht und bei einer gewissen Anzahl von falschen Passworteingaben diesen Client über iptables bannt. Das bedeutet, jener Client kann für eine gewisse Zeit keine Verbindung mehr zum jeweiligen Dienst aufbauen. In der folgenden Anleitung wird die Konfiguration von Faail2ban mitsamt den Jails beschrieben. Softwarevoraussetzungen: Paketverwaltung Texteditor evtl. Mailserver Schwierigkeitsgrad: Mittel Ausgetestet mit folgenden Betriebssystemen: Ubuntu (Karmic, Lucid, Lucid++) Debian (Lenny, Squeeze) teilweise auch andere Distributionen Achtung! sudo: In dieser Anleitung verdeutlicht der Befehl sudo, dass die folgende Codezeile mit Root-Rechten ausgeführt werden muss. In normalen Ubuntu Installationen (Root-/VServer siehe Debian) kann dies durch den Befehl sudo erreicht werden. Bei Debian wird bei der Installation ein Passwort für den Root-Benutzer festgelegt, so kann man sich entweder direkt als Root oder als normaler Benutzer mit Eingabe von su als Root einloggen (Root-Passwort benötigt) sudo bleibt dann überflüssig! Installation Es wird nur das Paket fail2ban, so wie die Firewall iptables benötigt: user@server:~$ sudo apt-get install fail2ban iptables Konfiguration Die Konfiguration geschieht größtenteils in /etc/fail2ban/jail.local, in /etc/fail2ban/fail2ban.conf kann lediglich das loglevel eingestellt werden, was unter Umständen ganz praktisch ist. Standardeinstellungen Hinweis: In älteren Logcheck-Versione n (bzw. anderen Distributionen) müssen diese Einstellungen http://mein.homelinux.com/wiki/ 1 Gedruckt am 2016/10/08 15:02
Letztes Update: 2015/11/02 18:02 teilweise in /etc/fail2ban/f ail2ban.conf vorgenommen werden. Diese Einstellungen nimmt man in /etc/fail2ban/jail.local vor. Dazu kopiert man die Vorlage /etc/fail2ban/jail.conf wie von Fail2Ban vorgeschlagen nach jail.local und öffnet diese anschließend: user@server:~$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local user@server:~$ sudo nano /etc/fail2ban/jail.local IPs ignorieren Falls gewisse IP-Adressen nicht gebannt werden sollen können diese bei ignoreip eingetragen werden: ignoreip = 127.0.0.1 192.168.2.104 192.168.0.1/4 Beispiel Banzeit Diese kann man durch bantime (in Sekunden) definieren: bantime = 6000 Beispiel Benachrichtigung per E-Mail Die anzuschreibende Mailadresse im Falle eines gebannten Hosts wird bei destmail eingetragen destemail = root@localhost Beispiel Man kann zwischen drei verschiedenen Bannaktionen und Benachrichtigungen wählen: The simplest action to take: ban only action_ = %(banaction)s[name=%( name )s, port="%(port)s", protocol="%(protocol)s] ban & send an e-mail with whois report to the destemail. action_mw = %(banaction)s[name=%( name )s, port="%(port)s", protocol="%(protocol)s] %(mta)s-whois[name=%( name )s, dest="%(destemail)s", protocol="%(protocol)s] ban & send an e-mail with whois report and relevant log lines to the destemail. action_mwl = %(banaction)s[name=%( name )s, port="%(port)s", protocol="%(protocol)s] Gedruckt am 2016/10/08 15:02 2 http://mein.homelinux.com/wiki/
Letztes Update: 2015/11/02 18:02 %(mta)s-whois-lines[name=%( name )s, dest="%(destemail)s", logpath=%(logpath)s] Nachdem man sich für eine entschieden hat, trägt man eine Ausgesuchte in die Klammer ein. Hier Syntaxbeispiele: action = %(action_mwl)s Aktion action_mwl action = %(action_mw)s Aktion action_mw action = %(action_)s Aktion action_ Jails Auch diese Einstellungen nimmt man in /etc/fail2ban/jail.local vor. Jails sind für verschiedene Dienste zuständig, beim aktivieren überwachen sie die Logs, der jeweiligen Dienste. Dazu setzt man die jeweilige Jail bei enabled von false: [Beispiel] port = Port filter = Filter logpath = einlog.log auf true: [Beispiel] port = Port filter = Filter logpath = einlog.log Die jeweiligen Jails sind gut kommentiert. Man sollte diejenigen aktivieren, die Dienste schützen, die auf der jew. Maschine laufen. Hier eine Übersicht über die Standard Jails (stehen in der /etc/fail2ban/jail.local): SSH Jail [ssh] port = ssh filter = sshd logpath = /var/log/auth.log PAM Jail -> Vorsicht alle Ports werden gebannt! [pam-generic] http://mein.homelinux.com/wiki/ 3 Gedruckt am 2016/10/08 15:02
Letztes Update: 2015/11/02 18:02 pam-generic filter can be customized to monitor specific subset of 'tty's filter = pam-generic port actually must be irrelevant but lets leave it all for some possible uses port = all banaction = iptables-allports port = anyport logpath = /var/log/auth.log Xinetd Jail -> auch hier werden alle Ports gebannt [xinetd-fail] filter = xinetd-fail port = all banaction = iptables-multiport-log logpath = /var/log/daemon.log maxretry = 2 nochmalige Sicherung für ssh [ssh-ddos] port = ssh filter = sshd-ddos logpath = /var/log/auth.log HTTP servers verschiedene Apache Jails, können alle aktiviert werden, aber trotzdem testen! [apache] port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log [apache-multiport] port = http,https filter = apache-auth Gedruckt am 2016/10/08 15:02 4 http://mein.homelinux.com/wiki/
Letztes Update: 2015/11/02 18:02 logpath = /var/log/apache*/*error.log [apache-noscript] port = http,https filter = apache-noscript logpath = /var/log/apache*/*error.log [apache-overflows] port = http,https filter = apache-overflows logpath = /var/log/apache*/*error.log maxretry = 2 FTP servers Jail für vsftpd [vsftpd] port = ftp,ftp-data,ftps,ftps-data filter = vsftpd logpath = /var/log/vsftpd.log or overwrite it in jails.local to be logpath = /var/log/auth.log if you want to rely on PAM failed login attempts vsftpd's failregex should match both of those formats Jail für proftpd [proftd] port = ftp,ftp-data,ftps,ftps-data filter = proftpd logpath = /var/log/proftpd/proftpd.log wuftpd [wuftpd] port = ftp,ftp-data,ftps,ftps-data http://mein.homelinux.com/wiki/ 5 Gedruckt am 2016/10/08 15:02
Letztes Update: 2015/11/02 18:02 filter = wuftpd logpath = /var/log/auth.log Mail servers Jail für postfix [postfix] port = smtp,ssmtp filter = postfix logpath = /var/log/mail.log Jail für couriersmtp [couriersmtp] port = smtp,ssmtp filter = couriersmtp logpath = /var/log/mail.log Jail für courierauth [courierauth] port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s filter = courierlogin logpath = /var/log/mail.log SASL Jail [sasl] port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s filter = sasl You might consider monitoring /var/log/warn.log instead if you are running postfix. See http://bugs.debian.org/507990 logpath = /var/log/mail.log logpath = /var/log/warn.log weitere Dinste [named-refused-udp] Gedruckt am 2016/10/08 15:02 6 http://mein.homelinux.com/wiki/
Letztes Update: 2015/11/02 18:02 port = domain,953 protocol = udp filter = named-refused logpath = /var/log/named/security.log [named-refused-tcp] port = domain,953 protocol = tcp filter = named-refused logpath = /var/log/named/security.log Fail2ban neustarten Nach jeder Konfigurationsänderung muss Fai2ban neugestartet weren. Dies geschieht so: user@server:~$ sudo service fail2ban restart Geblockte IPs wieder freischalten Siehe auch hier und hier. Folgender Befehl gibt den Befehl zurück, mit dem dann die IP entblockt werden kann: user@server:~$ sudo fail2ban-client get JAIL actionunban iptables-multiport JAIL durch den passenden Jail ersetzen Für den Jail apache ergibt sich folgende Ausgabe: user@server:~$ sudo fail2ban-client get apache actionunban iptables-multiport iptables -D fail2ban-<name> -s <ip> -j DROP Mit wird der wieder der Jail (hier: apache) bezeichnet. Somit kann man den Client mit der IP wie folgt entsperren: user@server:~$ sudo iptables -D fail2ban-apache -s <ip> -j DROP chrisge 2015/11/02 18:02 From: http://mein.homelinux.com/wiki/ - mein.homelinux.com Wiki http://mein.homelinux.com/wiki/ 7 Gedruckt am 2016/10/08 15:02
Letztes Update: 2015/11/02 18:02 Permanent link: Last update: 2015/11/02 18:02 Gedruckt am 2016/10/08 15:02 8 http://mein.homelinux.com/wiki/