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_configsicher, dass folgende Einstellungen vorgenommen wurden No:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
Fügen Sie am Ende /etc/ssh/sshd_configdiese 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
allowsshGruppe die (Pubkey-) Anmeldung .
- Benutzer in der
sftponlyGruppe 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 yeses ebenfalls zur Match Group allowsshZeilengruppe hinzu. Dies ermöglicht allowsshBenutzern sowohl die Authentifizierung mit dem Pubkey als auch mit dem Passwort .
Diese Konfiguration beschränkt jeden sftponlyBenutzer auf sein Basisverzeichnis. Wenn Sie das nicht möchten, entfernen Sie die ChrootDirectory %hDirektive.
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:rootund 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 /homekönnte eine gute Alternative sein.
Das Festlegen der Shell der sftponlyBenutzer auf /sbin/nologinist für diese Lösung weder erforderlich noch schädlich, da SSH die Shell des Benutzers ForceCommand internal-sftpüberschreibt.
Die Verwendung von /sbin/nologinkann hilfreich sein, um die Anmeldung über andere Wege (physische Konsole, Samba usw.) zu unterbinden.
Dieses Setup ermöglicht keine direkten rootAnmeldungen über SSH. Dies bildet eine zusätzliche Sicherheitsebene. Wenn Sie wirklich keine direkten Root - Anmeldungen benötigen, um die Änderung der PermitRootLoginRichtlinie. Überlegen Sie forced-commands-only, ob Sie es auf , prohibit-passwordund setzen möchten (als letzte Möglichkeit) yes.
Werfen Sie einen Blick darauf, um Bonuspunkte zu erhalten und zu begrenzen, wer suroot werden kann. Fügen Sie eine Systemgruppe hinzu, die aufgerufen wird wheel, und fügen Sie hinzu, / aktivieren Sie auth required pam_wheel.soin /etc/pam.d/su.