So sichern Sie einen SSH-Server in Ubuntu

Index
  1. Installieren und aktualisieren Sie SSH
  2. Konfigurieren Sie SSH für die passwortlose Anmeldung
  3. Sichere SSH-Konfigurationsdatei
    1. Ändern Sie den SSH-Überwachungsport
    2. Verwenden Sie nur Protokoll 2
    3. Beschränken Sie den Benutzerzugriff
    4. Deaktivieren Sie die Root-Anmeldung
    5. Letzte Anmeldung ausblenden
    6. Beschränken Sie die Benutzeroberfläche auf die Anmeldung
    7. Deaktivieren Sie die Kennwortauthentifizierung
    8. Deaktivieren Sie .rhosts-Dateien
    9. Deaktivieren Sie die hostbasierte Authentifizierung
    10. Legen Sie ein Login-Grace-Timeout fest
    11. Maximale Startverbindungen festlegen
    12. Weiterleitung deaktivieren
    13. Weitere Informationen protokollieren
    14. Deaktivieren Sie leere Passwörter
    15. Legen Sie das Leerlauf-Timeout-Intervall fest
    16. strikter Modus
  4. Sicheres SSH mit TCP-Wrappern
  5. Sicheres SSH mit iptables
  6. Passen Sie SSH-Verbindungen auf dem lokalen Computer an
  7. Häufig gestellte Fragen
    1. Die IP-Adresse meines lokalen Rechners hat sich geändert. Ist es weiterhin möglich, über SSH auf meinen Server zuzugreifen?
    2. Mein Server filtert durch die Hosts-Datei. Ist es besser, auch iptables zu verwenden, um mein System zu schützen?
    3. 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 ssh

Konfigurieren 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_keys

Um 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 baduser2

Deaktivieren 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 Sperrpasswort

Zu

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.175

Deaktivieren 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 ja

Zu

PasswortAuthentifizierungs-Nr

Deaktivieren 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 ja

Deaktivieren 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-Nr

Legen 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 0

strikter 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 starten

Sicheres 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.allow

Fügen Sie die folgende Zeile hinzu:

sshd: 192.168.68.1 192.168.68.175

Sicheres 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 ACCEPT

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

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

Passen 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.

  1. Erstellen Sie eine „config“-Datei (keine Dateierweiterung erforderlich) in Ihrem „/home/user/.ssh“-Ordner.
  2. Ö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.

  1. 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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up