Wir wissen, dass die Passwörter der Benutzer /etc/passwd
in verschlüsselter Form gespeichert werden, so dass selbst der Root sie nicht sehen kann:
jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash
Stellt wie oben gezeigt :x:
das Passwort dar.
Gibt es eine Möglichkeit (mögliche Konfiguration), das Passwort im /etc/passwd
Klartext so zu speichern, dass der Root sie sehen kann?
Antworten:
Die anderen beiden Antworten haben Ihnen - richtig! - gesagt, dass dies eine schlechte Idee ist . Aber sie haben dir auch gesagt, dass es schwierig ist, eine Reihe von Programmen zu ändern.
Das ist nicht wahr. Es ist sehr leicht. Sie müssen nur eine oder zwei Konfigurationsdateien ändern. Ich halte es für wichtig, darauf hinzuweisen, da Sie sich dessen bewusst sein sollten, wenn Sie sich in Systeme einloggen, die Sie nicht kontrollieren. Diese fügen kein Klartext-Passwort in
/etc/passwd
oder ein/etc/shadow
, es wird in eine andere Datei geschrieben. Hinweis Ich habe diese nicht getestet, da ich mein Passwort lieber nicht im Klartext haben möchte.Bearbeiten
/etc/pam.d/common-password
(um das Passwort zu ändern) oder/etc/pam.d/common-auth
(um das Login zu fangen) und hinzufügen… pam_exec expose_authtok log=/root/passwords /bin/cat
Bearbeiten Sie beide und wechseln Sie mit von pam_unix zu pam_userdb
crypt=none
. Alternativ können Sie es auch nur in common-password eingeben (wobei auch pam_unix übrig bleibt), um Kennwörter nur dann aufzuzeichnen, wenn sie geändert werden.Sie können die
shadow
Option (sowie alle starken Hash-Optionen) aus pam_unix entfernen, um die Schattendatei zu deaktivieren und zu herkömmlichen Verschlüsselungskennwörtern zurückzukehren. Kein einfacher Text, aber John the Ripper wird das für Sie beheben.Weitere Informationen finden Sie im PAM-Systemverwaltungshandbuch .
Sie können auch den Quellcode von PAM bearbeiten oder ein eigenes Modul schreiben. Sie müssten nur PAM (oder Ihr Modul) kompilieren, sonst nichts.
quelle
/root/passwords
.Oh je, okay, fangen wir ganz am Anfang an ...
Nein, sie gespeichert worden ist in
/etc/passwd
, und das war schon vor einiger Zeit. Heutzutage werden Passwörter die meiste Zeit in einer sogenannten Shadow-Datei gespeichert/etc/shadow
.Ich weiß, dass es manchmal synonym verwendet wird, aber Hashing ist keine Verschlüsselung . Verschlüsselung ist per definitionem umkehrbar, dh Sie können die verschlüsselte Sache wieder in ihre Klartextform übersetzen. Hashing ist so konzipiert, dass es in keiner Weise umkehrbar ist (mit Ausnahme von Brute Force). Die ursprüngliche Klartextform von etwas, das gehasht wird, soll nicht wiederherstellbar sein.
Kennwörter in der Schattendatei werden als Hashes gespeichert.
In
x
diesem Fall handelt es sich nur um einen Platzhalter für das alte Kennwortfeld. Dasx
bedeutet, dass sich das Passwort in der Shadow-Datei befindet.Ja, das ist zwar möglich, aber aus bestimmten Gründen keine gute Idee. Deroberts Antwort erklärt einen ziemlich einfachen Weg, dies zu tun .
Aber warum ist das keine gute Idee? Aus einem einfachen, aber sehr wichtigen Grund: Sicherheit. Ich schlage vor, diese Fragen zu lesen:
Aber um es zusammenzufassen, nehmen wir Folgendes an: Es gibt einen Server in einem Unternehmen, alle Benutzerkonten sind durch ihre Passwörter geschützt und die Daten in diesen Benutzerkonten sind mit demselben Passwort verschlüsselt. Ein Cracker von außen erhält Zugriff auf den Server, kann jedoch nicht auf wichtige Daten zugreifen, da diese in den Benutzerkonten noch verschlüsselt sind.
Nehmen wir nun an, die Passwörter würden im Klartext gespeichert. Der Cracker hätte plötzlich Zugriff auf alles , weil die Passwörter gelesen werden können. Aber wenn sie als gehashte Werte gespeichert werden, sind sie für niemanden nutzlos, außer für Menschen mit vielen Ressourcen, um einen Brute-Force-Angriff durchzuführen.
quelle
"$id$"
gefolgt von einer Zeichenkette, die mit"$"
: abgeschlossen ist,$id$salt$encrypted
und anstelle der DES-Maschineid
die verwendete Verschlüsselungsmethode und diese dann identifiziert legt fest, wie der Rest der Zeichenfolge interpretiert wird ».Zunächst sind die verschlüsselten Passwörter nicht in
/etc/passwd
, aber sie sind in/etc/shadow
. Einer der Gründe dafür ist, dass/etc/passwd
es öffentlich lesbar ist (so dass Sie z. B. die GECOS-Feldinformationen für einen anderen Benutzer finden können) und insbesondere bei älteren Verschlüsselungsverfahren Brute-Force-Angriffe gegen das verschlüsselte Kennwort möglich sind.Nur die Passwörter im Klartext zu speichern, ist nicht erforderlich und erfordert Aktualisierungen des Passwortprogramms und der Bibliotheken, die die
/etc/shadow
Informationen lesen , um nach gültigen Passwörtern zu suchen. Und dann müssen Sie hoffen, dass alle Dienstprogramme gemeinsam genutzte Bibliotheken verwenden, um auf diese Informationen zuzugreifen, anstatt statisch mit etwas verknüpft zu sein, das die Speicherung von Klartextkennwörtern nicht versteht.Wäre dies eine Option in der Konfiguration eines Setups, dann gäbe es immer dumme Leute, die es unangemessen einschalten würden. Und während sie noch an CRT-Bildschirmen arbeiten und diese so ausstrahlen, dass sie von außerhalb ihres Gebäudes problemlos abgerufen werden können, während sie sich die Informationen ansehen.
Abgesehen davon verwenden Benutzer in der Regel auf mehreren Systemen dasselbe oder ein ähnliches Kennwort. Daher ist es keine gute Idee, dass Kennwörter von Menschen gelesen werden können. Da einige Systemadministratoren ihre Versuche auf anderen Systemen wiederholen könnten, weiß er, dass der Benutzer ein Konto hat.
Es muss interessantere Dinge geben, deren Funktionsweise auf Ihrem System untersucht werden kann.
quelle
/etc/shadow
speichert keine verschlüsselten Passwörter, sondern Passwort-Hashes. Ja, die Funktion wird aufgerufencrypt
und in der Manpage steht "verschlüsselt", aber wenn Sie einen Fisch als Fahrrad bezeichnen, werden ihm keine Räder gegeben. Beachten Sie, dass/etc/shadow
Kennwörter in einem anderen Format gespeichert werden können, ohne dass Programme neu kompiliert werden müssen (zumindest unter Linux und Solaris): Authentifizierungsmethoden werden immer dynamisch verknüpft. Das Speichern von Passwörtern als Klartext wäre eine schreckliche Idee , ist aber mit ein wenig Arbeit möglich .Der Hauptgrund (warum dies eine schlechte Idee ist) ist, dass kein Benutzer (root, admin oder anderer) jemals Zugriff auf das Benutzerkennwort eines anderen Benutzers haben sollte.
Einfach, weil das Passwort ein Mittel zur Authentifizierung ist. Wenn ich das Kennwort eines anderen Benutzers kenne, kenne ich dessen Anmeldeinformationen (Benutzername + Kennwort), sodass ich mich als dieser Benutzer anmelden und ihn (oder sie oder es) imitieren kann.
Alle Aktionen, die ich durchführe, wenn ich als dieser Benutzer angemeldet bin, werden vom anderen Benutzer ausgeführt. Und so sollte Authentifizierung nicht funktionieren.
Die Aktionen können katastrophal sein, z. B. das Löschen einer ganzen Reihe wichtiger Dateien, das Löschen von Festplatten, das Löschen von Backups, das Herunterfahren von Atomkraftplänen usw.
Oder einfach nur illegal. Stellen Sie sich eine Bank vor, bei der ich (der Administrator) Zugriff auf alle Passwörter habe. Mit dem Passwort des Kassierers kann ich eine Million Dollar vom Bankkonto des Präsidenten auf das Bankkonto des Fensterputzers überweisen. Verwenden Sie dann das übergeordnete Passwort des Kassierers, um die Transaktion zu genehmigen. Dann genehmigen Sie einen Scheck vom Fensterputzerkonto auf mein eigenes Offshore-Bankkonto.
Dann mache ich lange Ferien auf den Bahamas ...
In dieser Ansicht kann das Hashing der Kennwörter und die Verwendung separater Schattendateien als Mittel zur Durchsetzung dieser Regel angesehen werden (kein Benutzer sollte in der Lage sein, sich als ein anderer auszugeben).
Und wie @ Mirals Kommentar * zeigt , gibt es eine Ausnahme, bei
su
der zwar Identitätswechsel (und Arten von Ausschlägen des obigen Arguments) zulässig sind, jedoch auch ein Protokoll über seine Verwendung geführt wird (daher werden die Regeln in "Nur Administratoren können sich als andere ausgeben" geändert, aber a Logbuch wird geführt ").* Das Bankbeispiel war wahrscheinlich nicht das beste. In jeder Umgebung, in der die Sicherheit von entscheidender Bedeutung ist, sind in der Regel mehr Authentifizierungs- und Autorisierungsmittel erforderlich als nur ein Kennwort.
quelle
su otheruser
.su
protokolliert wird, zeichnet su nicht auf, was tatsächlich getan wird, während ein Benutzer die Identität eines anderen Benutzers annimmt. Ein böswilliger Root kann die Protokolle jederzeit ändern, um die Aktionen vor zukünftigen Ermittlern zu verbergen.