Ich mag das folgende Setup für die Verwaltung des SSH-Zugriffs, das ich bei der Arbeit verwende, um eine Gruppe von Benutzern auf einer kleinen Serverflotte zu verwalten. Sicherheit und einfache Verwaltung stehen ganz oben auf meiner Prioritätenliste.
Die wichtigsten Funktionen sind das einfache Verwalten von SSH-Rechten über die Mitgliedschaft in einer Unix-Gruppe, das Festlegen von Berechtigungen und die standardmäßige Sicherheit.
Einrichten
Software installieren (optional, aber nützlich):
yum install members # or apt install members
Gruppen hinzufügen:
addgroup --system allowssh
addgroup --system sftponly
Stellen Sie /etc/ssh/sshd_config
sicher, dass folgende Einstellungen vorgenommen wurden No
:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
Fügen Sie am Ende /etc/ssh/sshd_config
diese beiden Strophen hinzu:
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(Vergessen Sie nicht, SSH nach dem Bearbeiten der Datei neu zu starten.)
Erläuterung
Also, was macht das alles?
- Als zusätzliche Sicherheitsmaßnahme werden Root-Anmeldungen immer deaktiviert.
- Es deaktiviert immer kennwortbasierte Anmeldungen (schwache Kennwörter sind ein großes Risiko für Server, auf denen sshd ausgeführt wird).
- Es erlaubt nur Benutzern in der
allowssh
Gruppe die (Pubkey-) Anmeldung .
- Benutzer in der
sftponly
Gruppe können keine Shell über SSH erhalten, nur SFTP.
Die Verwaltung der Zugriffsberechtigten erfolgt dann einfach über die Verwaltung der Gruppenmitgliedschaft (diese Änderungen werden sofort wirksam, ein SSH-Neustart ist nicht erforderlich):
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
Beachten Sie, dass Ihre SFTP-Benutzer sowohl Mitglieder von sftponly
(um sicherzustellen, dass sie keine Shell erhalten) als auch von allowssh
(um die Anmeldung überhaupt zuzulassen) sein müssen.
Weitere Informationen
Bitte beachten Sie, dass diese Konfiguration keine Kennwortanmeldungen zulässt . Alle Konten müssen die Authentifizierung mit öffentlichem Schlüssel verwenden. Dies ist wahrscheinlich der größte Sicherheitsgewinn, den Sie mit SSH erzielen können. Daher ist es meiner Meinung nach die Mühe wert, auch wenn Sie jetzt anfangen müssen.
Wenn Sie dies wirklich nicht möchten, fügen Sie PasswordAuthentication yes
es ebenfalls zur Match Group allowssh
Zeilengruppe hinzu. Dies ermöglicht allowssh
Benutzern sowohl die Authentifizierung mit dem Pubkey als auch mit dem Passwort .
Diese Konfiguration beschränkt jeden sftponly
Benutzer auf sein Basisverzeichnis. Wenn Sie das nicht möchten, entfernen Sie die ChrootDirectory %h
Direktive.
Wenn Sie Ihnen das chrooting arbeiten wollen, ist es wichtig , dass der Home - Verzeichnis des Benutzers (und jedes Verzeichnis darüber) ist im Besitz von root:root
und nicht beschreibbar Gruppe / andere. Es ist in Ordnung, dass Unterverzeichnisse des Basisverzeichnisses im Besitz des Benutzers sind und / oder beschreibbar sind.
Ja, das Basisverzeichnis des Benutzers muss sich im Besitz von root befinden und für den Benutzer nicht beschreibbar sein. Leider gibt es gute Gründe für diese Einschränkung. Je nach Ihrer Situation ChrootDirectory /home
könnte eine gute Alternative sein.
Das Festlegen der Shell der sftponly
Benutzer auf /sbin/nologin
ist für diese Lösung weder erforderlich noch schädlich, da SSH die Shell des Benutzers ForceCommand internal-sftp
überschreibt.
Die Verwendung von /sbin/nologin
kann hilfreich sein, um die Anmeldung über andere Wege (physische Konsole, Samba usw.) zu unterbinden.
Dieses Setup ermöglicht keine direkten root
Anmeldungen über SSH. Dies bildet eine zusätzliche Sicherheitsebene. Wenn Sie wirklich keine direkten Root - Anmeldungen benötigen, um die Änderung der PermitRootLogin
Richtlinie. Überlegen Sie forced-commands-only
, ob Sie es auf , prohibit-password
und setzen möchten (als letzte Möglichkeit) yes
.
Werfen Sie einen Blick darauf, um Bonuspunkte zu erhalten und zu begrenzen, wer su
root werden kann. Fügen Sie eine Systemgruppe hinzu, die aufgerufen wird wheel
, und fügen Sie hinzu, / aktivieren Sie auth required pam_wheel.so
in /etc/pam.d/su
.