Wie kann ich verhindern, dass Apache als Root ausgeführt wird?

8

Neu bei der Arbeit, kleiner Ort, und das Sicherheitsmaterial landete gerade auf meinem Schreibtisch. Ich wurde als Front-End-Entwickler eingestellt. Ich bin froh, neue Dinge zu lernen, musste aber noch nie Sysadmin-Sachen machen.

Ich habe angefangen zu graben und es scheint, dass Apache, die Site und alles auf root laufen. Es gibt keine anderen Gruppen oder Benutzer. ACK!

Welche Schritte sollte ich unternehmen, um dies zu ändern? Ich weiß, dass dies ein großes Nein-Nein ist ...

Bonuspunkte, wenn jemand mich auf ein gutes grundlegendes 101-Tutorial zur Apache / PHP-Sicherheit hinweisen kann.

r00tAcc3ss
quelle

Antworten:

12

Es ist ungewöhnlich, dass Apache wie rootin jeder Standardkonfiguration ausgeführt wird. Wie haben Sie festgestellt, dass Apache als Root ausgeführt wird? Beachten Sie, dass Apache als Root gestartet werden muss, um an privilegierte Ports gebunden zu werden, seine Berechtigungen jedoch normalerweise später verliert.

Sie können in Ihrer Apache-Konfiguration (häufig in /etc/httpdoder /etc/apache2, abhängig von Ihrer Distribution) nach den Anweisungen Userund suchen Group( hier dokumentiert ). Diese beiden Anweisungen steuern, unter welcher Benutzer-ID Apache ausgeführt wird.

Es ist auch ungewöhnlich, ein System zu finden, das "keine anderen Gruppen oder Benutzer" hat. Was tun getent passwdund getent groupzeigen? Gibt es wirklich keine anderen Benutzer oder Gruppen als root? Die meisten Distributionen werden mit einem apacheoder einem www-dataBenutzer oder ähnlichem und einer passenden Konfiguration geliefert, in der Apache als dieser Benutzer ausgeführt wird.

Es gibt eine Vielzahl von Einführungshandbüchern zur Apache-Konfiguration und -Sicherheit. Eine einfache Google-Suche liefert viele wahrscheinlich aussehende Ergebnisse. Das RedHat / CentOS- Bereitstellungshandbuch ist ein guter Ausgangspunkt (wenn Sie sich auf einem RedHat / CentOS-System befinden).

Larsks
quelle
Danke, ja, es lief nicht von root ab, aber es scheint, dass alles andere mit root gemacht wurde. Alle Ordner, Dateien usw. Ich muss herausfinden, wie ich das ändern kann.
r00tAcc3ss
Nun ... nicht unbedingt. Sie möchten nicht, dass die Dateien demselben Benutzer gehören wie der laufende Apache-Prozess. Im Idealfall führt ein Kompromiss auf dem Webserver nicht dazu, dass ein Angreifer Ihre Apache-Konfiguration oder Ihren Webinhalt ändern kann.
Larsks
0

Sie können Apache als jeder Benutzer mit Portnummern ausführen, die größer als die privilegierte Portnummer 1024+ sind. Verwenden Sie dann die Portweiterleitung, um den Datenverkehr von den Ports 80 und 443 an Ihre spezifischen Ports weiterzuleiten.

Chase T.
quelle