Hat man einen SSH-Server installiert und ist dieser auch vom Internet aus zu erreichen, so hat man eventuell ein mulmiges Gefühl bezüglich der Sicherheit. Den Dienst an sich zu missbrauchen ist schwer möglich. Aber gerade an einem Rechner mit mehreren Benutzeraccounts, hat man nicht die volle Kontrolle, so dass eventuell schwache Passwörter von Dritten genutzt werden.
So wäre es in der Theorie möglich, durch einen Brute-Force-Angriff einen Account mit einem gültigen Passwort zu treffen. Denn der SSH-Server selber ist sehr geduldig mit einem Angreifer. Dieser könnte über Stunden, Tage oder gar Wochen hinweg immer und immer wieder Accountnamen und Passwörter wiederholt austesten.
Hier kommt der kleine Dienst Fail2Ban ins Spiel. Versucht sich jemand per SSH einzuloggen und misslingt dieser Versuch, so trägt sshd — also der SSH-Server — dieses Ereignis in die Logdatei /var/log/auth.log
ein.
Oct 14 20:13:11 knecht sshd[25218]: Failed password for root from 192.168.0.251 port 43101 ssh2
Fail2Ban überwacht nun die auth.log
im Hintergrund und blockiert die Zugriff zum SSH-Server über iptables, falls der Zugriff per SSH über eine IP wiederholt scheitert. In der Datei /var/log/fail2ban.log
protokolliert Fail2Ban das Ereignis mit …
2006-10-14 20:13:12,132 INFO: SSH: 192.168.0.251 has 5 login failure(s). Banned. 2006-10-14 20:13:12,132 WARNING: SSH: Ban 192.168.0.251
Fail2Ban ist ist den Ubuntu Paketquellen (universe) vorhanden und kann direkt installiert werden. Hat man das Paket installiert, können man über die Konfigurationsdatei /etc/fail2ban.conf
noch Einstellungen vorgenommen werden. Aber eigentlich ist die Standardkonfiguration ausreichend. Hat man die fail2ban.conf geändert, so muss man den Dienst mit…
$ sudo /etc/init.d/fail2ban restart
…neu starten, damit die Änderungen eingelesen werden. Der Dienst ist gleich nach der Installation des Paketes aktiv und blockiert nach dem fünften vergeblichen Versuch einer IP sich einzuloggen den Zugriff dieser IP zum SSH-Server.
Auch denyhosts ist ein sehr schönes Skript zum Blocken.
Was aber bei mir am meisten geholfen hat ist das ändern des ports auf dem SSH lauscht.
Ich hab in meinem Blog das selbe Thema angesprochen allerdings wie man einen dummy User einrichtet und dann mit su auf root welchsel kann.
Ich nutze dazu auch DenyHosts.
Ganz praktisch und sehr einfach zu konfigurieren 🙂
Ja, DenyHosts geht natürlich auch, aber nicht „dynamisch“. D.h. du musst selber merken, dass von einer IP aus Schindluder getrieben wird.
So wie ich das sehe ist es sehr wohl dynamisch 🙂
Man kann über die Config bestimmten, dass eine IP beispielsweise nach 5 falschen SSH-Login Versuchen in die /etc/hosts.deny eingetragen wird.
Arbeitet fail2ban mit ufw zusammen oder brauche ich eine andere Firewall als die standard Ubuntu Firewall?
Jede ordentliche Firewall in Linux setzt nur iptables. Letztendlich ist ufw nur ein leichter bedienbares für ufw. Von daher, ja natürlich klappt das mit ufw.
Danke für den klasse Tipp. Mal sehen obs auch wirklich hilft?
Danke
ANO
12 Jahre spaeter ist der Artikel nicht so gut gealtert ^^
fail2ban hatte 2 kritische Sicherheitsluecken durch manipulierte usernames (fail2ban text logparser)
Besser ist einfach passwoerter (und root login) auszuschalten und nur key auth zuzulassen, da koennen angreifer dann ihre hundert milliarden versuchen machen ^_^