Sicherheit von Web-App-Dateien und Datenbankkennwörtern in einer gemeinsam genutzten Linux-Hosting-Umgebung

478
jozxyqk

Ich habe eine Web-App auf einem gemeinsam genutzten Linux-Hosting-Rechner. Nehmen wir an, ich habe eine .htpasswdDatei, einige Konfigurationen, die ein Datenbankkennwort speichern und im Allgemeinen nicht möchten, dass Leute durch meinen Quellcode suchen, um nach Schwachstellen zu suchen.

Der Webserver (Apache) benötigt Lesezugriff (und in einigen Fällen auch Schreibzugriff) auf die oben genannten Dateien. Ich möchte jedoch nicht, dass andere Personen auf demselben gemeinsam genutzten Host Zugriff haben.

Ich habe nie ganz verstanden, wie das funktionieren soll. Die Frage hier ist ähnlich, scheint jedoch mehr darauf zu hindern, dass die Web-App versehentlich eine Passwörterdatei hostet.

AFAIK, alles, mit dem ich arbeiten muss, sind grundlegende Linux-Berechtigungen. Auf einem Server wird von mir erwartet, dass sie "anderen" Berechtigungen für Apache erteilt. Wenn Sie dann die Gruppenberechtigungen entfernen, in denen sich alle anderen Benutzer befinden, wird ihnen der Zugriff verweigert. Dies scheint ziemlich umstritten zu sein. Auf einem anderen Server ist eine nobodyGruppe eingerichtet, für die public_htmlnur Gruppenberechtigungen festgelegt sind.

Ein Problem ist, dass, wenn der Apache-Benutzer Zugriff auf meine Dateien hat, ein einfaches Skript geschrieben und ausgeführt werden könnte, um Zugriff auf einen anderen Benutzer zu erhalten:

<?php header("Content-Type: text/plain"); include $_GET['f']; ?> 

TLDR: Ich brauche Apache, um Zugriff auf die Quelldateien und Kennwörter zu haben, nicht jedoch andere Benutzer auf demselben Rechner (außer Admins ofc).

Was ist ein gemeinsames Setup?

Verwandte Fragen:

0
Ich stimme zu, um diese Frage als Off-Topic zu schließen, weil sie entweder zu WebApps SE oder SuperUser gehört. RoraΖ vor 8 Jahren 0
@raz Prost. Ich werde dort neu posten. jozxyqk vor 8 Jahren 0
Die Mods werden es für Sie migrieren. RoraΖ vor 8 Jahren 0
@raz ok, ich warte dann. jozxyqk vor 8 Jahren 0

1 Antwort auf die Frage

0
Alex Atkinson

Erstellen Sie eine Gruppe, fügen Sie der Gruppe Apache / www-data hinzu. Dann:

chown -R Apache: Gruppenname / var / www / mywebapp / && \ chmod -R 640 / var / www / mywebapp

Dadurch erhalten der Besitzer Lese- und Schreibzugriff (6) und die Gruppe Lesezugriff (4) für den Ordner sowie alle Unterverzeichnisse und Dateien. Der Apache-Benutzer kann ebenso wie der Eigentümer auf die Dateien zugreifen, andere jedoch nicht. Sie sollten sicherstellen, dass sie den Apache-Benutzer nicht erreichen können.

Verwenden Sie Verzeichnisblöcke in der vhost-Konfiguration, um den Zugriff auf Ordnerebene einzuschränken. http://httpd.apache.org/docs/2.0/misc/security_tips.html #See Protect Server Files http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host

Aber was passiert, wenn sie ein kurzes PHP-Skript verwenden, das versucht, auf diese Dateien zuzugreifen? Das läuft als Apache-Benutzer und wird alles sofort sehen. jozxyqk vor 8 Jahren 0
Ich habe Links zu Directory-Blöcken hinzugefügt. Skripts in einem Kunden-vhost-Verzeichnis sollten keinen Zugriff auf andere Verzeichnisse auf einem gemeinsam genutzten Hosting-Server haben. Alex Atkinson vor 8 Jahren 0
Vielen Dank. Ich habe diese Seiten durchgesehen, aber ich habe nichts Bestimmtes gesehen (oder zumindest nicht verstanden), das den Zugriff des Benutzerskripts auf die Verzeichnisse anderer Benutzer einschränken könnte. Könntest du es wissen? jozxyqk vor 8 Jahren 0
Machen Sie einen Test-Vhost und einen Testbenutzer. Wenden Sie Verzeichnisblöcke auf die vhost-Konfigurationen an und testen Sie Ihr Szenario. Nur so erhalten Sie ein praktisches Verständnis. Du wirst es verstehen. Alex Atkinson vor 8 Jahren 0