Durch die Sicherung von SSH- Verbindungen können Sie Ihr Linux-System und Ihre Daten schützen. Systemadministratoren und Heimanwender müssen auch Computer mit Internetverbindung sichern. Hier sind 10 einfache Möglichkeiten, wie Sie Ihren SSH-Server sichern können.
Einige Grundlagen zur SSH-Sicherheit
SSH steht für Secure Shell. Das SSH-Protokoll oder Softwaretool ermöglicht Systemadministratoren und Benutzern, mithilfe dieses Protokolls sichere Verbindungen zu Remotecomputern herzustellen.
Das SSH-Protokoll ist ein verschlüsseltes Protokoll, das eine sichere Verbindung über ein unsicheres Netzwerk wie das Internet bereitstellen soll. SSH unter Linux basiert auf der portablen Version des OpenSSH-Projekts. Die Umsetzung erfolgt in einem klassischen Client-Server-Modell, bei dem ein SSH-Server Verbindungen von SSH-Clients entgegennimmt. Der Client wird verwendet, um eine Verbindung zum Server herzustellen und die Sitzung Remotebenutzern zugänglich zu machen. Der Server akzeptiert die Verbindung und initiiert die Sitzung.
In seiner Standardkonfiguration „lauscht“ der SSH-Server auf eingehende Verbindungen am Transmission Control Protocol (TCP), Port 22. Da es sich um einen standardisierten und beliebten Port handelt, ist er ein Ziel für Bedrohungen durch Akteure und bösartige Bots.
Böswillige Akteure starten Bots, die IP-Adressbereiche nach offenen Ports durchsuchen. Anschließend werden diese Ports auf ausnutzbare Schwachstellen untersucht. Zu denken, ich bin in Sicherheit, es gibt viele größere und bessere Ziele als ich, auf die Bösewichte abzielen können, ist völlig falsch. Diese Bots wählen ihre Ziele nicht nach irgendwelchen Kriterien aus, sondern suchen lediglich nach einer Möglichkeit, in das System einzudringen.
Sie werden zum Opfer, wenn Sie Ihr System nicht sichern.
Sicherheitsreibung
Ein Sicherheitskonfliktpunkt ist jede Situation, in der die Hauptaufgabe aufgrund von Sicherheitsanforderungen verhindert oder verzögert wird.
Sicherheitskonflikte führen bei der Implementierung von Sicherheitsmaßnahmen zu Unannehmlichkeiten (auf jeder Ebene) für Benutzer und andere. Menschen, die neu im Umgang mit Computersystemen sind, machen sich möglicherweise Sorgen, ob sie tatsächlich jedes Mal, wenn sie sich am Mainframe anmelden, ein Passwort eingeben müssen. Für sie ist dies auch eine Form von Sicherheitsreibung.
Die Einführung von Sicherheitsmaßnahmen ist für manche Menschen oft mit Reibungsverlusten verbunden. Unternehmer müssen diese Maßnahmen bezahlen. Computerbenutzer müssen möglicherweise ihre Gewohnheiten ändern oder sich andere Authentifizierungsinformationen merken und Schritte hinzufügen, um eine erfolgreiche Verbindung herzustellen. Systemadministratoren werden mit der Implementierung und Aufrechterhaltung der neuen Sicherheitsmaßnahmen zusätzlichen Aufwand haben.
Das Festziehen und Sperren eines Linux- oder Unix-ähnlichen Betriebssystems kann schnell gehen. Bei den Sicherheitsmaßnahmen handelt es sich um eine Reihe einfach zu befolgender Schritte, die die Computersicherheit verbessern, ohne dass Anwendungen von Drittanbietern oder tiefgreifende Firewall- Eingriffe erforderlich sind .
Verwenden Sie das SSH-Protokoll Version 2
Im Jahr 2006 wurde das SSH-Protokoll von Version 1 auf Version 2 aktualisiert. Dies ist ein bedeutendes Upgrade. Es gibt viele Änderungen und Verbesserungen, insbesondere bei Verschlüsselung und Sicherheit, und Version 2 ist nicht abwärtskompatibel mit Version 1. Um Verbindungen von Clients der Version 1 zu verhindern, können Sie Computer festlegen, die nur Verbindungen von Version 2 akzeptieren.
Bearbeiten Sie dazu die Datei /etc/ssh/sshd_config mit dem folgenden Befehl:
sudo gedit /etc/ssh/sshd_config

