Als privilegierter Benutzer versuche ich, das sudo
Passwort auf ein anderes als das beim Login verwendete zu setzen.
Ich habe einige Nachforschungen angestellt, aber keine Antwort gefunden. Hat sudo
Unterstützung , die Art der Konfiguration?
Wenn Sie jemals Ihr Passwort verlieren, verlieren Sie alles. Jemand könnte sich anmelden und sich root
mit demselben Passwort bewerben .
sudo
hat die Option, nach einem root
Passwort zu fragen, anstatt nach einem aufgerufenen Benutzerpasswort ( rootpw
), aber das Teilen eines root
Passworts ist definitiv keine Option. Deshalb haben wir es eingerichtet sudo
.
Ich habe config 2FA
in der Vergangenheit, es hat super funktioniert, aber auch den Automatisierungszweck zunichte gemacht. Wenn Sie beispielsweise einen privilegierten Befehl mit einem expect
Skript auf einem Dutzend Server ausführen möchten, 2FA
können Sie dies durch Hinzufügen nicht tun.
Die nächste Lösung, die ich gefunden habe, besteht darin, den privaten SSH-Schlüssel und die Setup-Passphrase nur mit einem Schlüssel zuzulassen, der sich vom sudo
(Anmelde-) Passwort unterscheidet. Trotzdem ist es nicht bequem, weil Sie sich in einer Notsituation nicht mit einem PC anmelden können, auf dem dieser Schlüssel nicht vorhanden ist.
Antworten:
Wenn Sie anstelle des Benutzerpassworts nach dem Root-Passwort fragen möchten, können Sie verschiedene Optionen eingeben
/etc/sudoers
.rootpw
Insbesondere wird es nach dem root-Passwort fragen. Es gibtrunaspw
undtargetpw
auch; Einzelheiten finden Sie auf der Hilfeseite sudoers (5).Ansonsten führt sudo die Authentifizierung (wie alles andere auch) über PAM durch. PAM unterstützt die anwendungsspezifische Konfiguration. Sudos Konfiguration ist in (zumindest auf meinem Debian-System)
/etc/pam.d/sudo
und sieht so aus:Mit anderen Worten, es wird standardmäßig wie alles andere im System authentifiziert. Sie können diese
@include common-auth
Zeile ändern und PAM (und damit sudo) eine alternative Kennwortquelle verwenden lassen. Die nicht auskommentierten Zeilen in common-auth sehen ungefähr so aus (standardmäßig ist dies anders, wenn Sie z. B. LDAP verwenden):Sie können z. B. Ihre alternativen Kennwörter
pam_userdb.so
anstelle von verwendenpam_unix.so
und in einer Berkeley DB-Datenbank speichern.Beispiel
Ich habe das Verzeichnis
/var/local/sudopass
, Eigentümer / Grupperoot:shadow
, Modus erstellt2750
. Darin habe ich eine Passwort-Datenbankdatei erstellt, die verwendet wurdedb5.1_load
(das ist die Version von Berkeley DB, die unter Debian Wheezy verwendet wird):Dieser Hash wurde mit
mkpasswd -m des
dem Passwort "password" generiert . Sehr sicher! (Leider scheint pam_userdb nichts besseres zu unterstützen als das altecrypt(3)
Hashing).Bearbeiten
/etc/pam.d/sudo
und entfernen Sie nun die@include common-auth
Zeile und platzieren Sie diese stattdessen:Beachten Sie, dass pam_userdb
.db
der übergebenen Datenbank eine Erweiterung hinzufügt , sodass Sie die Option auslassen müssen.db
.Laut Dannysauer in einem Kommentar müssen Sie möglicherweise die gleiche Bearbeitung auch vornehmen
/etc/pam.d/sudo-i
.In sudo muss ich jetzt
password
anstelle meines echten Anmeldekennworts Folgendes verwenden:quelle
crypt(3)
hashing" auf modernen Versionen von glibc unterstützt sha-512, z.mkpasswd -m sha-512
. pam_userdb.so kann damit gut umgehen.Für Redhat / Centos kann die Anforderung mit den folgenden Schritten erfüllt werden:
Benutzerdefinierten Benutzer erstellen und übergeben:
Bearbeiten Sie die Datei sudo pam.d so, dass sie wie folgt aussieht:
Ich bin immer noch auf der Suche nach dem Weg zur Konfiguration, so dass nur ein bestimmter Benutzer / eine bestimmte Gruppe mit dieser benutzerdefinierten Methode authentifiziert werden muss, andere können immer noch mit der normalen System-Authentifizierungsmethode authentifiziert werden. Kann mir jemand einen Rat geben?
quelle
[user_unknown=ignore,success=ok,default=bad]
... aber du musst damit spielen (und die PAM-Dokumente lesen), um es richtig zu machenpam_succeed_if
ein Modul übersprungen wird, wenn sich der Benutzer in einer Liste von Gruppen befindet, oder wenn dies nicht der Fall ist, zwei Module übersprungen werden.Ich glaube nicht, dass sudo ein solches Setup unterstützt. Mit der Aufforderung zur Eingabe des sudo-Kennworts soll sichergestellt werden, dass es sich bei der Person, die den sudo-Befehl ausgibt, um dieselbe Person handelt, die angemeldet ist. Die einfachste Möglichkeit besteht darin, den derzeit angemeldeten Benutzer aufzufordern, sich erneut zu authentifizieren.
Mit anderen Worten, der Zweck der Aufforderung zur Eingabe des sudo-Passworts besteht nicht darin, Autorität , sondern Identität herzustellen . Anhand der ermittelten Identität und der sudo-Konfiguration kann entschieden werden, ob der betreffende Benutzer über die erforderlichen Berechtigungen oder Zugriffsrechte verfügt.
quelle
Sie befürchten, dass Ihr Kontopasswort weitergegeben werden kann. Die Lösung besteht darin, das Anmeldekennwort nicht so zu verwenden, dass es offengelegt werden kann. Mit ssh wird das Passwort auf der Leitung verschlüsselt, also ist es in Ordnung. Die Benutzer deaktivieren die Kennwortauthentifizierung mit ssh, um Angriffe auf das Erraten von Kennwörtern zu verhindern und nicht um die Vertraulichkeit von Kennwörtern zu schützen. Wenn Sie für irgendetwas anderes dasselbe Kontokennwort verwenden, stellen Sie sicher, dass Sie einen sicheren, verschlüsselten Kanal verwenden, um das Kennwort bereitzustellen. Wenn Sie sich Sorgen über einen Keylogger machen, verwenden Sie keine nicht vertrauenswürdigen Computer mehr, um sich anzumelden.
Wenn jemand Ihr SSH-Passwort erhalten kann, kann er wahrscheinlich auch das alternative Sudo-Passwort erhalten. Sie sollten also Zeit investieren, um Ihre Verbindungen sicherer zu machen, als Zeit damit zu verbringen, die Dinge nur zur Illusion von mehr Sicherheit komplizierter zu machen.
quelle
Ich habe keinen sofortigen Zugriff auf ein System, auf dem ich dies testen und die Details herausarbeiten kann, aber ich habe eine Idee:
shau
.)shau2
. (Ich bin nicht sicher, ob Sie möchten, dass es die gleiche UID wie hatshau
.)shau2
mit NOPASSWD Sudo-Berechtigungen.su shau2 -c sudo "$@"
. Dies sollte nachshau2
dem Passwort fragen . Wenn das richtig eingegeben wurde, wird es ausgeführtsudo
alsshau2
(was nicht nach einem Passwort fragen sollte).shau
die sudo-Berechtigungen von.Leider müssten Sie dies für jeden Benutzer wiederholen, der über sudo-Berechtigungen verfügt.
quelle
Vielen Dank an Shâu Shắc für die Antwort ! Diese Lösung funktioniert auch mit LinuxMint 17.1 Cinnamon 32bit (ich habe nur das
db-util
Paket installiert , um es auszuführendb_load
).Aber ich bin sehr verwirrt mit der resultierenden
passwd.db
Datei. Ich habe das Gleiche wie in Ihrer Antwort getan (aber mit David und Jones sehen sie auffälliger aus):Eingegebene Anmeldeinformationen werden jedoch in der Hash-Datei als einfacher Text gespeichert:
Sie können auch sehen , david und Jones über mcedit :
Ja, es ist möglich, die Berechtigungen von einzuschränken
/usr/local/etc/passwd.db
. Benutzername und Passwort, die im Klartext gespeichert sind, sind jedoch schlecht.Selbst mit einem separaten sudo- Passwort gibt es einige potenzielle Sicherheitslücken (standardmäßig im Distributions-Setup). Daher gilt für su kein separates Passwort (daher ist es möglich, die Root-Sitzung mit
su
und dem Login-Passwort zu starten ). Auch ein separates Passwort wird vom Policy Kit nicht beachtet (es ist möglich, Synaptic mit einemsynaptic-pkexec
Passwort zu starten und sich anzumelden. Dann Pakete löschen ...). Diese Probleme können durch zusätzliche Optimierung der Konfigurationsdateien behoben werden.Im Allgemeinen scheint es, dass ein sicheres, separates Sudo-Passwort nur mit Hilfe eines benutzerdefinierten PAM-Moduls (möglicherweise vergleicht ein solches Modul das Passwort und den SHA-512-Hash, der aus einer Datei gelesen wurde) oder der SELinux-Funktionalität erreicht werden kann.
PS: Entschuldigung, es sollte ein Kommentar sein. Aber es geht als Antwort wegen des Textformats. Danke für Ihr Verständnis.
quelle