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.