Wenn Nutzerkonten nur für begrenzte Zeiträume benötigt werden, können diese zeitlich begrenzt angelegt werden.

useradd -e <Datum> <User>

Auch existierende Konten können mit einem Ablaufdatum versehen werden.

usermod -e <Datum> <User>

Eine Entropie-Messung in Form einer grafischen Darstellung ist auf der shell nicht vorgesehen. Beim Setzen von Passwörtern wird dem*der Nutzer*in allerdings Feedback in Form von Text gegeben.

Passwortwechsel können z.B. beim nächsten Login erzwungen werden.

# Passwortwechel beim nächsten login
chage -d 0 <User>

# Passwortwechel nach 180 Tagen
chage -M 180 <User>

Es soll kein direkter Root-Zugriff über ein unbenanntes Nutzerkonto mittels SSH erlaubt werden, da Standard-Administratorkontenbezeichnungen wie "root" oder "admin" für Angreifende bevorzugte Angriffsziele darstellen. Anhand von benannten Nutzerkonten kann nicht automatisch geschlossen werden, ob diese über Administratorrechte verfügen. So umgesetzt müssen auch keine Administrator-Kennwörter geteilt  werden und das lokale root-Kennwort kann für Notfälle sicher im Safe verbleiben.

# file: /etc/ssh/sshd_config
PermitRootLogin no

Privilegierte Nutzer*innen sollen der Gruppe `sudo` hinzugefügt werden und `sudo` verwenden, um Befehle mit `Superuser`-Rechten auszuführen.

usermod -aG sudo adminuser

Es sollten nur Nutzer*innen zugelassen werden, die tatsächlich SSH Zugriff benötigen.

# file: /etc/ssh/sshd_config
AllowUsers {{adminusers}} {{users}}
AllowGroups sudo ssh-user

Zusätzlich kann man den Zugang auch auf bestimmte Client-Stationen beschränken. Aber Achtung: Will ein*e Nutzer*in Zugang von mehreren Stationen, so müssen diese explizit angegeben werden. Alternativ können auch IP-Bereiche freigeschaltet werden.

# file: /etc/ssh/sshd_config
AllowUsers admin1@ip.of.admin1.station admin2@ip.of.admin2.station ...

Privilegien der Nutzer*innen prüfen und einschränken geht wie folgt:

# file: /etc/ssh/sshd_config
StrictModes yes    # default: yes
UsePrivilegeSeparation yes   # default: yes
PermitUserEnvironment no    # default: no
AcceptEnv LANG LC_*