GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind mögliche Sicherheitsprobleme mit einem SSH-Daemon?

Die größte Sorge wären Leute, die sich über SSH als Administrator des Computers anmelden. Dies kann durch Brute Force geschehen, wenn Sie ein leicht zu erratendes Passwort haben.

Es gibt mehrere Sicherheitsmaßnahmen, die Sie ergreifen können, unten sind einige von denen, die ich immer treffe, wenn ich einen SSH-Server einrichte, und einige zusätzliche.

  1. Verwenden Sie ein starkes Passwort, bestehend aus mindestens (sagen wir) 10 Groß- und Kleinbuchstaben, Zahlen und anderen Zeichen.

  2. Jail-Benutzer in ihrem Home-Verzeichnis. Inhaftierte Benutzer können nicht auf Dateien zugreifen oder diese bearbeiten, die sich außerhalb ihres Home-Verzeichnisses befinden. Ihr Benutzer kann also nicht auf wichtige Systemdateien zugreifen oder diese bearbeiten. Viele Tutorials können online gefunden werden, wie man einen Benutzer einsperrt. Die meisten von ihnen verwenden JailKit. Ein Beispiel für ein solches Tutorial finden Sie hier. Alternativ können Sie auch den nativen ChrootDirectory des OpenSSH-Servers verwenden Richtlinie. Ein Beispiel für ein Tutorial dazu finden Sie hier.

  3. Installieren Sie Fail2Ban. Fail2Ban ist ein Programm, das die Authentifizierungsprotokolle auf falsche Einträge überprüft. Wenn ein bestimmtes Limit erreicht ist, fügt es für eine voreingestellte Zeit einen Firewall-Block für diese bestimmte IP hinzu. Es gibt auch mehrere Online-Tutorials zum Einrichten von Fail2Ban mit SSH, ein Beispiel wäre dieses. Die Fail2Ban-Homepage enthält auch einige schöne und vollständige HOWTOs.

  4. Deaktivieren Sie die Root-Anmeldung über SSH. Dies ist der Benutzer, der Zugriff auf so ziemlich jede Datei auf Ihrem System hat, daher wird empfohlen, seine Shell-Anmeldung zu deaktivieren. In den neuesten Versionen von Ubuntu wird der Root-Benutzer automatisch deaktiviert, aber es schadet trotzdem nicht, seinen SSH-Zugriff zu deaktivieren. Dies geschieht durch Editieren der Datei /etc/ssh/sshd_config . Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.

    #PermitRootLogin no
    
  5. Verwenden Sie einen nicht standardmäßigen Port (z. B. nicht 22). Dies geschieht entweder durch Portweiterleitung in Ihrem Router (z. B. 16121 -> 22 statt 22 -> 22) oder indem Sie den SSH-Daemon auf einem anderen Port lauschen lassen. Dadurch wird Ihr SSH-Dienst für böswillige Benutzer weniger leicht erkennbar. Dies geschieht durch Editieren 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.

    Port 22
    
  6. Verwenden Sie keine Passwörter, um sich anzumelden. Neben Passwörtern erlaubt SSH auch die Anmeldung mit privaten Schlüsseln. Das bedeutet, dass auf Ihrem Rechner ein Schlüssel hinterlegt ist, mit dem Sie auf das SSH der SSH-Maschine zugreifen. Wenn versucht wird, eine Verbindung herzustellen, verwendet der SSH-Client den Schlüssel, um sich beim Server anzumelden, anstatt eine Kennwortauthentifizierung durchzuführen. Authentifizierungsschlüssel sind kryptografisch viel stärker als Passwörter und daher nicht so leicht zu knacken. Es gibt auch mehrere Online-Tutorials zum Einrichten der schlüsselbasierten Authentifizierung mit SSH, ein Beispiel wäre dieses. (Wenn Sie SSH von Windows mit PuTTY verwenden, überprüfen Sie diesen Link für ein PuTTY-Howto.) Nachdem Sie die schlüsselbasierte Authentifizierung eingerichtet haben, können Sie die Passwortauthentifizierung deaktivieren, indem Sie die Datei /etc/ssh/sshd_config bearbeiten . Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.

    #PasswordAuthentication no
    
  7. Optional können Sie, wie @Linker3000 in seinem Kommentar erwähnt, einen VPN-Tunnel zu dem PC einrichten, auf den Sie über SSH zugreifen möchten, und dann den nicht lokalen Netzwerkzugriff auf dem SSH-Server verbieten. Auf diese Weise kann kein externes Gerät ohne VPN-Verbindung auf Ihren SSH-Server zugreifen. Dies kann erreicht werden, indem ALLE Hosts verweigert werden und dann nur den lokalen Netzwerk-IPs die Anmeldung gestattet wird. Dies geschieht durch Bearbeiten von /etc/hosts.deny und fügen Sie Folgendes hinzu:

    sshd: ALL
    

    und zu /etc/hosts.allow Folgendes hinzufügen:

    sshd: 192.168.1.*
    

    wobei die IP mit der Ihres lokalen Netzwerks übereinstimmt. * ist ein Platzhalter, also alle IP-Adressen beginnend mit 192.168.1. wird akzeptiert. Wenn dies nicht funktioniert, verwendet Ihre Distribution möglicherweise ssh statt sshd . In diesem Fall sollten Sie es mit ssh: 192.168.1.* versuchen und ssh: ALL stattdessen.

  8. Sie könnten nur bestimmte Hosts zulassen, machen Sie dasselbe mit /etc/hosts.allow und /etc/hosts.deny wie in 6 beschrieben, aber in /etc/hosts.allow Fügen Sie die folgende Zeile hinzu und fügen Sie jeden Host durch Leerzeichen getrennt hinzu:

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. Erlauben Sie nur bestimmten Benutzern den Zugriff auf Ihren SSH-Server. Dies geschieht durch Editieren der Datei /etc/ssh/sshd_config . Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstellen Sie es. Wenn Sie beispielsweise nur John, Tom und Mary zulassen möchten, fügen Sie diese Zeile hinzu/bearbeiten Sie sie:

    AllowUsers john tom mary
    

    Sie können beispielsweise auch bestimmten Benutzern den Zugriff verweigern, wenn Sie z. B. John, Tom und Mary den Zugriff verweigern möchten, fügen Sie diese Zeile hinzu/bearbeiten:

    DenyUsers john tom mary
    
  10. Lassen Sie nur das Protokoll SSH2 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 /etc/ssh/sshd_config erzwungen werden . Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstellen Sie es.

    Protocol 2,1
    

    Entfernen Sie die ,1, sodass die Zeile

    lautet
    Protocol 2
    
  11. Erlauben Sie Benutzern nicht, sich anzumelden, die kein Passwort festgelegt haben. Dies kann durch Bearbeiten der Datei /etc/ssh/sshd_config erzwungen werden . Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstellen Sie es.

    PermitEmptyPasswords no
    
  12. Und obwohl es einfach und vielleicht unnötig zu erwähnen ist, sich aber in vielen Fällen als entscheidend erwiesen hat, halten Sie Ihre Software auf dem neuesten Stand. Aktualisieren Sie regelmäßig Ihre installierten Pakete/Software.

