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 Austausch von Daten über einen sicheren Kanal zwischen zwei Servern. Es wird häufig von Systemadministratoren verwendet, um das Web und andere Arten von Servern remote zu steuern. In diesem Artikel zeigen wir Ihnen, wie Sie Ihren SSH-Server sichern können.

Hinweis : In diesem Lernprogramm wird davon ausgegangen, dass der SSH-Server Ubuntu 14.04 ausführt und der Clientcomputer ein Linux-Computer ist.

Erste Schritte - Installieren Sie SSH

Zuerst müssen Sie Ihr System aktualisieren und die erforderlichen Pakete auf Ihrem System installieren.

Führen Sie den folgenden Befehl aus, um das System zu aktualisieren und den SSH-Server auf dem Servercomputer zu installieren:

 sudo apt-get Aktualisierung sudo apt-get install openssh-server 

Führen Sie den folgenden Befehl aus, um den SSH-Client auf dem Clientcomputer zu installieren:

 sudo apt-get installieren openssh-client 

Konfigurieren Sie SSH für die kennwortlose Anmeldung

Es gibt zwei verschiedene Methoden für die Anmeldung bei einem SSH-Server: Der eine ist eine kennwortbasierte Authentifizierung und der andere ist eine schlüsselbasierte Authentifizierung. Passwort-Authentifizierung ist eine sehr einfache Methode, die einfach zu verwenden und zu knacken ist. Die Verwendung der Kennwortauthentifizierung ist sehr unsicher, insbesondere wenn Ihr Benutzer ein schwaches Kennwort verwendet. Auf der anderen Seite bieten SSH-Schlüssel eine einfache und sichere Möglichkeit, sich bei einem Remote-Server anzumelden. Diese Methode wird allen Benutzern empfohlen.

Generieren Sie auf Ihrem Clientcomputer SSH-Schlüssel mit dem folgenden Befehl:

 cd ~ / .ssh ssh-keygen -t rsa 

Drücken Sie einfach bei jeder Eingabeaufforderung die Eingabetaste. Dies erzeugt zwei Dateien: id_rsa.pub (öffentlicher Schlüssel) und id_rsa (privater Schlüssel).

Dies wird etwas ausgeben, das wie folgt aussieht:

Erstellen Sie auf Ihrem Server den folgenden Ordner (falls er nicht existiert):

 mkdir -p ~ / .ssh / 

Zurück zu Ihrem Clientcomputer kopieren Sie die Datei "id_rsa.pub" mit dem folgenden Befehl auf Ihren Server:

 scp -P "yourport" ~ / .ssh / id_rsa.pub Benutzername @ serverip: ~ / .ssh 

Ändern Sie "yourport" in die Portnummer, die Ihr SSH-Server verwendet (der Standardwert ist 22), und den "serverip" auf die IP-Adresse des Servers.

Ändern Sie auf Ihrem Server-Computer den Dateiname und die Setup-Berechtigungen.

 cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / autorisierte_Tasten chmod 700 .ssh chmod 600 .ssh / authorized_keys rm .ssh / id_rsa.pub 

Um zu testen, ob die schlüsselbasierte Authentifizierungsmethode funktioniert, versuchen Sie, eine Verbindung zu Ihrem SSH-Server über den Clientcomputer herzustellen:

 ssh -P "yourport" Benutzername @ serverip 

Wenn Sie eine Verbindung herstellen können, ohne ein Kennwort einzugeben, funktioniert die schlüsselbasierte Authentifizierungsmethode.

Sichere SSH-Konfigurationsdatei

Die Datei "/ etc / ssh / sshd_config" ist die systemweite Konfigurationsdatei für SSH, mit der Sie verschiedene Optionen zur Verbesserung der Sicherheit eines SSH-Servers festlegen können. Die Standardkonfiguration in der Konfigurationsdatei ist sehr unsicher, daher müssen Sie sie zuerst bearbeiten und die richtigen Optionen zur Verbesserung der Sicherheit einstellen.

Um die Datei "/ etc / ssh / sshd_config" zu bearbeiten, führen Sie sie aus

 sudo nano / etc / ssh / sshd_config 

Ändern Sie den SSH-Abhörport

