Richten Sie die virtuellen Apache-Hosts mit mehreren Benutzern korrekt ein

15

Vielen Dank im Voraus für Ihre Hilfe. Ich habe es mir selbst beigebracht, Linux (Ubuntu), Apache, virtuelle Hosts und ein paar Sicherheitsaspekte zu verwenden, obwohl ich diese noch nicht nahtlos zusammengestellt habe.

Ich habe auch den harten Weg aus Fehlern in der Vergangenheit gelernt, die darin bestehen, Benutzerkonten und Sites / virtuelle Hosts nicht richtig einzurichten. Ich ssh in den Server als root (ich weiß, sehr schlecht), und erstellt alle virtuellen Hosts und Dateien manuell, so dass alle von root gehört. Ich habe eine alte Version von Joomla ausgenutzt und böswilligen Spam-Code in alle meine anderen virtuellen Hosts eingefügt.

Ich bin gerade dabei, auf einen neuen Server zu wechseln, und suche nach den richtigen Schritten, um virtuelle Hosts und Benutzerkonten einzurichten, die darauf zugreifen können. Da wir Software von Drittanbietern verwenden, brauchten wir gelegentlich jemanden, der auf die Website zugreift, um deren Website-Dateien zu untersuchen.

Unser aktueller Server ist Version 10.04, der neue Server ist Version 12.04. Alle Website-Dateien werden unter eingerichtet

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

etc

Kurz gesagt, ich denke, das ist es, wonach ich suche.

  1. Wie richte ich einen virtuellen Host und einen Benutzer richtig ein, sodass er nur auf seine eigenen Dateien und keinen anderen virtuellen Host auf dem Server zugreifen kann? Wenn diese Site beispielsweise mit bösartigem Code ausgenutzt wird, kann sie keine anderen Sites auf dem Server infizieren

  2. Wie kann ich Benutzer so einrichten, dass sie nur über FTP auf ihre angegebenen Dateien zugreifen können und nicht auf andere Websites zugreifen können?

Wie bereits erwähnt, gibt es zahlreiche Artikel, in denen beschrieben wird, wie Sie einen dieser Schritte ausführen, aber nichts, was sie nahtlos zusammenführt.

Ich bin sehr dankbar für die Hilfe, die jeder anbieten kann. Gerne können Sie weitere Informationen anfordern, die Sie beraten müssen. Ich folge derzeit Tutorials, um chroot einzurichten, befürchte jedoch, dass ich das nicht richtig mache, da ich auf dem Weg ein paar Inkonsistenzen aufgegriffen habe. Untersuche auch Jailkit.

user249729
quelle

Antworten:

6

Da die Frage das wichtigste Suchergebnis in Google ist, wenn Sie gefragt werden, ob Sie einen separaten Benutzer für einen virtuellen Apache-Host haben, möchte ich auf der Grundlage dieser Antwort eine ausführlichere Antwort geben . Meine Antwort deckt nicht die Verwendung von PHP und CGI ab (Sie würden suPHP verwenden). Es konzentriert sich auf PHP, wenn es als Apache-Modul verwendet wird.

Sie können das Apache-Modul apache2-mpm-itk verwenden . Es ist für die aktuelle Version von Apache 2.4 verfügbar. Es kommt mit der Richtlinie AssignUserID. Diese Anweisung definiert den Benutzer und die Gruppe, mit denen die Anforderung eines virtuellen Hosts verarbeitet wird. Dies ist ein Beispiel für die Konfiguration der Apache-Site, mit der ich endete:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

Dies verbessert natürlich nur die Sicherheit, solange die einzelnen DocumentRoots den jeweiligen Benutzern gehören und nicht für Gruppen zugänglich sind. Für weitere PHP-bezogene Sicherheit werden Skripte DocumentRootmit der open_basedir-Einschränkung in das eingesperrt . Für den Backend-Dateizugriff bevorzuge ich SFTP mit Chroot .

Hinweis: apache2-mpm-itk ist derzeit nicht mit dem http2-Modul von Apache kompatibel.

Hermann
quelle
1

Ich halte das nicht für eine Antwort auf Ihre Frage. Da ich aber noch keinen Kommentar abgeben kann, muss ich im Bereich "Antwort" schreiben. Ich mache saisonal Web-Management. Eine Möglichkeit zum sicheren Testen und Ausprobieren besteht darin, eine Testumgebung in einer virtuellen Maschine (z. B. VirtualBox) oder einem "alten" Desktop-Computer einzurichten. Eines der häufigsten Probleme von neuen Webhost-Administratoren besteht darin, die Funktionsweise von Webserver-Programmen zu verstehen. In diesem Fall gehe ich davon aus, dass Sie verstehen müssen, wie Apache funktioniert, und zumindest die Konfigurationsdateien verstehen müssen. Ich finde, dass Webmin ein sehr hilfreiches Tool für Neulinge ist, um Apache und andere Dienste zu verwalten. Sie müssen einige Zeit damit verbringen, Dinge in Ihrer Testumgebung auszuprobieren, damit die Dinge für Sie klarer werden.

Ich denke, die Antwort auf Ihre Frage kann ein Tutorial-Artikel oder ein kleines Buch sein. Schauen Sie sich zunächst diese Artikel an:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/

Biocyberman
quelle
Danke Biocyberman. Dies sind so ziemlich die grundlegenden Schritte, die ich befolge und mit denen ich ziemlich vertraut bin. Der einzige Unterschied besteht darin, dass ich nicht jede Website einem anderen Benutzer gezeigt habe. Ich werde es als Nächstes versuchen. Schützt dies jedoch die Ordner von virtualhosts voreinander? Jailkit scheint Teil der Lösung zu sein, aber ich bin nicht 100% sicher. Ich habe in der Vergangenheit mit webmin gespielt, werde es also noch einmal besuchen und sehen, ob es bei den Fragen hilft, die ich habe.
user249729