
Was ist der Zweck der Datei /etc/shadow im Linux-Betriebssystem? Und ist das bei SUSE-Clients dasselbe? Es wird eine Shadow-Cache-Datei verwaltet. Was ist der Zweck davon?
Antwort1
Unix und Unix-ähnliche Betriebssysteme (einschließlich Linux) haben Passwörter von Anfang an immer als kryptografische Hashes gespeichert (1). Diese Hashes wurden ursprünglich in gespeichert /etc/passwd
, aber diese Datei musste allgemein lesbar sein, um die Informationen für andere Zwecke verfügbar zu machen - selbst ein einfacher Benutzer ls -l
muss lesen /etc/passwd
, um die numerische Benutzer-ID jedes Dateibesitzers in seinen Benutzernamen für die Anzeige umzuwandeln. Die gehashten Passwörter in einer allgemein lesbaren Datei ermöglichten es jedoch böswilligen Benutzern, leicht an diese Hashes zu gelangen und zu 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 einer privilegierten Gruppe von Administratoren) gelesen werden konnte. /etc/shadow
Dadurch werden die Hashes vor normalen Benutzern des Systems verborgen, bleiben aber für die Benutzerauthentifizierung verfügbar.
Anmerkungen:
Pedantisch, ich weiß, aber die gespeicherten Passwörter sindnichtverschlüsselt. Sie werden mit einem kryptografisch sicheren (zumindest zum Zeitpunkt seiner Erstellung) Hash-Algorithmus gehasht. Die wichtigsten hier relevanten Unterschiede sind, dass Hashes eine feste Länge haben (die Länge des verschlüsselten Textes variiert je nach Länge des verschlüsselten Textes) und nicht umkehrbar sind (verschlüsselter Text kann entschlüsselt werden, gehashter Text nicht).
Da Hashes eine feste Länge haben, gibt es eine unendliche Anzahl von Eingaben, die zu jeder gegebenen Hash-Darstellung passen. 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.
Antwort2
Die /etc/shadow
Datei wurde aus Sicherheitsgründen erstellt und enthält das verschlüsselte Passwort jedes Benutzers.
Ursprünglich wurde das verschlüsselte Passwort in gespeichert /etc/passwd
. /etc/passwd
Es musste für alle lesbar sein, damit das System Benutzer-IDs Benutzernamen zuordnen konnte und die Benutzer Informationen übereinander herausfinden konnten, z. B. das Home-Verzeichnis des anderen Benutzers oder seine Telefonnummer, die traditionell im Feld „Gecos“ gespeichert und vom Dienstprogramm „Finger“ angezeigt wurde.
Aber dann wurde den Leuten klar, dass dies ein Sicherheitsproblem war. Jeder, der genug Zeit hatte, konnte das tun, was manBrute-Force-Angrifftelnet
, indem für jedes mögliche Passwort programmgesteuert verschlüsselte Passwörter generiert werden. Wenn der Angreifer dies tut, ohne tatsächlich zu versuchen, sich über oder anzumelden ssh
, kann das System nicht wissen, dass es angegriffen wird.
Daher wurde das verschlüsselte Passwort in die neu erstellte Datei verschoben /etc/shadow
, die nur für Root lesbar ist.
Es enthält außerdem weitere Informationen /etc/passwd
zum Benutzerkonto und Kennwort, die in der Datei nicht unterstützt wurden, z. B. wann das Kennwort zuletzt geändert wurde und wann es abläuft.
Sehen man 5 shadow
(Webversion) für vollständige Informationen zum Dateiformat.
Ich kann nicht sagen, ob dies bei SUSE genauso ist, ohne zu wissen, mit welcher SUSE-Version Sie arbeiten. Beispielsweise verwendet Ihr SUSE-System möglicherweise Blowfish statt MD5.
Sie haben auch angedeutet, dass Sie Ihre Datei mit einem System mischen, /etc/shadow
auf dem eine andere Linux-Distribution läuft, haben jedoch nicht gesagt, um welche andere Distribution es sich handelt.
SehenProbleme beim Migrieren der Schattendatei von SuSE 9.3 auf Ubuntu Server x86_64Zum Beispiel.
Um es herauszufinden, öffnen Sie /etc/shadow
und prüfen Sie, ob das verschlüsselte Passwortfeld mit $1$
oder beginnt $2$
. Wenn es enthält $1$
, handelt es sich um MD5 und ist mit den meisten anderen Distributionen kompatibel. Wenn es enthält $2$
, handelt es sich wahrscheinlich um Blowfish gemäßBlowfish-Schattendateien unter Debian.
Wenn Sie Ubuntu verwenden,erstes Google-Suchergebnis für Ubuntu Blowfishkönnte ein guter Ausgangspunkt sein.
Antwort3
In der /etc/passwd
Datei sind Benutzer aufgelistet. Diese Datei enthält viele Informationen, die vom System verwendet werden, nicht nur, um Benutzern die Anmeldung zu ermöglichen.
Jede Zeile entspricht einem Benutzereintrag und die einzelnen Felder sind durch Doppelpunkte getrennt. Das erste Feld ist der Login, gefolgt vom entsprechenden Passwort.
In diesem Feld wurden früher verschlüsselte Passwörter gespeichert. Allerdings /etc/passwd
muss die Datei für jeden im System lesbar sein, daher schützt die Verschlüsselung nicht vor Brute-Force-Angriffen, wie @Mikel bereits sagte. Die Lösung bestand darin, diese verschlüsselten Passwörter in eine nur für Root-Benutzer lesbare Datei zu verschieben: /etc/shadow
.
Enthält also /etc/shadow
die verschlüsselten Passwörter der Systembenutzer. Das System weiß, dass es in dieser Datei nach Passwörtern suchen muss, wenn die Passwortfelder darin /etc/passwd
nur ein x enthalten (was „kreuzennach /etc/shadow")
Antwort4
Mal sehen, ob ich alle Upvotes der Welt bekomme, da ich das geschrieben habe, was 1987 zur Linux Shadow Password Suite wurde ;)
Die Originaldatei /etc/passwd
enthielt einen modifizierten DES-basierten Hash des Klartextkennworts. Als die crypt()
Funktion erstellt wurde, glaubte man (und die Entwickler des UNIX-Betriebssystems gaben dies auch an), dass Angriffe auf den Kennwort-Hash aufgrund der Anzahl möglicher Kennwörter und der Verwendung eines 12-Bit-„Salts“ (4.096 mögliche Werte) nicht durchführbar seien. Jedes mögliche Klartextkennwort hatte 4.096 mögliche Hashwerte, und mit einem Hashergebnis von 64 Bit ergab dies insgesamt 2^72 mögliche Kennwort-Hashes.
Wie ein anderer 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 musste daher allgemein lesbar sein.
In den 1980er Jahren wurde deutlich, dass Wörterbuchangriffe auf die in der /etc/passwd
Datei gespeicherten Passwort-Hashes möglich wurden, und diese /etc/shadow
wurden in einer frühen Version von System V in AT&T UNIX eingeführt. Ich habe dokumentiert, welche Manpages ich zum Schreiben der ursprünglichen Shadow-Bibliothek verwendet habe, und habe es inzwischen 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, das gehashte Passwort einfach nach zu verschieben /etc/shadow
. Dies verhinderte den Drive-By-Angriff, bei dem ein nicht privilegierter Benutzer eine Kopie von erhielt /etc/passwd
und einen Angriff darauf ausführte. Wenn Sie wissen, warum ich Shadow überhaupt geschrieben habe: Ich ließ einen Benutzer meine /etc/passwd
Datei damals über UUCP herunterladen, als wir noch UUCP für so ziemlich alles verwendeten.
Als Linux entwickelt und weit verbreitet wurde, gab es bereits eine große Anzahl von Tools zum Angriff auf Passwort-Hashes. Eine Möglichkeit waren leistungsstarke Neuimplementierungen von crypt()
, und wörterbuchbasierte Angriffe über Tools wieRissUndAbonnierenwaren andere. Die erste Portierung wurde von Nate Holloway und Floria La Roche durchgeführt (ich habe sie als Urheber genannt, ich weiß nicht, ob jemand vor ihnen die Arbeit gemacht hat).
Irgendwann crypt()
war die Verwendung von -basierten Hashes, selbst in einer geschützten Datei, nicht mehr sicher und die ursprünglichen MD5
-basierten Hashes wurden geändert. MD5
Irgendwann wurde dies als zu schwach erachtet und es wurden neuere Hashes verwendet.
Theoretisch könnte ein ausreichend starker Hash in gespeichert werden /etc/passwd
. Aufgrund der schlechten Betriebssicherheit sind die /etc/shadow
Dateien vieler Systeme über verschiedene Angriffsmethoden verfügbar. „Ich habe die Sicherungsdateien gestohlen“ ist wahrscheinlich die einfachste.