SSH-Zugang absichern

Für Profis geeignet
 

Vorraussetzungen

Dauer

ca. 45 Min.

Verwandte Beiträge

  • Passwörter
  • Firewall

1. Allgemeine Problematik

Sofern man einen Server im Internet betreibt wird man nur in den seltesten Fällen ohne SSH Zugang auskommen um dem Server zu Administrien. Das wissen auch Angreifer und nutzen dieses gerne aus, um Zugriff auf dem Server zu erhalten. In den folgenden Punkten möchten wir einige Tipps geben wie man es den Angreifern erschweren kann, Zugriff auf dem Server zu erlangen.
Man wird es wohl nie Schaffen einen Server 100% sicher zumachen, aber man kann es den Angreifer so erschweren das sich kein Angriff mehr lohnt. Diesen kann man durch viele wege erreichen.

2. Grundlagen

Es sollte immer die Aktuelle Version des SSH Deamons installiert sein. Um die Tipps zur SSH Absicherung um zusetzen benötigt man einige Dateien.

Folgende Dateien / Verzeichnise werden Benötigt.

  • /var/log/messages dieses kann abweichen
  • der Konfigurations Pfad: /etc/ssh/sshd_config bzw. /etc/ssh/ssh_config abhänig von der Distribution

3. Server Administrieren ohne SSH

Der beste / sicherste Weg ist garnicht SSH nach aussen offen zu machen aber wie?

Möglichkeiten:

  1. Wenn der Server in einem Datencenter / Rechenzentrum steht wo man zutritt hat, kann man direkt mit Tastatur und Monitor den Server Administrieren. Nachteil wenn der Zugang benötigt wird muss immer direkt vorm Server sitzen.
  2. Zweite Netzwerkkarte mit seperater IP mit z.B. VPN Zugang.
  3. Oder eine eRIC Remote-Karte
  4. Webadministration mit z.B. Webmin oder Plesk (wobei man hier auch eingeschränkt ist und auch in diesen Anwendung gibt es Lücken in der Sicherheit.)

4. Der Angriff

Mit eines der heufigsten Angriffe auf Linux server ist es über SSH root- Rechte zuerlangen. Man weiss der der Benuzer root auf dem Server existent ist, nun braucht man nur noch das richtig Passwort und man hätte un eingeschränken zugriff.

Und da fangen die Probleme an. Jeder sollte sich im klaren der einer Server am Internetbetreibt auch für die Sicherheit zusändig ist und auch die Haftung dafür übernimmt. Ein Beispiel, sollte der Server kompromiert worden sein und es wird da drüber SPAM Mails oder DDoS Attacken gefahren kann man dafür in Haftung genommen werden.

Wichtig ist immer ein "sichers" Passwort zu wählen. -> Passwörter

5 .ssh-Daemon

Schon mit ein paar Handgriffen kann man den SSH-Daemon relativ sicher Konfigurieren.

Die Konfiguraationsdatei ist unter /etc/ssh/sshd_config zu finden. Und kann mit folgenden möglichen Optionen erweitert oder geändert werden.

ListenAddress 192.168.0.1
Protokol 2
PermitRootLogin No
PermitEmptyPasswords no
PasswordAuthentication yes
LoginGraceTime 600
MaxAuthTries 3
AllowUsers root@*.domain user
DenyGroups root
DenyUsers root
TCPKeepAlive yes
MaxStartups 32

Was bedeuten die einzelnen Optionen

