Ich habe einLEMP-Stapel (Ubuntu 20.04)das von mir perfekt konfiguriert und optimiert wurde. Es hat kein Webpanel. Ich habe es zunächst nur für meine eigenen Websites verwendet. Später habe ich begonnen, einige Client-Websites zum Server hinzuzufügen.
Da sie SFTP-Zugriff zur Verwaltung der Website-Dateien angefordert haben, habe ich beschlossen, sicherzustellen, dass sie nicht auf vertrauliche Dateien auf dem Server zugreifen bzw. diese bearbeiten können.
Liste der Änderungen, die ich vorgenommen habe, um die Verwendungen so weit wie möglich zu isolieren:
- Erstellt einen Sudo-Benutzer (nennen wirServeradmin) für mich und der Root-Zugriff wurde deaktiviert
chmod 700 /home/serveradmin
(ohne-R
)- Erstellte normale Benutzerkonten für meine Kunden (z. B. Client1, Client2 ...) und fügte sie dann alle hinzu zuServeradminGruppe
- Setzen Sie den Nginx-Benutzer aufServeradmin
- Für jeden Client wurde ein anderer PHP-FPM-Pool erstellt. (Beispiel: Besitzer: Client1, Gruppe: Serveradmin, das gleiche gilt für Zuhörer)
- Sensible Website-Dateien für andere unzugänglich gemacht (z. B. enthält die Datei wp-config.php Datenbankanmeldeinformationen)
chmod -R 700
für den SSL-Ordner der Website.- Und natürlich wurden für jeden Kunden unterschiedliche MySQL-Benutzer und Datenbanken erstellt.
Jetzt bin ich 100 % sicher, dass niemand auf den Ordner /home/clientX anderer zugreifen kann. Sie können zumindest keine Dateien bearbeiten oder entfernen. Ich bin jedoch kein erfahrener Linux-Benutzer und auch kein Hosting-Anbieter.Die Sache ist, dass,Können diese Clients meinen Server beschädigen, indem sie auf Systemdateien außerhalb des Ordners /home zugreifen und diese bearbeiten? (Ich denke beispielsweise, dass die Pfade /etc und /var/run gefährlich sein könnten.)
Ich habe die Ordner-/Dateiberechtigungen der Standardsystemdateien nicht geändert.
Ist mein Server also nicht gesichert? Muss er noch geändert werden, um die Sicherheit zu verbessern, oder sollte ich den SFTP-Zugriff komplett vermeiden?
Mit freundlichen Grüße.
Antwort1
Zumindest die Punkte 3 und 4 sind ungültig/unsicher.
- Ich habe normale Benutzerkonten für meine Clients erstellt (z. B. Client1, Client2 ...) und sie dann alle zur Serveradmin-Gruppe hinzugefügt.
Was hat ein normales Benutzerkonto mit der Serververwaltung zu tun? Absolut nichts, auch nicht in Bezug auf die Benennung. Welchen Sinn hat es, dass jeder Site-Benutzer einer serveradmin
Gruppe angehört?
- Legen Sie den Nginx-Benutzer auf Serveradmin fest
Ebenso. NGINX sollte unter seinemeigenBenutzer, normalerweise nginx
(CentOS/RHEL-Distributionen) oder www-data
(Debian-basierte Systeme). Es hat nichts mit der Serververwaltung zu tun.
Ich kann nicht näher darauf eingehen, warum das aktuelle Setup unsicher ist, da hierfür weitaus mehr Details erforderlich sind, beispielsweise Socket-Eigentümerschaft für PHP, Dateispeicherorte usw.
Ein wirklich sicheres Setup setzt eine möglichst große Benutzertrennung voraus, und das gilt auch für Dienste. Beginnen Sie also mit der Zuweisung eines separaten Benutzers für NGINX (oder verwenden Sie den vom Paket bereitgestellten Benutzer) und folgen Sie diesen SchrittenSichere Berechtigungen für PHP-FPM. Es ist der NGINX-Benutzer, der in der Benutzergruppe jedes Sites sein sollte, und nicht umgekehrt:
usermod -a -G client1 nginx
usermod -a -G client2 nginx
...
Jetzt nginx
gehört der Benutzer zu client1
Gruppen client2
. Der Grund dafür ist, dass der nginx
Benutzer wirklich jede einzelne Website-Datei lesen können muss.
An PHP-FPM-Pools kann dagegen problemlos client1:client1
sowohl in Laufzeit- als auch in Socket-Listen-Optionen gebunden werden.