LAMP+mod_fcgid+mod_suexec welche Module noch?

dannyl

New Member
Hallo,
ich hab LAMP+mod_fcgid+mod_suexec installiert und hab vor mehrere vHosts aufzusetzen, welche unter mehreren Benutzern laufen werden. Die Hosts sind zwar schon alle in verschiedenen Verzeicvhnissen und der Benutzer kann da scheinbar auch nicht raus, aber ich frage mich die ganze Zeit ob ich nicht ein Modul vergessen hab. Ist es vielleicht sinnvoll noch mod_chroot, mod_security oder mod_evasive dazu zu installieren?
Könnt ihr mir da weiterhelfen?
 
OK, hab die Datei, jetzt wäre natürlich noch schön zu erfahren was ich damit testen soll. Da ich kein Hacker bin und damit auch nicht die kriminellen Gedanken hab. :D
Kannst du mir sagen was man damit unter Umständen anstellen könnte?
 
Moin,

die C99 Shell wird zwar primär von "Hackern" eingesetzt. Ich benutze die C99 allerdings auch regelmäßig um zu schauen ob meine Server richtig abgesichert sind. Die C99 Shell ist ein PHP-Script. Also kannst du damit zimlich genau prüfen was deine PHP Anwendungen können.

Einige Beispiel findest du bei "Useful Commands". Zusätzlich kannst du bei "Go Dir" auch schauen ob du zum Beispiel /root/, /etc/, /home/user1/, /home/user2/ öffnen kannst. (Format Box ist im übrigen Böse, wenn dein Server nicht richtig abgesichert ist).

Achtung: Drück nicht auf Self remove, das löscht auch alle Dateien im gleichen Ordner.
 
Danke schonmal, für deine nette Hilfe.
Ich hab mittlerweile herausgefunden, dass ohne open_basedir in der php.ini der User in sämtliche Verzeichnisse auf dem Server schauen kann. Das möchte ich natürlich nicht. Ich möchte aber auch dass der user seine php.ini selbst berabeiten kann. Von daher kann es auch passieren, dass der User das open_basedir löscht und damit den ganzen server und auch andere user gefährdet, oder er hegt selbst kriminelle gedanken gegen einen anderen User auf dem Server. Weißt du eine mögliche Lösung dafür?
Mach mich gerade schlau wie das mit dem mod_chroot funktioniert, nur irgendwie will das bei mir nicht laufen.
Leider funktioniert bis jetzt auch kein mod_security was ja auch einen chroot-modus machen kann.
Wenn ich den apache starten will sieht es so aus als macht er das auch und im Log ist auch keine Fehlermeldung mehr zu sehen..
Jedoch sagt er mir ich hätte kein recht mir die Datei auf dem Server anzuschauen, was ich an der Fehlermeldung sehe:
Code:
You don't have permission to access /c99.php on this server.
:(
 
Heißt das jetzt, wenn ich dem User schon nicht erlaube die php.ini zu editieren, kann er das open_basedir immernoch mit ini_set verändern? :eek:
 
Also, ich mach es jetzt erstmal kurzerhand so, dass ich ini_set unter disable_functions setze. Sollte das eine schlechte Idee sein, meldet sich schon jemand oder ich finde es selbst raus. :cool:
 
open_basedir läßt sich erst seit PHP5.3 per ini_set verändern und auch da nur, um die Einschränkungen zu verstärken (wenn es in der php.ini auf "/www" steht, kann es per ini_set z.B. auf "/www/test" weiter eingeschränkt werden).
Sofern du auch andere Scriptsprachen wie Perl oder Python verwendest, dann nützen dir die ganze Einstellungen in der php.ini sowieso nix mehr -> sicher die Webs durch Zugriffsrechte gegeneinander ab (Lesezugriff nur für den jeweiligen User und den Apache-User (meist www-data)
 
mod_fcgid und suexec sollten open_basedir überflüssig machen, da du ja PHP mit dem Rechten des jeweiligen Nutzers ausführst.

Du musst halt deine Gruppen/User-Rechte so einstellen, dass der Nutzer z.B. nicht ausserhalb seines Verzeichnisses lesen kann. Also die Leseberechtigung für alle zurücknehmen. Und noch (Danke an @Danton den Apache User in die Benutzer-Gruppen hinzufügen.

open_basedir hilft dir auch nur bedingt, wenn du z.B. exec() oder system() oder ähnliche Befehle erlaubst dann nutzt der pöse Hackr einfach python, bash, perl oder was auch immer der Kiste zu finden ist um an die Dateien der anderen User zu kommen, wenn du das auf Dateisystemebene regelst sind da die Chancen schon geringer.

Also public_html auf 750

chroot ist natürlich ideal, aber auch etwas hakelig zu konfigurieren

Code:
mount --bind
solltest du dir da mal ansehen, sowie am besten den GrSecurity Patch installieren, weil der noch ein paar chroot-Lücken stopft... das ganze ist aus meiner Erfahrung eine recht hakelige Sache, aber
openbasedir alleine verschafft dir keine Sicherheit.

Edit: und seperate /tmp verzeichnisse für alle User solltest du auch haben.

Edit2: Das hier ist auch sehr wichtig: http://www.linux-magazine.com/w3/issue/84/Apache_Suexec.pdf
 
Last edited by a moderator:
Zusätzlich sollte die Gruppe des Users Mitglied in der Apache Gruppe sein, damit du noch auf Webseiten zugreifen kannst.

Nein, wenn ich mich nicht ganz vertue, dann ist das gerade falsch.
Vielmehr gehört der Apache-User in die jeweiligen User-Gruppen, damit er die jeweiligen Webs der einzelnen User sehen und somit den statischen Kontent (HTML-Dateien, Bilder) ausliefern kann. Suexec greift ja nur bei CGIs und Scriptsprachen. Achtung: Nicht jede Distribution legt für jeden User auch eine eigene Gruppen an, die genauso wie der User heist (Debian und Ubuntu machens, SuSE hat es zumindest bei den älteren Versionen nicht gemacht).
 
Back
Top