Die Besten Möglichkeiten zum Sichern von Ihrem SSH-Server

0
48
Eny Setiyowati/Shutterstock.com

Sichern Sie Ihr Linux-system die SSH-Verbindung zum Schutz Ihrer Systeme und Daten. System-Administratoren und private Anwender gleichermaßen benötigen, zu verhärten und, die sichere Internetanbindung von Computern, aber SSH kann kompliziert sein. Hier sind zehn einfache quick-wins zu helfen, schützen Sie Ihren SSH-server.

SSH-Sicherheit-Grundlagen

SSH steht für Secure Shell. Der name “SSH” wird Synonym verwendet und bedeuten das SSH-Protokoll an sich oder die software-Werkzeuge, mit denen Systemadministratoren und Benutzer, um sichere verbindungen zu entfernten Computern über das Protokoll.

Das SSH-Protokoll ist ein verschlüsseltes Protokoll entwickelt, um eine sichere Verbindung über ein unsicheres Netzwerk wie das internet. SSH in Linux integriert ist, auf eine portable version von OpenSSH-Projekt. Umgesetzt wird es in einem klassischen client-server-Modell, mit einem SSH-server akzeptiert verbindungen von SSH-clients. Der client wird verwendet, um die Verbindung zum server und zum anzeigen der session auf dem remote-Benutzer. Der server akzeptiert die Verbindung und führt die Sitzung.

In der Standard-Konfiguration, SSH-server lauscht für eingehende verbindungen auf TCP (Transmission Control Protocol) port 22. Da das ist ein standardisierter, bekannter Anschluss, es ist ein Ziel für Bedrohungen durch Akteure und bösartigen bots.

Threat Akteure starten bots die Scannen Sie einen Bereich von IP-Adressen, die auf der Suche nach offenen ports. Die ports werden dann abgetastet, um zu sehen, ob es Lücken gibt, die ausgenutzt werden können. Denken, “ich bin sicher, es gibt größere und bessere Ziele als mich für die bösen Jungs, die darauf abzielen,” ist die falsche Argumentation. Die bots sind nicht die Auswahl der Zielobjekte basierend auf einer Verdienst; Sie sind methodisch der Suche nach Systemen, die Sie verletzen können.

Sie benennen sich selbst als Opfer, wenn Sie nicht gesichert Ihr system.

Sicherheit Reibung

Sicherheit Reibung, die irritation—was-Grad—Anwender und andere erleben werden, wenn Sie Sicherheitsmaßnahmen implementieren. Wir haben ein langes Gedächtnis und kann mich erinnern, die Einführung von neuen Benutzern zu einem computer-system, und zu hören, wie Sie bitten, in eine entsetzte Stimme, ob Sie wirklich musste ein Kennwort eingeben jedes mal, wenn Sie eingeloggt auf dem mainframe. Dass—für Sie—war die Sicherheit Reibung.

(Übrigens, die Erfindung des Passworts ist die Gutschrift von Fernando J. Corbató, eine weitere Figur in das pantheon der computer-Wissenschaftler, deren kombinierte Arbeit dazu beigetragen, die Umstände, die führte zu die Geburt von Unix.)

Die Einführung von security-Maßnahmen gehören in der Regel eine form von Reibung für jemanden. Unternehmer haben dafür zu zahlen. Die computer-Benutzer müssen möglicherweise ändern Sie Ihre gewohnten Praktiken, oder erinnere mich an einen anderen Satz von Authentifizierungs-Informationen, oder fügen Sie zusätzliche Schritte, um erfolgreich zu verbinden. Die system-Administratoren haben zusätzliche Arbeit zu tun, zu implementieren und zu pflegen, die neuen Sicherheitsmaßnahmen.

Härten und sperren von einem Linux-oder Unix-artigen Betriebssystemen kann man sehr engagiert, sehr schnell. Was wir hier besprechen, ist eine Reihe von einfach zu implementieren Schritte zur Verbesserung der Sicherheit Ihres Computers, ohne die Notwendigkeit für Anwendungen von Drittanbietern und ohne zu Graben durch Ihre firewall.

