Ich betreibe zu Hause einen kleinen Homeserver. Die Arbeit erledigt eine kleine Asus Eeebox. Diesen administriere ich mit SSH. Von aussen ist er durch DynDNS erreichbar. Ich merkte anhand der Logfiles, dass sich viele auf meinem Server einloggen wollten. Das sieht so aus:
emanuel@eeebox:/var/log $ date Don Dez 24 14:21:05 CET 2009 emanuel@eeebox:/var/log $ grep "Failed password" auth.log | tail -5 Dec 24 14:19:37 eeebox sshd[18117]: Failed password for root from 61.130.246.111 port 54007 ssh2 Dec 24 14:19:42 eeebox sshd[18188]: Failed password for root from 61.130.246.111 port 54675 ssh2 Dec 24 14:19:46 eeebox sshd[18265]: Failed password for invalid user test from 61.130.246.111 port 55410 ssh2 Dec 24 14:19:51 eeebox sshd[18352]: Failed password for invalid user oracle from 61.130.246.111 port 56134 ssh2 Dec 24 14:19:56 eeebox sshd[18418]: Failed password for root from 61.130.246.111 port 56815 ssh2
Nun, wie kann ich mich schützen? Eine Lösung heisst “denyhosts” und wird unter Debian oder Ubuntu mit “sudo apt-get install denyhosts” installiert. Die Arbeit ist nun schon getan. Jetzt wird nach 5 Fehlversuchen die IP automatisch in die Datei “/etc/hosts.deny” geschrieben. Jetzt sehen wir die IP-Adresse, welche vorhin versucht hat meinen Server zu Bruteforcen:
emanuel@eeebox:~ $ grep sshd /etc/hosts.deny | tail -5 sshd: 188.36.106.177 sshd: 77.224.200.183 sshd: 59.44.177.234 sshd: 193.9.30.6 sshd: 61.130.246.111
Ich habe schon viele IP-Adressen in meiner Blacklist:
emanuel@eeebox:~ $ cat /etc/hosts.deny | grep sshd | wc -l 834
Gesperrte Einträge wieder entfernen
Es ist nicht ganz einfach gesperrte IP-Adresse wieder zuzulassen. Nötig ist das, wenn man sich selber rausssperrt. Das simple Löschen aus der Datei “/etc/hosts.deny” genügt leider nicht. Ich verzweifelte fast, aber folgendermassen kann man es machen:
Daemon stoppen:
emanuel@eeebox:~$ sudo /etc/init.d/denyhosts stop * Stopping DenyHosts denyhosts [ OK ]
Wo arbeitet denyhosts?
emanuel@eeebox:~ $ grep -E "^WORK_DIR" /etc/denyhosts.conf WORK_DIR = /var/lib/denyhosts
Dann öffnen wir alle Dateien in diesem Verzeichnis. Ich verwende den Editor vi (Hinweis: mit “:n” kann zur nächsten Datei gewechselt werden).
emanuel@eeebox:~$ vi /var/lib/denyhosts/*
Man löscht die gewünschte IP-Adresse
emanuel@eeebox:~$ vi /etc/hosts.deny
Und hier ebenfalls.
Jetzt ist man gegen Bruteforce-Angriffe geschützt.
Sehr cool ist überigens http://wiki.hetzner.de/index.php/Knockd
Der SSH-Port bleibt zu, bis man ein “geheimenes” Klopfzeichen auf die Ports schickt, so dass diese darauf hin geöffnet werden. Natürlich doof, wenn man das Klopf-Tool nicht zur Hand hat. Da hilft dann wohl nur eine andere Portnummer als den SSH-Standardport zu verwenden.
Schaute ich auch schon mal an, aber weil mit so ein Klopf-Tool häufig fehlt und ich nicht dem Tool nachrennen will, entschied ich mich gegen dieses Tool… Aber interessant ist es allemal!