Die Berechtigungen von /etc/shadow
sind 600, was bedeutet, dass es für niemanden außer root lesbar ist.
Da jedoch alle darin enthaltenen Kennwörter nicht als Klartext, sondern als Hashes gespeichert sind (was bedeutet, dass das ursprüngliche Kennwort nicht aus dem Hash berechnet werden kann), warum kann es nicht von allen gelesen werden?
permissions
files
shadow
Shubhanshu Vishwakarma
quelle
quelle
/etc/shadow
sind600
?Antworten:
Um Offline-Brute-Force-Angriffe zu verhindern.
Auch wenn Sie einen Hash nicht rückgängig machen können, können Sie versuchen, jedes mögliche Passwort zu hacken, bis Sie eine Übereinstimmung gefunden haben. Mit guter Hardware und lokalem Zugriff auf die Datei können Sie Millionen von Versuchen pro Sekunde durchführen.
Wenn die Datei über
644
Berechtigungen verfügt, kann jeder, der sich selbst in einer Gastsitzung bei Ihrem System anmeldet, diese Datei von Ihrem Computer kopieren (auf einen USB-Stick oder per Remotezugriffscp
) und einen Brute-Force-Offlineangriff versuchen , ohne dies auf Ihrem Computer nachzuweisen .Beachten Sie, dass die Berechtigungen für Ubuntu tatsächlich
640
nicht600
:Dies spielt jedoch keine große Rolle, da noch keine Berechtigungen für andere vorhanden sind und standardmäßig niemand in der
shadow
Gruppe ist.Ursprünglich wurden Hashes in
/etc/passwd
(weshalb es so heißtpasswd
) gespeichert , als Linux erstellt wurde. Das Knacken eines Hashes, selbst der damals verwendeten schwachen Typen, war praktisch unmöglich. Schließlich stieg die Rechenleistung jedoch bis zu dem Punkt an, an dem das Knacken eines Hashs, zumindest eines relativ schwachen Passworts, möglich wurde.Ändern Sie die Berechtigungen
/etc/passwd
zu640
oder600
nicht funktionieren würde, da es viele legitime Gründe der Lage sein , zu lesen/etc/passwd
als normaler Benutzer (UIDs zu Benutzernamen, bekommen ein Benutzer vollständigen Namen, Telefonnummer, usw. konvertieren), so Hashes zu bewegt wurden/etc/shadow
, die640
Berechtigungen gegeben wurde. Einx
anstelle des Passwort - Hash - Feldes für einen Benutzer in/etc/passwd
wird verwendet , um anzuzeigen , dass der Hash für diesen Benutzer gespeichert ist ,/etc/shadow
statt.quelle
ls
beibehalten, müssen Dienstprogramme wie " setuid root" nicht angegeben werden, um von "uid" in "name" zu übersetzen.Tatsächlich wurde / etc / shadow erstellt, um eine Abkehr von einer öffentlich lesbaren Liste von Benutzernamen und Kennwörtern zu ermöglichen.
Bleib dran, dies wird eine kleine Geschichtsstunde sein, bevor wir zur eigentlichen Antwort kommen. Wenn Sie sich nicht für die Geschichte interessieren, scrollen Sie einfach ein wenig nach unten.
In früheren Zeiten behielten Unix-ähnliche Betriebssysteme, einschließlich Linux, die Passwörter im Allgemeinen in / etc / passwd. Diese Datei war und ist weltweit lesbar, da sie Informationen enthält, die eine Zuordnung beispielsweise zwischen numerischen Benutzer-IDs und Benutzernamen ermöglichen. Diese Informationen sind selbst für normale Benutzer zu absolut legitimen Zwecken äußerst nützlich, sodass die Lesbarkeit der Dateiwelt für die Benutzerfreundlichkeit von großem Vorteil war.
Schon damals erkannten die Leute, dass es eine schlechte Idee war, die Passwörter im Klartext in einer Datei an einem bekannten Ort zu haben, den jeder, der sich einloggen konnte, frei lesen konnte. In gewisser Weise wurden Passwörter gehasht. Das ist der alte "Krypta" -Kennwort-Hashing-Mechanismus, der auf modernen Systemen so gut wie nie verwendet wird, aber häufig für Legacy-Zwecke unterstützt wird.
Schauen Sie sich / etc / passwd auf Ihrem System an. Sehen Sie das zweite Feld, das
x
überall steht? Früher hatte es das Hash-Passwort für das betreffende Konto.Das Problem war, dass die Leute / etc / passwd herunterladen oder gar nicht herunterladen konnten und daran arbeiteten, die Passwörter zu knacken. Dies war kein großes Problem, obwohl Computer nicht besonders leistungsfähig waren (Clifford Stoll in The Cuckoo's Egg gibt, wie ich mich erinnere, die Zeit, um Mitte der 1980er Jahre ein Kennwort auf einem IBM-PC-Klassensystem zu hacken, etwa eine Sekunde ), aber es wurde ein Problem, da die Verarbeitungsleistung zunahm. Irgendwann wurde es mit einer anständigen Wortliste zu einfach, diese Passwörter zu knacken. Aus technischen Gründen konnte dieses Schema auch keine Kennwörter unterstützen, die länger als acht Byte sind.
Zwei Dinge wurden getan, um dies zu lösen:
Diese Datei ist / etc / shadow.
Die Software, die mit / etc / shadow zusammenarbeitet, ist in der Regel sehr klein, stark fokussiert und wird aufgrund des potenziellen Problems bei Überprüfungen häufig genauer untersucht. Es wird auch mit speziellen Berechtigungen ausgeführt, mit denen es / etc / shadow lesen und ändern kann, während normale Benutzer diese Datei nicht einsehen können.
Nun haben Sie es geschafft: Die Berechtigungen für / etc / shadow sind restriktiv (obwohl, wie bereits erwähnt, nicht ganz so restriktiv, wie Sie angegeben haben), da der gesamte Zweck dieser Datei darin besteht, den Zugriff auf vertrauliche Daten einzuschränken.
Ein Passwort-Hash sollte sicher sein, aber wenn Ihr Passwort in den Top 500-Passwörtern der Internetlisten aufgeführt ist, kann jeder, der Zugriff auf den Hash hat, das Passwort schnell finden. Das Schützen des Hashs verhindert diesen einfachen Angriff und legt die Messlatte für einen erfolgreichen Angriff höher, vom einfachen Spähen bis hin zum Erfordernis, dass einer entweder bereits ein Systemadministrator auf dem Host ist oder zuerst einen Eskalationsangriff durchläuft. Insbesondere auf einem ordnungsgemäß verwalteten Mehrbenutzersystem ist beides erheblich schwieriger als das Anzeigen einer weltweit lesbaren Datei.
quelle
/etc/shadow
enthält keine "Shadow-Passwörter" (da dies keine Sache ist). Die ganze Datei ist ein Schatten von/etc/passwd
. Sehen Sie, wie die Terminologie im Linux Shadow Password verwendet wird. HOWTO : Warum Ihre passwd-Datei spiegeln ? . Im Gegensatz zu einigen anderen Verwendungen des Begriffs „Schatten“ in der Berechnung, dann ist es keine Schattenkopie , obwohl (wie Shadowing BIOS - Code in dem RAM anstelle von ROM ausgeführt wird ). Das Feld in / etc / passwd ist ein Platzhalter, der ein Sonderzeichen enthält, das bedeutet, dass sich der echte Passwort-Hash in / etc / shadow befindet.Wer hat dir das gesagt?
Einfache Antwort: Berechtigungen in Linux werden ernst genommen. Es gibt keinen Grund für "andere", etwas damit zu tun
/etc/shadow
. Und es gibt keinen Grund für die Gruppe "Schatten", darauf zu schreiben. Und die Ausführung ist nicht in der richtigen Reihenfolge.Weil es keinen einzigen Grund dafür gibt.
Hashes sind Einbahnstraßen. Wenn Sie jemandem Lesezugriff gewähren, kann er ein Skript verwenden, um diese Einbahnstraße zu missbrauchen: Führen Sie einfach ein beliebiges Wort auf, das Sie sich vorstellen können, und erstellen Sie den Hash. Irgendwann könnte es mit dem Passwort übereinstimmen. Könnte aber auch eine Weile dauern.
Diese Antwort ist interessant und enthält einige Schätzungen zum Thema Brute Forcing.
quelle
Wichtiger Hintergrund:
/etc/shadow
Besteht ausschließlich zum Zweck, die Passwort-Hashes verborgen zu halten. In den frühen Tagen von Unix wurden Passwort-Hashes in gespeichert/etc/passwd
. Je leistungsfähiger die Computer wurden, die Netzwerkverbindungen beständiger wurden und die Sicherheitsanstrengungen immer ausgefeilter wurden, umso schwieriger wurde es, Kennwort-Hashes wortlesbar zu halten. (Auf die Exploits werde ich nicht näher eingehen; dazu gibt es bereits genügend gute Antworten.)Konnte
/etc/passwd
aber nicht lesegeschützt werden: Es wird von allen Arten von Programmen verwendet, um Benutzernamen numerische Benutzer-IDs zuzuordnen und Home-Verzeichnisse, Standard-Shells, den vollständigen Namen des Benutzers (und die Büronummer usw. - Auscheckenman finger
) nachzuschlagen. . Also wurde der vertrauliche Teil, der Passwort-Hash, verschoben/etc/shadow
und der Rest blieb wie er war. Aus diesem Grund/etc/passwd
enthält der Name trotz allem außer dem (gehashten) Passwort.quelle