chmod 777 - alle Daten weg
RFZ
- webserver
0 Severin Kacianka0 RFZ0 Severin Kacianka0 Tom
0 Tom
2 XaraX
Moin,
ich bin auf einem üblichen Server eines kostenpflichtigen Hoster der auch von vielen anderen Benutzern genutzt wird.
Damit PHP Schreibrechte hat, muss ich die über FTP public Schreibrechte geben, relativ üblich, da PHP mit einer anderen Benutzergruppe ausgführt wird.
PHP und auf dem Server installierte Serverdienste sollten doch trotzdem verhindern, dass andere Benutzer plötzlich Zugriff auf meine Dateien haben, oder? Welches Risiko hab ich dadurch, wenn ich jedem Schreibrechte zugestehe?
Hintergrund ist, dass ich heut morgen alle Ordner mit Schreibrechten leer auf meinem Server vorgefunden hab, und laut Logdatei ist zumindest von mir kein Script dafür verantwortlich... Der Provider hat bislang noch nix dazu gesagt...
Habt ihr schonmal soeine Erfahrung machen müssen? Ich hab mir die letzten 7 Jahre noch nie den Kopf so wirklich drüber zerbrochen...
greetz RFZ
Hallo,
PHP und auf dem Server installierte Serverdienste sollten doch trotzdem verhindern, dass andere Benutzer plötzlich Zugriff auf meine Dateien haben, oder? Welches Risiko hab ich dadurch, wenn ich jedem Schreibrechte zugestehe?
Ich bin da jetzt kein Experte, aber 777 heißt Vollzugriff für den Besitzer der Datei, die Gruppe der die Datei gehört und _alle_ anderen. Wenn dein Hoster Dateioperationen erlaubt reicht unter Umständen ein simples unlink('/pfad/to/deiner/datein') um eine Datei mit der Berechtigung 777 zu löschen.
Gruß,
Severin
Ich bin da jetzt kein Experte, aber 777 heißt Vollzugriff für den Besitzer der Datei, die Gruppe der die Datei gehört und _alle_ anderen. Wenn dein Hoster Dateioperationen erlaubt reicht unter Umständen ein simples unlink('/pfad/to/deiner/datein') um eine Datei mit der Berechtigung 777 zu löschen.
Das ist die Frage... aber bei PHP verbietet normal open_basedir den Zugriff auf Verzeichnisse die ausserhalb des Accounts liegen. Zumindest komme ich mit PHP nicht aus meinem Stammordner raus.
Andere auf solchen Gemeindschaftsservern verwendete Dienste bieten das sicher auch...
greetz RFZ
Hallo,
Das ist die Frage... aber bei PHP verbietet normal open_basedir den Zugriff auf Verzeichnisse die ausserhalb des Accounts liegen. Zumindest komme ich mit PHP nicht aus meinem Stammordner raus.
Aber schon in ihrer security note sagen die PHP-Entwickler recht deutlich, dass der Safe-Mode und die Openbasedir-Beschränkungen keineswegs ein vollständiger Schutz sind.
Gruß,
Severin
Hello,
Aber schon in ihrer security note sagen die PHP-Entwickler recht deutlich, dass der Safe-Mode und die Openbasedir-Beschränkungen keineswegs ein vollständiger Schutz sind.
Vor allem ist die open_basedir-Beschränkung alleine überhaupt kein Schutz.
Der User kann sie i.d.R. mit Systembefehlen umgehen. Die werden aber vom safe_mode ausgeschaltet. Allerdings stellen dann wieder einige Provider im Verzeichnis safe_mode_ecex_dir Systembefehler zur Verüfugung und wenn dann ein entsprechneder darunter ist, war alles für die Katz.
Das gegeneinander Abgrenzen von Webspace funktionert eben nur durch separate Server zufriedenstellend. Da Virtual-Server-Zellen immer billiger werden, ist da mMn der Weg. Man muss dem User ja auch auf einem vServer keine Administrationsrechte einräumen. Durch intelligente serverübergreifende Adminsitrationsscripte kann man solch eine Farm dann auch relativ gut adminsitrieren...
Schlecht ist es nur, sich auf lauter individuell eingerichteten Systemen rationell zurechtzufinden. Da stochert man dann doch erst ein paar Stunden oder gar Tage, bis man weiß, was da warum und wo läuft oder nicht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Das ist die Frage... aber bei PHP verbietet normal open_basedir den Zugriff auf Verzeichnisse die ausserhalb des Accounts liegen. Zumindest komme ich mit PHP nicht aus meinem Stammordner raus.
Andere auf solchen Gemeindschaftsservern verwendete Dienste bieten das sicher auch...
Und ist der safe_mode aktiviert oder sind zumindest Systembefehle in die Liste der verbotenen Funktionen eingetragen?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin Moin,
PHP und auf dem Server installierte Serverdienste sollten doch trotzdem verhindern, dass andere Benutzer plötzlich Zugriff auf meine Dateien haben, oder?
Üblich ist es, daß der Du/{der Kunde} ein auf dem System existierender User ist; meist der Gruppe ftpuser zugehörig. Des weiteren sollte der Webserver (apache) entweder durch User/Group (v 1.x) oder SuexecUserGroup (v 2.x) so konfiguriert sein, daß bspw. PHP die selben Rechte, wie Du über den FTP-Zugang hast, bekommt. Laut Deiner Beschreibung ist dem nicht so.
Viele Hoster haben die einzelnen Webs in einem Ordner:
/var/www/[KundenID]/
|
|-web <-- DocumentRoot für Virtual Host
|
|-bin
|
|-lib
|
`-var
prüf doch mal welche Rechte Dein Heimverzeichnis (hier [KundenID] als Synonym) hat. Es sollte 0700 (drwx------) haben. Dann kannst Du mit den Rechten Deiner Datein umspringen, wie Dir beliebt.
Welches Risiko hab ich dadurch, wenn ich jedem Schreibrechte zugestehe?
Sollten die Rechte nicht so sein und beschriebener Standard nicht als Konfiguration vorliegen, sind alle Deine Datein von jedem anderen zumindes auslesbar (, vermutlich nach Deinem Problemvortrag auch löschbar) und Du solltest Dir schnellstmöglich einen Hoster suchen, denn das wäre nach meinem Verständnis keiner.
Gruß aus Berlin!
eddi
Hi,
ich hatte kürzlich Probleme wegen des Santy-Wurms, der u.a. phpBB-Installationen "befallen" hat. Sämtliche meiner PHP-Dateien waren durch die Wurm-Version ersetzt worden. Da ich keinerlei PHP-basierte Foren verwende, muss also der Zugriff von einem anderen Kunden-Account erfolgt sein, der Owner der neuen PHP-dateien war auch ein anderer. Die Verzeichnisse, in denen die betroffenen PHP-Dateien lagen, waren (dummerweise?) mit chmod 777 versehen.
prüf doch mal welche Rechte Dein Heimverzeichnis (hier [KundenID] als Synonym) hat. Es sollte 0700 (drwx------) haben. Dann kannst Du mit den Rechten Deiner Datein umspringen, wie Dir beliebt.
Wenn ich mich bei meinem Provider per FTP einlogge, dann habe ich folgende Ansicht:
Verzeichnis Rechte Owner
---------------------------------------
server.provider.de/
|
|-.configs drwx------ ich
|
|-backup drwxr-xr-x root
|
|-files drwxr-xr-x root
|
|-html drwx---r-x ich
|
|-log drwxr-xr-x ich
|
|-phptmp drwxr-x--- root
|
`-restore drwxr-xr-x root
Bisher war ich immer davon ausgegegangen, dass von anderen Webaccounts auf dem gleichen Server keiner auf meine Daten zugreifen kann. Das war wohl ein Fehler :-( Ist der Zugriff bei der beschriebenen Konfiguration doch möglich und kann ich daran etwas ändern? Mein Hoster sagte mir nur, ich solle meine Verzeichnisse _immer_ mit mindestens chmod 755 und Dateien mit 644 schützen, sonst sei ein Fremdzugriff nicht ausgeschlossen. Auch ein schreibender Zugriff auf 644-Dateien in einem 777-Verzeichnis sei problemlos möglich. Ist das alles normal?
Mag sein, dass ich mich jetzt als absoluter Webserver-Ahnungsloser oute, aber jetzt will (falsch: "möchte" passt wohl besser) ich's genau wissen. Bin ja schließlich hier, um etwas zu lernen.
Schönen Sonntag noch!
O'Brien
Hallo o'Brien,
die Logik gebietet, alles, was in einem Verzeichnis ist, daß von jedem anderen User nicht geöffnet werden kann (drwx------), kann nicht eigesehen werden. Es gibt sicherlich manche unerkannten Bugs, die es trotdem möglich machen werden das Verzeichnis auszulesen, jedoch möchte ich meinen diese gelten gleichfalls für Datein, die mit rwx------ angelegt wurden.
Wenn Dir Dein Provider rät Du möchtest alle Datein mit 0700 anlegen, so ist dies nur ein weiterer Schutz, oder er hat die Heimverzeichnisse seiner User nicht vernünftig geschützt...
Gruß aus Berlin!
eddi
Hi eddi,
die Logik gebietet, alles, was in einem Verzeichnis ist, daß von jedem anderen User nicht geöffnet werden kann (drwx------), kann nicht eigesehen werden.
wie kann ich denn jetzt feststellen, ob mein Heimatverzeichnis mit drwx------ geschützt ist? Im FTP-Client sehe ich ja nur, was _in_ meinem Verzeichnis ist.
Wenn Dir Dein Provider rät Du möchtest alle Datein mit 0700 anlegen, so ist dies nur ein weiterer Schutz, oder er hat die Heimverzeichnisse seiner User nicht vernünftig geschützt...
Er hat mir ja gesagt, ich soll Vereichnisse mit 755 anlegen und Dateien mit 644. Mir ist einfach wichtig, dass keiner "einfach so" wie der Santy-Wurm in meine Verzeichnisse reingehen und Dateien löschen oder verändern kann. Wie kann ich also feststellen, dass der Provider seine Hausaufgaben gemacht hat? (Ich hoffe ich nerve nicht zu sehr mit meiner Nachfragerei.)
Kannst du mir evt. noch ein gutes Tutorial empfehlen bez. Webserver-Zugriffsrechten (ich möchte keinen Server aufsetzen, nur anwenden - aber das möglichst mit Knowhow)?
Vielen Dank und einen schönen Sonntag noch!
O'Brien
Hallo O'Brien,
wie kann ich denn jetzt feststellen, ob mein Heimatverzeichnis mit drwx------ geschützt ist? Im FTP-Client sehe ich ja nur, was _in_ meinem Verzeichnis ist.
Das stellt sich etwas schwieriger dar. Für gewöhnlich sind in einer Sharedhosting-Umgebung Funktionen der Prozessausführung untersagt, andernfalls hast Du die Möglichkeit mit den Operatoren zur Programmausführung Befehle an die Shell zu schicken:
echo cd /pfad/zum/Verzeichnis/ueber/Deinem/Heimverzeichnis; /bin/ls -l
;
Es wird eine Liste aller enthaltenen Verzeichnisse, Datein und Links zurückgegeben mit den Zeiten der letzten Schreibzugriffe, Eigentümern und Rechte. Es sollte lieber auf /bin/ls zurückgegriffen werden, da manche Hoster im Verzeichnis bin des Users eigene Funktionen abgelegt haben, die zusätzliche Sicherheitsmerkmale eingebaut haben.
An statt der -Operatoren zur Programmausführung- können gleichwertig Funktionen zur Programmausführung genutzt werden. Jedoch sollte dies vom Safe Mode her nicht zulässig sein.
In sollchen Fällen bliebe nur noch ein indirekter Schluß übrig:
$d='../../'; #Verzeichnis über dem Heimverzeichnis
$dir=opendir($d);
while(($f=readdir($dir)!=FALSE)
{
if($f!='..' && $f!='.' && is_dir($f) $f!='Name des eigenen Heimverzeichnisses')
{
if(if_readable($d.$f))
echo 'r';
if(is_writable($d.$f))
echo 'w';
if(is_executable($d.$f))
echo 'x';
break;
}
}
closedir($dir);
Damit weiß man, wie andere Webs gehostet sind und kann mit der Einschränkung, daß jeder User auf dem System in selber Weise angelegt wurde, einschätzen, wie das eigene Heimverzeichnis angelegt wurde.
Wenn Dir Dein Provider rät Du möchtest alle Datein mit 0700 anlegen, so ist dies nur ein weiterer Schutz, oder er hat die Heimverzeichnisse seiner User nicht vernünftig geschützt...
Er hat mir ja gesagt, ich soll Vereichnisse mit 755 anlegen und Dateien mit 644. Mir ist einfach wichtig, dass keiner "einfach so" wie der Santy-Wurm in meine Verzeichnisse reingehen und Dateien löschen oder verändern kann.
Ich habe mich nicht eingehend mit dem Problem Santy beschäftigt, bin aber der Meinung, daß dieser einen anderen Wege genommen hat:
Es wurde ein auführbarer PHP-Code hochgeladen und mit einem anderen Script, das die Quellen einer include()-Anweisung nicht eingehend abprüfte, zur Ausführung gebracht. Das kann Dir mit allen Sicherheitsmaßnahmen von Seiten Deines Providers immernoch geschehen, wenn Du schlampig codest.
Wie kann ich also feststellen, dass der Provider seine Hausaufgaben gemacht hat?
Sogut wie gar nicht. Einfallstüren gibt es immer mehr als man selbst sehen kann ;)
(Ich hoffe ich nerve nicht zu sehr mit meiner Nachfragerei.)
Das sind sehr wichtige Fragen, die beleuchtet werden wollen. Lieber tausend Fragen, als ein Schaden.
Kannst du mir evt. noch ein gutes Tutorial empfehlen bez. Webserver-Zugriffsrechten (ich möchte keinen Server aufsetzen, nur anwenden - aber das möglichst mit Knowhow)?
Allgemein halte ich http://www.selflinux.org/ für gut. Jenach dem Distributor Deines Linux-Bündels sind immer auch die Administrationshandbücher dessen zu lesen. Für Sicherheit vom Server (mutmaßlich wirst Du diesen ja nutzen wollen) und PHP will gesorgt sein. Für PHP sollte auch PHP - Safe Mode und "Wie funktioniert der Safe_Mode" => http://selfhtml.bitworks.de/ gelesen werden.
Gruß aus Berlin!
eddi
Hi eddi,
ganz herzlichen Dank!
1. für die vielen Infos, die ich mir jetzt mal genauer zu Gemüte führen werde, und
2. für diese Einstellung:
(Ich hoffe ich nerve nicht zu sehr mit meiner Nachfragerei.)
Das sind sehr wichtige Fragen, die beleuchtet werden wollen. Lieber tausend Fragen, als ein Schaden.
Schönen Sonntag noch!
O'Brien