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

7 Standard-OpenSSH-Sicherheitsoptionen, die Sie in /etc/ssh/sshd_config ändern sollten

OpenSSH-Optionen werden über die Datei /etc/ssh/sshd_config gesteuert. Dieser Artikel erklärt die 7 Standardoptionen in der Datei sshd_config, die Sie ändern sollten.

In sshd_config sind die Zeilen, die mit # beginnen, Kommentare. Für die Optionen, die die Standardwerte verwenden, enthält die Datei sshd_config eine kommentierte Zeile mit der Option und ihrem Standardwert.

Das macht es einfacher für uns, da wir den Namen der OpenSSH-Option und den Standardwert sehen können, ohne woanders nachschlagen zu müssen.

Zum Beispiel enthält die Datei sshd_config die folgende kommentierte Zeile. Dies zeigt an, dass die PubkeyAuthentication-Option „yes“ als Standardwert enthält.

$ grep -i pubkey /etc/ssh/sshd_config
#PubkeyAuthentication yes

Wenn Sie dies ändern möchten, sollten Sie den Kommentar entfernen und den Wert (von ja auf nein) wie unten gezeigt ändern.

$ vi /etc/ssh/sshd_config
PubkeyAuthentication no

Ich habe das oben nur als Beispiel gezeigt. Sie müssen den Standardwert der Option PubkeyAuthentication nicht ändern, da die Authentifizierung mit öffentlichem Schlüssel gut ist.

Sie müssen keine der Standardwerte in der Datei sshd_config ändern, mit Ausnahme der 7 Optionen, die in diesem Artikel erwähnt werden.

1. Root-Anmeldung deaktivieren (PermitRootLogin)

Standardmäßig können Sie als root per ssh auf den Server zugreifen. Es ist am besten, root nicht zu erlauben, sich direkt beim Server anzumelden. Stattdessen sollten Sie sich mit Ihrem Konto beim System anmelden und dann „su -“ ausführen, um sich als root anzumelden.

Wenn Sie mehrere Systemadministratoren in Ihrer Organisation haben und sich alle direkt als Root beim Server anmelden, wissen Sie möglicherweise nicht, welcher Systemadministrator sich als Root angemeldet hat. Wenn Sie stattdessen die Anmeldung als Root deaktivieren, werden Systemadministratoren gezwungen, sich zuerst mit ihrem Konto anzumelden, bevor sie "su -" ausführen können, dies erleichtert die Überwachung.

Fügen Sie den folgenden Eintrag zu sshd_config hinzu, um zu verhindern, dass sich root direkt beim Server anmeldet.

$ vi /etc/ssh/sshd_config
PermitRootLogin no

2. Nur bestimmte Benutzer oder Gruppen zulassen (AllowUsers AllowGroups)

Standardmäßig kann sich jeder, der sich erfolgreich authentifiziert hat, anmelden. Stattdessen können Sie einschränken, welche Benutzer (oder Gruppen) sich beim System anmelden dürfen.

Dies ist hilfreich, wenn Sie mehrere Benutzerkonten auf dem System erstellt haben, sich aber nur wenige davon anmelden sollen.

Dies ist auch hilfreich, wenn Sie NIS, openLDAP (oder ein anderes externes System) zur Authentifizierung verwenden. Jeder Benutzer in Ihrem Unternehmen hat möglicherweise ein Konto bei NIS, OpenLDAP usw. Auf einem bestimmten Server möchten Sie jedoch, dass sich nur wenige von ihnen anmelden. Auf einem Produktionssystem möchten Sie beispielsweise, dass sich nur Systemadministratoren anmelden.

Fügen Sie der Datei sshd_config den folgenden Eintrag hinzu, damit sich nur bestimmte Benutzer beim System anmelden können. Im Beispiel unten können sich nur Ramesh, John und Jason bei diesem System anmelden. Benutzernamen sollten durch Leerzeichen getrennt werden.

$ vi /etc/ssh/sshd_config
AllowUsers ramesh john jason

Fügen Sie der Datei sshd_config den folgenden Eintrag hinzu, damit sich nur die Benutzer anmelden können, die einer bestimmten Gruppe angehören. Im Beispiel unten können sich nur Benutzer, die zur sysadmin- und dba-Gruppe gehören, beim System anmelden.

$ vi /etc/ssh/sshd_config
AllowGroups sysadmin dba

3. Bestimmte Benutzer oder Gruppen verweigern (DenyUsers DenyGroups)

Anstatt bestimmte Benutzer (oder Gruppen) zuzulassen, können Sie auch bestimmte Benutzer oder Gruppen ablehnen.

Fügen Sie der Datei sshd_config den folgenden Eintrag hinzu, um bestimmten Benutzern die Anmeldung am System zu verweigern. Im Beispiel unten können sich cvs, apache, jane nicht bei diesem System anmelden. Benutzernamen sollten durch Leerzeichen getrennt werden.

$ vi /etc/ssh/sshd_config
DenyUsers cvs apache jane

Fügen Sie der Datei sshd_config den folgenden Eintrag hinzu, um Benutzern, die einer bestimmten Gruppe angehören, die Anmeldung zu verweigern. Im Beispiel unten können sich Benutzer, die zu den Gruppen "developers" und "qa" gehören, nicht beim System anmelden.

