sudo ohne Passwort, wenn Sie mit privaten SSH-Schlüsseln angemeldet sind

22

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.

Mikko Ohtamaa
quelle
askubuntu.com/a/135838 Wenn Sie diese Benutzer in eine Gruppe einteilen, können Sie das auf jeden Fall !
Rob
versuchen Sie sudo visudound ändern Sie Ihr Passwort, um zu NOPASSWD: ALLsehen, ob das funktioniert
Pneumatik
3
@AlanTuring Das würde auch für Benutzer in dieser Gruppe funktionieren, die sich über ein Passwort identifiziert haben.
Xyon
@ AlanTuring Das würde effektiv die Sicherheit des Servers verringern - ich möchte nur bestimmte Benutzer, nicht alle, sudo
Mikko Ohtamaa
Es ist möglich, bestimmten Benutzern Privilegien zu erteilen. Siehe meine Antwort.
Isaac Rabinovitch

Antworten:

9

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öglicherweise SSH_AUTH_SOCKder Liste der Umgebungsvariablen hinzufügen , die während dieser Zeit bestehen bleiben sudo.

Das Gentoo Wiki enthält Details zu diesen Schritten.

Liam Dawson
quelle
1
Schön, danke Liam. Schade, dass ich seit vielen Jahren kein Sysadmin mehr bin!
Mikko Ohtamaa
1

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).

Dagon
quelle
11
„Es kann nicht getan werden , “ ist keine Antwort, vor allem , wenn es kann getan werden.
Isaac Rabinovitch
Ändern Sie die Antwort auf die richtige, die neue Informationen enthält.
Mikko Ohtamaa
1

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.

Sebastian Brabetz
quelle