# SERVER PLAYBOOK v1.1 *Erweiterte Version mit SSH‑Key‑Ökosystem & FileDrop‑Struktur* Dieses Playbook beschreibt einen vollständigen, iterativen Modernisierungsprozess für einen Linux‑Server. Version **1.1** ergänzt: - Passwortlose SSH‑Authentifizierung zwischen allen Geräten des Users *stephan* - Zentrale FileDrop‑Struktur zur einfachen Dateiübertragung - Aktualisierte Firewall‑Regeln --- # 🧭 Gesamtüberblick über die Iterationen 1. **Sicherheit (SSH, Fail2ban, Samba, Firewall)** 2. **Docker-Modernisierung** 3. **Serverordner-Struktur** 4. **Monitoring & Logging** 5. **Backup-Strategie** 6. **Infrastructure-as-Code (optional)** 7. **NEU: SSH-Key-Ökosystem & FileDrop (v1.1)** --- # Iteration 1 – Sicherheit herstellen ## 1. SSH Hardening ``` PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes ``` Restart: ``` systemctl restart ssh ``` ## 2. Fail2ban reparieren ``` mkdir -p /var/log touch /var/log/auth.log chown syslog:adm /var/log/auth.log systemctl restart rsyslog systemctl restart fail2ban ``` ## 3. Samba absichern ``` ufw default deny incoming ufw default allow outgoing ufw allow from 192.168.12.0/23 to any port 445 ufw allow from 192.168.12.0/23 to any port 139 ufw deny 445 ufw deny 139 ufw enable ``` ## 4. Docker-UI-Ports absichern ``` ufw deny 3000 ufw deny 2222 ufw deny 5000 ufw deny 9000 ufw deny 9443 ufw deny 81 ``` ## 5. Fehlerhafte fstab-Einträge korrigieren ``` nano /etc/fstab systemctl daemon-reload ``` --- # Iteration 2 – Docker Modernisierung ## Zentrales Netzwerk anlegen ``` docker network create wlkns-net ``` ## compose.yml vereinheitlichen ``` networks: default: external: true name: wlkns-net ``` ## Standard-Verzeichnisstruktur ``` /docker/ compose/ env/ volumes/ ``` ## Alte Netzwerke entfernen ``` docker network rm ``` --- # Iteration 3 – Serverstruktur standardisieren ## Zielstruktur ``` /srv/ gitea/ oidc/ nginx/ minecraft/ mumble/ /docker/ compose/ volumes/ env/ /data/ db/ media/ backups/ /backup/ ``` --- # Iteration 4 – Monitoring & Logging - journald konfigurieren - Docker-Logging-Treiber optimieren - Node Exporter / Grafana Agent installieren --- # Iteration 5 – Backup-Strategie - daily / weekly / monthly Backups - systemd timer - Restore-Test durchführen --- # Iteration 6 – Optional: Infrastructure-as-Code - compose.yml versionieren - .env trennen - Rebuild-Dokumentation erstellen --- # Iteration 7 – SSH-Key-Ökosystem & FileDrop (NEU in v1.1) Diese Iteration ermöglicht: - Passwortlose SSH-Logins von allen Geräten (User: **stephan**) - Dateiübertragung ohne Passworteingabe - Einheitliche Key-Struktur auf allen Clients - Zentralen Upload-Ordner auf dem Server --- ## 1. Auf jedem Client einen SSH-Key erzeugen (falls nicht vorhanden) ``` ssh-keygen -t ed25519 -C "stephan@" ``` Key liegt danach unter: ``` ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub ``` --- ## 2. Public Key auf den Server übertragen Empfohlener Weg: ``` ssh-copy-id stephan@srv01 ``` Alternativ: ``` cat ~/.ssh/id_ed25519.pub | ssh stephan@srv01 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' ``` --- ## 3. SSH-Konfiguration für komfortablen Zugriff Client-seitige Datei: ``` ~/.ssh/config ``` Beispiel: ``` Host srv01 HostName 192.168.12.1 User stephan IdentityFile ~/.ssh/id_ed25519 ``` Jetzt reicht: ``` ssh srv01 ``` --- ## 4. SSH nur im LAN erlauben (Firewall) ``` ufw allow from 192.168.12.0/23 to any port 22 ufw deny 22 ``` --- ## 5. FileDrop-Struktur auf dem Server anlegen ``` sudo mkdir -p /srv/filedrop/stephan sudo chown stephan:stephan /srv/filedrop/stephan chmod 700 /srv/filedrop/stephan ``` Upload: ``` scp datei.txt srv01:/srv/filedrop/stephan/ ``` --- # Abschluss Version **1.1** des Playbooks erweitert den gesamten Modernisierungsprozess um ein sicheres und konsistentes SSH-Key-Ökosystem sowie eine zentrale FileDrop-Infrastruktur. Alle Iterationen bleiben modular, ohne Downtime und jederzeit pausierbar.