Ich habe einen Server. Mein Server ist sicher, aber stellen wir uns einen guten Hacker vor, der eintrifft. Er kann jetzt /etc/passwd
und /etc/shadow
untersuchen. Ich möchte diese Dateien /etc/passwd
in etwas wie /etc/xxanoda
umbenennen.
Ich dachte, ich kann einen Link erstellen, aber für einen Hacker ist es einfach, ls -l
zu erstellen.
Es ist möglich, diese Dateien umzubenennen und ein laufendes Betriebssystem ohne Kompatibilitätsprobleme zu haben, oder es ist völlig nutzlos? Nur für die Suche nach Wissen.
Der Dateisystem-Hierarchie-Standard für Unix-ähnliche Systeme enthält /etc/passwd
an einem festen Speicherort. Daher sind Werkzeuge normalerweise hartcodiert, um dort danach zu suchen. Während Sie theoretisch alle relevanten Dienstprogramme neu kompilieren könnten, um an einem neuen Speicherort zu suchen, könnte jeder Angreifer immer nur nach Zeichenfolgen in diesen Binärdateien suchen, um die neue Datei zu finden, oder reguläre Ausdrücke verwenden, um Dateien mit passwd
- zu suchen. wie Inhalte.
Die shadow
-Datei sollte nur für root
(und möglicherweise für eine Gruppe mit dem Namen shadow
) lesbar sein. Wenn es einem Angreifer gelungen ist, als Root auf Ihr System zuzugreifen, hat er die vollständige Kontrolle darüber, ob er Ihre Passwd-/Shadow-Dateien lesen kann oder nicht.
Es ist denkbar, dass einige Situationen hilfreich sein können, in denen sich Dateien nicht an den erwarteten Orten befinden, z. B. wenn Sie einen schlecht konfigurierten Webserver haben, auf dem jemand http://myserver/../../etc/passwd
anfordert. Im Allgemeinen erfordert diese Art der Indirektion jedoch viel Arbeit ein minimaler Sicherheitsvorteil.
Das Beste, was wäre, ist "völlig nutzlos", wie Sie es ausdrücken. (Es ist keine zusätzliche Hürde für einen Eindringling.)
/etc/passwd
enthält zwar Kontonamen, aber jeder, der über Shell-Zugriff auf das System verfügt, kann diese finden.
/etc/shadow
enthält vertrauliche Informationen (die Passwort-Hashes), die jedoch nur von root gelesen werden können. Wenn es einem Eindringling gelungen ist, Root-Rechte zu erhalten - wie buchstabieren Sie Disaster?
In modernen Unices (und Unix-Likes, einschließlich Ubuntu) enthält /etc/passwd
keine Geheimnisse. Das Umbenennen würde mehr Mühe bereiten, als es sich lohnt, wenn man bedenkt, wie viele Dienstprogramme neu erstellt werden müssten, um an ihrem neuen Standort danach zu suchen.
/etc/shadow
ist eine andere Sache, da diese Datei Geheimnisse enthält, aber das Umbenennen hilft nicht. Es kann nur von root gelesen werden. Selbst wenn ein Hacker als anderer Benutzer in das System eindringt, reicht dies nicht aus, um auf die Datei zuzugreifen. Dies ist der Grund, warum Passwörter aus /etc/passwd
herausgenommen wurden: Jeder muss /etc/passwd
lesen können, aber nur root muss in der Lage sein, an die tatsächlichen Passwörter zu gelangen, sodass die Passwörter verschoben wurden in eine Datei, die nur root lesen konnte.
Wenn der Hacker macht root wird, rettet Sie ein Umbenennen nicht. Ein einfaches rekursives grep
könnte dem Hacker eine Liste von Dateien in einem /etc/shadow
-ähnlichen Format geben, und dann muss der Hacker sie nur durchsehen, um die gewünschten Daten zu finden. Sie haben ihn um höchstens ein paar Stunden und wahrscheinlich auch weniger verzögert: Auch dies ist nicht die Zeit wert, die erforderlich ist, um alle Dienstprogramme zu ändern und neu zu kompilieren, die vom Standort von /etc/shadow
abhängen.
Das Umbenennen der Dateien /etc/passwd
und /etc/shadow
ist wahrscheinlich nicht sinnvoll. Wenn Sie jedoch zusätzliche Sicherheit wünschen, sollten Sie sich PAM (steckbare Authentifizierungsmodule) und NSS (Name Service Switch) ansehen. Wie hier.
Mit PAM können Authentifizierungsmodule hinzugefügt werden, die ihre Authentifizierungsinformationen nicht aus den Standarddateien, sondern aus einer anderen Quelle wie ldap oder einer Datenbank lesen. Wenn Sie es verwenden, kann der /etc/shadow
fast vollständig beseitigt werden.
NSS ergänzt PAM, indem es einen Teil der Namensauflösung (z. B. zu welcher Gruppe dieser Benutzer gehört) unabhängig von den Standarddateien (/etc/passwd
, /etc/groups
) macht. Wenn Sie es verwenden, bedeutet dies, dass Ihre passwd-Datei möglicherweise nur eine Fallback-Option für root enthält und nicht mehr. Die Verwendung von SSH-Schlüsseln zur Validierung der Root-Anmeldung würde auch die Notwendigkeit beseitigen, ein Root-Passwort in der Shadow-Datei zu haben (obwohl es wünschenswert sein könnte, wenn die SSH-Verbindung unterbrochen wird).
Wenn Sie Ihre Benutzer nicht über eine separate Datenbank oder einen LDAP-Host authentifizieren möchten, können Sie alternativ auch eigene PAM- und NSS-Module erstellen, deren Daten aus einer nicht standardmäßigen Datei gelesen werden. Diese Option würde ich jedoch nicht empfehlen.
Wenn Sie versuchen möchten, sie zu verwenden, vergessen Sie nicht, auf eine bekannte, funktionierende Authentifizierungsebene zurückzugreifen. Andernfalls können Sie sich selbst mit root aus dem System ausschließen.
Beachten Sie, dass nicht alle Anwendungen PAM unterstützen (viele jedoch). NSS kann jedoch verwendet werden, um die Authentifizierung für Apps zu implementieren, die PAM nicht unterstützen. Einige Websites, die ich über NSS gelesen habe, schlagen diesen Ansatz tatsächlich vor. Dies bedeutet jedoch, dass das NSS-Modul jedem, der auf die NSS-Authentifizierungsebene zugreifen kann, das (potenziell) gehashte Kennwort zur Verfügung stellt. Dies ist fast immer etwas, das Sie vermeiden möchten (dies entspricht im Grunde dem Gewähren von Lesezugriff auf die Schattendatei ohne Rootberechtigung) )! Wenn Sie diesen Ansatz wählen, stellen Sie immer sicher, dass NSS nur verwendet wird, um dem Benutzer die Basisdaten (wie den Inhalt von /etc/passwd
) bereitzustellen, und PAM als Authentifizierungsebene verwendet wird.
Sie können diese Dateien nicht einfach umbenennen. Viele Prozesse und Programme werden danach suchen, da dies ein Standard in Linux-Systemen ist. Sie können Ihren Server auf die richtige Weise sichern.