ubuntuusers.de

Apache /var/www konfigurieren

Status: Ungelöst | Ubuntu-Version: Server 10.10 (Maverick Meerkat)
Antworten |

nustyle

Anmeldungsdatum:
5. Mai 2010

Beiträge: Zähle...

Hallo,

ich hab eine Frage zu Apache und wie man am besten /var/www/xxx konfiguriert.

Ich hab einen FTP Server (pureftpd) laufen und da hab ich natürlich FTP+SSL usw. laufen damit das sicher ist. Nun habe ich für /var/www/sc (ein Forum) einen Systemuser web-sc:web-sc. Ich hab mal wo gelesen, dass man /var/www/* nicht als www-data:www-data laufen lassen soll weil das unsicher ist und der www-data User (also über Browser) dann Code auf den Webspace schleusen kann und ausführen. Deshalb hab ich web-sc:web-sc und hab den user www-data in die Gruppe web-sc gepackt.

#id www-data
uid=33(www-data) gid=33(www-data) Gruppen=33(www-data),1002(uploader),1004(web-sc)

#id id web-sc
uid=1003(web-sc) gid=1004(web-sc) Gruppen=1004(web-sc)

Dem FTP User hab ich dann die uid und gid vom web-sc zugeordnet, damit der auf den Webspace schreiben/löschen kann.

Auf dem System sieht es so aus: Das sieht so aus:

/var/www
drwxr-xr-x  2 web-sc   web-sc    61 20. Apr 08:34 sc

/var/www/sc
-rw-r--r-- 1 web-sc web-sc  20K 20. Apr 08:34 install.php
drwxr-xr-x 2 web-sc web-sc    6 20. Apr 09:56 test

Also Dateien 644 und Ordner 755. Alles gut und schön das passt auch soweit.

Die install.php ist allerdings eine Installationsdatei die ein *tar.gz entpacken muss. Das geht allerdings nicht weil ../sc ja nur 755 hat und www-data nur lesen/ausführen kann.

Dachte vllt. geht es mit dem Sticky-Bit aber das ist ja nur für das "Ausführen" nicht für das Scheiben zuständig. Ich hab dann mal auf meinem 1&1 Webhosting nachgesehen und dort hab ich auch alle Dateien und Ordner auf 644/755. Das htdocs sieht so aus:

drwx---r-t 25 p(xxx..) ftpusers 4096 Apr 19 13:47 htdocs

Ich weiß nicht was ich noch machen soll.. Wenn ich /var/www/sc auf www-data:web-sc ändere geht es natürlich aber das ist aus Sicht der Sicherheit nicht okay denke ich!

Wie krieg ich es auf einem anderen Weg hin, dass die install.php das .tar.gz entpacken kann also einen neuen Ordner ertellen in /var/www/sc/*

Danke und Grüße nustyle

Bearbeitet von jug:

CODE-Block eingefügt. Bitte verwende die Formatierungsfunktionen und die Vorschau um deine Beiträge lesbarer zu gestalten, danke!

wesenskrise

Avatar von wesenskrise

Anmeldungsdatum:
26. Oktober 2010

Beiträge: 448

nustyle schrieb:

Ich weiß nicht was ich noch machen soll.. Wenn ich /var/www/sc auf www-data:web-sc ändere geht es natürlich aber das ist aus Sicht der Sicherheit nicht okay denke ich!

Wie krieg ich es auf einem anderen Weg hin, dass die install.php das .tar.gz entpacken kann also einen neuen Ordner ertellen in /var/www/sc/*

Einfach installieren lassen und danach die Rechte wieder so vergeben, wie du es willst, ist jetzt eine pauschale und einfache Lösung 😉

Wenn du dir Gedanken über Sicherheit im Ordner /var/www machst, dann empfehle ich dir eine andere Herangehensweise. Zum einen nicht FTP sondern SFTP (SSH (Abschnitt „sftp“)) benutzen.

Damit ersparst du dir einen zusätzlichen FTP Server und bist bei der Übertragung auch auf der sicheren Seite, zudem kannst du ja auch noch PAM bei SSH deaktivieren und alles über RSA Keys laufen lassen. Besser geht es nicht, meine ich..

Zum Apache. Wenn du dich nicht mit den vielen verschiedenen Benutzerrechten rum ärgern willst, und nicht für jedes neue Projekt mit dem selben Problem dastehst, dann empfiehlt sich mal mit mod_userdir (sudo a2enmod userdir) auseinander zusetzen. Ist kein Hexenwerk, nur aktivieren, vHosts ggf. anpassen und schon passt das.

Dann legst du in einem Benutzerverzeichnis zum Beispiel das Verzeichnis /home/benutzer/public_html an und greifst auf diesen Ordner mit dem jeweiligen Benutzer zu. So gibt es keine Probleme bei den Rechten. Mehr zur Einrichtung findest du hier im Wiki.

Also, sorry, dass ich nicht komplett auf dein Problem eingehe, aber ich wollte dir eben einen alternativen Lösungsweg geben mit dem du dann auch einen gewissen Komfort genießt und vor deinen aktuellen Problemen nicht stehen wirst.

nustyle

(Themenstarter)

Anmeldungsdatum:
5. Mai 2010

Beiträge: 10

Hi,

danke für die Antwort ☺ Also ich mach ja auch kein plain-FTP sondern schon mit SSL damit das sicherer ist und die PWs nicht unverschlüsselt übertragen werden. Aber SFTP wäre auch eine gute Idee da ich sowieso schon RSA Key benutze ☺

Das mit dem mod_userdir ist echt eine schöne Sache. Also ich hab dann z.B. ../htdocs in dem Userdir und dort hat der Systemeigene Benutzer die Rechte und das funktioniert dann alles mit dem www-data?! Naja ich werde es einfach mal austesten dann kann ich ja sehen wie das löppt ☺ Sollte nicht schwer sein, nach dem ersten durchschauen!

Ich könnte die Web-User-Home's auch nach /var/www/user legen und dort ein htdocs wie auch immer ☺

Danke für die Tipps ☺

wesenskrise

Avatar von wesenskrise

Anmeldungsdatum:
26. Oktober 2010

Beiträge: 448

nustyle schrieb:

Das mit dem mod_userdir ist echt eine schöne Sache. Also ich hab dann z.B. ../htdocs in dem Userdir und dort hat der Systemeigene Benutzer die Rechte und das funktioniert dann alles mit dem www-data?!

Ja. Also ich betreue sehr viele Webserver und habe damit die besten Erfahrungen gemacht. Ganz klar ist es zwingend notwendig, wenn man eine hohe Anzahl von Benutzern hat. Aber auch zu meinen privaten Zwecken nutze ich es. Ich habe 6 Projekte online und bin damit tausend mal glücklicher.

Ich könnte die Web-User-Home's auch nach /var/www/user legen und dort ein htdocs wie auch immer ☺

Ja, obwohl ich den Vorteil auch in der strikten Trennung sehe. Aber das kannst du handhaben wie du willst ☺

Bearbeitet von wesenskrise:

Strikte Trennung in dem Sinn, da die User auf den von mir verwalteten Systemen auch selbst in der Shell herum frickeln. So kommt es dann gar nicht erst zu Vorwürfen wie: "Nutzer XY hat das verbockt" wenn jeder nur in seinem eigenen /home rum geistert und wo anders nichts zu suchen hat.

nustyle

(Themenstarter)

Anmeldungsdatum:
5. Mai 2010

Beiträge: 10

Hi,

ich hab jetzt das ganze mit scponly gemacht da ist auch ein Script dabei um chroot's zu erstellen. Nach ein wenig Frickelei ging dann auch endlich SFTP ☺

Ich mache in /var/www/xyz jeweils einen User für xyz mit www-xyz Ich hab also jetzt einen User:

1
2
# id www-qs
uid=1006(www-qs) gid=1007(www-qs) Gruppen=1007(www-qs)

und hab den www-data User in die Gruppe www-qs gesteckt:

1
2
# id www-data
uid=33(www-data) gid=33(www-data) Gruppen=33(www-data),1002(uploader),1004(web-sc),1007(www-qs)

So das klappt auch alles soweit. Mit SFTP kann ich auf den Server nach. Jetzt hab ich allerdings folgendes Problem: Ich will da ein Forum über eine install.php installieren. Die install.php muss ein .tar.gz entpacken. Das geht allerdings nicht mangels Berechtigung.

Also hab ich /var/www/qs/forum von 755 auf 775 umgestellt. Da müsste der Apache-User www-data ja eigentlich Schreibrechte haben ich den www-data User in die Gruppe www-qs gesteckt hab (siehe oben).

1
2
3
4
5
root at univrs in htdocs # ll             
insgesamt 0
drwxrwxr-x 3 www-qs www-qs 18  4. Mai 11:06 .
drwxr-xr-x 3 www-qs www-qs 19  4. Mai 11:06 ..
drwxrwxr-x 3 www-qs www-qs 71  4. Mai 11:25 forum

Wenn ich die install.php aufrufe hat diese aber keine Berechtigung einen Ordner in ../forum/* anzulegen also das .tar.gz kann nicht entpackt werden. Muss ich jetzt php auch über den www-data laufen lassen?! Oder wie geht man da vor?

Ich will den forum-Ordner eigentlich nicht auf 777 stellen.

Grüße, nu

nustyle

(Themenstarter)

Anmeldungsdatum:
5. Mai 2010

Beiträge: 10

Ich hab auf suexec und fcgi umgestellt!

http://wiki.hetzner.de/index.php/Apache_PHP5_fcgi_und_SuExec

Danach ging alles so wie ich es wollte und es ist sehr sicher! ☺

Lookbehind

Avatar von Lookbehind

Anmeldungsdatum:
28. Januar 2010

Beiträge: 1070

Wo es hier schon um Apache und die Sicherheit mit mehreren Benutzern geht, da hätte ich auch mal eine, zumindest theoretische Frage.
Theoretisch deshalb, weil mein Webserver nur ein Test-Server in einer VM ist, der nicht mal Internetanbindung hat. Der einzige der da irgendwas machen kann, bin ich. Von daher ist die Sicherheit dort eher nebensächlich. Aber es würde mich trotzdem mal interessieren ob folgende Lösung eher sicher, unsicher oder unnötig kompliziert ist.
Ich habe in den einzelnen Benutzer-Verzeichnissen ein Unterverzeichnis HTML erstellt (/home/username/HTML/) und dann in /var/www/ einen Softlink auf dieses Verzeichnis gelegt. Also /var/www/username/ öffnet in Wahrheit /home/username/HTML/
So kann ich als User problemlos meine Daten auf dem Server verwalten (schreiben, lesen, etc) ohne Rechte in /var/www/ oder anderen sensiblen Verzeichnissen zu brauchen. Wie das von Seiten von www-data aussieht, hab ich mir aber offen gesagt nie Gedanken drum gemacht (Auch so is der Kasten jetzt nicht grade Fort-Knox, wie oben erwähnt wenn da einer Bockmist drauf baut, bin ich das 😉 ) Aber angenommen das wäre ein öffentlich zugängiger Server. Wäre das eine gangbare Lösung? Oder müsste ich da mit Sicherheitsrisiken rechnen?

Antworten |