Sicherheit: Mit DenyHosts SSL-Angriffe abwehren
Bisher habe ich zum Schutz von Diensten wie ssh
immer fail2ban
benutzt. Dieses wurde aber in letzter Zeit immer zickiger. Also habe ich mir mal denyhosts
angeschaut.
Ziel ist es einen Angreifer zu erkennen, und die Kommunikation einzustellen. Das Programm fail2ban
hat dies mit iptables
gemacht. Hat jemand x-Mal ein SSH-Kennwort falsch eingegeben wurde der Port für $zeit gesperrt.
Der Dienst denyhosts
arbeitet ähnlich ist aber noch etwas ausgefeilter. Die Kommunikation wird über die Datei /etc/hosts.deny
geregelt. Hierbei merkt sich denyhosts
, welche Hosts schon öfter aufgefallen sind. Sofern eine gewissen Schwelle überschritten wird bleibt der Eintrag für lange Zeit in der Datei bestehen. Somit werden Angreifer wirkungsvoll abgehalten.
Da denyhosts
immer nur den angegriffenen Port sperrt kann so auch niemand einen generellen DoS-Angriff gegen alle Dienste auslösen.
Im Gegensatz zu fail2ban
wehrt DenyHosts
nur Angriffe auf SSH ab. Über Umwege lassen sich wohl auch noch andere Dienste absichern, aber das geht mit fail2ban
deutlich einfacher.## Installation ##
apt-get install denyhosts
```## Konfiguration ##
Fertig. `denyhosts` ist nach der Installation sofort Einsatzbereit. Wer mag kann sich aber `/etc/denyhosts.conf` genauer ansehen.## Logs/E-Mail ##
Wie auch `fail2ban` kann auch `denyhosts` eine E-Mail versenden, falls eine IP geblockt wurde:
Added the following hosts to /etc/hosts.deny:
2.3.4.5 (s1.example.com) 5.4.3.2 (example.de)
Wird ein Host versehentlich gesperrt, so genügt es die IP aus der `/etc/hosts.deny` zu entfernen. Allerdings würde `denyhosts` die IPs beim nächsten Routinelauf wieder dort eintragen.
Daher sind noch einige weitere Schritte notwendig:
**Dienst anhalten**
/etc/init.d/denyhosts stop
**IP aus `/etc/hosts.deny` entfernen**
nano /etc/hosts.deny
**IP aus `denyhosts` entfernen**
cd /var/lib/denyhosts
Die IP muss aus allen der folgenden Dateien entfernt werden:
* hosts
* hosts-restricted
* hosts-root
* hosts-valid
* users-hosts
**Dienst starten**
/etc/init.d/denyhosts start