Ist es möglich, einen sudo-Befehl zur Unterstützung von privaten SSH-Schlüsseln zu erstellen, so dass der Benutzer, wenn er sich mit einem privaten Schlüssel anmeldet, sudo kann, ohne ein Kennwort einzugeben.
Dies würde das Speichern der UNIX-Sysadmin-Kennwörter in einem verschlüsselten Cold-Storage ermöglichen und würde keinen Zugriff darauf erfordern, vorausgesetzt, die Benutzer verwenden sichere private SSH-Schlüssel, um sich immer am Server anzumelden.
sudo visudo
und ändern Sie Ihr Passwort, um zuNOPASSWD: ALL
sehen, ob das funktioniertAntworten:
Die Möglichkeit dazu besteht seit (mindestens) April 2014 .
Sie müssen ein Paket mit dem Namen
pam_ssh_agent_auth
(verfügbar für Centos 7 out of the box, YMMV) installieren und dann so konfigurieren/etc/pam.d/sudo
, dass es als Autorisierungsmethode akzeptiert wird. Schließlich müssen Sie möglicherweiseSSH_AUTH_SOCK
der Liste der Umgebungsvariablen hinzufügen , die während dieser Zeit bestehen bleibensudo
.Das Gentoo Wiki enthält Details zu diesen Schritten.
quelle
Dies ist ohne einige gravierende Codeänderungen an sudo und sshd nicht möglich. Sudo kennt keine Anmeldemethoden und ssh veröffentlicht keine Informationen für andere Programme, die darauf hinweisen, ob ein öffentlicher Schlüssel, ein Kennwort oder ein anderer Mechanismus für die Anmeldung verwendet wurde.
Wie bereits erwähnt, können Sie die Option NOPASSWD in sudoers verwenden. Dies gilt jedoch immer für bestimmte Benutzer, nicht nur, wenn sie ssh mit privaten Schlüsseln verwenden.
Wenn Sie wirklich wollen, kann es Tricks geben, die Sie mit einem suid-Programm machen können, das das sshd-Protokoll überprüft und die sudoers-Datei sperrt / bearbeitet, damit dieser Benutzer ein sudo ohne Kennwort ausführt, und eine regelmäßige Aufgabe, um diese Berechtigung zu widerrufen.
Trotzdem halte ich das für eine schlechte Idee. Das Erfordernis eines Kennworts für privilegierte Befehle hat ein paar nette Vorteile, die SSH mit privatem Schlüssel nicht bietet. Insbesondere können Sie Zeitüberschreitungen für die Authentifizierung festlegen (Kennwort muss erneut eingegeben werden, gilt nicht für SSH-Sitzungen), Kennwortminima und -rotation festlegen (im Gegensatz zu SSH-Schlüsseln, deren Passphrase außerhalb der Kontrolle des Servers liegt).
quelle
Ein paar Antworten Zeigen Sie auf sudo ohne ein separates Benutzerpasswort. Sie sollten sich bewusst sein, dass dies Ihre Sicherheit beeinträchtigt.
Für einen Benutzer, der sich bereits stark mit einem Zertifikat authentifiziert hat, ist dies möglicherweise kein Problem, da er im Besitz des Zertifikats ist, das ihn theoretisch zum Root machen könnte.
Wenn Sie jedoch über Sicherheitslücken nachdenken, durch die ein Angreifer eine eingeschränkte Benutzer-Shell erhält und für die NOPASSWD in der sudoers-Datei festgelegt ist, ist der Angreifer root, ohne überhaupt über Anmeldeinformationen für das System zu verfügen.
Wenn sudo vom Benutzer ein Passwort verlangt, braucht der Angreifer Zeit und Glück, um seine Rechte an root zu eskalieren.
quelle