Was ist der Zweck der Datei / etc / shadow unter Linux? Ist es auch für SUSE-Clients gleich? Es wird eine Schatten-Cache-Datei gepflegt. Was ist der Zweck davon?
Von Anfang an haben Unix- und Unix-Betriebssysteme (einschließlich Linux) Kennwörter immer als kryptografische Hashes gespeichert (1). Diese Hashes wurden ursprünglich in gespeichert /etc/passwd
, aber diese Datei musste weltweit lesbar sein, um die Informationen für andere Zwecke verfügbar zu machen - sogar eine einfache ls -l
Lesung /etc/passwd
, um die numerische Benutzer-ID jedes Dateibesitzers zur Anzeige in ihren Benutzernamen zu konvertieren. Wenn die Hash-Passwörter jedoch in einer weltweit lesbaren Datei gespeichert sind, können böswillige Benutzer diese Hashes problemlos abrufen und versuchen, verwendbare Passwörter (2) für die Konten anderer Benutzer zu generieren.
Um dies zu verhindern, wurden die gehashten Passwörter schließlich in eine Datei verschoben, die nur von root (und gelegentlich von einer privilegierten Gruppe von Administratoren) gelesen werden kann /etc/shadow
. Dadurch werden die Hashes vor normalen Benutzern des Systems ausgeblendet, während sie für Benutzerauthentifizierungszwecke verfügbar bleiben.
Anmerkungen :
Pedantisch, ich weiß, aber die gespeicherten Passwörter sind nicht verschlüsselt. Sie werden mit einem kryptografisch sicheren Hashing-Algorithmus (zumindest zum Zeitpunkt der Erstellung) gehasht. Die wichtigsten relevanten Unterscheidungen sind, dass Hashes eine feste Länge haben (die Länge des verschlüsselten Textes hängt von der Länge des verschlüsselten Textes ab) und nicht umkehrbar sind (verschlüsselter Text kann entschlüsselt werden; Hash-Text kann nicht).
Da Hashes eine feste Länge haben, gibt es unendlich viele Eingaben, die mit einer bestimmten Hash-Darstellung übereinstimmen. Ein Angreifer könnte daher ein funktionierendes Passwort finden, das nicht unbedingt mit dem Passwort des Besitzers übereinstimmt - obwohl dies angesichts der Größe moderner Krypto-Hashes sehr unwahrscheinlich ist.
Die
/etc/shadow
Datei wurde aus Sicherheitsgründen erstellt und enthält das verschlüsselte Kennwort jedes Benutzers.Ursprünglich wurde das verschlüsselte Passwort in gespeichert
/etc/passwd
./etc/passwd
musste weltweit lesbar sein, damit das System Benutzer-IDs Benutzernamen zuordnen konnte und Benutzer Informationen über einander herausfinden konnten, z. B. das Home-Verzeichnis des anderen Benutzers oder dessen Telefonnummer, die traditionell im Feld "gecos" gespeichert war und vom Dienstprogramm "finger" angezeigt.Aber dann wurde den Leuten klar, dass dies ein Sicherheitsproblem war. Jeder, der genügend Zeit hat, kann einen sogenannten Bruteforce-Angriff ausführen , indem er programmgesteuert verschlüsselte Passwörter für jedes mögliche Passwort generiert. Wenn der Angreifer dies tat, ohne tatsächlich zu versuchen, sich über
telnet
oder anzumeldenssh
, konnte das System nicht wissen, dass es angegriffen wurde.Daher wurde das verschlüsselte Passwort in das neu erstellte Passwort verschoben
/etc/shadow
, das nur von root gelesen werden kann.Es enthält auch andere Informationen, die die
/etc/passwd
Datei in Bezug auf das Benutzerkonto und das Kennwort nicht unterstützt hat, z. B. wann das Kennwort zuletzt geändert wurde und wann es abläuft.Weitere Informationen zum Dateiformat finden Sie unter
man 5 shadow
( Webversion ).Ich kann nicht sagen, ob es für SUSE dasselbe ist, ohne zu wissen, mit welcher Version von SUSE Sie es zu tun haben. Beispielsweise verwendet Ihr SUSE-System möglicherweise Blowfish anstelle von MD5.
Sie haben auch impliziert, dass Sie Ihre
/etc/shadow
Datei mit einem System mischen , auf dem eine andere Linux-Distribution ausgeführt wird, aber nicht angegeben, was die andere Distribution ist.Siehe beispielsweise Probleme beim Migrieren von Schattendateien von SuSE 9.3 auf Ubuntu Server x86_64 .
Um dies herauszufinden, öffnen Sie
/etc/shadow
und prüfen Sie, ob das Feld für das verschlüsselte Kennwort mit$1$
oder beginnt$2$
. Wenn es enthält$1$
, ist es MD5 und mit den meisten anderen Distributionen kompatibel. Wenn es enthält$2$
, dann ist es wahrscheinlich Blowfish gemäß Blowfish-Schattendateien auf Debian .Wenn Sie Ubuntu verwenden, ist das erste Google-Suchergebnis für Ubuntu Blowfish möglicherweise ein guter Ausgangspunkt.
quelle
Benutzer werden in der
/etc/passwd
Datei aufgelistet . Diese Datei enthält viele Informationen, die vom System verwendet werden, um Benutzern nicht nur die Anmeldung zu ermöglichen.Jede Zeile entspricht einem Benutzereintrag und verschiedene Felder werden durch Doppelpunkte getrennt. Das erste Feld ist das Login, gefolgt vom entsprechenden Passwort.
In diesem Feld wurden früher verschlüsselte Passwörter gespeichert. Die
/etc/passwd
Datei muss jedoch für alle im System lesbar sein, damit die Verschlüsselung keine Brute-Force-Angriffe verhindert, wie von @Mikel angegeben. Die Lösung bestand darin, diese verschlüsselten Kennwörter in eine Nur-Root-Datei zu verschieben :/etc/shadow
.Somit
/etc/shadow
enthält die verschlüsselten Passwörter des Benutzers des Systems. Das System weiß, dass es in dieser Datei nach Kennwörtern suchen muss, wenn Kennwortfelder/etc/passwd
nur ein x enthalten (dh " Übergang zu / etc / shadow").quelle
/etc/passwd
genauso gehasht wurden / werden, wie sie es wären, wenn sie in wären/etc/shadow
. Sie sagen eigentlich nicht , dass Passwörter in/etc/passwd
Klartext sind, aber es wäre für jemanden, der mit der Behandlung von * nix-Passwörtern nicht vertraut ist, leicht, Ihre Antwort so zu interpretieren, dass sie dies impliziert.x
eigentlich etwas bedeutet. Es ist nur als ungültiger Hash vorhanden (einer, der keinem Passwort entspricht). Einige Systeme verwenden!
.Mal sehen, ob ich alle Up-Votes der Welt bekommen kann, da ich 1987 die Linux Shadow Password Suite geschrieben habe;)
Die Originaldatei
/etc/passwd
enthielt einen modifizierten DES-basierten Hash des Klartextkennworts. Zum Zeitpunkt dercrypt()
Erstellung der Funktion wurde angenommen (und dies wurde von den Entwicklern des UNIX-Betriebssystems angegeben), dass Angriffe auf den Kennwort-Hash aufgrund der Anzahl möglicher Kennwörter und der Verwendung eines 12-Bit nicht möglich wären (4.096 mögliche Werte) "Salz". Jedes mögliche Klartext-Passwort hatte 4.096 mögliche Hash-Werte, und mit einem 64-Bit-Hash-Ergebnis ergaben sich insgesamt 2 ^ 72 mögliche Passwort-Hashes.Wie ein anderes Poster erwähnte,
/etc/passwd
wurde es auch von verschiedenen Dienstprogrammen verwendet, um zwischen Benutzernamen und UID-Werten zuzuordnen (die/etc/group
Datei bietet die analoge Funktion für Gruppen), und dies erforderte, dass sie weltweit lesbar ist.In den 1980er Jahren wurde deutlich, dass Wörterbuchangriffe gegen den in der
/etc/passwd
Datei gespeicherten Passwort-Hash möglich wurden und/etc/shadow
in einer frühen Version von System V in AT & T UNIX eingeführt wurden. Ich habe dokumentiert, auf welchen Manpages ich die ursprüngliche Shadow-Bibliothek geschrieben habe, und ich ' Ich habe es seitdem vergessen, aber es war definitiv eine frühe System V-Version, wahrscheinlich SVR3.2.Was AT & T tat und was ich 1987 für SCO Xenix (das ursprüngliche SCO Xenix, nicht das spätere böse SCO Xenix) implementierte, das schließlich unter Linux zum Einsatz kam, war einfach das Hash-Passwort auf zu verschieben
/etc/shadow
. Dies verhinderte den Drive-by-Angriff, bei dem ein nicht privilegierter Benutzer eine Kopie davon erwarb/etc/passwd
und einen Angriff darauf ausführte. Wenn Sie wissen, warum ich Shadow überhaupt geschrieben habe, ließ ich meine/etc/passwd
Datei von einem Benutzer über UUCP herunterladen, als wir UUCP noch für fast alles verwendeten.Als Linux erstellt und weit verbreitet wurde, gab es eine sehr große Anzahl von Tools, um Passwort-Hashes anzugreifen. Hochleistungs-Neuimplementierungen von
crypt()
waren eine Möglichkeit, und wörterbuchbasierte Angriffe über Tools wie Crack und libcrack waren andere. Der erste Port wurde von Nate Holloway und Floria La Roche gemacht (ich gab ihnen Anerkennung, ich weiß nicht, ob jemand die Arbeit vor ihnen gemacht hat).Schließlich war die Verwendung von
crypt()
Hash-basierten Hashes selbst in einer geschützten Datei nicht mehr sicher und die ursprünglichenMD5
Hash-Änderungen wurden vorgenommen.MD5
wurde schließlich als zu schwach angesehen und neuere Hashes wurden verwendet.Theoretisch könnte ein ausreichend starker Hash gespeichert werden
/etc/passwd
. Schlechte Betriebssicherheit bedeutet, dass viele Systeme ihre/etc/shadow
Dateien über verschiedene Angriffsmethoden zur Verfügung haben - "Ich habe die Sicherungsdateien gestohlen" ist wahrscheinlich die einfachste.quelle