Gedanken zu Sicherheit, Datei-Rechten, Server-Usern etc.
Posted: Fri Nov 17, 2006 3:08 am
Hallo,
da ich mich gerade mit einem neuen Hoster beschäftige (http://www.s9y.org/forums/viewtopic.php?t=7668) habe ich mir mal ein paar Gedanken gemacht rund um file permissions, ftp-/apache-usern etc. Ich bitte um Kommentare!
Am besten hat es IMO mein normaler Hoster gelöst (terions.de). Da läuft der Apache für jeden Kunden unter dem User, den man auch als ftp-User hat (keine Ahnung, wie die das machen). Damit reicht es völlig aus, daß mein Kunden-User rwx hat und group und other nichts.
Das scheint aber nicht der Normalfall zu sein. Sondern, daß der Apache unter einem einheitlichen User (!=root, hier wwwrun) läuft, der nicht mit den ftp-Usern identisch ist. Dafür kann man zumindestens bei all-inkl per Admin-Oberfläche die Rechte der Dateien wahlweise auf seinen ftp-User oder wwwrun stellen.
Was bedeutet das nun für den Einsatz von s9y?
Was ich per ftp hochlade gehört meinem User.
Wenn s9y etwas erstellt (sei es ein plugin per spartacus oder ein Bild via Mediendatenbank oder auch die Konfig-Dateien), dann gehört es wwwrun.
s9y, genauer wwwrun muß alle Dateien lesen können. Einschließlich der config-Dateien mit dem Datenbank-Paßwort. Dadurch kann jeder, der wwwrun steuert (etwa durch ein Skript wie s9y) auch diese Dateien lesen. Das ist mißlich. Da genaugenommen wwwrun immer jede Datei lesen können muß (auch bei ganz simplen statischen html-Seiten), muß der Hoster also irgendwelche Vorkehrungen getroffen haben, damit niemand außerhalb seines htdocs-Bereiches was via wwwrun lesen kann, obwohl (wie auch immer konkret) dem wwwrun per file permissions das Recht zum Lesen eingeräumt sein muß. Richtig? (Wird dafür safe_mode oder open_basedir benutzt?) (Wobei mir da gerade http://www.golem.de/0610/48193.html in die Hände fiel)
Wenn ein solcher Schutz vorhanden ist, dann sollte es also auch kein Sicherheitsproblem sein, wenn alle Files wwwrun als owner haben, richtig? Denn der Schutzmechnismus muß ja irgendwie die Berechtigung auf Ebene der Ordner-Struktur ausmachen.
Weiter gedacht:
Das würde dann wohl bedeuten, daß dieser Schutz auch greifen muß, was das Schreiben angeht, oder? Sprich, wenn ich mit meinen Skripten wwwrun nicht dazubringen kann eine gemäß Unix-permissions eigentlich für ihn lesbare Datei zu lesen, weil sie außerhalb meines Verzeichnisses liegt, dann werde ich wohl auch nicht in diese Datei schreiben können, oder?
So, oben habe ich den Fall angesprochen, daß wwwrun einfach Eigentümer meiner Dateien ist. Nun ein anderes Szenario, mein ftp-User bleibt Eigentümer; das ist wohl der Standardfall einer jeden ftp-hochgeladenen Site:
Also (mal vorausgesetzt, daß wwwrun nicht in den (individuellen) Gruppen der ftp-User steckt, dann muß jede Datei für others zumindestens lesbar sein. Das heißt, daß dann sowohl jeder, der wwwrun steuert, als auch jeder andere im System angemeldete User meine Dateien lesen kann. Richtig?
Gegen einen Angriff mittels wwwrun müßte derselbe Schutzmechanismus helfen, den ich oben schon postuliert habe. Andere User unterliegen ja aber nicht openbase_dir und Konsorten, weil sie ja nicht im Apache/php-Kontext laufen. Also muß deren Umgebung dafür sorgen. Zugriff auf die Server sollte neben dem Personal (was eh root-Rechte haben dürfte) nur Kunden via ftp.
Hier muß also der ftp-Kontext dafür sorgen, daß keiner in fremden Gewässern wildern kann, richtig?
Probleme kann es geben, wenn Kunden ssh-Zugang haben. Wenn dann meine Dateien zwar mir gehören aber für others (weil für wwwrun) r/w sind, dann käme dieser Kunde mit r/w ran.
Abhilfe: Die Dateien nicht mir sondern wwwrun gehören lassen - sollte recht unüblich sein, weil man ja normalerweise per ftp seine Sachen hochlädt und damit selber Eigentümer ist.
Hier müßte also entweder ein weiterer Unix-Schutz greifen oder es darf keinen ssh-Zugang für Kunden geben.
Stimmt also nun meine Schlußthese:
Egal ob ich meine Daten mir zuweise oder wwwrun, egal ob ich wwwrun das Lesen oder auch das Schreiben erlaube (und damit ggf. others auch):
Wenn ein Schutzmechnismus da ist (was ichja hoffe, weil wie oben gezeigt, schon das Lesen-können durch wwwrun sonst erstmal ein Sicherheitsproblem darstellen würde), dann muß dieser auch wirken, wenn ich meine Dateien auf 777 setze - 777 wäre also kein Sicherheitsrisiko, oder?
Letzte Frage: Bei all-inkl bin ich in meiner individuellen Unix-Gruppe. Könnte es einen Sicherheitsgewinn bringen, wenn wwwrun ebenfalls in dieser Gruppe ist?
Dann könnte ich zumindestens others von jeglichem Zugriff (r/w) ausschließen, so daß Löcher im ftp-Kontext oder falls doch ein Kunde ssh-Zugang haben sollte, keine Gefahr sind, weil nur noch wwwrun zugreifen könnte. Einzige Gefahrenquelle bleibt ein Zugriff eines Kunden über seine php-Skripte, die auch als wwwrun laufen. Aber dagegen muß ja (s.o.) so oder so ein Schutz exisiteren. Ein letztes Mal: Richtig?
da ich mich gerade mit einem neuen Hoster beschäftige (http://www.s9y.org/forums/viewtopic.php?t=7668) habe ich mir mal ein paar Gedanken gemacht rund um file permissions, ftp-/apache-usern etc. Ich bitte um Kommentare!
Am besten hat es IMO mein normaler Hoster gelöst (terions.de). Da läuft der Apache für jeden Kunden unter dem User, den man auch als ftp-User hat (keine Ahnung, wie die das machen). Damit reicht es völlig aus, daß mein Kunden-User rwx hat und group und other nichts.
Das scheint aber nicht der Normalfall zu sein. Sondern, daß der Apache unter einem einheitlichen User (!=root, hier wwwrun) läuft, der nicht mit den ftp-Usern identisch ist. Dafür kann man zumindestens bei all-inkl per Admin-Oberfläche die Rechte der Dateien wahlweise auf seinen ftp-User oder wwwrun stellen.
Was bedeutet das nun für den Einsatz von s9y?
Was ich per ftp hochlade gehört meinem User.
Wenn s9y etwas erstellt (sei es ein plugin per spartacus oder ein Bild via Mediendatenbank oder auch die Konfig-Dateien), dann gehört es wwwrun.
s9y, genauer wwwrun muß alle Dateien lesen können. Einschließlich der config-Dateien mit dem Datenbank-Paßwort. Dadurch kann jeder, der wwwrun steuert (etwa durch ein Skript wie s9y) auch diese Dateien lesen. Das ist mißlich. Da genaugenommen wwwrun immer jede Datei lesen können muß (auch bei ganz simplen statischen html-Seiten), muß der Hoster also irgendwelche Vorkehrungen getroffen haben, damit niemand außerhalb seines htdocs-Bereiches was via wwwrun lesen kann, obwohl (wie auch immer konkret) dem wwwrun per file permissions das Recht zum Lesen eingeräumt sein muß. Richtig? (Wird dafür safe_mode oder open_basedir benutzt?) (Wobei mir da gerade http://www.golem.de/0610/48193.html in die Hände fiel)
Wenn ein solcher Schutz vorhanden ist, dann sollte es also auch kein Sicherheitsproblem sein, wenn alle Files wwwrun als owner haben, richtig? Denn der Schutzmechnismus muß ja irgendwie die Berechtigung auf Ebene der Ordner-Struktur ausmachen.
Weiter gedacht:
Das würde dann wohl bedeuten, daß dieser Schutz auch greifen muß, was das Schreiben angeht, oder? Sprich, wenn ich mit meinen Skripten wwwrun nicht dazubringen kann eine gemäß Unix-permissions eigentlich für ihn lesbare Datei zu lesen, weil sie außerhalb meines Verzeichnisses liegt, dann werde ich wohl auch nicht in diese Datei schreiben können, oder?
So, oben habe ich den Fall angesprochen, daß wwwrun einfach Eigentümer meiner Dateien ist. Nun ein anderes Szenario, mein ftp-User bleibt Eigentümer; das ist wohl der Standardfall einer jeden ftp-hochgeladenen Site:
Also (mal vorausgesetzt, daß wwwrun nicht in den (individuellen) Gruppen der ftp-User steckt, dann muß jede Datei für others zumindestens lesbar sein. Das heißt, daß dann sowohl jeder, der wwwrun steuert, als auch jeder andere im System angemeldete User meine Dateien lesen kann. Richtig?
Gegen einen Angriff mittels wwwrun müßte derselbe Schutzmechanismus helfen, den ich oben schon postuliert habe. Andere User unterliegen ja aber nicht openbase_dir und Konsorten, weil sie ja nicht im Apache/php-Kontext laufen. Also muß deren Umgebung dafür sorgen. Zugriff auf die Server sollte neben dem Personal (was eh root-Rechte haben dürfte) nur Kunden via ftp.
Hier muß also der ftp-Kontext dafür sorgen, daß keiner in fremden Gewässern wildern kann, richtig?
Probleme kann es geben, wenn Kunden ssh-Zugang haben. Wenn dann meine Dateien zwar mir gehören aber für others (weil für wwwrun) r/w sind, dann käme dieser Kunde mit r/w ran.
Abhilfe: Die Dateien nicht mir sondern wwwrun gehören lassen - sollte recht unüblich sein, weil man ja normalerweise per ftp seine Sachen hochlädt und damit selber Eigentümer ist.
Hier müßte also entweder ein weiterer Unix-Schutz greifen oder es darf keinen ssh-Zugang für Kunden geben.
Stimmt also nun meine Schlußthese:
Egal ob ich meine Daten mir zuweise oder wwwrun, egal ob ich wwwrun das Lesen oder auch das Schreiben erlaube (und damit ggf. others auch):
Wenn ein Schutzmechnismus da ist (was ichja hoffe, weil wie oben gezeigt, schon das Lesen-können durch wwwrun sonst erstmal ein Sicherheitsproblem darstellen würde), dann muß dieser auch wirken, wenn ich meine Dateien auf 777 setze - 777 wäre also kein Sicherheitsrisiko, oder?
Letzte Frage: Bei all-inkl bin ich in meiner individuellen Unix-Gruppe. Könnte es einen Sicherheitsgewinn bringen, wenn wwwrun ebenfalls in dieser Gruppe ist?
Dann könnte ich zumindestens others von jeglichem Zugriff (r/w) ausschließen, so daß Löcher im ftp-Kontext oder falls doch ein Kunde ssh-Zugang haben sollte, keine Gefahr sind, weil nur noch wwwrun zugreifen könnte. Einzige Gefahrenquelle bleibt ein Zugriff eines Kunden über seine php-Skripte, die auch als wwwrun laufen. Aber dagegen muß ja (s.o.) so oder so ein Schutz exisiteren. Ein letztes Mal: Richtig?