Sichere 'Gruppen/User' für MySQL/Apache etc ?

Hallo,

mir ist derzeit absolut unklar (und das habe ich jetzt des öfteren gelesen) wieso man für z.B. Apache oder Mysql einzelne Verzeichnisse oder DAteien mit Rootrechen setzten sollte?
Hintergrund war immer, dass sonst ja niemand diese DAtein einsehen und editieren darf.

Ich kann mir leider die Frage nicht selbs beantworten (sonst würde ich hier nicht posten), aber wenn ich sowohl eine eigene Gruppe anlege als auch einen eigenen User, dann muss ich doch nichts mit Rootrechten setzten??

Wenn z.B. in der Gruppe mysql anlege und in der nur ein Benutzer mysql ist, dann kann doch da genauso niemand auf die DAteien zugreifen? Oder übersehe ich hier was? (Mein Ziel ist, die beiden möglichst sicher zu intallierne, erstmal zumindest von den USern/Gruppen her später auch mal chrooted…)

Wie macht ihr das mit Apache und Mysql?

Vielen DAnk
Julian

Hallo,

mir ist derzeit absolut unklar (und das habe ich jetzt des
öfteren gelesen) wieso man für z.B. Apache oder Mysql einzelne
Verzeichnisse oder DAteien mit Rootrechen setzten sollte?
Hintergrund war immer, dass sonst ja niemand diese DAtein
einsehen und editieren darf.

Ich kann mir leider die Frage nicht selbs beantworten (sonst
würde ich hier nicht posten), aber wenn ich sowohl eine eigene
Gruppe anlege als auch einen eigenen User, dann muss ich doch
nichts mit Rootrechten setzten??

Ja.

Wenn z.B. in der Gruppe mysql anlege und in der nur ein
Benutzer mysql ist, dann kann doch da genauso niemand auf die
DAteien zugreifen?

Wenn der mysqld mit der GID mysql läuft und einen Exploit hat, kann er eben auf die dateien zugreifen, wenn die Dateien Root-rechte haben, eher nicht.

Oder übersehe ich hier was? (Mein Ziel ist,
die beiden möglichst sicher zu intallierne,

Welche Distribution nutzt Du und was konkret ist Dir dort zu unsicher?

Gruß,

Sebastian

Hallo Sebastian,

vielen Dank für die Antwort. Würde mich nochmal um eine Antwort freuen

Wenn der mysqld mit der GID mysql läuft und einen Exploit hat,
kann er eben auf die dateien zugreifen, wenn die Dateien
Root-rechte haben, eher nicht.

Wenn ich das nun richtig verstehe ist das so gemeint, dass das Idealszenario ist, jeder Datei eine eigene UID und GID zuzuweisen?
Würde nun die „ausführbare“ Datei gehackt, dann könnten z.B. nicht mal die Config files gelesen werden, da diese auch schon unter einer anderen UID laufen.

Heisst das dann in der _Praxis_, dass das „ausführbare Programm“ welches letztendlich Ziel eines Exploits sein kann, immer unter einer eigenen Gruppe und UID laufen sollte währen alle weiteren Libraries und Dateien möglichst ebenfalls nochmals unter einer _anderen_ UID/GID laufen sollten (hier eben root). Wichtig ist nur der Unterschied dass eben das „Executable“ andere Rechte hat als die Umgebung hat, so dass möglichst wenig Dateien gelesen werden können bzw. nicht aus dem Verzeichnis „ausgebrochen“ werden kann ?

(Nutze z.Z. Suse 9.0) und würde gerne Bind/Apache/Tomcat/Mysql möglichst sicher installieren.

Vielen DAnk
Julian

Hallo,

Wenn der mysqld mit der GID mysql läuft und einen Exploit hat,
kann er eben auf die dateien zugreifen, wenn die Dateien
Root-rechte haben, eher nicht.

Wenn ich das nun richtig verstehe ist das so gemeint, dass das
Idealszenario ist, jeder Datei eine eigene UID und GID
zuzuweisen?

Nein, es gibt Situationen, wo andere Prozesse/User Rechte auf eine Datei benötifgen: das kann man nicht so pauschal sagen.

Würde nun die „ausführbare“ Datei gehackt, dann könnten z.B.
nicht mal die Config files gelesen werden, da diese auch schon
unter einer anderen UID laufen.

Ja, aber es gibt auch Dateien, die sollten für andere auch lesbar sein.

Heisst das dann in der _Praxis_, dass das „ausführbare
Programm“ welches letztendlich Ziel eines Exploits sein kann,
immer unter einer eigenen Gruppe und UID laufen sollte

Nein, so würde ich das nicht ausdrücken wollen. Allgemein: es ist eine gute Idee, dem Prozeß eben nur so wenig Rechte zu geben wie er unbedingt benötigt.

währen
alle weiteren Libraries und Dateien möglichst ebenfalls
nochmals unter einer _anderen_ UID/GID laufen sollten (hier
eben root).

Auch wenn sie root gehören, laufen sie möglicherweise nicht unter root sondern werden von einem anderen Nutzer ausgeführt. Und das ist gut so.

Wichtig ist nur der Unterschied dass eben das
„Executable“ andere Rechte hat als die Umgebung hat,

Nein, das würde ich so nicht unterschreiben wollen.

so dass
möglichst wenig Dateien gelesen werden können bzw. nicht aus
dem Verzeichnis „ausgebrochen“ werden kann ?

Was genau meinst Du, mit "aus dem Verzeichnis „ausgebrochen“.

(Nutze z.Z. Suse 9.0) und würde gerne Bind/Apache/Tomcat/Mysql
möglichst sicher installieren.

Nutze die Rechte, die Deine Distribution mitbringt, sie sollten eine sinnvolle Voreinstellung sein. Ich habe im Augenblick den Eindruck, daß Du nicht genügend Vorstellung von der Rechteverwaltung hast, daß Du an den Voreinstellungen sinnvoll etwas verbessern könntest. Mir hat es damals geholfen, mir die Rechte bei qmail klar zu machen. Aber das ist eine andere Baustelle.

Darüberhinaus würde ich vermeiden, so kritische Dienste wie Bind (DNS) auf der Maschine laufen zu lassen, zumindest, wenn sie in öffentlichen Netzen ist.

Was genau hast Du vor? Wozu brauchst Du BIND?

Gruß,

Sebastian

Danke
Hallo Sebastian,

vielen Dank für die Antwort, werde mich jetzt mal durch ein paar „Tutorials“ über Rechtvergabe durchlesen.

viele Grüße
Julian