Ich ubuntu
richte ein paar Boxen ein und verwende Opscodes chef
als Konfigurationswerkzeug. Es wäre ziemlich einfach, öffentliche Schlüssel für jeden Benutzer auf jedem dieser Server zu installieren und die Kennwortauthentifizierung zu deaktivieren.
Die Benutzer sollten jedoch auch über sudo
Berechtigungen verfügen , für die standardmäßig ein Kennwort erforderlich ist.
Wenn ich die öffentlichen Schlüssel der Benutzer als Methode zur Zugriffsverwaltung verwenden und den Benutzern sudo
Berechtigungen erteilen möchte, muss ich dann auch die Benutzer mit NOPASSWD: ALL
in einrichten visduo
, oder kann ein Benutzer bei Bedarf sein eigenes Kennwort ändern nur öffentliche Schlüsselauthentifizierung?
man sudoers
liefert Informationen darüber, dass bestimmte Befehle mit sudo ausgeführt werden können, ohne dass ein Benutzerkennwort erforderlich ist. Sie können / etc / sudoers sogar ein Shellscript hinzufügen, mit dem Sie pro Benutzer ein "Selbstpasswort" festlegen können, ohne ein vorheriges Passwort zu benötigen.NOPASSWD: ALL
, der die Teammitglieder angehören . Wenn Sie eine bessere Lösung vorschlagen können, posten Sie diese bitte als Antwort.Antworten:
In der am häufigsten verwendeten Konfiguration von Sudo muss der Benutzer sein Kennwort eingeben. In der Regel hat der Benutzer sein Kennwort bereits zur Authentifizierung im Konto verwendet. Durch erneute Eingabe des Kennworts wird bestätigt, dass der legitime Benutzer seine Konsole nicht verlassen hat und entführt wurde.
In Ihrem Setup wird das Kennwort des Benutzers nur zur Authentifizierung bei sudo verwendet. Insbesondere wenn der SSH-Schlüssel eines Benutzers kompromittiert ist, kann der Angreifer keine Root-Rechte auf dem Server erlangen. Der Angreifer könnte einen Schlüsselprotokollierer in das Konto einfügen, aber dieser Schlüsselprotokollierer könnte von anderen Benutzern erkannt und sogar automatisch überwacht werden.
Ein Benutzer muss normalerweise sein aktuelles Kennwort kennen, um es in ein anderes Kennwort zu ändern. Das
passwd
Programm überprüft dies (es kann so konfiguriert werden, dass dies in Ihrem Szenario nicht sinnvoll oder überhaupt wünschenswert ist). Root kann jedoch das Passwort jedes Benutzers ändern, ohne das alte zu kennen. Daher kann ein Benutzer mit sudo-Befugnissen sein eigenes Kennwort ändern, ohne es an derpasswd
Eingabeaufforderung durch Ausführen eingeben zu müssensudo passwd $USER
. Wennsudo
konfiguriert ist, dass das Kennwort des Benutzers erforderlich ist, muss der Benutzer das Kennwort aufsudo
jeden Fall eingegeben haben.Sie können die Kennwortauthentifizierung selektiv deaktivieren. In Ihrer Situation würden Sie die Kennwortauthentifizierung in ssh und möglicherweise in anderen Diensten deaktivieren. Die meisten Dienste auf den meisten modernen Geräten (einschließlich Ubuntu) verwenden PAM , um Authentifizierungsmethoden zu konfigurieren. Unter Ubuntu befinden sich die PAM-Konfigurationsdateien in
/etc/pam.d
. Kommentieren Sie dieauth … pam_unix.so
Zeile in aus, um die Kennwortauthentifizierung zu deaktivieren/etc/pam.d/common-auth
. Darüber hinaus stellen Sie sicher , haben SiePasswordAuthentication no
in/etc/ssh/sshd_config
zu deaktivieren sshd der integrierten Passwort - Authentifizierung.Möglicherweise möchten Sie einigen administrativen Benutzern erlauben, sich mit einem Kennwort anzumelden oder die Kennwortauthentifizierung in der Konsole zuzulassen. Dies ist mit PAM möglich (es ist ziemlich flexibel), aber ich konnte Ihnen nicht sagen, wie es mir schlecht geht. Stellen Sie eine separate Frage, wenn Sie Hilfe benötigen.
quelle
sudo passwd
würden das Passwort für den aktuellen Benutzer ändern, nicht für den sudo-Benutzer?sudo
kann, sein eigenes Passwort ändern kann. Der genaue Befehl spielt eigentlich keine Rolle, aber um genauer zu werden, wäre es,sudo passwd bob
wobob
der Name des Benutzers oder etwas Äquivalentes ist. Ohne Argumentsudo passwd
würde sich in der Tat das Passwort für root ändern.Sie können das Modul pam_ssh_agent_auth verwenden . Es ist ziemlich einfach zu kompilieren und dann einfach den Eintrag hinzuzufügen
vor den anderen
auth
(oderinclude
) Einträgen in/etc/pam.d/sudo
und
zu
/etc/sudoers
(viavisudo
).Jetzt kann sich jeder Benutzer entweder
sudo
über einen (weitergeleiteten oder lokalen) SSH-Agenten oder über sein Passwort authentifizieren. Es kann ratsam sein, Ihre Benutzer zu bitten, die Funktion so zu verwendenssh-add -c
, dass für jedensudo
Anruf mindestens eine Bestätigung erforderlich ist.quelle
Ja, es ist unglaublich unsicher und ermöglicht einem Benutzer auch den Zugriff auf die Kennwörter anderer Benutzer, aber da sie sudo haben, können Sie nicht viel tun.
Grundsätzlich machen Sie folgendes:
$ sudo -i
Jetzt sind wir root. Wir haben Zugang zu allem.
# passwd $username
$ username kann ein beliebiger Benutzername sein.
Boom, Passwort geändert. Auch hier unglaublich unsicher, weil man jeden ändern kann, aber es funktioniert, aber es funktioniert. Ich empfehle es nicht, sondern biete diese Antwort als Beispiel dafür an, was nicht zu tun ist.
quelle
sudo -i
aktuelle Benutzerpasswort kann nicht verzichtet werden.sudo bash
könnte ein Passwort bei diesem Setup ja in der/etc/sudoers
Datei fehlen. Ich denke, @jrg konzentriert sich wie gesagt mehr auf das Problem der Unsicherheit mit sudo hiersudo -i
, Sie können direkt zusudo passwd $username
@Miro springen , Sie müssen das aktuelle Benutzerpasswort nicht kennen. Sie müssen nur das Root - Passwort zu verwenden sudo wissenMit dem Kennwort soll sichergestellt werden, dass Hacker, die den Schlüssel eines Benutzers erhalten oder ein unbeaufsichtigtes Terminal finden, keinen Root-Zugriff erhalten. Aus diesem Grund würde ich keine Lösung empfehlen, die passwortloses sudo beinhaltet.
Ich schlage vor , Sie halten es einfach: vielleicht eine E - Mail einen Benutzer das Standardkennwort mit strengen Anweisungen , um es zu ändern , so schnell wie möglich, oder auch ein Skripts in ihrem einfügen
.profile
oder.login
oder etwas , so dass es ein neues Passwort an ihrem ersten Login verlangt. Es kann sich nach Abschluss des Vorgangs selbst deaktivieren und Sie könnenexpect
das vorhandene Kennwort eingeben, damit die Benutzer es nicht mehr kennen müssen.quelle
> Dies sollte Benutzern ermöglichen, die sich nur mit öffentlichen Schlüsseln anmelden und keine Kennwörter für die Anmeldung verwenden können. Er wird jedoch gezwungen sein, das Passwort zu ändern, wenn er sich zum ersten Mal anmeldet ... aber ohne ihm vorher ein falsches Passwort mitteilen zu müssen ... Die Benutzer werden einfach aufgefordert, das Passwort zurückzusetzen und können es anschließend nur für sudo verwenden Sie können sich jedoch nicht mit diesem Kennwort anmelden (ssh). Beachten Sie, dass der Trick hier darin besteht, Benutzern kein Dummy-Passwort mitzuteilen, das sie dann zum Zeitpunkt der Anmeldung eingeben müssten, wenn sie ihr Passwort ändern müssten ... Kurz gesagt, keine Kommunikation von admin (root) an den eigentlichen Benutzer ist erforderlich.
quelle