Diese Schritte sind nicht das Letzte Wort in der SSH-Sicherheit, aber Sie werden verschieben Sie einen langen Weg von der default-Einstellungen und ohne zu viel Reibung.

Verwendung der SSH Protokoll-Version 2

Im Jahr 2006, das SSH-Protokoll wurde aktualisiert von version 1 auf version 2. Es war ein wichtiges upgrade. Es waren so viele änderungen und Verbesserungen, vor allem rund um Verschlüsselung und security, dass version 2 nicht abwärtskompatibel mit version 1. Um zu verhindern, dass verbindungen von clients der version 1 können Sie festlegen, dass Ihr computer nur verbindungen von version 2-clients.

Dazu Bearbeiten Sie die /etc/ssh/sshd_config Datei. Wir werden tun, eine Menge in diesem Artikel. Wenn Sie brauchen, um diese Datei zu Bearbeiten, dies ist der Befehl zu verwenden:

sudo gedit /etc/ssh/sshd_config

Fügen Sie die Zeile:

Protokoll 2

Und speichern Sie die Datei. Wir starten den SSH-daemon-Prozess. Wieder, werden wir dafür eine Menge in diesem Artikel. Dies ist der Befehl in jedem Fall:

sudo systemctl restart sshd

Lassen Sie uns schauen, dass unsere neue Einstellung in Kraft. Wir hüpfen über einen anderen Computer und versuchen, SSH auf unserem test-Maschine. Und wir werden mit -1 (Protokoll 1) option erzwingen Sie den ssh-Befehl zu verwenden-Protokoll in der version 1.

ssh -1 dave@howtogeek.local

Toll, unsere Verbindungsanforderung zurückgewiesen. Lassen Sie uns sicherstellen, dass wir können weiterhin eine Verbindung mit Protokoll 2. Wir verwenden die von -2 (Protokoll 2) option zu beweisen, die Tatsache.

ssh -2 dave@howtogeek.local

Die Tatsache, dass der SSH-server anfordert, unser Passwort ist ein positives Indiz dafür, dass die Verbindung hergestellt wurde und Sie die Interaktion mit dem server. Eigentlich, denn die moderne SSH-clients werden standardmäßig mit Protokoll 2, das brauchen wir nicht, um anzugeben, Protokoll 2, solange unser Kunde ist auf dem neuesten Stand.

ssh dave@howtogeek.local

Und unsere Verbindung ist angenommen. So ist es nur die schwächeren und weniger sichere Protokoll 1 verbindungen, die abgelehnt werden.

Vermeiden Port 22

Port 22 ist der standard port für SSH-verbindungen. Wenn Sie einen anderen port verwenden, es fügt ein wenig von security through obscurity auf Ihrem system. Security through obscurity ist nie als eine echte Sicherheits-Maßnahme, und ich wetterte gegen die es in anderen Artikeln. In der Tat, einige der INTELLIGENTEREN Angriff bots Sonde alle offenen ports und bestimmen Sie, welches service, den Sie tragen, anstatt sich auf eine einfache look-up-Liste der ports, und vorausgesetzt, Sie bieten die üblichen Dienstleistungen. Aber mit einem nicht-standard-port kann helfen, mit der Senkung der Lärm-und bad-Datenverkehr auf port 22.

Konfigurieren einen nicht-standard-port, Bearbeiten Sie Ihre SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Entfernen Sie das Kommentarzeichen # vom Beginn der “Port” – Zeile und ersetzen Sie die “22” mit der port-Nummer Ihrer Wahl. Speichern Sie Ihre Konfigurationsdatei und starten Sie den SSH-daemon:

sudo systemctl restart sshd

Mal sehen welche Auswirkung das hat. Über auf unserem anderen computer, verwenden wir den Befehl ssh Verbindung zu unserem server. Der ssh-Befehl standardmäßig über port 22:

ssh dave@howtogeek.local

