Ich habe die .ssh / authorized_keys eingerichtet und kann mich mit dem neuen "Benutzer" mit dem pub / private Schlüssel anmelden. Ich habe auch "Benutzer" zur sudoers-Liste hinzugefügt. Das Problem, das ich jetzt habe, ist wann Ich versuche, einen sudo-Befehl auszuführen, der etwa so einfach ist:
$ sudo cd /root
Es fordert mich zur Eingabe meines Passworts auf, funktioniert aber nicht (ich verwende das von mir festgelegte Passwort für den privaten Schlüssel).
Außerdem habe ich das Passwort des Benutzers mit deaktiviert
$ passwd -l user
Was vermisse ich?
Irgendwo werden meine ersten Bemerkungen missverstanden ...
Ich versuche, mein System abzusichern. Das ultimative Ziel ist die Verwendung von Pub / Private-Schlüsseln für Anmeldungen im Gegensatz zur einfachen Kennwortauthentifizierung. Ich habe herausgefunden, wie man das alles über die authorized_keys-Datei einrichtet.
Außerdem werde ich letztendlich Server-Anmeldungen über das Root-Konto verhindern. Aber bevor ich das tue, brauche ich sudo, um für einen zweiten Benutzer zu arbeiten (den Benutzer, mit dem ich mich die ganze Zeit im System anmelde).
Für diesen zweiten Benutzer möchte ich regelmäßige Kennwortanmeldungen verhindern und nur Anmeldungen mit öffentlichen / privaten Schlüsseln erzwingen. Wenn ich den Benutzer nicht über "passwd -l user ..." sperre, kann ich trotzdem einen Schlüssel verwenden Holen Sie sich mit einem normalen Passwort in den Server.
Aber was noch wichtiger ist, ich muss sudo dazu bringen, mit einem Pub / Private Key-Setup mit einem Benutzer zu arbeiten, dessen / dessen Passwort deaktiviert ist.
Bearbeiten: OK, ich denke, ich habe es (die Lösung):
1) Ich habe / etc / ssh / sshd_config angepasst und festgelegt. PasswordAuthentication no
Dadurch werden SSH- Kennwortanmeldungen verhindert. ( Stellen Sie sicher, dass Sie zuvor einen funktionierenden öffentlichen / privaten Schlüssel eingerichtet haben
2) Ich habe die Sudoer-Liste angepasst visudo
und hinzugefügt
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root ist das einzige Benutzerkonto, das ein Passwort hat. Ich teste mit zwei Benutzerkonten "dimas" und "sherry", für die kein Passwort festgelegt wurde (Passwörter sind leer, passwd -d user
).
Das Obige verhindert im Wesentlichen, dass sich jeder mit Passwörtern beim System anmeldet (ein öffentlicher / privater Schlüssel muss eingerichtet sein).
Zusätzlich haben Benutzer in der Sudoer-Liste Administratorrechte. Sie können auch su
auf verschiedene Konten. "Dimas" kann also grundsätzlich, "dimas" sudo su sherry
jedoch NICHT su sherry
. Ebenso kann jeder Benutzer, der NICHT in der sudoers-Liste steht, NICHT su user
oder sudo su user
.
ANMERKUNG Das oben Genannte funktioniert, wird jedoch als unzureichende Sicherheit angesehen. Jedes Skript, das als "dimas" - oder "sherry" -Benutzer auf Code zugreifen kann, kann sudo ausführen, um Root-Zugriff zu erhalten. Ein Fehler in ssh, durch den sich Remotebenutzer trotz der Einstellungen anmelden können, eine Remotecodeausführung in so etwas wie Firefox oder ein anderer Fehler, durch den unerwünschter Code ausgeführt werden kann, wenn der Benutzer sich als Root anmeldet, können nun ausgeführt werden. Sudo sollte immer ein Passwort erfordern, oder Sie können sich auch als root anstelle eines anderen Benutzers anmelden.
passwd -l
Entfernt das Passwort in dem Sinne, dass das Konto GESPERRT ist - das heißt, dass kein Passwort funktioniert. Sie möchten die Kennwortauthentifizierung in sudo deaktivieren.Was Sie tun möchten, ist möglich, erfordert jedoch einige Erfahrung, da Sie ein PAM-Modul namens pam-ssh-agent-auth kompilieren müssen .
Der Vorgang ist relativ einfach:
Das Bearbeiten der Sudo-Konfiguration:
Fügen Sie Folgendes hinzu:
Fahren Sie fort, indem Sie die sudo PAM-Einstellungen ändern:
Hinzufügen (direkt über den @ include-Zeilen):
quelle
/etc/pam.d/sudo
Anleitung) ist für aktuelle Ubuntu-Versionen nicht mehr aktuell. Ich habe in meiner Antwort aktualisierte Anweisungen gegeben.Die Antwort von Andre de Miranda bietet eine nette Lösung mit pam_ssh_agent_auth , aber Teile sind veraltet. Besonders die
/etc/pam.d/sudo
Anleitung bei Verwendung vieler aktueller Linux-Versionen.Wenn Sie Ubuntu 12.04 präzise ausführen, habe ich den Prozess durch die Bereitstellung eines pam_ssh_agent_auth-Builds aus einem ppa: ppa: cpick / pam-ssh-agent-auth vereinfacht .
Sie können das Paket installieren, indem Sie Folgendes ausführen:
Wenn Sie dieses PAM-Modul nach der Installation mit sudo verwenden möchten, müssen Sie die Einstellungen von sudo und die PAM-Konfiguration konfigurieren. In Ubuntu 12.04 können Sie dies genau tun, indem Sie die folgenden zwei Dateien erstellen:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Wenn Sie Chefkoch sind, kann der obige Vorgang mit meinem Kochbuch automatisiert werden, das sich an einer der beiden folgenden Stellen befindet:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / kochbücher / pam-ssh-agent-auth .
Das
files
Verzeichnis des Kochbuchs enthält die oben beschriebenen Dateien/etc/pam.d/sudo
und/etc/sudoers.d/pam-ssh-agent-auth
, die mit Ubuntu 12.04 genau funktionieren, und sollte ein hilfreicher Ausgangspunkt sein, wenn Sie andere Versionen / Distributionen verwenden.quelle
Die einzige Möglichkeit, die Eingabe eines Kennworts zu umgehen, besteht darin, es in Ihrer
sudoers
Datei zu deaktivieren .So etwas wird
root
allen Mitgliedernwheel
uneingeschränkten Zugriff ohne Passwort geben:Dies wird jedoch absolut nicht empfohlen . Wenn Sie einen bestimmten Befehl haben, den dieser Server ausführen soll, gewähren Sie ihm nur Zugriff auf diesen Befehl. Oder noch besser, finden Sie einen anderen Weg, um das zu erreichen, was Sie tun möchten, ohne ein Sicherheitsloch zu stanzen.
quelle