=Nachdem Sie die SSH-Konfigurationsdatei bearbeitet haben, vergessen Sie nicht, den Daemon neu zu starten, um die Änderungen zu übernehmen. Starten Sie den Daemon neu, indem Sie Folgendes ausführen:

sudo /etc/init.d/ssh restart

oder

sudo /etc/init.d/sshd restart

je nachdem, welche Linux-Distribution Sie verwenden.


Ein paar Tipps:

  1. Verwenden Sie die schlüsselbasierte Authentifizierung, die VIEL sicherer ist als Passwörter
  2. Nur SSH 2
  3. Root-Anmeldungen deaktivieren
  4. Ändern Sie für die Paranoiker den Port vom Standardport 22
  5. Verwenden Sie der Einfachheit halber ein Tool, um Ihre IP-Adresse einem DNS-Namen zuzuordnen, z. B. Dyndns oder dergleichen. Sie können eine lange Zeit mit derselben IP arbeiten, aber wenn Sie einmal auf Reisen sind und sie brauchen, werden Sie feststellen, dass Sie eine neue erhalten haben.
  6. Lassen Sie natürlich nur den für SSH benötigten Port (Port 22 oder einen Nicht-Standard-Port, wenn Sie möchten) durch Ihre Firewall zu.

Das Hauptrisiko besteht darin, zu vergessen, dass Sie einen SSH-Server betreiben, und ein schwaches Passwort für ein Konto festzulegen. Es gibt Angreifer da draußen, die systematisch gängige Kontonamen (wie webmaster und bob ) und schwache Passwörter. Sie können dieses Risiko eliminieren, indem Sie Passwort-Logins verbieten (geben Sie PasswordAuthentication no ein in sshd_config , und entweder auch UsePAM No oder deaktivieren Sie die Passwortauthentifizierung in den PAM-Einstellungen für ssh). Eine Zwischenmaßnahme besteht darin, ssh-Anmeldungen auf eine Whitelist von Benutzern mit AllowUsers zu beschränken oder AllowGroups in sshd_config .

