,

Anleitung zur Einrichtung von SFTP Benutzern für Webhosting und Skriptnutzung auf einem Ubuntu 22.04 Server

Diese Anleitung hilft dir, die richtigen Benutzer mit den passenden Berechtigungen für Webhosting von WordPress sowie für die Nutzung von Shellskripten und Python auf einem Ubuntu 22.04 Server zu konfigurieren. Es wird vorausgesetzt, dass du bereits eine WordPress-Installation auf einem DigitalOcean Droplet über eine One-Click Installation durchgeführt und die Ersteinrichtung abgeschlossen hast.

Schritt 1: SSH-Zugang mit root

Öffne dein Terminal und verbinde dich über SSH mit deinem Server:

ssh root@hostname

Gib das Passwort für den Root-Benutzer ein.

Schritt 2: Benutzer swimmy anlegen

Erstelle einen neuen Benutzer swimmy:

sudo adduser swimmy

Folge den Anweisungen, um ein Passwort und weitere Informationen für swimmy festzulegen.

Schritt 3: Sudo-Rechte für swimmy

Gib dem Benutzer swimmy Sudo-Rechte:

sudo usermod -a -G sudo swimmy

Schritt 4: Logout aus SSH

Verlasse die SSH-Sitzung:

exit

Schritt 5: Login als swimmy

Logge dich mit dem neuen Benutzer swimmy ein:

ssh swimmy@hostname

Verwende das zuvor festgelegte Passwort.

Schritt 6: Überprüfung ob swimmy der Sudo Gruppe angehört

Teste die Gruppen von swimmy:

groups swimmy

Die Antwort im Terminal sollte ’swimmy : swimmy sudo‘ sein.

Schritt 7: SSH-Zugang für root deaktivieren

Ändere die SSH-Konfiguration, um den Root-Zugang zu deaktivieren:

sudo nano /etc/ssh/sshd_config

Suche die Zeile mit PermitRootLogin und ändere sie zu PermitRootLogin no.
Speichere die Änderungen und schließe nano. Starte den SSH-Dienst neu:

sudo systemctl restart ssh

Schritt 8: SFTP-Einrichtung und Benutzergruppe sftpusers

Erstelle eine Gruppe für SFTP-Benutzer (für alle Nutzer ohne Shell Zugriff):

sudo groupadd sftpusers

Füge www-data der Gruppe hinzu:

sudo usermod -a -G sftpusers www-data

Schritt 9: Anpassung der SSH-Konfiguration für SFTP

Bearbeite erneut die SSH-Konfiguration:

sudo nano /etc/ssh/sshd_config

Füge am Ende der Datei folgende Zeilen hinzu:

Match Group sftpusers
    ChrootDirectory /var
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

Speichere und schließe die Datei, starte den SSH-Dienst neu:

sudo systemctl restart ssh

Schritt 10: Erstellung und Berechtigung von Verzeichnissen

Erstelle zusätzliche Verzeichnisse für Skripte und Daten:

sudo mkdir /var/python /var/data /var/bin

Setze die Besitzrechte:

sudo chown swimmy:swimmy /var/python /var/data /var/bin
sudo chown www-data:www-data /var/www

Setze die Zugriffsrechte:

sudo chmod 750 /var/python /var/data /var/bin /var/www

Schritt 11: Setze ein Passwort für www-data

Wenn wir zukünftig mit www-data SFTP nutzen wollen, braucht der User ein (sicheres!) Passwort:

sudo passwd www-data

Schritt 12: Logout aus SSH

Verlasse die SSH-Sitzung:

exit

Schritt 12: Test der SFTP-Verbindung

Teste die SFTP-Verbindung für beide Benutzer:

sftp swimmy@hostname
sftp www-data@hostname

Prüfe, ob Dateien in den entsprechenden Verzeichnissen angelegt, bearbeitet und gelöscht werden können.

Fazit

Diese Konfiguration verbessert die Sicherheit deines Servers, indem der Root-Zugang eingeschränkt und spezifische Benutzer für bestimmte Aufgaben eingerichtet werden. swimmy kann administrative Aufgaben ausführen und Skripte verwalten, während www-data speziell für Webhosting-Aufgaben zuständig ist. Die Verwendung von Chroot und restriktiven Berechtigungen für SFTP-Benutzer schützt vor unautorisiertem Zugriff und erhöht die Datenintegrität, indem Benutzeraktivitäten auf sichere Bereiche beschränkt werden. Dies stellt eine robuste und sichere Umgebung für Webhosting und Skriptausführung bereit.