SSH: Brute-Force-Angriffe reduzieren
Verfasst: 27.12.2012, 23:20
Was bedeutet "Brute-Force"?
"Brute Force" übersetzt bedeutet "rohe Gewalt". Im Fall von SSH sind damit Login-Versuche von Möchtegern-Hackern über Wörterbücher gemeint (sowohl für das Passwort, als auch für den Benutzernamen).
Wie stelle ich einen solchen Angriff fest?
Alle Verbindungsversuche über SSH werden in der Datei "/var/log/auth.log" gespeichert.
Wie sichere ich meinen Server gegen einen solchen Angriff ab?
Am Besten sichert man einen SSH-Server ab, indem man dem Benutzer "root" das Login verweigert und einen speziellen Nutzer, ohne root-Rechte, verwendet. Darüber hinaus sollte man statt eines Passworts, rsa-Schlüssel verwenden. Zu guter Letzt sollte man dann die Firewall (iptables) so konfigurieren, dass lediglich bestimmte IP-Adressen überhaupt Zugriff auf den Server bekommen.
Nun gibt es allerdings auch Fälle, bei denen der Administrator ständig seinen Standort wechselt und somit auch wechselnde IP-Adressen hat und auch nicht überall seinen RSA-Schlüssel dabei hat. In solchen Fällen kann man eben nicht einfach die Firewall nur für bestimmte IP-Adressen freischalten, bzw. die Authentifizierung über Passwörter generell deaktivieren.
Für solche Szenarien bietet es sich an, die Verbindungsversuche zu einem SSH-Server zumindest einzuschränken. Kurz gesagt: Eine bestimmte IP darf sich innerhalb eines bestimmten Zeitraumes nur x-Mal am Server anmelden. Das realisiert man mit iptable-rules:
Im folgenden Beispiel wird die IP-Adresse eines Users (potenzieller Angreifer) nach 3 Verbindungsversuchen für 5 Minuten auf eine Blacklist gesetzt (der SSH-Server ist in dieser Zeit für die geblacklistete IP-Adresse nicht mehr erreichbar):
"Brute Force" übersetzt bedeutet "rohe Gewalt". Im Fall von SSH sind damit Login-Versuche von Möchtegern-Hackern über Wörterbücher gemeint (sowohl für das Passwort, als auch für den Benutzernamen).
Wie stelle ich einen solchen Angriff fest?
Alle Verbindungsversuche über SSH werden in der Datei "/var/log/auth.log" gespeichert.
Wie sichere ich meinen Server gegen einen solchen Angriff ab?
Am Besten sichert man einen SSH-Server ab, indem man dem Benutzer "root" das Login verweigert und einen speziellen Nutzer, ohne root-Rechte, verwendet. Darüber hinaus sollte man statt eines Passworts, rsa-Schlüssel verwenden. Zu guter Letzt sollte man dann die Firewall (iptables) so konfigurieren, dass lediglich bestimmte IP-Adressen überhaupt Zugriff auf den Server bekommen.
Nun gibt es allerdings auch Fälle, bei denen der Administrator ständig seinen Standort wechselt und somit auch wechselnde IP-Adressen hat und auch nicht überall seinen RSA-Schlüssel dabei hat. In solchen Fällen kann man eben nicht einfach die Firewall nur für bestimmte IP-Adressen freischalten, bzw. die Authentifizierung über Passwörter generell deaktivieren.
Für solche Szenarien bietet es sich an, die Verbindungsversuche zu einem SSH-Server zumindest einzuschränken. Kurz gesagt: Eine bestimmte IP darf sich innerhalb eines bestimmten Zeitraumes nur x-Mal am Server anmelden. Das realisiert man mit iptable-rules:
Im folgenden Beispiel wird die IP-Adresse eines Users (potenzieller Angreifer) nach 3 Verbindungsversuchen für 5 Minuten auf eine Blacklist gesetzt (der SSH-Server ist in dieser Zeit für die geblacklistete IP-Adresse nicht mehr erreichbar):
Code: Alles auswählen
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT