
Wenn UNIX-Benutzer Server über SSH erreichen und wir nur Pubkey-Anmeldungen zulassen möchten, gibt es noch weitere Elemente, die dieser Liste hinzugefügt werden müssen und auf die ich achten sollte?
- Lassen Sie
pubkey login
diesshd_config
Datei auf dem Server zu. - Überlegungen zu einem Standardkennwort, wie beispielsweise"!"oder"*"
Antwort1
Es wäre gut gewesen, Ihnen mitzuteilen, nach welchem SSH-Server Sie gefragt haben und um welche (Gruppe von) Unix-Systemen es sich handelte.
!
und *
sind keine Passwörter, wenn Sie sie in /etc/passwd
oder sehen /etc/shadow
(verwenden Sie sie, getent
um diese Einträge zu lesen).
Sie kennzeichnen, ob das Konto über ein Passwort verfügt oder nicht und ob es gesperrt ist oder nicht.
Dies ist eine wichtige Unterscheidung, abhängig von der Konfiguration und Version von PAM und der Distribution,wenn Sie Linux verwenden. Wenn es gesperrt ist, ist die Wahrscheinlichkeit geringer, dass Sie sich anmelden können, andererseits ist es möglich, dass es auf älteren Systemen sofort funktioniert (das ist zumindest meine Erfahrung).
Mit können Sie (als Superuser) passwd -l <name>
ein Konto sperren ( !
) oder passwd -d <name>
dessen Kennwort löschen ( *
). Sie können beides auch kombinieren, wodurch lediglich sichergestellt wird, dass ein eventuell vorhandenes Kennwort entfernt wird: passwd -dl <name>
.
Sie sagen es nicht, aber unter der Annahme von OpenSSH lauten die relevanten Anweisungen in /etc/ssh/sshd_config
(Pfad kann variieren):
HostKey ...
Der Server muss über einen Hostschlüssel oder RSA2 oder DSA verfügen (und modernere Implementierungen fügen auch zwei elliptische Kurvenimplementierungen hinzu). RSA1 wird von allen gängigen SSH-Serverimplementierungen schon lange nicht mehr verwendet.
Dann:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
Ich würde auch immer empfehlen, die Anmeldung über SSH ( ) /etc/sudoers
komplett zu untersagen . Dieses sicherere Setup kann jedoch einen kleinen Nachteil haben, wenn die Festplatte voll ist und Ihr nicht privilegiertes Mitglied nicht auf die Festplatte schreiben kann, dies aber könnte (aufgrund des reservierten Speicherplatzes). Sie können also Ihre Anforderungen erfüllen.root
PermitRootLogin no
sudo
root
Zwei weitere Ratschläge
Weisen Sie eine Gruppe zu, um den SSH-Zugriff einzuschränken
Erstellen Sie eine Gruppe ssh-users
(oder einen beliebigen Namen) und legen Sie die entsprechende Direktive fest sshd_config
. Stellen Sie sicher, dass dies root
gemäß der Richtlinie, die Sie anhand der obigen Informationen ausgewählt haben, Mitglied dieser Gruppe ist oder nicht.
AllowGroups ssh-users
Weisen Sie eine Gruppe zu, auf die Benutzer beschränkt werden sollennurSFTP-Zugriff
Im sshd_config
Folgenden wird dann dafür gesorgt, dass Benutzer nicht entkommen können /home
und bestimmte Funktionen für sie deaktiviert werden.
Match group sftponly
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication no
Abschluss
Also ja, PAM müsste unter Linux berücksichtigt werden.
Außerdem, ob die Agentenweiterleitung zugelassen oder Ihren Benutzern überlassen werden soll.
Und nicht zuletzt, ob Sie ihnen erlauben, Ports oder X11-Verbindungen weiterzuleiten. Insbesondere Ports können unerwünscht sein, da sie es einem Benutzer ermöglichen, Ihren Server als Proxy zu verwenden.
Mit der Match
Direktive können Sie Benutzer auch hinsichtlich des Verbindungsorts einschränken (das kann auch eine Firewall oder die TCP-Wrapper tun).
Möchten Sie, dass Ihre Benutzer die Schlüssel verwalten dürfen oder möchten Sie dies abstrahieren und authorized_keys
ihnen den direkten Zugriff verwehren?
Sicherlich gibt es noch weitere Aspekte, diese liegen aber meist auf einer feineren Detailebene und sind somit Variationen der zuvor genannten Punkte.
Antwort2
Was auch immer der Benutzer möchte, unter Berücksichtigung aller Richtlinien zur Passwortkomplexität. Wenn der einzige Zugriff über SSH erfolgt PasswordAuthentication
undno
sshd_config
, dann ist es egal, wie das Passwort lautet. Beachten Sie auch, dass Einträge inshadow
sind verschlüsselte Passwörter, daher sind die Werte von !
und *
nichtPasswörter- sondern Zeichenfolgen, die keine gültigen verschlüsselten Werte sind und somit eine passwortbasierte Anmeldung verhindern.
Antwort3
Vorausgesetzt, Sie führen etwas Ähnliches wie RHEL/CentOS mit OpenSSH aus, sind dies die Dinge, die ich normalerweise mache, wenn ich auf ein Passwort verzichte:
- Konfigurieren Sie sshd_config, um nur Pubkey-Authentifizierung zu akzeptieren (
PubkeyAuthentication yes, PasswordAuthentication no, ChallengeResponseAuthentication no, UsePAM no
) - Für alle bestehenden Benutzer ein ungültiges Passwort festlegen (
chpasswd -e 'pubkey!!' <username>
) - Entfernen Sie das Ablaufdatum des Passworts aller bestehenden Benutzer (
chage -M -1 <username>
) - Wenn Sie sudo verwenden, stellen Sie sicher, dass alle Benutzerangaben mit NOPASSWD gekennzeichnet sind (z. B.
%wheel ALL=(ALL) NOPASSWD: ALL
). - Stellen Sie sicher, dass Ihr Benutzererstellungsprozess diese Anforderungen erfüllt (z. B.
useradd -p 'pubkey!!' -K MAX_PASS_DAYS=-1 <username>
)
Bevor Sie den Passwortzugriff sperren, vergewissern Sie sich doppelt, dass Sie sich erfolgreich über den öffentlichen Schlüssel authentifizieren können. Stellen Sie sicher, dass sich Ihre /home-Partition nicht auf einem Netzwerk-Mount befindet (oder an einem anderen Ort, der möglicherweise nicht immer verfügbar ist). Es gibt kaum etwas Schlimmeres, als den Zugriff auf Ihren Server zu verlieren, weil er nicht auf Ihren öffentlichen Schlüssel zugreifen kann. Wenn das System ohne Monitor ist, stellen Sie sicher, dass Sie im Notfall schnell direkten Zugriff auf die Konsole erhalten können (KVM, virtuelle Konsole, Crash Cart usw.).
Dennoch würde ich in Betracht ziehen, jedem Konto mit vollem Sudo-Zugriff ein Passwort zuzuweisen und Sudoers so zu konfigurieren, dass von ihnen ein Passwort verlangt wird. Wenn alles andere wie oben konfiguriert ist, können sie sich mit diesem Passwort zwar immer noch nicht beim Server anmelden, aber es bietet Ihnen ein wenig zusätzlichen Schutz vor jemandem, der sich an die Eingabeaufforderung setzt und „schlechte Dinge (tm)“ tut.
Antwort4
Wenn es sich um eine UNIX-Maschine (HP UX) und nicht um Linux handelt, müssen Sie rcommand
Ihre pam.conf unter dem SSHD-Konto ergänzen.
sshd account sufficient /usr/lib/security/libpam_ldap.1 rcommand
Andernfalls werden Sie beim Versuch, sich per SSH auf den Computer zuzugreifen, zu einer Kennwortabfrage aufgefordert, die jedoch nicht ausgeführt wird.