Benutzer-Werkzeuge

Webseiten-Werkzeuge


open:it:ssh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
open:it:ssh [2025/04/08 13:46] – [SSH-Key unter Linux generieren] k@iopen:it:ssh [2025/12/13 09:59] (aktuell) – [SSH-Zugriff auf VPN beschränken] k@i
Zeile 103: Zeile 103:
 Nach Änderungen muss der SSH-Service neu gestartet werden. Nach Änderungen muss der SSH-Service neu gestartet werden.
   sudo systemctl reload ssh   sudo systemctl reload ssh
 +  
 +==== SSH-Zugriff auf VPN beschränken ====
 +> Debian 13 Server (nur IPv6 öffentlich)
 +> SSH (und SFTP) ausschließlich über WireGuard-VPN (IPv4 10.8.0.0/24)
 +> Firewall: UFW
 +=== 🛡️ Zielbild (Soll-Zustand) ===
 +  * SSH nur erreichbar über WireGuard
 +  * VPN-Netz: `10.8.0.0/24`
 +  * Kein öffentlicher SSH (weder IPv4 noch IPv6)
 +  * UFW aktiv
 +  * SSH zusätzlich hart an VPN gebunden
 +
 +=== ✅ Voraussetzungen ===
 +  * Du hast Konsolenzugriff oder funktionierenden VPN-Zugang
 +  * WireGuard-Interface heißt `wg0`
 +  * Server-VPN-IP z. B. `10.8.0.1`
 +
 +=== 🧩 1. WireGuard prüfen ===
 +  ip a show wg0
 +
 +Erwartet:
 +  inet 10.8.0.1/24 scope global wg0
 +
 +=== 🧩 2. UFW installieren & Grundregeln ===
 +  sudo apt update
 +
 +  sudo apt install ufw
 +
 +Default-Policies:
 +  sudo ufw default deny incoming
 +
 +  sudo ufw default allow outgoing
 +
 +=== 🧩 3. WireGuard selbst freigeben ===
 +(typisch: UDP 51820 – ggf. anpassen)
 +  sudo ufw allow 51820/udp
 +
 +=== 🧩 4. SSH nur über WireGuard erlauben ===
 +(empfohlen: Interface-gebunden)
 +  sudo ufw allow in on wg0 to any port 22 proto tcp
 +
 +Alternativ:
 +  sudo ufw allow from 10.8.0.0/24 to any port 22 proto tcp
 +
 +=== 🧩 5. Öffentlichen SSH entfernen (IPv4 + IPv6) ===
 +Status anzeigen:
 +  sudo ufw status numbered
 +
 +Du wirst sehen:
 +  22/tcp (OpenSSH)       ALLOW IN Anywhere
 +  22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
 +Löschen:
 +  sudo ufw delete allow ssh
 +
 +oder gezielt per Nummer:
 +  sudo ufw delete <NUMMER>
 +
 +=== 🧩 6. IPv6 in UFW deaktivieren (wichtig!) ===
 +Da SSH nur über IPv4-VPN laufen soll:
 +  sudo nano /etc/default/ufw
 +Ändern:
 +  IPV6=no
 +
 +Dann:
 +  sudo ufw reload
 +
 +=== 🧩 7. UFW aktivieren ===
 +  sudo ufw enable
 +**Prüfen:**
 +  sudo ufw status verbose
 +
 +**Soll:**
 +  22/tcp     ALLOW IN    on wg0
 +  51820/udp  ALLOW IN    Anywhere
 +
 +=== 🧩 8. SSH hart an WireGuard binden ===
 +👉 Das ist der entscheidende Sicherheitsanker.
 +  sudo nano /etc/ssh/sshd_config
 +Eintragen:
 +  AddressFamily inet
 +  ListenAddress 10.8.0.1
 +Dann:
 +  sudo systemctl restart ssh
 +
 +=== 🧪 9. Tests (Pflicht!) ===
 +❌ Ohne VPN
 +  ssh user@SERVER_IPV6
 +
 +➡️ **muss fehlschlagen**
 +
 +✅ Mit VPN
 +
 +  ssh user@10.8.0.1
 +
 +➡️ **muss funktionieren**
 +
 +
 +=== 🔎 10. Finale Kontrolle ===
 +  sudo ss -tlnp | grep :22
 +
 +**Soll:**
 +  LISTEN 10.8.0.1:22
 +
 +❌ **nicht erlaubt**:
 +
 +  0.0.0.0:22
 +  [::]:22
 +
 +🧠 Warum dieses Setup Best Practice ist
 +| Ebene               | Schutz                              |
 +| WireGuard           | Zugang nur für autorisierte Clients |
 +| UFW                 | Filtert Traffic                     |
 +| SSH `ListenAddress` | verhindert offenen Port technisch   |
 +| IPv6 deaktiviert    | keine „stille“ Umgehung             |
 +
 +➡️ **Selbst bei Firewall-Fehlern kein öffentlicher SSH möglich**
 +
 +🧾 Kurzfassung (Merkliste)
 +  - VPN zuerst testen
 +  - SSH nur wg0 erlauben
 +  - OpenSSH (v6) löschen
 +  - IPv6 in UFW deaktivieren
 +  - SSH an 10.8.0.1 binden
  
 ==== Schutz vor Angriffen mit fail2ban ==== ==== Schutz vor Angriffen mit fail2ban ====
open/it/ssh.1744112805.txt.gz · Zuletzt geändert: von k@i