Unsere Verbindung wird abgelehnt. Lassen Sie uns versuchen Sie es erneut und geben Sie port 470, unter Verwendung der-p (port) option:

ssh -p 479 dave@howtogeek.local

Unsere Verbindung ist angenommen.

Filter-Verbindungen Mittels TCP-Wrappers

TCP-Wrapper ist eine einfache zu verstehen, access control list. Es können Sie ausschließen, und daß verbindungen, basierend auf Eigenschaften der Verbindung, der Anfrage, wie IP-Adresse oder den Hostnamen. TCP-Wrappern benutzt werden sollte in Verbindung mit und nicht anstelle von, eine richtig konfigurierte firewall. In unserem speziellen Szenario, wir ziehen die Dinge erheblich durch die Verwendung von TCP-Wrappern.

TCP-Wrapper war schon installiert auf dem Ubuntu 18.04 LTS-Maschine verwendet, um die Forschung in diesem Artikel. Es musste installiert werden, auf Manjaro 18.10 und Fedora 30.

Zur Installation auf Fedora, verwenden Sie diesen Befehl:

sudo yum install tcp_wrappers

Zum installieren unter Manjaro verwenden Sie diesen Befehl:

sudo pacman -Syu tcp-Wrapper

Es gibt zwei Dateien beteiligt. Man hält die Liste der zulässigen, und der andere hält die Liste verweigert. Bearbeiten Sie die deny-Liste mit:

sudo gedit /etc/hosts.verweigern

Dies öffnet den editor gedit mit der deny-Datei geladen in es.

Sie müssen fügen Sie die Zeile:

ALLE : ALLE

Und speichern Sie die Datei. Sie blockiert alle Zugang, die noch nicht genehmigt wurde. Jetzt müssen wir ermächtigen die verbindungen, die Sie akzeptieren wollen. Um das zu tun, müssen Sie Bearbeiten Sie die Datei erlauben:

sudo gedit /etc/hosts.erlauben

Dies öffnet den editor gedit mit der “allow” – Datei geladen in es.

Wir haben Hinzugefügt, in der SSH-daemon name, SSHD, und die IP-Adresse des computer, den wir gehen, zu erlauben, eine Verbindung herzustellen. Speichern Sie die Datei, und lassen Sie uns sehen, wenn die Einschränkungen und Berechtigungen sind in Kraft.

Zuerst werden wir versuchen, eine Verbindung von einem computer, der nicht in der hosts.Dateien zulassen:

Die Verbindung abgelehnt. Wir werden nun versuchen, eine Verbindung vom Rechner mit der IP-Adresse 192.168.4.23:

Unsere Verbindung ist angenommen.

Unser Beispiel hier ist ein bisschen brutal—nur auf einem einzigen computer herstellen können. TCP-Wrapper ist ziemlich vielseitig und flexibler als diese. Es unterstützt Hostnamen, wildcards und die Subnetz-Masken zu akzeptieren verbindungen von Bereichen von IP-Adressen. Sie werden aufgefordert zu überprüfen, die man-Seite.

Ablehnen Von Verbindungsanforderungen Ohne Passwörter

Obwohl es eine schlechte Praxis ist, ein Linux-system-administrator kann ein Benutzerkonto ohne Kennwort. Das bedeutet, dass remote-Verbindungs-Anfragen von diesem Konto wird kein Passwort zu überprüfen. Diese verbindungen werden akzeptiert, aber nicht authentifiziert.

Die Standard-Einstellungen für die SSH-Verbindung annehmen-Anfragen ohne Passwörter. Wir können ändern, die sehr leicht, und gewährleisten, dass alle verbindungen authentifiziert werden.

Wir Bearbeiten müssen Ihre SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie finden Sie unter der Zeile mit “#PermitEmptyPasswords no.” Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile und speichern Sie die Datei. Starten Sie den SSH-daemon:

sudo systemctl restart sshd

Die Verwendung von SSH-Keys Statt Passwörtern