Standardmäßig überwacht SSH Port 22. Angreifer verwenden Portscanner, um festzustellen, ob ein SSH-Dienst ausgeführt wird oder nicht. Es wird empfohlen, den Standardport zu ändern.

Ändern Sie den Standardanschluss zu 2200, ändern Sie:

 Hafen 22 

zu

 Hafen 2200 

Verwenden Sie nur Protokoll 2

Version 1 des Protokolls enthält Sicherheitslücken. Protokoll 2 ist der Standardeintrag unter Ubuntu.

Ändern Sie die folgende Zeile:

 Protokoll 2 

Beschränken Sie den Benutzerzugriff

Es muss nur bestimmten Benutzern erlaubt werden, sich bei SSH anzumelden. Es kann Ihre Sicherheit verbessern. Standardmäßig ist diese Option in der SSH-Konfigurationsdatei nicht verfügbar.

Fügen Sie die folgende Zeile hinzu, um "user1" und "user2" zuzulassen:

 AllowUsers Benutzer1 Benutzer2 

Um "baduser1" und "baduser2" zu verwerfen, füge folgende Zeile hinzu:

 DenyUsers baduser1 baduser2 

Deaktivieren Sie die Root-Anmeldung

Es ist nicht notwendig, sich über ssh über ein Netzwerk als root anzumelden. Normale Benutzer können auch su oder sudo, um Zugriff auf Root-Ebene zu erhalten. Die meisten Angreifer versuchen, sich mit Root-Benutzern anzumelden. Dies ist ein großes Sicherheitsrisiko. Daher wird empfohlen, die Root-Anmeldung zu verweigern.

Um die root-Anmeldung zu deaktivieren, ändern Sie die Zeile

 PermitRootLogin ohne Passwort 

zu

 PermitRootLogin-Nr 

Letzte Anmeldung ausblenden

Sie können ausblenden, wer sich zuletzt angemeldet hat, wenn sich ein Benutzer anmeldet.

Ändern Sie dazu die Zeile

 PrintLastLog ja 

zu

 PrintLastLog-Nr 

Schränken Sie die Schnittstelle ein, um sich anzumelden

Standardmäßig hört ssh alle Netzwerkschnittstellen ab. Wenn Sie zulassen möchten, dass eine SSH-Verbindung von bestimmten IP-Adressen akzeptiert wird, können Sie die Leitung ändern

 #Listenadresse :: 

zu

 Listenadresse 192.168.1.20 

Deaktivieren Sie die Passwortauthentifizierung

Die Verwendung der Kennwortauthentifizierung ist ein großes Sicherheitsrisiko, wenn Ihr Benutzer ein schwaches Kennwort verwendet. Es wird empfohlen, "ssh keys" zu verwenden. Ein "ssh key" kann mehr als 600 zufällige Zeichen enthalten und schwer zu knacken sein.

Ändern Sie dazu die Zeile

 # PasswortAuthentifizierung ja 

zu

 PasswordAuthentifizierungsnr 

Deaktivieren Sie .rhosts-Dateien

Die .rhosts-Dateien geben an, welche Benutzer auf dem lokalen Rechner ohne Kennwort auf die r-Befehle (rsh, rcp, rlogin usw.) zugreifen können. Standardmäßig ist eine .rhosts-Datei deaktiviert. Wenn nicht, ändern Sie die Linien wie unten gezeigt.

 IgnoreRhosts ja RhostsAuthentication nein RSAAuthentication ja 

Deaktivieren Sie die hostbasierte Authentifizierung

SSHs hostbasierte Authentifizierung ist sicherer als die .rhosts-Authentifizierung. Es wird jedoch nicht empfohlen, dass Hosts sich gegenseitig vertrauen. Standardmäßig ist diese Option deaktiviert.

Wenn nicht, ändern Sie die unten gezeigte Zeile.

 HostbasedAuthentication-Nr 

Legen Sie ein Anmeldezeitlimit fest

Die "LoginGraceTime" gibt an, wie lange nach einer Verbindungsanforderung der Server wartet, bevor er die Verbindung trennt. Es wird empfohlen, es auf 60 Sekunden zu reduzieren.

Ändern Sie dazu die Zeile

 LoginGraceTime 120 

