So sichern Sie einen SSH-Server in Ubuntu

- Installieren und aktualisieren Sie SSH
- Konfigurieren Sie SSH für die passwortlose Anmeldung
-
Sichere SSH-Konfigurationsdatei
- Ändern Sie den SSH-Überwachungsport
- Verwenden Sie nur Protokoll 2
- Beschränken Sie den Benutzerzugriff
- Deaktivieren Sie die Root-Anmeldung
- Letzte Anmeldung ausblenden
- Beschränken Sie die Benutzeroberfläche auf die Anmeldung
- Deaktivieren Sie die Kennwortauthentifizierung
- Deaktivieren Sie .rhosts-Dateien
- Deaktivieren Sie die hostbasierte Authentifizierung
- Legen Sie ein Login-Grace-Timeout fest
- Maximale Startverbindungen festlegen
- Weiterleitung deaktivieren
- Weitere Informationen protokollieren
- Deaktivieren Sie leere Passwörter
- Legen Sie das Leerlauf-Timeout-Intervall fest
- strikter Modus
- Sicheres SSH mit TCP-Wrappern
- Sicheres SSH mit iptables
- Passen Sie SSH-Verbindungen auf dem lokalen Computer an
-
Häufig gestellte Fragen
- Die IP-Adresse meines lokalen Rechners hat sich geändert. Ist es weiterhin möglich, über SSH auf meinen Server zuzugreifen?
- Mein Server filtert durch die Hosts-Datei. Ist es besser, auch iptables zu verwenden, um mein System zu schützen?
- Ich habe den privaten Schlüssel für meinen lokalen Computer verloren. Ist es weiterhin möglich, sich über SSH bei meinem Server anzumelden?
SSH (Secure Socket Shell) ist eine Befehlszeilenschnittstelle und ein Protokoll für den sicheren Zugriff auf einen Remote-Linux-Server. Es bietet eine sichere und verschlüsselte Kommunikation über ein Netzwerk und ermöglicht den Datenaustausch über einen sicheren Kanal zwischen zwei Servern. Es wird häufig von Systemadministratoren verwendet, um ihre Webserver fernzusteuern und zu verwalten. Dieses Tutorial zeigt Ihnen, wie Sie Ihren SSH-Server sichern.
Notiz: Während das Tutorial hier auf Ubuntu durchgeführt wird, gelten die Schritte für die meisten Linux-Distributionen.
Installieren und aktualisieren Sie SSH
Aktualisieren Sie zunächst Ihr System und installieren Sie die erforderlichen Pakete auf Ihrem System.
Führen Sie den folgenden Befehl aus, um das System zu aktualisieren und den SSH-Server auf den Server- und Clientcomputern zu installieren:
sudo apt update && sudo apt upgrade sudo apt install sshKonfigurieren Sie SSH für die passwortlose Anmeldung
Es gibt zwei verschiedene Methoden, um sich bei einem SSH-Server anzumelden: Passwort-Authentifizierung und Public-Key-Authentifizierung. Die Passwortauthentifizierung ist eine sehr einfache Methode, die einfach zu verwenden und zu knacken ist. Die Verwendung der Kennwortauthentifizierung ist sehr unsicher, insbesondere wenn ein schwaches Kennwort verwendet wird. Andererseits bieten SSH-Schlüssel eine einfache und sichere Möglichkeit, sich bei einem Remote-Server anzumelden, und diese Methode wird allen Benutzern empfohlen.
Generieren Sie auf Ihrem Client-Computer SSH-Schlüssel mit dem folgenden Befehl:
Drücken Sie bei jeder Eingabeaufforderung die Eingabetaste. Dadurch werden zwei Dateien erstellt: „id_rsa.pub“ (öffentlicher Schlüssel) und „id_rsa“ (privater Schlüssel).
Erstellen Sie auf Ihrem Server den folgenden Ordner (falls noch nicht vorhanden):
Zurück zu Ihrem Client-Rechner kopieren Sie den SSH-Schlüssel mit dem folgenden Befehl auf Ihren Server:
ssh-copy-id [email protected]Stellen Sie auf Ihrem Servercomputer sicher, dass der Ordner „.ssh“ über die richtigen Dateiberechtigungen verfügt.
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keysUm zu testen, ob die Public-Key-Authentifizierungsmethode funktioniert, versuchen Sie, sich vom Client-Rechner aus mit Ihrem SSH-Server zu verbinden:
ssh [email protected]Wenn Sie eine Verbindung herstellen können, ohne ein Kennwort einzugeben, funktioniert die Authentifizierungsmethode mit öffentlichem Schlüssel.
Notiz: Wenn Sie Windows verwenden, verwenden Sie die Anweisungen hier, um öffentliche/private SSH-Schlüssel zu generieren.
Sichere SSH-Konfigurationsdatei
Die Datei „/etc/ssh/sshd_config“ ist die systemweite Konfigurationsdatei für SSH, mit der Sie verschiedene Optionen festlegen können, um die Sicherheit eines SSH-Servers zu verbessern. Die Standardkonfiguration in der Konfigurationsdatei ist sehr unsicher, daher müssen Sie sie zuerst bearbeiten und die richtigen Optionen festlegen, um die Sicherheit zu verbessern.
Um die Datei „/etc/ssh/sshd_config“ zu bearbeiten, führen Sie Folgendes aus:
sudo nano /etc/ssh/sshd_configÄndern Sie den SSH-Überwachungsport
Standardmäßig lauscht SSH auf Port 22. Angreifer verwenden Port-Scanner, um zu sehen, ob ein SSH-Dienst läuft oder nicht. Es empfiehlt sich, den Standardport zu ändern.
Um den Standardport auf 2200 zu ändern, ändern Sie:
Zu
Verwenden Sie nur Protokoll 2
Version 1 des Protokolls enthält Sicherheitslücken. Protokoll 2 ist der Standardeintrag auf Ubuntu.
Ändern Sie die unten gezeigte Zeile:
Beschränken Sie den Benutzerzugriff
Es ist notwendig, nur bestimmten Benutzern die Anmeldung bei SSH zu erlauben. Es kann Ihre Sicherheit verbessern. Standardmäßig ist diese Option in der SSH-Konfigurationsdatei nicht verfügbar.
Um „user1“ und „user2“ zuzulassen, fügen Sie die folgende Zeile hinzu:
Um „baduser1“ und „baduser2“ abzulehnen, fügen Sie die folgende Zeile hinzu:
DenyUsers baduser1 baduser2Deaktivieren Sie die Root-Anmeldung
Eine Anmeldung als root per ssh über ein Netzwerk ist nicht erforderlich. Normale Benutzer können auch su oder sudo verwenden, um Zugriff auf Root-Ebene zu erhalten. Die meisten Angreifer versuchen, sich mit dem Root-Benutzer anzumelden. Dies stellt ein großes Sicherheitsrisiko dar, daher ist es empfehlenswert, die Root-Anmeldung zu verweigern.
Um die Root-Anmeldung zu deaktivieren, ändern Sie die Zeile
PermitRootLogin SperrpasswortZu
Letzte Anmeldung ausblenden
Sie können ausblenden, wer sich zuletzt angemeldet hat, wenn sich ein Benutzer anmeldet.
Ändere die Zeile
Zu
Sie können weiterhin alle aktiven SSH-Verbindungen mit den Methoden in dieser Liste anzeigen.
Beschränken Sie die Benutzeroberfläche auf die Anmeldung
Standardmäßig lauscht SSH auf allen Netzwerkschnittstellen. Wenn Sie eine SSH-Verbindung von einer bestimmten IP-Adresse zulassen möchten, können Sie die Zeile ändern:
Zu
Höradresse 192.168.68.175Deaktivieren Sie die Kennwortauthentifizierung
Die Verwendung der Kennwortauthentifizierung ist ein großes Sicherheitsrisiko, wenn ein schwaches Kennwort verwendet wird. Die Verwendung von „ssh-Schlüsseln“ ist eine gute Praxis. Ein „SSH-Schlüssel“ kann über 600 zufällige Zeichen enthalten und schwer zu knacken sein.
Ändern Sie dazu die Zeile
# Passwortauthentifizierung jaZu
PasswortAuthentifizierungs-NrDeaktivieren Sie .rhosts-Dateien
Die .rhosts-Dateien geben an, welche Benutzer ohne Passwort auf die r-Befehle (rsh, rcp, rlogin usw.) auf dem lokalen Rechner zugreifen können. Standardmäßig ist eine .rhosts-Datei deaktiviert; Wenn nicht, ändern Sie die Zeilen wie unten gezeigt.
IgnoreRhosts ja RhostsAuthentication nein RSAAuthentication jaDeaktivieren Sie die hostbasierte Authentifizierung
Die hostbasierte Authentifizierung von SSH ist sicherer als die .rhosts-Authentifizierung. Es wird jedoch nicht empfohlen, dass Hosts einander vertrauen. Standardmäßig ist diese Option deaktiviert.
Wenn nicht, ändern Sie die Zeile wie unten gezeigt:
Hostbasierte Authentifizierungs-NrLegen Sie ein Login-Grace-Timeout fest
Die „LoginGraceTime“ gibt an, wie lange der Server nach einer Verbindungsanfrage wartet, bevor er die Verbindung trennt. Es hat sich bewährt, sie auf 60 Sekunden zu reduzieren.
Ändern Sie dazu die Zeile
Zu
Maximale Startverbindungen festlegen
Das Einrichten einer angemessenen maximalen Anzahl gleichzeitiger Verbindungen zum SSH-Daemon kann gegen einen Brute-Force-Angriff hilfreich sein.
Ändern Sie dazu die Zeile
Zu
Weiterleitung deaktivieren
Die Portweiterleitungstechnik wird von Angreifern verwendet, um Netzwerkverbindungen durch eine SSH-Sitzung zu tunneln, um sich bei Systemen anzumelden. Aus diesem Grund empfiehlt es sich, diese Option zu deaktivieren.
Ändern Sie dazu die Zeile
Zu
Weitere Informationen protokollieren
Standardmäßig protokolliert SSH alles. Wenn Sie weitere Informationen wie fehlgeschlagene Anmeldeversuche protokollieren möchten. Ändern Sie den Wert von diesem auf „VERBOSE“.
Ändern Sie dazu die Zeile
Zu
Deaktivieren Sie leere Passwörter
Es ist notwendig, Benutzer mit leeren Passwörtern auf Ihrem Server abzulehnen. Standardmäßig ist PermitEmptyPasswords in Ubuntu deaktiviert.
Wenn nicht, ändern Sie die Zeile wie unten gezeigt.
Legen Sie das Leerlauf-Timeout-Intervall fest
Standardmäßig ist diese Option in der standardmäßigen SSH-Konfigurationsdatei nicht verfügbar, daher empfiehlt es sich, ein geeignetes Leerlaufzeitlimit festzulegen, um eine unbeaufsichtigte Sitzung zu vermeiden.
Fügen Sie dazu die folgenden Zeilen hinzu.
ClientAliveInterval 300 ClientAliveCountMax 0strikter Modus
Dadurch wird die Verwendung unsicherer Home-Verzeichnis- und Schlüsseldateiberechtigungen verhindert. Standardmäßig ist diese Option aktiviert.
Wenn nicht, ändern Sie die folgende Zeile:
Speichern und beenden Sie die Datei „/etc/ssh/sshd_config“ und starten Sie den SSH-Server neu.
sudo systemctl ssh neu startenSicheres SSH mit TCP-Wrappern
Ein TCP-Wrapper bietet eine hostbasierte Zugriffskontrolle für Netzwerkdienste, die zum Filtern des Netzwerkzugriffs auf das Internet verwendet werden. Bearbeiten Sie Ihre „/etc/hosts.allow“-Datei, um SSH nur von „192.168.68.1“ und „192.168.68.175“ zuzulassen.
sudo nano /etc/hosts.allowFügen Sie die folgende Zeile hinzu:
sshd: 192.168.68.1 192.168.68.175Sicheres SSH mit iptables
Standardmäßig darf ein SSH-Server nur Verbindungen von Ihrem LAN oder anderen entfernten Standorten akzeptieren. Es empfiehlt sich, nur bestimmten IP-Adressen den Zugriff auf SSH zu erlauben und den Zugriff auf SSH für nicht autorisierte IP-Adressen zu blockieren.
Um nur SSH-Verbindungen von „192.168.68.1“ zuzulassen, legen Sie die Regeln in iptables fest:
sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.68.1 --dport 2200 -j ACCEPTDeaktivieren Sie SSH-Verbindungen von allen anderen Hosts, indem Sie den folgenden Befehl ausführen:
sudo iptables -A INPUT -p tcp --dport 2200 -j DROPPassen Sie SSH-Verbindungen auf dem lokalen Computer an
Fügen Sie auf Ihrem lokalen Computer (dem Computer, den Sie für die Verbindung mit dem Remote-Server verwendet haben) eine Konfigurationsdatei hinzu, um die Befehlszeilenoption zu vereinfachen.
- Erstellen Sie eine „config“-Datei (keine Dateierweiterung erforderlich) in Ihrem „/home/user/.ssh“-Ordner.
- Öffnen Sie die Datei und fügen Sie die folgenden Zeilen hinzu:
Host sshserver Hostname remote.server.ip.address.com Port 2200 Benutzer foobar Identitätsdatei ~/.ssh/remote.server.keyÄndern Sie die Details der Konfiguration Ihres eigenen Remote-Servers.
- Speichern und beenden Sie den Texteditor. Um eine Verbindung zu Ihrem Remote-Server herzustellen, geben Sie den folgenden Befehl ein:
Neben der Sicherung Ihres SSH-Servers sollten Sie diese Tools auch verwenden, um andere Teile Ihres Servers zu sichern.
Häufig gestellte Fragen
Die IP-Adresse meines lokalen Rechners hat sich geändert. Ist es weiterhin möglich, über SSH auf meinen Server zuzugreifen?
Wenn Sie die IP-Filterung aktiviert haben, können Sie nicht mehr auf Ihren Server zugreifen, sobald sich Ihre IP-Adresse ändert.
Sie können dieses Problem beheben, indem Sie Ihren Remoteserver so konfigurieren, dass er einen Bereich anstelle einer bestimmten Adresse akzeptiert. Konfigurieren Sie einfach Ihre Firewall so, dass sie einen IP-Bereich für SSH-Verbindungen akzeptiert: sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.0/24 --dport 2200 -j ACCEPT.
Mein Server filtert durch die Hosts-Datei. Ist es besser, auch iptables zu verwenden, um mein System zu schützen?
Meistens müssen Sie nur einen einzigen Filter für Ihren SSH-Server einrichten. Die Verwendung mehrerer IP-Filter erschwert die Behebung von Problemen, die während der Produktion auftreten können.
Stellen Sie sicher, dass Ihre Firewall und Ihr IP-Filter Hand in Hand arbeiten, um die Netzwerkschnittstellen Ihres Servers zu schützen. Es empfiehlt sich beispielsweise, alle ungenutzten Ports durch Ihre Firewall zu blockieren und nur Verbindungen durch Ihre „/etc/hosts“-Datei zu filtern.
Ich habe den privaten Schlüssel für meinen lokalen Computer verloren. Ist es weiterhin möglich, sich über SSH bei meinem Server anzumelden?
Nein, Sie können nicht auf Ihren Server zugreifen, wenn Sie den privaten Schlüssel verloren haben. Der beste Weg, dieses Problem zu lösen, besteht darin, entweder auf den physischen Server oder über eine VPS-Root-Konsole zuzugreifen. Aktivieren Sie die Kennwortauthentifizierung erneut, indem Sie die Variable PasswordAuthentication auf „yes“ setzen, und starten Sie dann Ihren ssh-Daemon neu, indem Sie den Befehl sudo systemctl restart ssh ausführen.

Schreibe einen Kommentar