SSH-Schlüssel stellen Sie eine sichere Methode zur Anmeldung an einen SSH-server. Passwörter können erraten werden, rissig, oder brute-forced. SSH-Schlüssel sind nicht offen für solche Arten von Angriffen.

Beim generieren von SSH-keys erstellen Sie ein Schlüsselpaar. Der eine ist der öffentliche Schlüssel und der andere der private Schlüssel. Der öffentliche Schlüssel auf den Servern installiert wird, die Sie verbinden möchten. Der private Schlüssel ist, wie der name vermuten lassen würde, ist gehalten sicher auf Ihrem eigenen computer.

SSH-Schlüssel ermöglichen Ihnen, verbindungen herstellen, ohne ein Kennwort, das sind—counterintuitively—sicherer als verbindungen mit Passwort-Authentifizierung.

Wenn Sie eine Verbindungsanforderung, die remote-computer das kopieren Ihres öffentlichen Schlüssels eine verschlüsselte Nachricht, die gesendet zurück zu Ihrem computer. Da war es mit Ihrem öffentlichen Schlüssel verschlüsselt, kann Ihr computer entschlüsseln Sie mit Ihrem privaten Schlüssel.

Ihrem computer extrahiert dann eine information von der Nachricht, insbesondere die session-ID verschlüsselt, und sendet es an den server zurück. Wenn der server Sie entschlüsseln können mit der Kopie Ihres öffentlichen Schlüssels, und wenn die Informationen in der Nachricht entspricht, was der server an Sie gesendet, wird die Verbindung bestätigt ist, werden von Euch kommt.

Hier, eine Verbindung zu dem server unter 192.168.4.11, die von einem Benutzer mit SSH-keys. Beachten Sie, dass Sie werden nicht aufgefordert, ein Kennwort einzugeben.

ssh dave@192.168.4.11

SSH-keys Verdienst einen Artikel alle zu sich selbst. Handlich, haben wir für Sie. Hier ist, wie zu erstellen und zu installieren, SSH-Schlüssel.

RELATED: Wie zum Erstellen und Installieren von SSH-Schlüsseln Aus der Linux-Shell

Deaktivieren Sie Kennwort-Authentifizierung Zusammen

Natürlich die logische Erweiterung der Verwendung von SSH-keys ist, dass, wenn remote-Benutzer sind gezwungen, diese anzunehmen, können Sie deaktivieren Sie die Passwort-Authentifizierung vollständig.

Wir Bearbeiten müssen Ihre SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie die Zeile, die beginnt mit “#PasswordAuthentication yes”. Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile, ändern Sie den “yes” auf “no”, und speichern Sie die Datei. Starten Sie den SSH-daemon:

sudo systemctl restart sshd

Deaktivieren Sie Die X11-Weiterleitung

X11-Weiterleitung ermöglicht die remote-Benutzer zum ausführen von grafischen Anwendungen auf Ihrem server über eine SSH-Sitzung. In den Händen eine Bedrohung Schauspieler oder böswilligen Benutzer eine GUI-Schnittstelle können Sie Ihre bösartigen Zwecke zu erleichtern.

Ein standard-mantra in der Internetsicherheit ist, wenn Sie nicht über eine bonafide Grund eingeschaltet haben, schalten Sie es aus. Wir werden dies durch die änderung der SSH-Konfiguration-Datei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie die Zeile, die beginnt mit “#X11Forwarding no”. Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile und speichern Sie die Datei. Starten Sie den SSH-daemon:

sudo systemctl restart sshd

Legen Sie ein Leerlauf-Timeout-Wert

Wenn es eine bestehende SSH-Verbindung zu Ihrem computer, und es wurde keine Aktivität für einen Zeitraum von Zeit, es könnte ein Sicherheitsrisiko darstellen. Es gibt eine chance, dass die Benutzer nicht an Ihrem Schreibtisch und ist anderweitig beschäftigt. Jeder andere, der vergeht, an Ihrem Schreibtisch sitzen, und starten Sie Ihren computer und via SSH mit Ihrem computer.

