Raspberry Pi – SSH Zugriff einschränken – Teil 2
Im letzten Teil habe ich 2 einfache aber wirkungsvolle Methoden vorgestellt wie ihr euren Raspberry Pi vor ungewollten SSH Zugriffen schützen könnt. In diesem Teil zeige ich euch einige fortschrittliche Methoden, welche die Sicherheit noch einmal um einiges erhöhen. Damit wird euer Raspberry Pi zur unbezwingbaren Festung. Für alle die sich für Sicherheit und Linux interessieren kann ich das Buch Linux Security empfehlen.
Schritt 3: Denyhost verweigert Hackern den Zugriff
Eine meiner Lieblingsfunktionen, wenn es um Sicherheit geht ist die TCP-Wrapper Bibliothek. In Zusammenspiel mit dem Python Skript denyhosts kann man so Rechnern den Zugriff auf den Raspberry Pi verbieten. Wie funktioniert das? Der TCP-Wrapper verwaltet zwei Konfigurationsdateien:
- /etc/hosts.allow
hier stehen alle Netzwerkadressen die auf den SSH-Server zugreifen dürfen. - /etc/hosts.deny
hier stehen alle Netzwerkadressen die keinen Zugriff bekommen und geblockt werden.
Wie funktioniert nun denyhosts? Das Skript überwacht alle SSH Login Versuche. Sollte ein Benutzer mit seiner IP Adresse zu oft das falsche Passwort probiert haben wandert seine IP Adresse in die hosts.deny Datei und bleibt dort eine zuvor definierte Zeit (möglicherweise auch für immer) dort. Diese IP Adresse kann nun nicht mehr über SSH zugreifen.
Installation
Installiert wird denyhosts folgendermaßen:
sudo apt-get install denyhosts
Konfiguration
Die Konfigurationsdatei enthält alle wichtigen Informationen und kann im Prinzip ohne weitere Erklärung geändert werden. Man findet diese Datei unter:
sudo nano /etc/denyhosts.conf
Im folgenden eine Information was die einzelnen Parameter festlegen:
- PURGE_DENY = 1d
legt fest, wann die gesperrte IP Adresse wieder frei gegeben wird. In diesem fall nach 24 Stunden. - DENY_THRESHOLD_INVALID = 3
wie oft darf man den falschen Login Namen eingeben. Gibt man also 3 mal den falschen Login Namen ein ist man gesperrt. - DENY_THRESHOLD_VALID = 5
wie oft darf man das falsche Passwort zum richtigen Login Namen eingeben. Hier hat man 5 Versuche. - DENY_THRESHOLD_ROOT = 3
man hat für den root Benutzer 3 Versuche das korrekte Passwort einzugeben
Achtung: es ist verlockend denyhosts sehr streng zu definieren und bei PURGE_DENY vielleicht 1000d einzugeben. Man darf aber nicht vergessen, dass wenn man selber einmal aus einem Grund (vielleicht gedrückter SHIFT Taste) zu oft das falsche Passwort eingibt dann auch gesperrt ist und im schlimmsten Fall sich nicht mehr einloggen kann. Eine Wartezeit von 24 Stunden stoppt im Normalfall einen Hackerangriff.
Im nächsten und letzten Teil zeige ich noch die ultimative Waffe gegen unerlaubte Zugriffe. Mit SSH Schlüsseln zur Authentifizierung können nur noch ausgewählte Benutzer Zugriff erlangen.
Kannst Du etwas dazu sagen, inwiefern sich das von fail2ban unterscheidet?
Fail2ban kannte ich gar nicht. Aber denyhosts sperrt IP Adressen direkt nach zu vielen Login versuchen, so wie ich das bei Fail2ban verstehe kann das viel mehr in dem es Log Dateien durchsucht und alle verdächtigen IPs sperrt. Ist sicher auch mal einen Artikel wert. Danke für die Info.
Hallo, nützlicher Artikel!
Aber sollte es nicht: „sudo apt-get install denyhosts“ anstelle von „sudp apt-get install denyhosts“ heißen?
Gruß,
Chris
danke für den Hinweis. Hab mich wohl vertippt.
Bezug nehmend auf die folgende Äußerung:
„Das Skript überwacht alle SSH Login Versuche“
Welche Dateien werden überwacht? Wo auf dem Raspi finde ich diese Dateien.
Ich würde gerne diese erst leeren, bevor ich denyhosts installiere. Nicht, dass alte (fehlerhafte) Login-Versuche gewertet werden.
Echt tolles Tutorial, super erklärt!
Zu fail2ban:
Es gibt da einen recht lesenswerten Artikel von heise, allerdings: Vermutlich nichtmehr hochaktuell (ist von 2009).
http://www.heise.de/security/artikel/SSH-vor-Brute-Force-Angriffen-schuetzen-270140.html
Debian hat „denyhosts“ aus den offiziellen Paketquellen geworfen:
https://packages.qa.debian.org/d/denyhosts.html
Jeder der sich „denyhosts“ installieren will, muss sich das Paket manuell herunterladen und installieren:
https://packages.debian.org/oldstable/denyhosts