[[:tux|{{ :linux.png?40|}}]] ===== Server Dienst Zugangskontrolle: fail2ban ===== Eine weitere Möglichkeit Brute Force Angriffe((http://de.wikipedia.org/wiki/Brute-Force-Methode)) auf einen Server zu unterbinden bietet >>fail2ban<<((http://en.wikipedia.org/wiki/Fail2ban))((http://www.fail2ban.org/wiki/index.php/Main_Page)). Hier wird ein anderer Ansatz beschrieben, wie man die IP Adresse des Angreifers wirksam blockieren kann. Im [[:tux:blockhosts|-> Blockhosts Tutorial]]((http://www.aczoom.com/)) wurde die Strategie verfolgt, die IP Adresse des Angreifers in der Datei >>/etc/hosts.{allow|deny}<< mit dem deny-Flag zu parken und somit vorübergehend den Zugang zum System zu verweigern. Das hat ein paar gravierende Nachteile, denn damit die >>/etc/Hosts.{allow|deny}<< ausgewertet wird, muss der Service entweder über einen TCP-Wrapper((http://en.wikipedia.org/wiki/TCP_Wrapper)) gestartet werden oder zumindest mit der >>libwrap<<((http://en.wikipedia.org/wiki/Libwrap)) Bibliothek verlinkt sein. >>fail2ban<< legt nun den Finger genau in die Wunde und erstellt statt einen Eintrag in der >>hosts.{allow|deny}<< eine dynamische Iptables-Regel((http://de.wikipedia.org/wiki/Iptables)), was den Angreifer bereits blockiert, bevor er den Dienst erreicht und dadurch System Ressourcen geschont werden, da der Angreifer erst gar nicht bis zum Login kommt. Der Vollständigkeit wegen sein noch erwähnt, dass auch Blockhosts in der Lage ist dynamische Iptables Regeln zu erstellen. ==== Iptables Paketfilter: ==== >>fail2ban<< wertet diverse Logfiles aus und erstellt dynamisch nach einer konfigurierbaren Anzahl fehlgeschlagener Anmeldeversuche Iptables-Regeln, welche die in Ungnade gefallene IP-Adresse für einen konfigurierbaren Zeitraum ins Nirvana routet. Iptables ist ein Paketfilter (Netfilter) welcher bei vielen Linux-Distributionen bereits im Standardumfang enthalten ist. Dieser Filter ist bereits aktiv, enthält jedoch erst mal keine Regeln. Mit dem Kommando >>iptables -L<< können Sie sich den derzeit aktuellen Regelsatz anzeigen lassen: # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination **Achtung:** Sollten Ihnen hier bereits Regel angezeigt werden, wurde der Paketfilter bereits konfiguriert. Sie sollten dann __unbedingt__ prüfen, inwieweit die von fail2ban verwendeten Regel-Mechanismen mit den bereits konfigurierten kollidieren! Nach der Installation von >>fail2ban<< wird dem Iptables Regelsatz eine neue Chain hinzugefügt: # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination RETURN all -- anywhere anywhere ==== Installation: ==== Die Installation auf einem Debian System ist gewohnt einfach: # aptitude install fail2ban ...und die Sache ist schon erledigt. >>fail2ban<< hat bereits out of the box eine "scharfe" Einstellung für den SSH Zugang des Systems. Sie müssen lediglich noch den ssh-Daemon neu starten und ab dann wird der SSH Zugang überwacht und ggf nach den fail2ban Default Einstellungen (3 fehlgeschlagene Anmeldeversuche; 10 Minuten) gesperrt. # /etc/init.d/ssh restart ==== Konfiguration: ==== Der Standardpfad für die Konfigurations-Dateien auf einem Debian System ist >>/etc/fail2ban/<<: /etc/fail2ban# tree . |-- action.d | |-- hostsdeny.conf | |-- ipfw.conf | |-- iptables-allports.conf | |-- iptables-multiport-log.conf | |-- iptables-multiport.conf | |-- iptables-new.conf | |-- iptables.conf | |-- mail-buffered.conf | |-- mail-whois-lines.conf | |-- mail-whois.conf | |-- mail.conf | |-- sendmail-buffered.conf | |-- sendmail-whois-lines.conf | |-- sendmail-whois.conf | |-- sendmail.conf | `-- shorewall.conf |-- fail2ban.conf |-- filter.d | |-- apache-auth.conf | |-- apache-badbots.conf | |-- apache-noscript.conf | |-- apache-overflows.conf | |-- common.conf | |-- courierlogin.conf | |-- couriersmtp.conf | |-- exim.conf | |-- gssftpd.conf | |-- named-refused.conf | |-- pam-generic.conf | |-- postfix.conf | |-- proftpd.conf | |-- pure-ftpd.conf | |-- qmail.conf | |-- sasl.conf | |-- sshd-ddos.conf | |-- sshd.conf | |-- vsftpd.conf | |-- webmin-auth.conf | |-- wuftpd.conf | `-- xinetd-fail.conf `-- jail.conf Jede >>.conf<< Datei kann mit einer >>.local<< Datei überschrieben werden. Zuerst wird die conf-Datei gelesen, danach die local-Datei (falls vorhanden), welche die Einstellungen der conf-Datei überschreibt. Die local-Dateien bleiben bei einem Update unangetastet, Sie sollten demnach Ihre persönlichen Einstellungen in den local-Dateien vornehmen. === Grundeinstellungen: === In der Datei >>fail2ban.conf<< werden die Grundeinstellungen für den fail2ban-server Daemon vorgenommen. Das beinhaltet zB den Loglevel, das fail2ban-Logfile und den Socket-Pfad. === Jails: ===