Fügen Sie die folgende Zeile hinzu:
Protocol 2

Speichern Sie die Datei und starten Sie dann den SSH-Daemon-Prozess mit dem folgenden Befehl neu:
sudo systemctl restart sshd

Testen Sie das neue Setup in Aktion, indem Sie zu einer anderen Maschine wechseln und versuchen, eine SSH-Verbindung zur Testmaschine herzustellen. Wir werden die Option -1 (Protokoll 1) verwenden, um zu erzwingen, dass der SSH-Befehl Protokollversion 1 verwendet.
ssh -1 [email protected]

Verbindungsanfrage abgelehnt. Stellen Sie sicher, dass Sie weiterhin eine Verbindung zu Protokoll 2 herstellen können. Zum Testen verwenden wir -2 (Protokoll 2).
ssh -2 [email protected]

Die Tatsache, dass der SSH-Server nach einem Passwort fragt, ist ein positives Zeichen dafür, dass die Verbindung hergestellt wurde und Sie mit dem Server interagieren. Moderne SSH-Clients verwenden standardmäßig Protokoll 2. Wir müssen Protokoll 2 nicht angeben, sofern der Client auf dem neuesten Stand ist.
ssh [email protected]

Die Verbindung wurde akzeptiert.
Vermeiden Sie Gate 22
Port 22 ist der Standardport für SSH-Verbindungen. Wenn ein anderer Port verwendet wird, erhöht dies ein wenig Security Through Obscurity (STO) für Ihr System. Sicherheit durch Mehrdeutigkeit sollte niemals als echte Sicherheitsmaßnahme betrachtet werden. Tatsächlich untersuchen einige intelligentere Angriffs-Bots alle offenen Ports und entscheiden, welchen Dienst sie ausführen, anstatt sich auf eine einfache Suchliste von Ports zu verlassen und davon auszugehen, dass diese einen Dienst bereitstellen. Normalerweise. Die Verwendung eines nicht standardmäßigen Ports kann jedoch dazu beitragen, schlechten Datenverkehr auf Port 22 zu reduzieren.
Um einen nicht standardmäßigen Port zu konfigurieren, bearbeiten Sie die SSH-Konfigurationsdatei wie oben.

Löschen Sie das # am Anfang der Port- Zeile und ersetzen Sie 22 durch die Nummer Ihrer Wahl. Speichern Sie die Konfigurationsdatei und starten Sie den SSH-Daemon neu.
Auf einem anderen Computer verwenden wir den Befehl ssh, um eine Verbindung zum Server herzustellen. Der Standard-SSH-Befehl verwendet Port 22:
ssh [email protected]

Verbindung abgelehnt. Versuchen Sie es erneut und geben Sie Port 470 mit der Option –p (Port) an:
ssh -p 479 [email protected]

Verbindung bestätigt.
Verbinden Sie den Filter mit TCP-Wrappern
TCP-Wrapper sind eine leicht verständliche Zugriffskontrollliste. Es ermöglicht Ihnen, Verbindungen basierend auf Merkmalen der Verbindungsanforderung wie IP-Adresse oder Hostname zu verweigern oder zuzulassen. TCP-Wrapper sollten zusammen mit einer ordnungsgemäß konfigurierten Firewall und nicht anstelle dieser verwendet werden.
TCP Wrappers ist auf Ubuntu 18.04 LTS- Rechnern vorinstalliert . Es muss auf Manjaro 18.10 und Fedora 30 installiert werden.
Verwenden Sie zur Installation auf Fedora den folgenden Befehl:
sudo yum install tcp_wrappers

Verwenden Sie zur Installation auf Manjaro diesen Befehl:
sudo pacman -Syu tcp-wrappers

Es sind zwei Dateien enthalten, eine Datei enthält die Zulassungsliste und eine Datei enthält die Verweigerungsliste. Bearbeiten Sie die Verweigerungsliste mit dem folgenden Befehl:
sudo gedit /etc/hosts.deny

Der obige Befehl öffnet den gedit-Editor, wobei die Datei nicht geladen werden kann.

Sie müssen die Zeile hinzufügen:
ALL : ALL
Und speichern Sie die Datei. Diese Leitung blockiert jeglichen unbefugten Zugriff. Jetzt müssen wir den Verbindungen, die Sie akzeptieren möchten, Berechtigungen erteilen. Dazu müssen Sie die Berechtigungsdatei bearbeiten:
sudo gedit /etc/hosts.allow

