Sicherheit · 6 min read · Dec 03, 2025
Verhindern von Brute-Force-Angriffen mit Fail2ban auf Mandriva 2008.1
Verhindern von Brute-Force-Angriffen mit Fail2ban auf Mandriva 2008.1
Version 1.0
Autor: Falko Timme
In diesem Artikel zeige ich, wie man fail2ban auf einem Mandriva 2008.1-System installiert und konfiguriert. Fail2ban ist ein Tool, das Anmeldeversuche für verschiedene Dienste, z.B. SSH, FTP, SMTP, Apache usw., überwacht, und wenn es wiederholt fehlgeschlagene Anmeldeversuche von derselben IP-Adresse oder demselben Host findet, stoppt fail2ban weitere Anmeldeversuche von dieser IP-Adresse/diesem Host, indem es sie mit einer iptables-Firewall-Regel blockiert.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktioniert!
1 Vorbemerkung
Fail2ban ist ähnlich wie DenyHosts, das ich in diesem Tutorial behandelt habe: https://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts, aber im Gegensatz zu DenyHosts, das sich auf SSH konzentriert, kann fail2ban so konfiguriert werden, dass es jeden Dienst überwacht, der Anmeldeversuche in eine Protokolldatei schreibt, und anstelle von /etc/hosts.deny nur zur Blockierung von IP-Adressen/Hosts kann fail2ban iptables und /etc/hosts.deny verwenden.
In diesem Beispiel werde ich fail2ban so konfigurieren, dass es Anmeldeversuche für den SSH-Server, den Proftpd-Server, Anmeldeversuche für .htaccess/.htpasswd-geschützte Websites, für Courier POP3 und Courier IMAP sowie für SASL (zum Versenden von E-Mails) überwacht. Ich werde das fail2ban-Paket installieren, das für Mandriva 2008.1 verfügbar ist. Es kommt mit einer Standardkonfiguration, aber leider funktioniert diese Konfiguration nicht ganz für die meisten der oben genannten Dienste. Daher werde ich eine angepasste fail2ban-Konfiguration erstellen, die ich getestet habe und die für mich funktioniert.
2 Installation von fail2ban
Bevor wir Pakete installieren, müssen wir die Repositories main, main_updates, contrib und contrib_updates aktivieren. Gehen Sie zu http://easyurpmi.zarb.org/ - es sollte Ihnen die Befehle geben, die Sie ausführen müssen, um diese Repositories zu aktivieren. In meinem Fall habe ich ausgeführt
urpmi.addmedia contrib ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/release with media_info/hdlist.czurpmi.addmedia --update contrib_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/updates with media_info/hdlist.czurpmi.addmedia main ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/release with media_info/hdlist.czurpmi.addmedia --update main_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/updates with media_info/hdlist.czFail2ban kann wie folgt installiert werden:
urpmi fail2banDann starten wir fail2ban:
/etc/init.d/fail2ban startSie finden alle fail2ban-Konfigurationsdateien im Verzeichnis /etc/fail2ban.
3 Konfiguration von fail2ban
Das Standardverhalten von fail2ban ist in der Datei /etc/fail2ban/jail.conf konfiguriert. Werfen Sie einen Blick darauf, es ist nicht schwer zu verstehen. Es gibt einen [DEFAULT]-Abschnitt, der für alle anderen Abschnitte gilt, es sei denn, die Standardoptionen werden in den anderen Abschnitten überschrieben.
Ich erkläre hier einige der Konfigurationsoptionen:
- ignoreip: Dies ist eine durch Leerzeichen getrennte Liste von IP-Adressen, die von fail2ban nicht blockiert werden können. Wenn der Computer, von dem Sie sich mit dem Server verbinden, eine statische IP-Adresse hat, möchten Sie ihn möglicherweise hier auflisten.
- bantime: Zeit in Sekunden, die ein Host blockiert ist, wenn er von fail2ban erfasst wurde (600 Sekunden = 10 Minuten).
- maxretry: Max. Anzahl der fehlgeschlagenen Anmeldeversuche, bevor ein Host von fail2ban blockiert wird.
- filter: Bezieht sich auf die entsprechende Filterdatei in /etc/fail2ban/filter.d.
- action: Bezieht sich auf die entsprechende Aktionsdatei in /etc/fail2ban/action.d.
- logpath: Die Protokolldatei, die fail2ban auf fehlgeschlagene Anmeldeversuche überprüft.
So sieht meine Datei /etc/fail2ban/jail.conf aus:
vi /etc/fail2ban/jail.conf| # Fail2Ban-Konfigurationsdatei # # Autor: Cyril Jaquier # # $Revision: 617 $ # # Die DEFAULT ermöglicht eine globale Definition der Optionen. Sie können in jeder Jail danach überschrieben werden. [DEFAULT] # "ignoreip" kann eine IP-Adresse, eine CIDR-Maske oder einen DNS-Host sein. Fail2ban wird keinen Host sperren, der mit einer Adresse in dieser Liste übereinstimmt. Mehrere Adressen können durch Leerzeichen getrennt definiert werden. ignoreip = 127.0.0.1 192.168.0.99 # "bantime" ist die Anzahl der Sekunden, die ein Host gesperrt ist. bantime = 600 # Ein Host wird gesperrt, wenn er während der letzten "findtime" Sekunden "maxretry" erzeugt hat. findtime = 600 # "maxretry" ist die Anzahl der Fehler, bevor ein Host gesperrt wird. maxretry = 3 # "backend" gibt das Backend an, das verwendet wird, um Dateiänderungen zu erhalten. Verfügbare Optionen sind "gamin", "polling" und "auto". Diese Option kann auch in jeder Jail überschrieben werden (verwenden Sie "gamin" für eine Jail und "polling" für eine andere). # # gamin: erfordert, dass Gamin (ein Dateiänderungsmonitor) installiert ist. Wenn Gamin nicht installiert ist, verwendet Fail2ban polling. # polling: verwendet einen Polling-Algorithmus, der keine externen Bibliotheken erfordert. # auto: wählt Gamin, wenn verfügbar, und polling andernfalls. backend = auto # Diese Jail entspricht der Standardkonfiguration in Fail2ban 0.6. # Die mail-whois-Aktion sendet eine Benachrichtigungs-E-Mail mit einer Whois-Anfrage im Text. [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, [email protected], [email protected]] logpath = /var/log/auth.log maxretry = 5 [proftpd-iptables] enabled = true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, [email protected]] logpath = /var/log/proftpd/proftpd.log maxretry = 6 [sasl-iptables] enabled = true filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, [email protected]] logpath = /var/log/mail/info.log [apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/log/httpd/*error_log maxretry = 6 [postfix-tcpwrapper] enabled = true filter = postfix action = hostsdeny sendmail[name=Postfix, [email protected]] logpath = /var/log/mail/info.log bantime = 300 [courierpop3] enabled = true port = pop3 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [courierimap] enabled = true port = imap2 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [ssh-tcpwrapper] enabled = false filter = sshd action = hostsdeny sendmail-whois[name=SSH, [email protected]] ignoreregex = for myuser from logpath = /var/log/auth.log [vsftpd-notification] enabled = false filter = vsftpd action = sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [vsftpd-iptables] enabled = false filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [apache-badbots] enabled = false filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, [email protected]] logpath = /var/www/*/logs/access_log bantime = 172800 maxretry = 1 [apache-shorewall] enabled = false filter = apache-noscript action = shorewall sendmail[name=Postfix, [email protected]] logpath = /var/log/apache2/error_log [ssh-ipfw] enabled = false filter = sshd action = ipfw[localhost=192.168.0.1] sendmail-whois[name="SSH,IPFW", [email protected]] logpath = /var/log/auth.log ignoreip = 168.192.0.1 [named-refused-udp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=udp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 [named-refused-tcp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=tcp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 |
Mein Client-Computer hat die statische IP-Adresse 192.168.0.99, und da ich nicht ausgesperrt werden möchte, habe ich sie zur ignoreip-Liste hinzugefügt.
Ich möchte die Anmeldeversuche für SSH, Apache, Proftpd, Courier-POP3, Courier-IMAP und Sasl überwachen, also habe ich enabled für diese Dienste auf true und für alle anderen Dienste auf false gesetzt. Bitte beachten Sie, dass einige Dienste wie SSH entweder durch iptables oder durch TCPWrappers (/etc/hosts.deny) blockiert werden können. Entscheiden Sie selbst, welche Methode Sie bevorzugen.
Stellen Sie sicher, dass Sie die E-Mail-Adresse [email protected] durch Ihre eigene E-Mail-Adresse ersetzen, damit Sie benachrichtigt werden, wenn jemand von fail2ban blockiert wird.
Wenn Sie die Datei mit der Standard-/etc/fail2ban/jail.conf vergleichen, werden Sie auch feststellen, dass ich einige Protokolldateien geändert habe, da die Protokolldateien in der Standard-/etc/fail2ban/jail.conf nicht korrekt für Mandriva 2008.1 sind.
Wann immer wir die fail2ban-Konfiguration ändern, müssen wir fail2ban neu starten, also machen wir das jetzt:
/etc/init.d/fail2ban restartDas war’s schon. Fail2ban protokolliert in /var/log/fail2ban.log, sodass Sie diese Datei überprüfen können, um herauszufinden, ob/welche Hosts blockiert wurden. Wenn ein Host von fail2ban blockiert wurde, sieht es so aus:
2008-08-12 17:49:09,466 fail2ban.actions: WARNING [apache-tcpwrapper] Ban 1.2.3.4
2008-08-12 18:08:33,213 fail2ban.actions: WARNING [sasl-iptables] Ban 1.2.3.4
2008-08-12 18:26:37,769 fail2ban.actions: WARNING [courierlogin] Ban 1.2.3.4
2008-08-12 18:39:06,765 fail2ban.actions: WARNING [courierimap] Ban 1.2.3.4Sie können auch Ihre Firewall überprüfen, um zu sehen, ob derzeit Hosts blockiert sind. Führen Sie einfach aus
iptables -LFür Dienste, die TCPWrappers verwenden, um Hosts zu blockieren, werfen Sie einen Blick auf /etc/hosts.deny.
Links
- Fail2ban: http://www.fail2ban.org
- Mandriva: http://www.mandriva.com
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.