Selinux schützt Contexte vor einander, aber nicht innerhalb eines Contextes. Wenn der Webserver eine Datei lesen kann und der Angreifer eine Schwachstelle im Webserver findet, dann kann er natürlich auch die Datei lesen. Er kann aber keine Datei außerhalb dieses Contextes lesen.
Beispielsweise um Benutzerverzeichnisse herauszufinden. Oder wo sind die sonst gespeichert?
Allein schon wegen Plugins wie mod_userdir, etc...
Die Datei /etc/passwd wird von sehr sehr vielen Programmen benötigt und gelesen, daher ist sie auch von allen lesbar. Dies sollte sich eigentlich schon seit langem herumgesprochen haben. Nicht umsonst werden die heiklen Infos seit ca. 2 Jahrzehnten in /etc/shadow gespeichert.
Von InsGesichtDamit am Fr, 3. August 2012 um 21:47 #
Ist mir noch nicht untergekommen, nicht nur dass das ein ziemlich dämlicher Gedanke ist. Was haben denn lokale Benutzer mit Auth. im Web gemein? Sicher geht das irgendwie, ist aber nicht der Standard, wird nicht empfohlen, generell eine unschöne Lösung.
mod_userdir existiert. Es ist Sache des Admins, ob er das einsetzen will, aber wenn er es tut, benötigt es auch Zugriff auf /etc/passwd, um überhaupt feststellen zu können, welche Verzeichnisse denn per http://example.com/~myuser freizugeben sind.
Wenn man das nicht braucht, schaltet man es auch nicht ein. Alternativ kann man ausgewählten Benutzern auch einen VirtualHost der Art http://myuser.example.com einrichten. Das hat dazu noch den Vorteil, dass die DocumentRoot / ist - kann man z.B. nutzen, um auf demselben Rechner die aktuelle Entwicklerversion der Webseite zum Testen vorzuhalten.
> Ist mir noch nicht untergekommen, nicht nur dass das ein ziemlich dämlicher Gedanke ist.
Dies Funktion wird von tausenden Hostern eingesetzt. Natürlich stützen sich viele davon nicht auf die /etc/passwd sondern auf einen zentralen Dienst. Wofür aber Apache trotzdem die Rechte benötigt um an die Infos zu kommen. Außerdem geht es meist nicht um die Authentifizierung, sondern schlicht um das Homeverzeichnis eines Benutzers.
> Sicher geht das irgendwie, ist aber nicht der Standard, wird nicht empfohlen, generell eine unschöne Lösung.
Wie kommst du darauf? Wodurch wird diese Aussage begründet?
Ich möchte dir dringenst raten einen Blick in die Apache Doku (bzw. auch andere Webserver Dokus) zu werfen. Außerdem können ein paar Zeilen zu MAC bzw. RBAC auch ganz hilfreich sein, bevor man hier in mehreren Kommentaren seine Meinung zu diesem Thema bekundet.
In nahezu jedem Fall, da dort u.a. Informationen zum Apache-Benutzer stehen. Wenn Du das umgehen willst, dann musst Du nss_files aus nsswitch rausnehmen.
Selinux schützt Contexte vor einander, aber nicht innerhalb eines Contextes.
Wenn der Webserver eine Datei lesen kann und der Angreifer eine Schwachstelle im Webserver findet, dann kann er natürlich auch die Datei lesen.
Er kann aber keine Datei außerhalb dieses Contextes lesen.
Vereinfacht gesagt.
Das liest sich aber ganz anders. In welchem Kontext muss denn Apache die /etc/passwd lesend zu greifen?
Beispielsweise um Benutzerverzeichnisse herauszufinden. Oder wo sind die sonst gespeichert?
Allein schon wegen Plugins wie mod_userdir, etc...
Die Datei /etc/passwd wird von sehr sehr vielen Programmen benötigt und gelesen, daher ist sie auch von allen lesbar. Dies sollte sich eigentlich schon seit langem herumgesprochen haben. Nicht umsonst werden die heiklen Infos seit ca. 2 Jahrzehnten in /etc/shadow gespeichert.
Gruß,
unreal
Ist mir noch nicht untergekommen, nicht nur dass das ein ziemlich dämlicher Gedanke ist. Was haben denn lokale Benutzer mit Auth. im Web gemein? Sicher geht das irgendwie, ist aber nicht der Standard, wird nicht empfohlen, generell eine unschöne Lösung.
mod_userdir existiert. Es ist Sache des Admins, ob er das einsetzen will, aber wenn er es tut, benötigt es auch Zugriff auf /etc/passwd, um überhaupt feststellen zu können, welche Verzeichnisse denn per http://example.com/~myuser freizugeben sind.
Wenn man das nicht braucht, schaltet man es auch nicht ein. Alternativ kann man ausgewählten Benutzern auch einen VirtualHost der Art http://myuser.example.com einrichten. Das hat dazu noch den Vorteil, dass die DocumentRoot / ist - kann man z.B. nutzen, um auf demselben Rechner die aktuelle Entwicklerversion der Webseite zum Testen vorzuhalten.
> Ist mir noch nicht untergekommen, nicht nur dass das ein ziemlich dämlicher Gedanke ist.
Dies Funktion wird von tausenden Hostern eingesetzt. Natürlich stützen sich viele davon nicht auf die /etc/passwd sondern auf einen zentralen Dienst. Wofür aber Apache trotzdem die Rechte benötigt um an die Infos zu kommen.
Außerdem geht es meist nicht um die Authentifizierung, sondern schlicht um das Homeverzeichnis eines Benutzers.
> Sicher geht das irgendwie, ist aber nicht der Standard, wird nicht empfohlen, generell eine unschöne Lösung.
Wie kommst du darauf?
Wodurch wird diese Aussage begründet?
Ich möchte dir dringenst raten einen Blick in die Apache Doku (bzw. auch andere Webserver Dokus) zu werfen. Außerdem können ein paar Zeilen zu MAC bzw. RBAC auch ganz hilfreich sein, bevor man hier in mehreren Kommentaren seine Meinung zu diesem Thema bekundet.
In nahezu jedem Fall, da dort u.a. Informationen zum Apache-Benutzer stehen. Wenn Du das umgehen willst, dann musst Du nss_files aus nsswitch rausnehmen.