Der obige Befehl öffnet den gedit-Editor mit der herunterladbaren Datei darin.

Wir haben den SSH-Daemon-Namen, SSHD und die IP-Adresse des Computers hinzugefügt, der die Herstellung der Verbindung ermöglicht. Speichern Sie die Datei und prüfen Sie, ob die Einschränkungen und Berechtigungen wirksam sind.
Zunächst versuchen Sie, eine Verbindung von einem Computer herzustellen, der nicht in der Datei hosts.allow enthalten ist:

Verbindung abgelehnt. Wir werden versuchen, eine Verbindung von einem Computer mit der IP-Adresse 192.168.4.23 herzustellen:

Verbindung akzeptiert.
Das Beispiel hier erlaubt nur die Verbindung einer Maschine. TCP-Wrapper sind recht flexibel, sie unterstützen Hostnamen, Platzhalter und Subnetzmasken, um Verbindungen aus IP-Adressbereichen zu akzeptieren.
Verbindungsanfragen ohne Passwort ablehnen
Obwohl dies nicht gut ist, können Linux-Systemadministratoren Benutzerkonten ohne Kennwörter erstellen. Das bedeutet, dass für Remoteverbindungen von diesem Konto aus kein Passwort erforderlich ist. Diese Verbindungen werden akzeptiert, aber nicht authentifiziert.
Die Standardeinstellung für SSH akzeptiert Verbindungsanfragen ohne Passwort. Wir können es einfach ändern und sicherstellen, dass alle diese Verbindungen authentifiziert sind.
Sie müssen die SSH-Konfigurationsdatei bearbeiten.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile #PermitEmptyPasswords no sehen . Löschen Sie # am Anfang der Zeile und speichern Sie die Datei. Starten Sie den SSH-Daemon neu.
Verwenden Sie SSH-Schlüssel anstelle von Passwörtern
SSH-Schlüssel bieten eine sichere Möglichkeit, sich bei einem SSH-Server anzumelden. Passwörter können geknackt, erraten oder brutal erzwungen werden . SSH-Schlüssel sind für diese Art von Angriffen nicht anfällig.
Beim Generieren eines SSH-Schlüssels erstellen Sie ein Schlüsselpaar. Einer ist der öffentliche Schlüssel und der andere ist der private Schlüssel. Der öffentliche Schlüssel wird auf den Servern installiert, zu denen Sie eine Verbindung herstellen möchten. Der private Schlüssel wird sicher auf Ihrem Computer aufbewahrt.
Mit SSH-Schlüsseln können Verbindungen ohne Passwort hergestellt werden, was sicherer ist als Verbindungen mit Passwortauthentifizierung.
Bei einer Verbindungsanfrage verwendet der Remote-Computer eine Kopie des öffentlichen Schlüssels, um eine verschlüsselte Nachricht zu erstellen, die an den Computer zurückgesendet wird. Da es mit dem öffentlichen Schlüssel verschlüsselt ist, kann der Computer es mit dem privaten Schlüssel entschlüsseln.
Der Computer extrahiert dann einige Informationen aus der Nachricht, verschlüsselt sie und sendet sie zurück an den Server. Wenn der Server es mit einer Kopie des öffentlichen Schlüssels entschlüsseln kann. Wenn die Informationen in der Nachricht mit denen übereinstimmen, die Ihnen der Server gesendet hat, wird die Verbindung bestätigt.
Hierbei wird die Verbindung zum Server unter 192.168.4.11 vom Benutzer mit dem SSH-Schlüssel hergestellt. Beachten Sie, dass sie nicht zur Eingabe eines Passworts aufgefordert werden.
ssh [email protected]

