User-, Datei-, Verzeichnisrechte für Debian-Webserver (VServer)

Grille

Erfahrenes Mitglied
Hallo Leute,

ich suche schon einige Tage nach einer Verständlichen und umfassenden Antwort, finde aber immer nur Grundlagen-Tutorials die mich nicht weiterbringen.

Vorab für ernst gemeinte Antworten wie: "Wenn du keine Ahnung davon hast, dann lass die Finger davon ..." ... ich frage ja weil ich es wissen will!

Voraussetzungen
1. Ich betreibe auf einem VServer eine Webseite

2. Auf dem VServer ist [Eingabe:cat /etc/issue] -> Debian GNU/Linux 6.0

3. Die Aufgabe des Servers soll vor allem sein, Webseiten - Typo3, für's Internet zu veröffentlichen

4. Aus der langen Liste von Installierten Programmen [Eingabe:dpkg -l | more] -> sind vielleicht diese als wichtigste zu nennen:
- apache2 2.2.16-6+squeeze11
- bash 4.1-3
- ftp 0.17-23
- mysql-client-5.1 5.1.66-0+squeeze
- mysql-server-5.1 5.1.66-0+squeeze1
- php5 5.3.3-7+squeeze15
- sendmail 8.14.3-9.4
- ssh 1:5.5p1-6+squeeze3
- ssl-cert 1.0.28
- sudo 1.7.4p4-2.squeeze.4

5. Ich habe einen Benutzer "loginuser" erstellt, mit dem ich mich über putty an das System anmelden kann
[finger -l loginuser]
Login: loginuser
Name:
Directory: /home/loginuser
Shell: /bin/bash

6. der direkte root-Zugriff (PermitRootLogin) ist in der Datei /etc/ssh/sshd_config von "yes" auf "no" gestellt

7. ein zweiter Benutzer "ftpuser" ist für den FTP-Zugang angelegt
[finger -l ftpuser]
Login: ftpuser
Name:
Directory: /var/www/
Shell: /bin/false

8. auserdem ist noch ein user installiert "ftp" ... aber ich weiss nicht ob der eine wichtige Funktion erfüllt
[finger -l ftp]
Login: ftp
Name:
Directory: /home/ftp
Shell: /bin/false

9. Unter /var/www/... habe ich jetzt die verschiedenen Webseiten abgelegt

Problem
Ich möchte jetzt den Server einigermaßen Sicher bekommen und die Benutzer und Rechtevergabe sinnvoll und übersichtlich gestalten:

als erstes habe ich eine neue Gruppe erstellt "wwwusergroup" [sudo groupadd wwwusergroup] und diese als Hauptgruppe für "loginuser" [sudo usermod -g wwwusergroup loginuser] und "ftpuser" [sudo usermod -g wwwusergroup ftpuser] eingestellt.

Damit wollte ich verhindern, dass die Standard-Apache- www-data -Gruppe nicht mehr genutzt wird und der Server etwas sicherer wird.

Nun bin ich am überlegen, wie ich die Dateirechte sinnvoll unter /var/www/... gestalte:
erst war die Überleg die Dateinen und Verzeichnisse dem "root" als Benutzer zu geben, da eigentlich keiner an den Dateien rumfingern soll, außer der eingeloggte Administrator. Jedoch haben die Dateien und Verzeichnisse, die ich im FTP anlege oder von der Webseite aus hochgeladen werden, den Benutzer "ftpuser"
Daher wäre es vielleicht sinnvoller als user für alle Dateien und Verzeichnisse den "ftpuser" einzusetzen.
Als Gruppe wollte ich die "wwwusergroup" benutzen, da hier auch der "loginuser" user drin ist. Dadurch könnte ich nach dem einloggen in Putty mit "loginuser" mit diesem Dateiarbeiten unter /var/www/... durchführen, ohne danach an den Rechten herumstellen zu müssen.

bei dem Rechten wollte ich für Dateien und Verzeichnisse:
dem user Schreib-, Lese-, und Ausführrechte geben,
der group Schreib-, Lese-, und Ausführrechte geben,
und other soll gar keine Rechte bekommen.

Hier wollte ich mal Fragen: gibt es denn einen "other" im Internet? Wenn etwas von der Webseite kommt, dann ist es doch immer vom ftpuser aus ... oder sehe ich da was falsch?

Wenn nun neue Dateien und Verzeichnisse angelegt werden, sind die Rechte dann aber immer so, wie ich es nicht haben will. ich habe versucht die Standard-Einstellung auf "umask 017" zu verändern, aber es funktioniert nicht.
Dazu habe ich in "/home/loginuser/.bashrc" und in "/etc/profile" das eingetragen: umask=017,
und unter "/etc/login.defs" den Eintrag "UMASK 022" in "UMASK 017" umgeschrieben.
Leider ändert das nichts: die Rechte für eine hochgeladene Datei sind immer "-rw-r--r--" und für ein Verzeichnis "drwxr-sr-x".
Muss ich da vielleicht was neu starten oder so?

Ist bei meinem Aufbau ein Fehler oder eine Denklücke?
Kann ich etwas anders oder besser machen?
Wie kann ich mit umask die Dateiberechtigungen von hochgeladenen Dateien berichtigen?
Wie, und vor allem warum genau so, sollte man die Rechte für Dateien und Verzeichnisse im www-Verzeichnis vergeben?

Für eure Hilfe jetzt schon einmal vielen Dank,
Grille.
 
Die erste Anlaufstelle für deine Frage ist imho hier:
http://httpd.apache.org/docs/2.4/misc/security_tips.html

Ich würde den User für den www Dienst so anlegen, das dieser sich nicht einloggen kann (also keine Loginshell und ein passwort was möglichst lang und zufällig ist 40 Zeichen aus /dev/urandom) Wenn du etwas machen musst kannst du dann per su Befehl zu dem User wechseln.

Was deine umask Probleme betrifft: Die bashrc wird beim Login mit ssh (möglicherweise) nicht automatisch gelesen. /etc/profile sollte aber in jedem Fall gelesen werden. Änderungen in diesen Dateien erfordern entweder ein erneutes login oder aber ein sourcen ( z.B. source .bashrc )
Sehr ausführliche Erklärung dazu findest du hier:
http://mywiki.wooledge.org/DotFiles
 
Zurück