Beachten Sie, dass das Zulassen von Kennwortanmeldungen an sich kein Sicherheitsproblem darstellt. Schwache Passwörter und ausspionierte Passwörter sind die Probleme, und das Zulassen der Passwortauthentifizierung auf dem SSH-Server ist ein Wegbereiter. Um sich vor Passwortschnüffeln zu schützen, geben Sie Ihr Passwort niemals auf einem Computer ein, dem Sie nicht vollständig vertrauen (aber wenn Sie einem Computer vertrauen, können Sie genauso gut einen privaten Schlüssel darauf installieren, und dann benötigen Sie keine Passwortauthentifizierung).

Die Mindestanforderung für die Verwendung eines SSH-Clients auf einem Computer besteht darin, dass Sie darauf vertrauen, dass die SSH-Kommunikation nicht aktiv gekapert wird (ein Man-in-the-Middle-Angriff ist möglich, wenn er auf dem Client-Computer ausgeführt wird – denken Sie Sie geben Befehle in einen ursprünglichen SSH-Client ein, aber der Client überträgt tatsächlich Ihre Authentifizierungsdaten getreu, fügt aber anschließend auch ein Trojanisches Pferd in die Kommunikation ein). Dies ist eine schwächere Anforderung als darauf zu vertrauen, dass kein Passwortschnüffler vorhanden ist (normalerweise durch einen Keylogger durchgeführt, aber es gibt andere, weniger automatisierte Methoden wie Schultersurfen). Wenn Sie das Mindestmaß an Vertrauen haben, aber immer noch Schnüffler fürchten, 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 interagiert, die sich Ihrer Kontrolle entziehen (nicht nur Netzwerkserver, sondern auch Clients), mit Sicherheitsupdates Schritt halten.


Linux
  1. Linux IPTables:So fügen Sie Firewall-Regeln hinzu (Beispiel:SSH zulassen)

  2. So konfigurieren Sie SSH, um Benutzer/Gruppen mit Allow- und Deny-Anweisungen einzuschränken

  3. So erlauben Sie ssh mit leeren Passwörtern in Linux

  4. Was macht poll() mit einem Timeout von 0?

  5. SSH mit authorisierten_Schlüsseln zu einem Ubuntu-System mit verschlüsseltem Homedir?

Was ist SSH?

Was ist Git Bash? Arbeiten mit Git Bash-Befehlen

Schlüsselbasierte SSH-Anmeldungen mit PuTTY

Linux-Sicherheitsaudit mit Lynis

Sicherheitsaudit mit Lynis

Befreien Sie sich von Netzwerkkonnektivitätsproblemen in SSH mit Mosh