Deaktivieren Sie die Passwortauthentifizierung vollständig
Sie können die Passwortauthentifizierung vollständig deaktivieren, wenn Sie SSH-Schlüssel verwenden. Wir müssen die SSH-Konfigurationsdatei bearbeiten.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile sehen, die mit #PasswordAuthentication ja beginnt . Löschen Sie # am Anfang der Zeile, ändern Sie „Ja“ in „Nein“ und speichern Sie die Datei. Starten Sie den SSH-Daemon neu.
Deaktivieren Sie die X11-Weiterleitung
Die X11-Weiterleitung ermöglicht Remote-Benutzern die Ausführung grafischer Anwendungen von Ihrem Server über eine SSH-Sitzung, kann jedoch von böswilligen Akteuren leicht ausgenutzt werden. Es ist besser, es durch Bearbeiten der SSH-Konfigurationsdatei zu deaktivieren.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile #X11Forwarding no sehen , löschen Sie das # am Anfang der Zeile und speichern Sie die Datei. Starten Sie den SSH-Daemon neu.
Legen Sie den Leerlauf-Timeout-Wert fest
Wenn eine SSH-Verbindung mit einem Computer aufgebaut wird und auf diesem über einen bestimmten Zeitraum keine Aktivität stattfindet, kann dies ein Sicherheitsrisiko darstellen.
Daher sollten Sie ein Timeout-Limit festlegen. Die SSH-Verbindung wird getrennt, wenn innerhalb des Zeitlimits keine Aktivität stattfindet. Auch hier müssen wir die SSH-Konfigurationsdatei bearbeiten.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile sehen, die mit #ClientAliveInterval 0 beginnt . Entfernen Sie das # am Anfang der Zeile und ändern Sie die Zahl 0 in den gewünschten Wert. Normalerweise stellen die Leute es auf 300 Sekunden ein, also 5 Minuten. Speichern Sie die Datei und starten Sie den SSH-Daemon neu.
Legen Sie eine Grenze für die Anzahl der Passworteingaben fest
Die Festlegung eines Limits für die Anzahl der Bestätigungen kann dazu beitragen, das Erraten von Passwörtern und Brute-Force-Angriffe zu verhindern. Nach der angegebenen Anzahl von Authentifizierungsanfragen wird der Benutzer vom SSH-Server getrennt. Standardmäßig gibt es keine Begrenzung für die Anzahl der Passwortversuche, Sie können diese jedoch in der SSH-Konfigurationsdatei bearbeiten.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile sehen, die mit #MaxAuthTries 0 beginnt . Durch Entfernen des # am Anfang der Zeile wird die Zahl auf den gewünschten Wert geändert. Sie können den Wert auf 3 setzen. Speichern Sie die Datei, wenn Sie Änderungen vornehmen, und starten Sie den SSH-Daemon neu.
Sie können dies testen, indem Sie versuchen, eine Verbindung herzustellen und das falsche Passwort eingeben.

Beachten Sie, dass die MaxAuthTries-Zahl höher ist als die Anzahl der Versuche, die dem Benutzer erlaubt sind. Nach zwei fehlgeschlagenen Versuchen wird die Verbindung getrennt, was bedeutet, dass MaxAuthTries auf 3 gesetzt ist.
Deaktivieren Sie die Root-Anmeldung
Es wird empfohlen, sich nicht als Root anzumelden, sondern einfach als normaler Benutzer unter Linux zu verwenden und sudo zu verwenden, um Aktionen auszuführen, die Root-Berechtigungen erfordern. Sie sollten Root auch nicht erlauben, sich beim SSH-Server anzumelden. Nur normale Benutzer dürfen eine Verbindung herstellen. Wenn sie eine Aufgabe auf Verwaltungsebene ausführen müssen, können sie auch sudo verwenden. Wenn Sie dem Root-Benutzer die Anmeldung erlauben müssen, können Sie ihn zwingen, einen SSH-Schlüssel zu verwenden.
Bearbeiten Sie die Konfigurationsdatei, um die Root-Anmeldung zu deaktivieren.

Scrollen Sie in der Datei nach unten, bis Sie die Zeile sehen, die mit #PermitRootLogin prohibit-password beginnt . Löschen Sie das # am Anfang der Zeile.
- Wenn Sie verhindern möchten, dass sich Root anmeldet, ersetzen Sie prohibit-password durch no.
- Wenn Sie root die Anmeldung erlauben, aber die Verwendung eines SSH-Schlüssels erzwingen, lassen Sie prohibit-password intakt.
Speichern Sie die Änderungen und starten Sie den SSH-Daemon neu.
Letzter Schritt
Wenn Sie SSH nicht auf Ihrem Computer benötigen, schalten Sie es natürlich mit dem folgenden Befehl aus:
sudo systemctl stop sshd
sudo systemctl disable sshd
Ich wünsche Ihnen viel Erfolg!