$ vi /etc/ssh/sshd_config
DenyGroups developers qa

Hinweis:Sie können eine Kombination aller Allow- und Deny-Direktiven verwenden. Es wird in dieser Reihenfolge verarbeitet:DenyUsers, AllowUsers, DenyGroups und schließlich AllowGroups

4. Ändern Sie die SSHD-Portnummer (Port)

Standardmäßig läuft ssh auf Port 22. Die meisten Angreifer prüfen, ob ein Server auf Port 22 geöffnet ist, und wenden nach dem Zufallsprinzip Brute Force an, um sich mit mehreren Kombinationen aus Benutzername und Passwort beim Server anzumelden.

Wenn Sie die Portnummer ändern, müssen andere genau wissen, welchen Port sie verwenden müssen, um sich mit ssh beim Server anzumelden. Das folgende Beispiel verwendet Port 222 für ssh.

$ vi /etc/ssh/sshd_config
Port 222

Wenn Sie in Ihren Protokollen (/var/log/secure) viele ungültige Anmeldungen mit ssh für Konten sehen, die auf Ihrem System nicht existieren, von der
IP-Adresse, die Sie nicht kennen, könnte es sein ein Brute-Force-Angriff sein. Diese Art von ungültiger SSH-Anmeldung wird beendet, wenn Sie die Portnummer ändern.

Bitte beachten Sie, dass dies Ihrem Team, das sich beim System anmeldet, kaum Unannehmlichkeiten bereitet, da es sowohl die IP-Adresse als auch die Portnummer kennen muss.

5. Anmeldefrist ändern (LoginGraceTime)

Wenn Sie per ssh auf einen Server zugreifen, haben Sie 2 Minuten Zeit, um sich anzumelden. Wenn Sie sich nicht innerhalb von 2 Minuten erfolgreich anmelden, wird ssh getrennt.
2 Minuten Zeit für eine erfolgreiche Anmeldung sind zu viel. Sie sollten erwägen, ihn auf 30 Sekunden oder 1 Minute zu ändern.

Fügen Sie den folgenden Eintrag zur Datei sshd_config hinzu, um die Kulanzzeit für die Anmeldung von 2 Minuten auf 1 Minute zu ändern.

$ vi /etc/ssh/sshd_config
LoginGraceTime 1m

6. Beschränken Sie die Schnittstelle (IP-Adresse) auf Login (ListenAddress)

Wenn Sie mehrere Schnittstellen auf dem Server haben, die auf unterschiedliche IP-Adressen konfiguriert sind, möchten Sie möglicherweise nicht, dass sich jeder mit all diesen IP-Adressen beim Server anmeldet.

Nehmen wir an, Sie haben die folgenden 4 Schnittstellen auf dem Server:

  • eth0 – 192.168.10.200
  • eth1 – 192.168.10.201
  • eth2 – 192.168.10.202
  • eth3 – 192.168.10.203

Standardmäßig lauscht ssh auf allen oben genannten IP-Adressen. Wenn Sie möchten, dass sich Benutzer nur mit den IP-Adressen 200 und 202 anmelden, tun Sie Folgendes in Ihrer sshd_config

$ vi /etc/ssh/sshd_config
ListenAddress 192.168.10.200
ListenAddress 192.168.10.202

7. SSH trennen, wenn keine Aktivität (ClientAliveInterval)

Nachdem Sie sich erfolgreich beim System angemeldet haben, möchten Sie möglicherweise die Verbindung trennen, wenn nach x Minuten keine Aktivitäten stattfinden. Dies ist im Grunde ein Leerlauf-Timeout.

In Bash können Sie dies mit der TMOUT-Variablen erreichen.

In OpenSSH kann dies erreicht werden, indem die Optionen ClientAliveCountMax und ClientAliveInterval in der Datei sshd_config kombiniert werden.

  • ClientAliveCountMax – Dies gibt die Gesamtzahl der vom SSH-Server gesendeten Checkalive-Nachrichten an, ohne eine Antwort vom SSH-Client zu erhalten. Standard ist 3.
  • ClientAliveInterval – Gibt das Timeout in Sekunden an. Nach x Sekunden sendet der SSH-Server eine Nachricht an den Client, in der er um Antwort bittet. Standard ist 0 (der Server sendet keine Nachricht zur Überprüfung an den Client).

Wenn Sie möchten, dass der SSH-Client nach 10 Minuten (600 Sekunden) automatisch beendet wird (Zeitüberschreitung), ändern Sie die Datei sshd_config und setzen Sie die folgenden beiden Parameter wie unten gezeigt.

$ vi /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0

Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. So ändern Sie die Maschinen-ID eines Systems in Oracle Enterprise Linux 7

  3. X-Anwendungen können nicht über SSH unter Linux ausgeführt werden

  4. So überprüfen Sie die Syntax der Datei /etc/ssh/sshd_config

  5. Standard gespeicherte Arbeit mit GRUB2 machen ...?

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Welche Größen sollten Sie /, /boot, /home und swap zuweisen

Sollte ich den Standard-SSH-Port auf Linux-Servern ändern?

/etc/passwd zeigt Benutzer in einer Gruppe an, /etc/group jedoch nicht

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?

Ändern Sie das Standardverzeichnis, wenn ich SSH zum Server verwende