Es ist viel sicherer, zu etablieren eine Zeitüberschreitung. Der SSH-Verbindung werden gelöscht, wenn der inaktive Zeitraum entspricht der Frist. Einmal mehr, wir werden Bearbeiten, Ihr SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie die Zeile, die beginnt mit “#ClientAliveInterval 0” Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile, ändern Sie die Ziffer 0 auf den gewünschten Wert. Wir haben 300 Sekunden, was 5 Minuten. Speichern Sie die Datei, und starten Sie den SSH-daemon:

sudo systemctl restart sshd

Legen Sie ein Limit Für die Passwort-Versuche

Die Definition einer Obergrenze für die Anzahl von Authentifizierungs-versuche können helfen, zu vereiteln password guessing und brute-force-Angriffe. Nach der vorgegebenen Anzahl von Authentifizierungsanforderungen, wird der Benutzer getrennt werden, von dem SSH-server. Standardmäßig gibt es kein limit. Aber das ist schnell behoben.

Wieder müssen wir Bearbeiten Ihre SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie die Zeile, die beginnt mit “#MaxAuthTries 0”. Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile, ändern Sie die Ziffer 0 auf den gewünschten Wert. Wir haben 3 hier. Speichern Sie die Datei, wenn Sie Ihre änderungen und starten Sie den SSH-daemon:

sudo systemctl restart sshd

Wir können dies testen, indem Sie versucht, sich zu verbinden und bewusst ein Falsches Kennwort eingeben.

Beachten Sie, dass MaxAuthTries Zahl zu sein schien, eine mehr als die Anzahl der versuche des Benutzers erlaubt war. Nach zwei schlechten versuche, unsere test-Benutzer getrennt ist. Dies war mit MaxAuthTries auf drei festgelegt.

Deaktivieren Des Root-Logins

Es ist eine schlechte Praxis, sich als root auf Ihrem Linux-computer. Melden Sie sich als normaler Benutzer und sudo verwenden, um Aktionen auszuführen, die root-Rechte benötigen. Mehr noch, Sie sollten nicht zulassen, root-Login in Ihr SSH-server. Nur regelmäßige Nutzer erlaubt sein sollte, zu verbinden. Wenn Sie brauchen, um eine administrative Aufgabe ausführen, sollten Sie die Verwendung von sudo zu. Wenn Sie gezwungen sind, erlauben eine root-Benutzer anmelden, können Sie zumindest zwingen, für die Verwendung von SSH-keys.

Für die Letzte Zeit, wir gehen zu müssen, Bearbeiten Sie Ihre SSH-Konfigurationsdatei:

sudo gedit /etc/ssh/sshd_config

Blättern Sie durch die Datei, bis Sie die Zeile, die beginnt mit “#PermitRootLogin verbieten-Passwort” Entfernen Sie das Kommentarzeichen # vom Anfang der Zeile.

  • Wenn Sie möchten, um zu verhindern, dass root das einloggen bei alle ersetzen “verbieten-Passwort” mit “Nein”.
  • Wenn Sie erlauben, root einloggen, aber Sie zwingen zur Verwendung von SSH-keys, lassen Sie “verbieten” -Kennwort” auf.

Speichern Sie Ihre änderungen und starten Sie den SSH-daemon:

sudo systemctl restart sshd

Der Ultimative Schritt

Natürlich, wenn Sie nicht brauchen, SSH läuft auf Ihrem computer, stellen Sie sicher, es ist deaktiviert.

sudo systemctl stop sshd
sudo systemctl disable sshd

Wenn Sie nicht das Fenster öffnen, kann niemand klettern.

LESEN SIE WEITER

  • › Was Ist Leetspeak, und Wie Verwenden Sie Es?
  • › Stellen Sie Sich Diese Fragen Vor dem Aufbau eines Smarthome
  • › Ist Ihre Alte Router Immer Noch Security-Updates?
  • › So Verwenden Sie den Befehl mkfs unter Linux
  • › Windows 10 Ist der Erste Built-In-Unterstützung für Netzwerk-Kameras