Ich muss zugeben, dass ich in einigen Fällen Server ohne Passwörter mag. Ein typischer Server ist für jeden anfällig, der physischen Zugriff darauf hat. In einigen Fällen ist es daher sinnvoll, das Kennwort physisch zu sperren und seitdem jedem physischen Zugriff zu vertrauen .
Grundlegendes Konzept
Wenn ich einen solchen Server physisch erreiche, sollte ich theoretisch in der Lage sein, Verwaltungsaufgaben ohne Passwort auszuführen, indem ich einfach root
als Login eingebe und nicht nach einem Passwort gefragt werde. Das gleiche kann für Benutzerkonten gelten, auf die jedoch physisch nicht wirklich zugegriffen werden kann. Daher werden für den (gelegentlichen) lokalen Zugriff keine Systemkennwörter benötigt.
Beim Remotezugriff auf den Server, entweder für die Verwaltung oder für das Benutzerkonto, wird voraussichtlich immer ein privater SSH-Schlüssel verwendet. Es ist sehr einfach, einen SSH-Schlüssel für ein gerade erstelltes Konto einzurichten, sodass für den (regulären) Remotezugriff keine Systemkennwörter erforderlich sind.
# user=...
#
# useradd -m "$user"
# sudo -i -u "$user"
$ keyurl=...
$
$ mkdir -p .ssh
$ curl -o .ssh/authorized_keys "$keyurl"
Die Schlussfolgerung ist, dass wir für solche Anwendungsfälle theoretisch keine Systemkennwörter benötigen . Die Frage ist also, wie wir die System- und Benutzerkonten so konfigurieren, dass dies auf konsistente und sichere Weise geschieht.
Details zum lokalen Zugriff
Wie stellen wir sicher, dass auf das Root-Konto lokal ohne Passwort zugegriffen werden kann? Ich glaube nicht , können wir verwenden , passwd -d
wie das wird Root - Zugriff zu freizügig und ein unpriviliged Benutzer machen könnte schalten kostenlos Wurzel, die falsch ist. Wir können es nicht verwenden, passwd -l
da es uns daran hindert, uns einzuloggen.
Beachten Sie, dass beim lokalen Zugriff ausschließlich die lokale Tastatur verwendet wird. Daher darf eine gültige Lösung keinen Benutzerwechsel (ob mit su
oder sudo
) zulassen .
Details zum Fernzugriff
Bis vor kurzem funktionierte die obige Lösung, jetzt begann SSH, nach gesperrten Benutzerkonten zu suchen. Wir können wahrscheinlich nicht passwd -d
aus den gleichen Gründen verwenden. Wir können es nicht verwenden, passwd -u
da es sich nur darüber beschwert, dass es zu dem führen würde, was es passwd -d
tut.
Für diesen Teil gibt es eine Problemumgehung mit einem Scheinkennwort.
user=...
echo -ne "$user:`pwgen 16`\n" | chpasswd
Es könnte auch möglich sein, die Überprüfung gesperrter Konten in SSH vollständig zu deaktivieren, aber es wäre besser, die Unterstützung gesperrter Konten beizubehalten und sie nur zu entsperren.
Schlussnoten
Was mich interessiert, ist eine Lösung, mit der Sie sich lokal und alle Konten, einschließlich Root-Konten, aus der Ferne anmelden können, ohne Kennwörter. Andererseits darf eine Lösung die Sicherheit nur auf ausdrücklich beschriebene Weise beeinträchtigen, insbesondere nicht, indem Remotebenutzern der Zugriff auf das Root-Konto oder das Konto anderer Benutzer gewährt wird. Die Lösung sollte ausreichend robust sein, damit sie indirekt keine Sicherheitsprobleme verursacht.
Eine akzeptierte und prämierte Antwort kann die detaillierte Konfiguration einzelner Tools beschreiben oder nicht, muss jedoch die wichtigsten Punkte enthalten, um die angegebenen Ziele zu erreichen. Beachten Sie, dass dies wahrscheinlich nicht durch herkömmliche Verwendung von Tools wie gelöst werden passwd
, ssh
, su
, sudo
und dergleichen.
Weitere Ideen nach dem Lesen der ersten Antworten
Nur eine Idee - der lokale Root-Zugriff könnte durch Starten von Root-Shells anstelle von Anmeldeprozessen erfolgen. Es ist jedoch weiterhin erforderlich, nur die Kennwortauthentifizierung und nicht die Authentifizierung mit öffentlichem Schlüssel zu sperren.