first commit

This commit is contained in:
2025-12-04 14:37:28 +01:00
commit 9087c6ccc7
4 changed files with 239 additions and 0 deletions

View File

@ -0,0 +1,232 @@
# 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 <netz>
```
---
# 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@<gerät>"
```
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.