20 SSH-Sicherheitseinstellungen für Linux-Sysadmins, die man kennen muss

20 SSH-Sicherheitseinstellungen für Linux-Sysadmins, die man kennen muss

SSH (Sichere Shell) ist eines der wichtigsten Werkzeuge für Linux-Systemadministratoren und -Entwickler, da es Ihnen ermöglicht, sich sicher bei entfernten Rechnern anzumelden, Befehlszeilenprogramme auszuführen, Dateien zu verwalten, Daten zu übertragen, Ports weiterzuleiten und sogar GUI-Anwendungen aus der Ferne auszuführen.

Aber hier’ist der Haken → mit SSH mit Standardeinstellungen ist nicht immer sicher, da Hacker das Internet ständig nach offenen SSH-Ports und schwachen Logins durchsuchen. Aus diesem Grund sollte man lernen, wie man SSH richtig konfiguriert und SSH richtig zu konfigurieren und abzusichern ist ein Muss.

In diesem Leitfaden werden wesentliche SSH-Konfigurationen und Sicherheitstipps behandelt, die jeder Linux-Einsteiger kennen sollte, damit seine Server sicher, effizient und reibungslos laufen.

1. Ändern der Standard-SSH-Portnummer

Standardmäßig lauscht SSH auf Port 22ab, was es zu einem häufigen Ziel für automatisierte Bot-Angriffe macht. Eine einfache Möglichkeit, solche Angriffe zu reduzieren, besteht darin, SSH auf einen Nicht-Standard-Port zu ändern.

Öffnen Sie dazu die SSH-Konfigurationsdatei mit einem Texteditor:

sudo nano /etc/ssh/sshd_config

Suchen Sie nach der Zeile, die lautet:

#Port 22

