Server Sicherheit
Motivation
Das im Internet nicht nur ganz normale Benutzer unterwegs sind, sondern auch Hacker die versuchen Sicherheitslücken zu identifizieren
und in Systeme einzubrechen ist weitestgehend bekannt. Das aber auch einfache private Server ein Angriffsziel sind, wird in der Öffentlichkeit nicht immer so wahrgenommen. "Bei mir gibt es nichts zu holen", könnte man denken und liegt damit leider sehr falsch.
Fakt ist: Ein geknackter Serverzugang ist i.d.R. ein Jackpot für einen Hacker und bei vielen Hackern ist Zerstörung nicht das oberste Ziel.
Der gehackte Server kann z.B. in ein Botnetz eingebunden werden, als Austauschplattform für illegale Inhalte dienen usw., ggf. ohne dass der Besitzer dies bemerkt. Im übelsten Fall erfährt er erst durch den Hoster oder die Strafverfolgung davon.
Anmerkung: Mir ist bewusst, dass es noch mehr und effektivere Methoden zur Absicherung gibt (zB. Public Key Authentifizierung usw.), jedoch soll sich dieser Artikel
auf wirkungsvolle Methoden beschränken, die leicht umzusetzen sind und keine zusätzlichen Hürden einbauen.
Folgende Möglichkeiten sind unabhängig voneinander und können beliebig kombiniert werden.
Fehlgeschlagene Loginversuche ansehen
Wer möchte kann gerne in Echtzeit zuschauen wie verschiedene Zugriffsversuche auf den eigenen Server vorgenommen werden. Mit folgendem Befehl werden ssh-Logins live dargestellt:
sudo tail -F /var/log/auth.log
Die fehlgeschlagenen Loginversuche sind hierbei teils darauf zurückzuführen, dass andere sich versehentlich beim falschen Server einloggen wollen, da sie sich in der IP vertan haben.
Die meisten dürften jedoch darauf zurückzuführen sein, dass Unbefugte versuchen sich Zugriff zu verschaffen. Teils per Hand, teils per automatisierter Software.
Aus diesem Grund gibt es auch diesen Artikel.
Möglichkeit 1: Abwehr-Framework installieren: Fail2ban
Bei Beobachtung der fehlgeschlagenen Anmeldeversuche im Logfile fällt oft auf auf das gewisse IP-Adressen es immer wieder probieren.
Theoretisch müssen diese Angreifer immer wieder andere Passwörter probieren um schlussendlich zufüllig das richtige
zu erraten.
Beispiel: Bei automatisierten Versuchen alle 30Sekunden können pro Monat ca. 87600 Passwörter systematisch ausprobiert werden.
Um dies zu unterbinden gibt es die Software
fail2ban, die bei einer vorgegebenen Anzahl fehlgeschlagener Versuche diese IP für eine vorgegebene Zeit grundsätzlich blockiert. Die Werte sind einstellbar, jedoch sind bereits die Standardwerte bereits gut gewählt.
Installation (Ubuntu / Ubuntu Server)
Zuerst wird ein aktualisieren der Paketinformationen mit folgendem Befehl empfohlen:
sudo apt-get update
Anschließend kann das entsprechende Paket in der Regel mit folgendem Befehl installiert werden:
sudo apt install fail2ban
Nach der Installation steht es vorkonfiguiert zur Verfügung. Aktuell wird nach 5 fehlgeschlagenen Logins die dementsprechende IP-Adresse für 10 Minuten blockiert,
dies kann sich aber ggf. mit neueren Updates ändern.
Es ist möglich die Anzahl der Versuche, Blockierzeit usw. individuell zu verändern. Jedoch darf man nicht
vergessen, dass man sich bei mehreren Fehlversuchen selbst auch aussperren kann.
Wer sich mehr für einstellbare Details interessiert wird unter folgendem Link fündig:
wiki.ubuntuusers.de/fail2ban/
Möglichkeit 2: SSH-Login für den User "root" verbieten
Unter Linux Systemen wie zB. Ubuntu Server ist in der Regel ein User mit dem Namen "root" vorhanden der alle Berechtigungen hat (vergleichbar mit einem Administrator-Konto unter Windows).
Da der Benutzername "root" ist, müssen Angreifer in diesem Fall nur das richtige Passwort erraten und haben dann sogar alle(!) Rechte.
Es ist sinnvoll den SSH-Login für diesen
Benutzer zu deaktivieren, um das Angriffspotential zu veringern. Der Fernzugriff ist anschließend möglich, indem man sich auf einem anderen Benutzer per SSH anmeldet und mit folgendem Befehl zum User root wechselt:
su root
Bitte unbedingt darauf achten, dass ein weiterer Benutzer vorhanden ist, da man sich ansonsten versehentlich selbst aus dem System aussperrt. In der Regel sollte man auch nie den root Nutzer zum arbeiten nehmen, sondern lieber einen weiteren Benutzer anlegen.
Konfiguration (Ubuntu / Ubuntu Server)
Öffnen Sie auf dem Server folgende Datei:
/etc/ssh/sshd_config
Dies kann man zB. mit dem Editor
nano oder einem anderen wie folgt tun:
sudo nano /etc/ssh/sshd_config
Sollte dies nicht möglich sein kann
nano wie folgt installiert werden:
sudo apt-get install nano
Anschließend sucht man in der Datei (eher am Ende) nach dem Eintrag "PermitRootLogin" und ändert ein ggf. vorhandenes
yes zu
no, ggf. mehrfach, damit es wie folgt aussieht:
PermitRootLogin no
Anschließend wird der ssh service neu gestartet und die Einstellung damit aktiv:
sudo service ssh restart