Ich möchte von außen auf meinen Ubuntu 10.04 Office-PC SSH können. Ich denke daher, einen SSH-Daemon auf dem PC zu starten. Was sind die Sicherheitsprobleme, möglichen Störungen, spezifischen Konfigurationseinstellungen usw., die ich beachten sollte?
Für den Fall, dass es wichtig ist: Dies ist im Wesentlichen nur für meinen eigenen Gebrauch bestimmt. Ich glaube nicht, dass es andere Leute geben wird, die es benutzen. Es ist ein Ubuntu 10.04-PC in einer meist Windows 7 / Vista / XP-Umgebung.
Antworten:
Das größte Problem sind die Benutzer, die sich über SSH als Administrator des Computers anmelden. Dies kann mit brutaler Gewalt geschehen, wenn Sie ein leicht zu erratendes Passwort haben.
Es gibt verschiedene Sicherheitsmaßnahmen, die Sie ergreifen können. Nachfolgend sind einige der Maßnahmen aufgeführt, die ich beim Einrichten eines SSH-Servers immer ergriffen habe, und einige zusätzliche.
Verwenden Sie ein sicheres Passwort, das aus mindestens 10 Groß- und Kleinbuchstaben, Zahlen und anderen Zeichen besteht.
Jail-Benutzer in ihr Home-Verzeichnis. Eingesperrte Benutzer können nicht auf Dateien zugreifen / diese bearbeiten, die sich außerhalb ihres Ausgangsverzeichnisses befinden. Ihr Benutzer kann daher nicht auf wichtige Systemdateien zugreifen bzw. diese bearbeiten. Viele Tutorials finden Sie online, wie Sie einen Benutzer einsperren können. Die meisten von ihnen verwenden JailKit . Ein Beispiel für ein solches Tutorial finden Sie hier . Alternativ können Sie auch die native
ChrootDirectory
Direktive des OpenSSH-Servers verwenden . Ein Beispiel für ein Tutorial dazu finden Sie hier .Installieren Sie Fail2Ban . Fail2Ban ist ein Programm, das die Authentifizierungsprotokolle auf falsche Einträge überprüft. Wenn ein bestimmtes Limit erreicht ist, wird für diese bestimmte IP-Adresse für eine voreingestellte Zeitdauer ein Firewallblock hinzugefügt. Es gibt auch mehrere Online-Tutorials zum Einrichten von Fail2Ban mit SSH. Ein Beispiel wäre dieses . Die Fail2Ban-Homepage enthält auch einige nette und vollständige HOWTOs.
Deaktivieren Sie die Root-Anmeldung über SSH. Dies ist der Benutzer, der Zugriff auf so ziemlich alle Dateien auf Ihrem System hat. Daher wird empfohlen, die Shell-Anmeldung zu deaktivieren. In den neuesten Versionen von Ubuntu wird der Root-Benutzer automatisch deaktiviert, es schadet jedoch nicht, den SSH-Zugriff zu deaktivieren. Dies erfolgt durch Bearbeiten der Datei
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.Verwenden Sie einen nicht standardmäßigen Port (z. B. nicht 22). Dies erfolgt entweder über die Portweiterleitung in Ihrem Router (z. B. 16121 -> 22 statt 22 -> 22) oder indem der SSH-Dämon einen anderen Port überwacht. Dadurch wird Ihr SSH-Dienst für böswillige Benutzer weniger leicht erkennbar. Dies erfolgt durch Bearbeiten der Datei
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und ändern Sie 22 in den gewünschten Port. Vergessen Sie nicht, anschließend den richtigen Port in Ihrem Router weiterzuleiten.Verwenden Sie zum Anmelden keine Passwörter. Neben Passwörtern ermöglicht SSH auch das Anmelden mit privaten Schlüsseln. Dies bedeutet, dass auf Ihrem Computer ein Schlüssel gespeichert ist, über den Sie auf die SSH des SSH-Computers zugreifen können. Wenn versucht wird, eine Verbindung herzustellen, verwendet der SSH-Client den Schlüssel, um sich beim Server anzumelden, anstatt sich über eine Kennwortauthentifizierung anzumelden. Authentifizierungsschlüssel sind kryptografisch viel stärker als Kennwörter und daher nicht so einfach zu knacken. Es gibt auch mehrere Online-Tutorials zum Einrichten der schlüsselbasierten Authentifizierung mit SSH. Ein Beispiel hierfür ist dieses . (Wenn Sie in Windows mit PuTTY SSH ausführen , finden Sie in diesem Link eine Anleitung zu PuTTY.) Nachdem Sie die schlüsselbasierte Authentifizierung eingerichtet haben, können Sie die Kennwortauthentifizierung deaktivieren, indem Sie die Datei bearbeiten
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.Optional können Sie, wie @ Linker3000 in seinem Kommentar erwähnte, einen VPN-Tunnel zu dem PC einrichten, auf den Sie über SSH zugreifen möchten, und anschließend den nicht lokalen Netzwerkzugriff auf dem SSH-Server nicht zulassen. Auf diese Weise kann kein externes Gerät ohne VPN-Verbindung auf Ihren SSH-Server zugreifen. Dies kann erreicht werden, indem ALLE Hosts abgelehnt werden und nur die lokalen Netzwerk-IPs sich anmelden können. Dies erfolgt durch Bearbeiten
/etc/hosts.deny
und Hinzufügen der folgenden Elemente:und
/etc/hosts.allow
Folgendes hinzuzufügen:wo die IP mit der Ihres lokalen Netzwerks übereinstimmt.
*
ist ein Platzhalter, daher werden alle IP-Adressen192.168.1.
akzeptiert, die mit beginnen. Wenn dies nicht funktioniert, wird Ihre Distribution möglicherweisessh
anstelle von verwendetsshd
. In diesem Fall sollten Siessh: 192.168.1.*
undssh: ALL
stattdessen versuchen .Sie könnten nur erlauben bestimmte Hosts, mit der das gleiche tun
/etc/hosts.allow
und/etc/hosts.deny
wie in 6 beschrieben, aber in/etc/hosts.allow
die folgende Zeile und jeden Host durch Leerzeichen getrennt zu ermöglichen:Erlauben Sie nur bestimmten Benutzern den Zugriff auf Ihren SSH-Server. Dies erfolgt durch Bearbeiten der Datei
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es. Wenn Sie beispielsweise nur John, Tom und Mary zulassen möchten, fügen Sie diese Zeile hinzu bzw. bearbeiten Sie sie:Sie können auch bestimmte Benutzer ablehnen. Wenn Sie beispielsweise den Zugriff auf John, Tom und Mary verweigern möchten, fügen Sie diese Zeile hinzu oder bearbeiten Sie sie:
Lassen Sie das Protokoll SSH2 nur für eingehende Verbindungen zu. Es gibt zwei Versionen des SSH-Protokolls. SSH1 unterliegt Sicherheitsproblemen, daher wird die Verwendung von SSH 2 empfohlen. Dies kann durch Bearbeiten der Datei erzwungen werden
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es.Entferne die 1, damit die Linie wird
Erlauben Sie Benutzern nicht, sich anzumelden, für die kein Kennwort festgelegt wurde. Dies kann durch Bearbeiten der Datei erzwungen werden
/etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es.Und obwohl einfach und vielleicht unnötig zu sagen, aber in vielen Fällen von entscheidender Bedeutung, halten Sie Ihre Software auf dem neuesten Stand. Aktualisieren Sie regelmäßig Ihre installierten Pakete / Software.
✝ = Vergessen Sie nicht, nach dem Bearbeiten der SSH-Konfigurationsdatei den Dämon neu zu starten, um die Änderungen zu übernehmen. Starten Sie den Daemon neu, indem Sie Folgendes ausführen:
oder
Abhängig davon, welche Linux-Distribution Sie verwenden.
quelle
sudo service ssh restart
auf Ubuntu.sudo restart ssh
.Einige Tipps:
quelle
Das Hauptrisiko besteht darin, zu vergessen, dass Sie einen SSH-Server verwenden und ein schwaches Kennwort für ein Konto festlegen. Es gibt Angreifer, die systematisch gemeinsame Kontonamen (wie
webmaster
undbob
) und schwache Passwörter ausprobieren . Sie können durch das Verbot Passwort - Logins (put dieses Risiko eliminierenPasswordAuthentication no
insshd_config
und entweder auch setzenUsePAM No
deaktivieren Passwort - Authentifizierung in den PAM - Einstellungen für ssh oder). Eine Zwischenmaßnahme besteht darin, ssh-Anmeldungen auf eine Whitelist von Benutzern mitAllowUsers
oderAllowGroups
in zu beschränkensshd_config
.Beachten Sie, dass das Zulassen von Kennwortanmeldungen an sich kein Sicherheitsproblem darstellt. Schwache Passwörter und geschnüffelte Passwörter sind die Probleme, und das Zulassen der Passwortauthentifizierung auf dem SSH-Server ist ein Enabler. Geben Sie zum Schutz vor Kennwort-Snooping niemals Ihr Kennwort auf einem Computer ein, dem Sie nicht vollständig vertrauen (wenn Sie jedoch einem Computer vertrauen, können Sie auch einen privaten Schlüssel darauf installieren und benötigen dann keine Kennwortauthentifizierung).
Die Mindestanforderung für die Verwendung eines ssh-Clients auf einem Computer besteht darin, dass Sie darauf vertrauen, dass die ssh-Kommunikation nicht aktiv missbraucht wird (ein Man-in-the-Middle-Angriff ist möglich, wenn er auf dem Client-Computer ausgeführt wird) Sie tippen Befehle in einen unberührten SSH-Client ein, der Client überträgt jedoch Ihre Authentifizierungsdaten zuverlässig, fügt jedoch anschließend ein Trojanisches Pferd in die Kommunikation ein. Dies ist eine schwächere Voraussetzung als die Gewissheit, dass kein Kennwort-Snooper vorhanden ist (normalerweise über einen Keylogger ausgeführt, aber es gibt andere weniger automatisierte Methoden wie das Schulter-Surfen). Wenn Sie das Mindestmaß an Vertrauen haben, aber dennoch Angst vor Snoopern haben, können Sie Einmalpasswörter verwenden (OpenSSH unterstützt sie durch seine PAM-Unterstützung).
Natürlich müssen Sie wie jedes andere Programm, das mit Computern außerhalb Ihrer Kontrolle interagiert (nicht nur Netzwerkserver, sondern auch Clients), über Sicherheitsupdates auf dem Laufenden bleiben.
quelle
Drei Dinge kamen mir in den Sinn:
Wenn Sie den Standard-Port 22 öffnen, wird dieser bald erkannt und Ihr PC wird von Brute-Force-Angriffen heimgesucht. Ich schlage vor, Sie konfigurieren sshd so, dass es einen anderen Port abhört oder eine Portzuordnung auf Ihrer Firewall vornimmt. Dies ist zwar kein Wundermittel, spart aber mindestens dieselben CPU-Zyklen.
Port 12345
Deaktivieren Sie die Kennwortauthentifizierung explizit und verwenden Sie nur Schlüssel. Jeder Schlüssel ist besser als das komplexeste Passwort, das Sie sich merken können.
PasswordAuthentication no
Obwohl in Ubuntu der Root-Benutzer standardmäßig deaktiviert ist, deaktivieren Sie die Root-Anmeldung explizit
PermitRootLogin Nr
quelle