Heben Sie die Kommentierung auf (entfernen Sie die #) und ändern Sie sie z. B. in eine benutzerdefinierte Anschlussnummer:

Port 2200

Nachdem Sie die Datei gespeichert haben, starten Sie den SSH-Dienst neu, damit die Änderungen übernommen werden:

sudo systemctl restart sshd

Wichtig: Vergessen Sie nicht, Ihre Firewall-Regeln zu aktualisieren, um den Datenverkehr über den neuen Port zuzulassen.

------------------ On FirewallD ------------------ 
sudo firewall-cmd --permanent --zone=public --add-port=2200/tcp
sudo firewall-cmd --reload

------------------ On UFW ------------------
sudo ufw allow 2200/tcp

2. Deaktivieren des Root-SSH-Logins

Erlauben des direkten Root-Logins über SSH ist riskant, weil es Angreifern ein einziges Ziel für Brute-Force-Angriffe bietet. Eine sicherere Methode ist es, sich als normaler Benutzer anzumelden und dann mit sudo für administrative Aufgaben zu verwenden.

Um den Root-Login zu deaktivieren, suchen Sie die folgende Zeile in Ihrer SSH-Konfigurationsdatei.

PermitRootLogin yes

und ändern Sie sie in:

PermitRootLogin no

Speichern Sie die Datei und starten Sie den SSH-Dienst neu, um die Änderung zu übernehmen:

sudo systemctl restart sshd

3. Wie man sich ohne SSH-Passwort bei einem Linux-Server anmeldet

Passwortbasierte SSH-Anmeldungen können bequem sein, sind aber weniger sicher und können bei wiederholtem Zugriff umständlich sein.

Eine sicherere und effizientere Methode ist SSH-Schlüssel-basierte Authentifizierung, mit der Sie sich ohne Eingabe eines Passworts anmelden können.

Erzeugen Sie zunächst ein Paar SSH-Schlüssel auf Ihrem lokalen Rechner:

ssh-keygen -t rsa -b 4096

Kopieren Sie dann Ihren öffentlichen Schlüssel auf den entfernten Server:

ssh-copy-id user@remote-server

Sobald der Schlüssel installiert ist, können Sie sich ohne Passwort beim Server anmelden:

ssh user@remote-server

4. Wie man nur bestimmten Benutzern den SSH-Zugang unter Linux erlaubt

Um die SSH-Sicherheit zu verbessern, können Sie den Zugang einschränken, so dass sich nur bestimmte Benutzer oder Gruppen anmelden können. Dies ist nützlich, um zu verhindern, dass nicht autorisierte Konten versuchen, SSH-Verbindungen herzustellen.

Um bestimmte Benutzer zuzulassen, fügen Sie die folgende Zeile in Ihre SSH-Konfigurationsdatei ein.

AllowUsers alice bob

Oder, um ganze Gruppen zuzulassen, verwenden Sie

AllowGroups admins devops

Nachdem Sie diese Änderungen vorgenommen haben, starten Sie den SSH-Dienst neu:

sudo systemctl restart sshd

Von nun an können nur noch die angegebenen Benutzer (alice und bob) oder Gruppen (admins und devops) können sich über SSH anmelden und so die Sicherheit des Servers erhöhen.

5. Wie man eine Willkommens- oder Warnmeldung beim SSH-Login anzeigt

Die Anzeige einer Nachricht, wenn sich Benutzer über SSH anmelden, kann nützlich sein, um Benutzer zu begrüßen oder rechtliche/Sicherheitswarnungen anzuzeigen.

Eine einfache Möglichkeit ist die Bearbeitung der Nachricht des Tages (MOTD) Datei:

sudo nano /etc/motd

Für eine formellere oder legale Warnung können Sie ein Banner erstellen in /etc/issue.net:

sudo nano /etc/issue.net

Weisen Sie dann SSH an, dieses Banner anzuzeigen, indem Sie die folgende Zeile in der SSH-Konfigurationsdatei hinzufügen oder bearbeiten:

Banner /etc/issue.net

Starten Sie schließlich den SSH-Dienst neu, um die Änderungen zu übernehmen:

sudo systemctl restart sshd

Wenn sich nun jemand über SSH anmeldet, wird er Ihre benutzerdefinierte Willkommens- oder Warnmeldung sehen.

6. Wie man fehlgeschlagene SSH-Anmeldeversuche nachverfolgt

Überwachung fehlgeschlagene SSH-Anmeldeversuche ist unerlässlich, um unberechtigte Zugriffsversuche zu erkennen und die Serversicherheit zu verbessern.

Auf Debian-basierte Distributionenkönnen Sie die Protokolle mit überprüfen:

sudo grep "Failed password" /var/log/auth.log

Auf RHEL-basierte Distributionenverwenden:

sudo grep "Failed password" /var/log/secure

Für die Echtzeit-Überwachung von SSH-Anmeldeaktivitäten können Sie die journalctl-Befehl:

sudo journalctl -u sshd -f

7. Wie man den SSH-Zugang nach IP-Adresse unter Linux einschränkt

Die Beschränkung des SSH-Zugriffs auf bestimmte IP-Adressen bietet eine zusätzliche Sicherheitsebene, da nur vertrauenswürdige Rechner eine Verbindung herstellen können.

Sie können dies direkt in der SSH-Konfigurationsdatei konfigurieren, indem Sie einen Benutzer und seine zulässige IP-Adresse angeben:

AllowUsers [emailprotected]

Alternativ können Sie IP-Beschränkungen auf der Firewall-Ebene erzwingen. Zum Beispiel mit UFWden Zugriff nur von einer bestimmten IP-Adresse auf Port 22:

------------------ On FirewallD ------------------ 
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload

------------------ On UFW ------------------ 
sudo ufw allow from 192.168.1.100 to any port 22

8. Einstellen des Leerlaufzeitlimits für SSH-Sitzungen

Untätige SSH-Sitzungen können ein Sicherheitsrisiko darstellen, wenn ein Benutzer vergisst, sich abzumelden, und die Verbindung für potenziellen Missbrauch offen lässt.

Sie können inaktive Sitzungen automatisch trennen, indem Sie in der SSH-Konfigurationsdatei ein Leerlauf-Timeout festlegen.

ClientAliveInterval 300
ClientAliveCountMax 0
  • ClientAliveInterval 300 → Sendet ein “keep-alive” Nachricht alle 300 Sekunden (5 Minuten).
  • ClientAliveCountMax 0 → Trennt die Sitzung, wenn keine Antwort empfangen wird.

Mit diesen Einstellungen wird jede inaktive SSH-Sitzung automatisch nach 5 Minuten beendet, wodurch das Risiko unbeaufsichtigter offener Sitzungen verringert wird.

9. So aktivieren Sie die Zwei-Faktor-Authentifizierung (2FA) für die SSH-Anmeldung

Hinzufügen der Zwei-Faktor-Authentifizierung (2FA) zu SSH erhöht die Sicherheit erheblich, da zusätzlich zu Ihrem Passwort ein zweiter Verifizierungsschritt erforderlich ist.

Auf Debian/Ubuntu Systemen können Sie Folgendes verwenden Google Authenticator.

sudo apt install libpam-google-authenticator

Richten Sie dann 2FA für Ihr Benutzerkonto ein, indem Sie es ausführen:

google-authenticator

Als nächstes aktivieren Sie das PAM-Modul für SSH, indem Sie Folgendes bearbeiten:

sudo nano /etc/pam.d/sshd

Fügen Sie die folgende Zeile hinzu:

auth required pam_google_authenticator.so

Schließlich müssen Sie in der SSH-Konfigurationsdatei die Challenge-Response-Authentifizierung zulassen:

ChallengeResponseAuthentication yes

Starten Sie den SSH-Dienst neu, um die Änderungen zu übernehmen:

sudo systemctl restart sshd

Jetzt ist für jede SSH-Anmeldung sowohl Ihr Passwort als auch ein zeitbasierter Verifizierungscode erforderlich, was die Sicherheit Ihres Servers erheblich verbessert.

10. Begrenzung von SSH-Verbindungen mit Fail2ban

Fail2ban ist ein leistungsfähiges Werkzeug, das hilft Ihren Server vor Brute-Force-Angriffen zu schützen indem Sie IP-Adressen, deren Anmeldeversuche mehrfach fehlschlagen, vorübergehend sperren.

Um es einzurichten, installieren Sie zunächst Fail2ban auf Debian/Ubuntu Systeme:

sudo apt install fail2ban

Als Nächstes aktivieren Sie das SSH-Gefängnis, indem Sie die lokale Konfigurationsdatei erstellen oder bearbeiten:

sudo nano /etc/fail2ban/jail.local

Fügen Sie die folgenden Zeilen hinzu, um den Schutz für SSH zu konfigurieren:

[sshd]
enabled = true
port = ssh
maxretry = 3

Starten Sie abschließend Fail2ban neu, um die Änderungen zu übernehmen:

sudo systemctl restart fail2ban

Mit Fail2ban aktiviert ist, lösen wiederholte fehlgeschlagene Anmeldeversuche automatisch vorübergehende Sperren aus, wodurch das Risiko von Brute-Force-Angriffen erheblich verringert wird.

11. Konfigurieren der schlüsselbasierten SSH-Authentifizierung unter Linux

Die schlüsselbasierte Authentifizierung ist eine sichere Methode zur Anmeldung bei SSH ohne Verwendung von Passwörtern. Sie stützt sich auf ein kryptografisches Schlüsselpaar, das Brute-Force-Angriffe nahezu unmöglich macht.

Erzeugen Sie zunächst ein Schlüsselpaar auf Ihrem lokalen Rechner mit dem modernen und sicheren Ed25519 Algorithmus wird empfohlen:

ssh-keygen -t ed25519

Kopieren Sie anschließend Ihren öffentlichen Schlüssel auf den entfernten Server:

ssh-copy-id user@server

Sobald die schlüsselbasierte Authentifizierung funktioniert, können Sie die Sicherheit weiter erhöhen, indem Sie die Passwortanmeldung in der SSH-Konfigurationsdatei deaktivieren.

PasswordAuthentication no

Starten Sie den SSH-Dienst neu, um die Änderung zu übernehmen:

sudo systemctl restart sshd

Danach können sich nur noch Benutzer mit dem richtigen privaten Schlüssel anmelden, was einen starken Schutz gegen unbefugten Zugriff bietet.

12. SSH-Zugang mit hosts.allow und hosts.deny zulassen oder verweigern

Linux bietet eine einfache Möglichkeit, den Zugriff auf Dienste mit TCP Wrapper, die sich auf die /etc/hosts.allow und /etc/hosts.deny Dateien.

Erstens: Erlauben Sie vertrauenswürdige IPs in /etc/hosts.allow:

sshd: 192.168.1.100

Verweigern Sie dann alle anderen IPs durch Bearbeiten von /etc/hosts.deny:

sshd: ALL

Bei dieser Einstellung wird nur die IP-Adresse 192.168.1.100 eine Verbindung über SSH herstellen, während alle anderen Versuche blockiert werden.

13. Aktive SSH-Sitzungen unter Linux prüfen und überwachen

Die Überwachung aktiver SSH-Sitzungen hilft Ihnen dabei, den Überblick darüber zu behalten, wer angemeldet ist, und jeden unbefugten Zugriff zu erkennen. Um eine Liste der derzeit angemeldeten Benutzer zu sehen, können Sie einfache Befehle verwenden wie:

who
OR
w

Wenn Sie die Sitzung eines bestimmten Benutzers beenden müssen, können Sie den Befehl pkill mit ihrem Benutzernamen verwenden:

sudo pkill -u username

Die regelmäßige Überprüfung aktiver Sitzungen gewährleistet, dass Sie die Kontrolle darüber haben, wer mit Ihrem Server verbunden ist, und trägt zur Sicherheit bei.

14. Einrichten von SSH-Tunneling (Portweiterleitung) unter Linux

SSH-Tunneling oder Port-Weiterleitung ermöglicht es Ihnen, den Netzwerkverkehr von Ihrem lokalen Rechner sicher zu einem entfernten Server zu leiten, was nützlich ist, um auf Dienste hinter einer Firewall zuzugreifen oder ansonsten unsichere Verbindungen zu verschlüsseln.

Bei der lokalen Portweiterleitung können Sie einen Port auf Ihrem lokalen Rechner an einen Port auf dem entfernten Server weiterleiten.

ssh -L 8080:localhost:80 user@remote-server
  • 8080 → Der lokale Port auf Ihrem Rechner.
  • localhost:80 → Das Ziel auf dem entfernten Server.
  • user@remote-server → Ihre SSH-Anmeldedaten.

Nach der Ausführung dieses Befehls wird jeglicher Datenverkehr, der an localhost:8080 auf Ihrem lokalen Rechner gesendet wird, sicher an den Port 80 auf dem entfernten Server weitergeleitet.

15. So aktivieren Sie die ausführliche Protokollierung für die SSH-Fehlerbehebung

Bei der Fehlerbehebung von SSH-Verbindungsproblemen können detaillierte Protokolle helfen, die Grundursache zu identifizieren, z. B. Authentifizierungsprobleme oder Netzwerkverzögerungen. SSH bietet einen eingebauten ausführlichen Modus, der Schritt für Schritt Informationen über den Verbindungsprozess anzeigt.

Um die ausführliche Protokollierung zu aktivieren, führen Sie einfach aus:

ssh -vvv user@server
  • Die -vvv Flag erhöht die Ausführlichkeitsstufe und liefert umfassende Details über jede Phase der SSH-Verbindung.
  • Sie können auch weniger vs verwenden (-v oder -vv) für eine weniger detaillierte Ausgabe.

Der Verbose-Modus ist von unschätzbarem Wert für die Diagnose von SSH-Problemen und hilft Ihnen, Konfigurationsfehler, Netzwerkprobleme oder Authentifizierungsfehler schnell zu erkennen.

16. So sichern Sie SSH mit starken Chiffren und Protokollen

Zur Sicherung von SSH-Verbindungen muss sichergestellt werden, dass nur starke Verschlüsselungsalgorithmen und -protokolle verwendet werden. SSH unterstützt standardmäßig mehrere Protokolle und Chiffren, von denen einige veraltet und anfällig sind.

Sie können Ihren SSH-Server härten indem Sie explizit sichere Optionen in der Konfigurationsdatei angeben:

Protocol 2
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256
KexAlgorithms [emailprotected]
  • Protokoll 2 → Stellt sicher, dass nur das sichere SSHv2-Protokoll verwendet wird.
  • Chiffren → Spezifiziert starke Verschlüsselungsalgorithmen für die Datenübertragung.
  • MACs → Setzt sichere Nachrichtenauthentifizierungscodes zur Überprüfung der Datenintegrität.
  • KexAlgorithmen → Wählt sichere Schlüsselaustauschalgorithmen aus.

Nachdem Sie diese Änderungen vorgenommen haben, starten Sie SSH neu, um sie anzuwenden:

sudo systemctl restart sshd

17. So beschränken Sie den SSH-Zugang auf einen bestimmten Portbereich

Die Beschränkung des SSH-Zugriffs auf einen bestimmten Portbereich stellt eine weitere Sicherheitsebene dar, da kontrolliert wird, welche Ports für Verbindungen zugelassen sind. Dies kann dazu beitragen, die Anfälligkeit für automatisierte Angriffe auf ungenutzte Ports zu verringern.

Auf Systemen, die UFW (Unkomplizierte Firewall), können Sie mit dem folgenden Befehl einen Bereich von Ports zulassen:

sudo ufw allow 1024:1040/tcp

Für FirewallD-Benutzer würde dies bedeuten:

sudo firewall-cmd --permanent --add-port=1024-1040/tcp
sudo firewall-cmd --reload

Diese Konfiguration erlaubt SSH-Verbindungen nur auf den Ports 1024 bis 1040und blockiert den Zugriff auf alle anderen Ports.

18. Ändern des SSH-Verbindungszeitlimits unter Linux

Die Begrenzung der Zeit, die SSH auf die Anmeldung eines Benutzers wartet, hilft dabei, Brute-Force-Angriffe zu verhindern und das Zeitfenster für unautorisierte Zugriffsversuche zu reduzieren, was mit der Option LoginGraceTime Einstellung in der SSH-Server-Konfigurationsdatei konfiguriert werden kann.

Fügen Sie die folgende Zeile hinzu oder ändern Sie sie, um die maximale Zeit (in Sekunden) festzulegen, die SSH auf eine erfolgreiche Anmeldung wartet, bevor die Verbindung getrennt wird.

LoginGraceTime 30

Nachdem Sie die Datei gespeichert haben, starten Sie den SSH-Dienst neu, um die Änderung zu übernehmen:

sudo systemctl restart sshd

19. Aktivieren der SSH-Komprimierung für schnellere Verbindungen

Die Aktivierung der Komprimierung in SSH kann die Verbindungsgeschwindigkeit erhöhen, insbesondere bei der Übertragung großer Datenmengen über langsamere Netzwerke. SSH kann Daten vor dem Senden komprimieren und so die Menge des über das Netzwerk gesendeten Datenverkehrs reduzieren.

Um die Komprimierung für jede einzelne Verbindung zu aktivieren, fügen Sie einfach die Option -C Flagge beim Verbindungsaufbau hinzu:

ssh -C user@server

Für eine dauerhafte Lösung können Sie die Komprimierung in der Konfigurationsdatei des SSH-Clients aktivieren.

Compression yes

Sobald die Komprimierung aktiviert ist, komprimiert SSH automatisch die Daten für alle Verbindungen, wodurch die Übertragungen schneller werden und gleichzeitig die Verschlüsselung und Sicherheit erhalten bleibt.

20. Konfigurieren von SSH-Aliasnamen für einen einfacheren Zugriff

Die Verwaltung mehrerer SSH-Verbindungen kann mühsam sein, wenn Sie sich IP-Adressen, Ports und Benutzernamen für jeden Server merken müssen. Die Verwendung von SSH-Aliasnamen vereinfacht diesen Prozess, indem sie Ihnen die Möglichkeit gibt, Verknüpfungen für häufig genutzte Server zu erstellen.

Um einen Alias einzurichten, bearbeiten Sie Ihre SSH-Client-Konfigurationsdatei und fügen Sie einen Eintrag wie diesen hinzu:

Host myserver
  HostName 192.168.1.50
  User alice
  Port 2200

Nachdem Sie die Datei gespeichert haben, können Sie eine Verbindung herstellen, indem Sie die Datei einfach ausführen:

ssh myserver

21. Wie man GUI-Anwendungen über SSH weiterleitet (X11-Weiterleitung)

SSH kann mehr als nur Befehlszeilenzugriff; es kann auch grafische Anwendungen von einem entfernten Server an Ihren lokalen Rechner weiterleiten, indem es X11-Weiterleitung verwendet, wodurch Sie GUI-Anwendungen auf dem Server so ausführen können, als ob sie lokal laufen würden.

Um die X11-Weiterleitung zu aktivieren, verbinden Sie sich mit dem -X Option:

ssh -X user@server

Sobald die Verbindung hergestellt ist, können Sie GUI-Anwendungen starten, z. B:

gedit

Das Fenster der Anwendung wird auf Ihrem lokalen Rechner angezeigt, während die gesamte Verarbeitung auf dem entfernten Server stattfindet.

Tipp: Stellen Sie sicher, dass die X11-Weiterleitung in der Konfigurationsdatei des SSH-Servers erlaubt ist.

X11Forwarding yes
Abschließende Überlegungen

SSH ist ein unverzichtbares Werkzeug für jeden, der Linux-Server verwaltet, und die richtige Verwendung kann Ihre Arbeit sowohl einfacher als auch sicherer machen.

Wenn Sie die Tipps in diesem Leitfaden befolgen, können Sie Ihre Server vor unberechtigtem Zugriff schützen, Ihre Anmeldungen mit schlüsselbasierter Authentifizierung und Aliasen vereinfachen und die Aktivitäten mit Tools wie fail2ban und Sitzungszeitüberschreitungen.

Beginnen Sie mit den Grundlagen, wie dem Ändern des Standard-Ports, dem Deaktivieren der Root-Anmeldung und dem Einrichten einer schlüsselbasierten Anmeldung, und erkunden Sie dann nach und nach fortgeschrittene Funktionen wie Zwei-Faktor-Authentifizierung, SSH-Tunneling und ausführliche Protokollierung.

Die Beherrschung dieser Praktiken wird Ihnen helfen, Server effizient zu verwalten, sich vor Angriffen zu schützen und wie ein sicherer Linux-Administrator zu arbeiten.

Share the Post:

Related Posts