Webserver für mehrere User einrichten (ohne Datenbank, ohne Mail)

 

geposted von lars am 25. Februar 2024

In diesem Blog-Eintrag soll konzeptweise dargestellt werden, wie ein Server für mehrere User bereitgestellt werden kann. Dies kann dann bspw. als Basis für ein rudimentäres, eigenes Webhosting o.ä. dienen. Was in der ersten Ausbaustufe noch fehlen wird, ist das Thema Mail und Datenbanken, weil mir keine Möglichkeit bekannt ist, ein Disk Quota auf Datenbanken zu setzen. Und das Thema Mail ist höchst komplex, wenn man es richtig angeht. Mailing sollte unbedingt den Fachleuten überlassen werden. Nicht, weil es besonders schwierig wäre, eine Anleitung durchzuarbeiten und einen Mailserver aufzusetzen, sondern weil ein Mailserver viel Hege und Pflege und Monitoring benötigt. Insbesondere sind die Backups nicht unwichtig, weil ich eine Mail vielleicht auch noch in 10 Jahren aufgrund gesetzliche Aufbewahrungspflichten benötige.

Als Betriebssystem wird auf Debian eingegangen. Auf anderen Systemen sollte die Einrichtung analog erfolgen.

Zunächst ist der SSH-Zugang so abzusichern, dass ein root-Login nicht mehr möglich ist. Wenn SSH erlaubt werden soll, dann empfiehlt es sich, weitere PAM-Einstellungen vorzunehmen, dass ein normaler User nicht mehr auf root wechseln kann.

Hierzu sind folgende Zeilen in die /etc/ssh/sshd_config aufzunehmen:

PermitRootLogin no
...
# Als SFTP-Server soll ProFTPD verwendet werden. Also schalten wir SFTP auf Port 22 direkt aus
Subsystem sftp /bin/false

Weiterhin ist folgender Zeile in der Datei /etc/pam.d/su aufzunehmen.

auth required pam_wheel.so use_uid

Damit ist der root-Login nur noch direkt über die Konsole möglich, wie sie bspw. Strato bietet.

Der Datentransfer soll mit SFTP ermöglicht werden. Also installieren wir ProFTPD als (S)FTP-Server. Das ungesicherte FTP-Protokoll wird außen vor gelassen.

Als Webserver soll Apache verwendet werden. Als Proxy nginx.

Da die Software überwiegend kompiliert werden soll, benötigen wir eine Entwicklungsumgebung auf einem Build-Server mind. mit folgenden Paketen.

apt-get install make gcc g++ buid-essential

Als Vorbereitung für die mod_wsgi-Installation eine Python-Library, bspw.

apt-get install libpython3.9-dev