Um den direkten Login vom SSH-Root-Benutzer zu verhindern, wird zunächst einmal ein weiterer Benutzer, der sich ebenfalls am Server anmelden darf, benötigt. Um einen neuen Benutzer hinzuzufügen und wie Gruppen bearbeitet werden (später in diesen Post noch benötigt), kann dieser Wiki-Beitrag hilfreich sein: Benutzer und Gruppen – ubuntuusers. Nachdem eine Authentifizierung des neuen Benutzers per SSH stattgefunden hat, kann wieder zum Root-Benutzer gewechselt werden.
Vorteile
– Server ist sicherer (es wird ein weiteres Passwort und ein Benutzername mehr benötigt)
– Bessere Zugriffskontrolle
Nachteile
– Weitere Passwörter / Benutzer müssen „gelernt“ werden
Hinweis: Wenn kein weiterer Benutzer neben dem Root-Benutzer existiert, sperrt man sich selbst vom System aus!
Login verhindern
Beginnen wir nun also damit, den Login zu verhindern. Wir melden uns also zunächst einmal noch mit dem Root-Benutzer am Server an, da dies derzeit noch möglich sein sollte. Nun wird die Datei „/etc/ssh/sshd_config“ bearbeitet. Hier ändern wir die Zeile „PermitRootLogin yes“ auf „PermitRootLogin no„. Nun wäre in der Theorie schon kein Login mit dem Root-Benutzer mehr möglich. In der Praxis ist dies jedoch noch solange möglich, bis wir den SSH-Dienst neu gestartet haben. Dies geht mittels „/etc/init.d/ssh restart“ oder alternativ mittels „service ssh restart„. Nun können wir uns nur noch mit anderen Benutzern anmelden (insofern einer existiert, der auf „/bin/bash“ zeigt, siehe „/etc/passwd„).
Einschränkung auf bestimmte Gruppen
Zusätzlich können wir nun noch mittels „AllowGroups“-Parameter angeben, welche Benutzer sich per SSH einloggen dürfen (nur eben jene Mitglieder dieser Gruppe). Kommentar aus der sshd_config hierzu:
AllowGroups
This keyword can be followed by a list of group name patterns, separated by spaces. If specified, login is allowed only for users whose primary group or supplementary group list matches one of the patterns. Only group names are valid; a numerical group ID is not recognized. By default, login is allowed for all groups. The allow/deny directives are processed in the following order: DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.
Wir erstellen uns nun also eine Gruppe mit dem Namen „sshusers“ und fügen unsere Benutzer, die sich zukünftig per SSH anmelden dürfen, dieser Gruppe hinzu. Hierfür führen wir mit Root-Rechten folgende Befehle aus:
addgroup --system sshusers adduser USER_BENUTZER sshusers
Anschließend ändern wir erneut die Datei „/etc/ssh/sshd_config„. Hier sollten nun die Eigenschaften „LoginGraceTime„, „AllowGroups„, „PermitRootLogin“ sowie „StrictModes“ wie folgt aussehen:
LoginGraceTime 30 AllowGroups sshusers PermitRootLogin no StrictModes yes
Anschließend nochmal mittels „/etc/init.d/ssh restart“ oder alternativ mittels „service ssh restart“ den SSH-Dienst neustarten und der Server ist wieder ein Stück sicherer.