*Cube-Host– Volle Cloud Dienste!!

Linux-VPS-Sicherheit: SSH-Schlüssel, UFW und Fail2Ban

Linux VPS Security: SSH Keys, UFW, and Fail2Ban

Was wir tun und warum

  • Wir arbeiten nicht unter Root – wir erstellen einen Administrator mit sudo.
  • Die Anmeldung erfolgt ausschließlich über SSH-Schlüssel, Passwörter sind deaktiviert.
  • Wir aktivieren UFW: „Alles ist geschlossen, außer dem, was notwendig ist.“
  • Wir installieren Fail2Ban: Es blockiert IPs bei der Auswahl eines Passworts/Schlüssels.

Admin-Benutzer und Gruppen

Wir erstellen einen Benutzer und fügen ihn zu sudo + der restriktiven SSH-Gruppe hinzu:

				
					sudo adduser admin
sudo usermod -aG sudo admin
sudo groupadd -f sshusers
sudo usermod -aG sshusers admin
id admin
				
			
Linux VPS

SSH-Schlüssel: Generieren und Hinzufügen

Lokal (Windows/macOS/Linux):

				
					ssh-keygen -t ed25519 -C "key-for-admin"
				
			

Auf dem Server als Root oder bestehender Administrator:

				
					sudo -u admin -H bash -lc 'mkdir -p ~/.ssh && chmod 700 ~/.ssh'
sudo -u admin -H bash -lc 'cat >> ~/.ssh/authorized_keys'   # insert content *.pub, затем Ctrl+D
sudo -u admin -H bash -lc 'chmod 600 ~/.ssh/authorized_keys'
				
			
Linux VPS

Wichtig: Nur der öffentliche .pub-Schlüssel wird an den Server gesendet. Der private Schlüssel wird lokal gespeichert.

SSH verstärken (Passwörter und Root-Anmeldung deaktivieren)

Öffnen Sie /etc/ssh/sshd_config und geben Sie Folgendes an:

				
					PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowGroups sshusers
				
			

SSH neu starten:

				
					sudo systemctl restart sshd
				
			
Linux VPS

Überprüfen Sie, ob die Schlüssel funktionieren, bevor Sie Passwörter deaktivieren, da Sie sonst den Zugriff verlieren.

UFW: „standardmäßig geschlossen”

				
					sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH        # port 22
sudo ufw allow 80,443/tcp     # if you need a website
sudo ufw enable
sudo ufw status numbered
				
			
Linux VPS

Benötigen Sie zusätzliche Ports (z. B. 8080)? Fügen Sie eine explizite Regel hinzu: sudo ufw allow 8080/tcp.

Fail2Ban: Installation und Autostart

				
					sudo apt -y install fail2ban
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban --no-pager
				
			
Linux VPS

Fail2Ban-Konfiguration: jail.local für sshd

Erstellen/bearbeiten

				
					/etc/fail2ban/jail.local:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
bantime.increment = true

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
action  = %(action_mwl)s
				
			

Neustart:

				
					sudo systemctl restart fail2ban

				
			
Linux VPS

%(action_mwl)s sendet eine E-Mail (sofern E-Mail konfiguriert ist) + Protokoll und blockiert außerdem die IP-Adresse.

Integration von Fail2Ban mit UFW (Alternative)

Erstellen Sie eine Datei

				
					/etc/fail2ban/jail.d/ufw-sshd.local:
[sshd]
enabled = true
action = ufw
maxretry = 5
findtime = 10m
bantime = 1h

				
			

Bewerben:

				
					sudo systemctl restart fail2ban
				
			
Linux VPS

Überprüfen von Betrieb und Protokollen

				
					sudo fail2ban-client status
sudo fail2ban-client status sshd
sudo tail -n 200 /var/log/fail2ban.log
sudo journalctl -u ssh --since "today"
sudo ufw status verbose

				
			
Linux VPS

So testen Sie die Sperre: Führen Sie von einem anderen Knoten aus 5–6 falsche Anmeldeversuche durch und überprüfen Sie den Status von sshd – die IP wird in der Liste der gesperrten IPs angezeigt.

Sicherheitsboni (optional)

  • Ändern Sie den SSH-Port (keine Sicherheitsmaßnahme, reduziert jedoch das Scanner-Rauschen): Port 2222 in sshd_config + ufw allow 2222/tcp.
  • Beschränken Sie den SFTP-Zugriff (chroot) für die Gruppe.
  • Aktivieren Sie 2FA für SSH: libpam-google-authenticator + Konfiguration von /etc/pam.d/sshd und sshd_config (AuthenticationMethods publickey,keyboard-interactive).
  • Sudo-Versuche begrenzen: passwd -l root, sudo visudo mit timestamp_timeout=5.

Sicherheits-Checkliste

  • Schlüsselbasierte Anmeldung funktioniert, Passwörter und Root-Anmeldung sind deaktiviert.
  • UFW: eingehende Verbindungen ablehnen/ausgehende zulassen, nur notwendige Ports sind erlaubt.
  • Fail2Ban schützt sshd (und optional nginx/postfix/…); Protokolle werden überprüft.
  • Test-Ban wird durchgeführt, Regeln und Zugriffe sind dokumentiert.