ListenAddress 192.168.0.1
Durch die Option kann man den SSH-Daemon sagen auf welche IP-Adressen er überhaupt reagieren soll. Dieses wird dann ein gesetzt wenn man mehre IP-Adressen auf denm server verwendet und angeben möchte über welche der SSH Zugriff möglich sein soll.
Protokol 2
Mit "Protokol 2" wird der SSH-Daemon mit dem Protokol 2 gefahren dieser bieten mehr Sicherhet als das alte Protokol 1.
PermitRootLogin no
Zum Beispiel sollte man den root login verrhindern in dem man es ausschliesst sich mit root ein zuloggen. In der Konfiguration sieht das so aus. PermitRootLogin = no Aber wie jetzt noch einloggen? man sollte einen neuen Benutzer anlegen und diesen auch ein "sicheres" Passwort vergeben. Der User sollte nicht admin, administrator, god, gott oder so heissen. wenn man es für notwendig erachtet vielt so "J3ndsp&a". Dannach sollte man den SSH-Daemon so konfigurieren das nur noch der Benutzer "J3ndsp&a" anmelden kann. An dieser stellen wird es für den Angreifen schon schwer zugriff zu erlangen. Nach erfolgreichen Login kann man den benutzer wechseln mi su oder sudo root. Nach dem wechseln haben Sie volle root Rechte.
PermitEmptyPasswords no
Um das einloggen unter gewissen richtlinien zusetzt kann man mit "PermitEmpy Passwords no" schon mal sagen das ohne Passwort kein login mögllich ist.
PasswordAuthentication yes
Weiter kann die sicherheit mit "PasswordAuthentication yes" erhöhen um die Passworter zu Autentifiezieren. Sofern man sich für die Authentifiezierung per Schüssel entscheiden muss hier die einstellung no wählen.
LoginGraceTime 600
LoginGraceTime gibt an, nach wie vielen Sekunden die Verbindung vom Server getrennt wird, falls sich der Benutzer nicht korrekt einloggen konnte.
MaxAuthTries 3
Zusätzlich sind die möglichen Login versuche auf 3 begrenzt.
AllowUsers
In diesem Fall würde sich nur aufgelistete Benutzer in SSH einloggen können allen anderen wehre der Zugang verwehrt.. Einzig die benutzer "root" und "user" können sich noch einloggen. Wobei der benutzer "user" von überall aus einlagen kann, kann der Benuter "root" nur noch aus der Domain "domain" aus einloggen.
DenyGroups
Auch DenyGroups und DenyUsers erschweren den zugang den man hier Gruppen bzw. Benutzer eintragen die keinen zugriff erhalten sollen.
DenyUsers
Welche User dürfen sich nicht einloggen.
TCPKeepAlive yes
(früher: KeepAlive) Das System verschickt TCP-Keepalive Nachrichten um zu prüfen, ob die Netzwerkverbindungen noch bestehen. Nach Netzwerkausfällen oder Abstürzen von Clienten-Rechnern bleiben so keine offenen Verbindungen zurück, die Ressourcen verbrauchen.
MaxStartups 32
Beschränkt die maximalen gleichen Zeitigen Verbindungen. Dieses beugt DDos Angriffen vor.

Durch Firewall Regeln kann man denn SSH noch einstück sicherer machen in dem man sagt, nur die IP 80.81.82.83 darf auf den Port des SSH-Daemon zugreifen. man sollte aber immer mehre IP´s angeben um in Notfällen auch von anderen PC´s auf den SSH-Daemon zu zugreifen. Bei DSL verbinden mit Dynamischen IP Adressen ist es sinnvoll sein IP mal zu Protokolieren um dann den IP Adressbereich frei zuschalten. Meist sieht das so aus 80.81.x.x. Das ganze kann natürlich durch IP-Sppofing auch gefälscht werden. Aber die wahrscheinlich keit ist realtive gering dazu müsste jemand schon genauere kenntnisse über Ihr Netzwerk haben.

6. Port

Standmässig lautet der SSH Port 22. Wenn ein Angreifer ein Portscan durchführt und sieht das der Port 22 Offen ist werden Sie schnell in den logs sehen das man versucht auf dem Server einzudringen. Da Standart werte gerne ausgenutzt werden, sollte man dieses ändern. Die Änderung des Port erschwert den angreifer z.B. Automatisierte Attacken zu starten.
Wenn Sie einen anderen Port wählen z.B. 54732 dann dauert es bei einen Portscan realtiv lange bis man zum Port kommt und denn weiss man immer noch nicht was auf dem Port läuft. Dieses sache dient nur zu erschwerung des eindringens.
Port 22 ändern Sie einfach die Zahl auf einen bestimmten wert zwischen 1- 65535. Beachten Sie das das sich keine Standart Ports überscheinden. (Port Liste) Dann müssen Sie nur noch den dienst neu Starten mit

Denke Sie an die Firewall Konfiguration sonnst sperren Sie sich selbst aus.
/etc/init.d/ssh reload

7. Sperren statt blocken

Ein wichter schritt in die richtige Richtugn ist es potenzieller Angreifer zu Blocken. Aber sinn völler ist es auch den potenzielen Angreifen direkt zu sperren! Weil wenn jemand 15 mal das SSH Passwort falsch eingegaben hat und immer noch zugriff auf den Server hat, hat der Angreifer alle Zeit der Welt. Hier zu gibt es Tools wie fail2ban die dieses überprüfen und dann die IP des Angreifen in die IP Table (Firewall) des Servers eintragen um diesen z.B. für 24 Stunden zu sperren. So ist kein zugriff von der IP mehr möglich.

8. Logs

Wichtig ist es auch ständig die Log Dateien im Auge zugehalten. um auch möglich Angriffe zu erkennen und gegen zu steuern.

Jun 17 20:10:25 server sshd [5421] : Failed Password for root 
form 123.456.789.123 port 22 ssh2

9. Abschliesendes

Sicherlich gibt es noch viele weiter Möglichkeiten mehr Sicherheit zu erzielen für Anregungen und Kretik würden wir uns freunen.


Weiterführende / Verwandte Artikel