DenyHosts ist ein protokollbasiertes Intrusion Prevention-Sicherheitstool für SSH-Server, das in Python geschrieben ist. Es wurde entwickelt, um Brute-Force-Angriffe auf SSH-Server zu verhindern, indem es ungültige Anmeldeversuche im Authentifizierungsprotokoll überwacht und die Ursprungs-IP-Adressen mit /etc/hosts.deny und sbin/iptables auf dem Linux-Server blockiert. In diesem Tutorial erfahren Sie, wie Sie DenyHosts installieren, ein Python-Programm, das automatisch SSH-Angriffe blockiert, indem es Einträge zur Datei /etc/hosts.deny hinzufügt.
Das Tutorial wurde auf der Serverinstallation von Ubuntu 17.04 getestet.
1. Lassen Sie uns zuerst die Software installieren:
$ sudo apt-get install denyhosts
Code language: JavaScript (javascript)
2. Fügen Sie Ihre Adressen zu hosts.allow hinzu, um sicherzustellen, dass sie nicht blockiert werden.
sudo pico /etc/hosts.allow
Beispiel für das Hinzufügen von mehr als einer Adresse:
sshd: 212.22.112.113 , 10.20.133.3 , 192.168.0.1 , 127.0.0.1
Code language: CSS (css)
3. Lassen Sie uns nun die denyhosts-Konfigurationsdatei konfigurieren:
$ sudo pico /etc/denyhosts.conf
Make sure SECURE_LOG set as follows:
SECURE_LOG = /var/log/auth.log
HOSTS_DENY set as follows:
HOSTS_DENY = /etc/hosts.deny
Block only sshd:
BLOCK_SERVICE = sshd
Deny threshold limit for login attempts:
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
Block incoming connections using the Linux firewall IPTABLES:
IPTABLES = /sbin/iptables
Code language: PHP (php)
4. DenyHosts-Dienst AKTIVIEREN:
$ sudo systemctl enable denyhosts.service
Sie sehen etwa Folgendes:
Synchronisieren des Zustands von denyhosts.service mit SysV-Init mit /lib/systemd/systemd-sysv-install…Ausführen von /lib/systemd/systemd-sysv-install enable denyhosts
5. DenyHosts-Dienst neu starten:
sudo /etc/init.d/denyhosts restart
6. Einige Befehle, um zu überprüfen, ob alles funktioniert, und um Adressen aufzulisten, die zur Sperrliste hinzugefügt wurden:
$ sudo grep 'something' /var/log/denyhosts
$ sudo tail -f /var/log/denyhosts
$ sudo cat /etc/hosts.deny
sudo iptables -L INPUT -n -v | grep DROP
Code language: JavaScript (javascript)
Beachtung:
Bitte beachten Sie, dass DenyHosts auf Verbindungen mit IPv4 beschränkt ist. Es funktioniert nicht mit IPv6-basierten IP-Adressen. Eine weitere Option ist die Verwendung des Befehls iptables, um die blockierte IP-Adresse anzuzeigen:
Zentralisierte Synchronisierungsunterstützung aktivieren?
Die DenyHosts Version 2.0 und höher unterstützen eine zentralisierte Synchronisation, sodass Wiederholungstäter von vielen Computern blockiert werden. Die Seite xmlrpc.denyhosts.net sammelt Statistiken von Computern, auf denen die Software läuft. Die Synchronisierung ist standardmäßig deaktiviert. Um die Synchronisierung zu aktivieren, geben Sie Folgendes ein:
$ sudo pico /etc/denyhosts.conf
Fügen Sie dann hinzu:
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
Code language: JavaScript (javascript)
Und neu starten:
$ sudo /etc/init.d/denyhosts restart