VPS-Sicherheit, Konfiguration von Nginx, UFW, Benutzern und Anmeldung über SSH

VPS-Sicherheit, Konfiguration von Nginx, UFW, Benutzern und Anmeldung über SSH

171

3 min.

Vorbedingungen

Für die Arbeit benötigen Sie nginx, docker und ufw. Überprüfen Sie, ob diese installiert sind:

docker --version && nginx -v && sudo ufw status

Wenn sie noch nicht installiert sind, führen Sie die folgenden Befehle aus:

sudo apt update && sudo apt install nginx docker.io ufw -y

Erstkonfiguration des Benutzers

Arbeiten Sie niemals als Benutzer "root". Erstellen Sie einen neuen Benutzer und weisen Sie ihm Administratorrechte zu.

  • Hinzufügen eines Benutzers:

    adduser user  # Ersetzen Sie "user" durch Ihren Namen.

    Die Ausgabe sieht wie folgt aus: Adding user "user" ... Enter new UNIX password: (geben Sie das Passwort ein, die Zeichen werden nicht angezeigt).

  • Rechte vergeben und überprüfen:

    usermod -aG sudo user
    groups user

    Erwartete Ausgabe user : user sudo.

Einrichten der Anmeldung über SSH-Schlüssel

Deaktivieren Sie nun alle anderen Anmeldemöglichkeiten außer dem SSH-Schlüssel.

  1. Wenn Sie bereits einen SSH-Schlüssel auf Ihrem Computer haben, senden Sie ihn einfach an den Server:

    ssh-copy-id user@ip_сервера
  2. Wenn Sie keinen Schlüssel haben, erstellen Sie einen:

    ssh-keygen -t ed25519 -C "user@vps"
    # Senden Sie ihn dann mit dem oben angegebenen Befehl ssh-copy-id    

    Wenn Sie auf diese Weise kopieren, müssen Sie möglicherweise das Passwort vom Server eingeben. Aus Sicherheitsgründen wird das Passwort bei der Eingabe nicht angezeigt!

Deaktivieren der Passwortanmeldung und des Root-Zugriffs

Jetzt deaktivieren wir die Möglichkeit, sich auf andere Weise als mit Ihrem Schlüssel anzumelden.

  1. Öffnen Sie die Konfigurationsdatei sudo nano /etc/ssh/sshd_config

  2. Suchen und ändern (oder fügen Sie hinzu) die folgenden Zeilen:

    • PermitRootLogin no - Verbietet die direkte Anmeldung als Root-Benutzer über SSH.
    • PasswordAuthentication no - Deaktiviert die Möglichkeit, sich mit einem normalen Passwort auf dem Server anzumelden.
    • ChallengeResponseAuthentication no - Deaktiviert die Authentifizierung nach dem Prinzip "Aufruf-Antwort".
    • UsePAM no - Deaktiviert die Verwendung des PAM-Moduls (Pluggable Authentication Modules) für SSH.
  3. Starten Sie den Dienst neu sudo systemctl restart ssh

Wenn Sie nun versuchen, sich als Root anzumelden, wird folgende Meldung angezeigt root@ip: Permission denied (publickey).

Konfiguration der Firewall (UFW)

Die Firewall blockiert alle Ports außer denen, die wir zulassen.

PortProtokollZweckWarum ist das wichtig?
22TCPSSHErforderlich! Ohne diesen Port verlieren Sie die Verbindung zum Server.
80TCPHTTPStandardport für Nginx.
443TCPHTTPSSicherer Port für SSL-Datenverkehr.

Für mehr Sicherheit ändern Sie den Port für SSH in einen anderen und fügen Sie ihn auch zur Konfiguration von UFW hinzu!

Konfiguration von UFW:

sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status

Die Ausgabe des Befehls status sollte wie folgt aussehen:

Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere

React2Shell-Sicherheitslücke in Next.js

React2Shell ist eine kritische Sicherheitslücke, die es Hackern ermöglicht, ihren Code über React-Formulare auf Ihrem Server auszuführen.

Wie kann man einen Hack überprüfen?

Sehen Sie sich die Liste der Prozesse und Dateien an. Verdächtige Anzeichen:

  • Dateien im System: ssh.sh, sex.sh, kai.tar.gz, httd.
  • Prozess xmrig (Miner, belastet die CPU zu 100 %).
    • Sie können dies mit dem Befehl top oder htop überprüfen.

Schutzmaßnahmen

  1. Next.js aktualisieren - Aktualisieren Sie dringend auf sichere Versionen: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7.

  2. Node.js 24 - Verwenden Sie das neue Berechtigungsmodell von Node, um den Zugriff auf Dateien zu beschränken.

  3. Sicheres Docker:

    • Starten Sie Container mit dem Flag --read-only.
    • Entfernen Sie den Start von root in Dockerfile, verwenden Sie USER node.
    • Konfigurieren Sie den Zugriff des Containers nur auf interne Ressourcen (Whitelist).
  4. Wenn Sie gehackt wurden - Löschen Sie infizierte Subcontainer/Container, leeren Sie den Cache und ändern Sie unbedingt alle geheimen Schlüssel und Passwörter.

Der Artikel wird ergänzt werden

Ähnliche Kategorien:

Ähnliche Artikel

  • Bad Practices für Websites

    Analyse kritischer Fehler im Webdesign. Warum Slider, Autoplay und schwerfällige Seiten die Konversionsrate sowie die Platzierungen bei Google und Yandex verschlechtern

    27

    2 min.

  • Wie man Vite bei aktiviertem VPN verwendet, schnelle Lösung

    Lösung des Problems mit der Funktion von Vite bei aktiviertem VPN, Konfiguration der Verbindung, um zu verhindern, dass lokaler Datenverkehr in den VPN-Tunnel umgeleitet wird

    120

    2 min.

Kontaktieren Sie mich

Projektart*