zu

 LoginGraceTime 60 

Stellen Sie maximale Startverbindungen ein

Das Einrichten einer geeigneten maximalen Anzahl von gleichzeitigen Verbindungen zum SSH-Daemon kann hilfreich sein gegen einen Brute-Force-Angriff.

Ändern Sie dazu die Zeile

 #MaxStartups 10:30:60 

zu

 MaxStartups 2 

Weiterleitung deaktivieren

Die Portweiterleitungstechnik wird von Angreifern verwendet, um Netzwerkverbindungen über eine SSH-Sitzung zu tunneln, um sich bei Systemen anzumelden. Es wird empfohlen, diese Option zu deaktivieren.

Ändern Sie dazu die Zeile

 X11Forwarding ja 

zu

 X11Forwarding Nr 

Loggen Sie weitere Informationen ein

Standardmäßig protokolliert SSH alles. Wenn Sie weitere Informationen wie fehlgeschlagene Anmeldeversuche protokollieren möchten. Sie können den Wert von "VERBOSE" ändern.

Ändern Sie dazu die Zeile

 LogLevel INFO 

zu

 LogLevel VERBOSE 

Deaktivieren Sie leere Kennwörter

Es ist notwendig, Benutzern mit leeren Passwörtern auf Ihrem Server zu verweigern. Standardmäßig ist PermitEmptyPasswords in Ubuntu deaktiviert.

Wenn nicht, ändern Sie die unten gezeigte Zeile.

 PermitEmptyPasswords-Nr 

Legen Sie das Leerlaufzeitlimit fest

Standardmäßig sind diese Optionen in der SSH-Standardkonfigurationsdatei nicht verfügbar. Es wird empfohlen, ein geeignetes Leerlauf-Timeout festzulegen, um eine unbeaufsichtigte SSH-Sitzung zu vermeiden.

Fügen Sie dazu die folgenden Zeilen hinzu.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Strikter Modus

Dies verhindert die Verwendung unsicherer Home-Verzeichnis- und Schlüsseldateiberechtigungen. Standardmäßig ist diese Option aktiviert.

Wenn nicht, dann ändern Sie die folgende Zeile.

 StrictModes ja 

Speichern Sie nun die Datei / etc / ssh / sshd_config und beenden Sie den SSH-Server neu.

 Sudo-Dienst SSH Neustart 

Sichern Sie SSH mit TCP-Wrappern

Ein TCP-Wrapper bietet hostbasierte Zugriffssteuerung für Netzwerkdienste, die den Netzwerkzugriff auf das Internet filtern. Bearbeiten Sie Ihre "/etc/hosts.allow" Datei, um SSH nur von 192.168.1.2 und 172.16.23.12 zu erlauben.

 sudo nano /etc/hosts.allow 

Fügen Sie die folgende Zeile hinzu:

 sshd: 192.168.1.2 172.16.23.12 

Sicheres SSH mit iptables

Standardmäßig muss ein SSH-Server nur Verbindungen von Ihrem LAN oder anderen Remote-Standorten akzeptieren. Es wird empfohlen, nur bestimmten IP-Adressen Zugriff auf SSH zu gewähren und den Zugriff auf SSH auf nicht autorisierte IP-Adressen zu blockieren.

Führen Sie den folgenden Befehl aus, um nur SSH-Verbindungen von 192.168.1.2 zu ermöglichen:

 sudo iptables -A INPUT -p tcp -m Zustand --state NEW --Quelle 192.168.1.2 --dport 2200 -j ACCEPT 

Deaktivieren Sie die SSH-Verbindung von allen anderen Hosts, indem Sie den folgenden Befehl ausführen:

 sudo iptables -A EINGABE -p tcp --dport 2200 -j DROP 

Speichern Sie nun Ihre neuen Regeln mit dem folgenden Befehl:

 sudo iptables-save> /etc/iptables/rules.v4 

Fazit

Die obigen Anweisungen sind sehr leistungsfähige Techniken zur Sicherung Ihres SSH-Servers. Dieser Beitrag enthält alle Informationen, die die meisten Benutzer für einen SSH-Server benötigen. Wenn Sie Fragen haben, zögern Sie nicht, unten zu kommentieren.

Referenz: SSH ubuntu