Projektarbeit-MYP/backend/docs/SETUP_ANLEITUNG.md

412 lines
11 KiB
Markdown

# MYP Druckerverwaltung - Setup-Anleitung
## Übersicht
Das neue konsolidierte `setup.sh` Skript ersetzt alle bisherigen Installationsskripte und bietet eine benutzerfreundliche Menüführung für verschiedene Installationsmodi.
## Voraussetzungen
- **Betriebssystem**: Debian/Raspbian (Raspberry Pi OS)
- **Berechtigung**: Root-Zugriff (sudo)
- **Internetverbindung**: Für Paket-Downloads erforderlich
- **Hardware**: Raspberry Pi oder kompatibles Debian-System
## Neue Struktur
### Dateien
- `setup.sh` - Konsolidiertes Hauptinstallationsskript
- `systemd/` - Verzeichnis mit allen systemd-Service-Dateien
- `myp-https.service` - HTTPS-Backend-Service
- `myp-kiosk.service` - Kiosk-Browser-Service
- `kiosk-watchdog.service` - Überwachungsservice
- `kiosk-watchdog-python.service` - Python-Watchdog-Service
### Entfernte Dateien
- `combined.sh` - Konsolidiert in `setup.sh`
- `installer.sh` - Konsolidiert in `setup.sh`
## Installationsmodi
### 1. Abhängigkeiten installieren für manuelles Testen
**Zweck**: System vollständig vorbereiten für manuelle Tests und Entwicklung
**Was wird installiert**:
- Python 3 und pip
- Node.js und npm
- SSL-Zertifikate (inkl. Mercedes Corporate)
- Python-Pakete (Flask, SQLAlchemy, etc.)
- npm-Abhängigkeiten
- Anwendungsdeployment nach `/opt/myp`
- SSL-Zertifikat-Generierung
- Minimaler Funktionstest
**Verwendung**:
```bash
sudo ./setup.sh
# Wähle Option 1
```
**Ideal für**:
- Entwicklungsumgebungen
- Manuelle Tests und Debugging
- Systeme ohne automatischen Kiosk-Modus
- Erste Installation und Validierung
**Nach der Installation**:
- HTTPS-Backend manuell starten: `cd /opt/myp && python3 app.py`
- System bereit für Entwicklung und Tests
### 2. Vollständige Kiosk-Installation mit Remote-Zugang
**Zweck**: Komplette Produktionsinstallation mit automatischem Kiosk-Modus
**Was wird konfiguriert**:
- Alle Abhängigkeiten (automatisch falls noch nicht installiert)
- Desktop-Environments vollständig entfernen
- Minimale X11-Umgebung installieren
- **SSH-Server** mit Benutzer `user:raspberry`
- **RDP-Server (xrdp)** mit TLS für `root:744563017196A`
- **XFCE Desktop-Umgebung** für RDP-Sessions
- **firewalld** mit erweiterten Netzwerk-Regeln
- Kiosk-Benutzer erstellen und konfigurieren
- **Automatischen Login** auf tty1 konfigurieren
- **Automatischen Kiosk-Start** beim Login einrichten
- Systemd-Services installieren und aktivieren
- Umfassende System-Tests
- Alte Dateien aufräumen
**Verwendung**:
```bash
sudo ./setup.sh
# Wähle Option 2
```
**Ideal für**:
- Produktionsumgebungen
- Dedizierte Kiosk-Systeme
- Finale Deployment mit Remote-Administration
- Vollautomatische Systeme
**Nach der Installation**:
- **Neustart erforderlich**: `sudo reboot`
- Automatischer Kiosk-Modus beim Boot
- Remote-Zugang verfügbar über SSH und RDP
## Systemd-Services
### myp-https.service
- **Zweck**: HTTPS-Backend auf Port 443
- **Benutzer**: root (für privilegierten Port)
- **Abhängigkeiten**: network.target
- **SSL**: Automatische Zertifikat-Generierung
### myp-kiosk.service
- **Zweck**: Chromium-Browser im Kiosk-Modus
- **Benutzer**: kiosk
- **Abhängigkeiten**: myp-https.service, graphical-session.target
- **Features**: Vollbild, SSL-Ignorierung, automatische Auflösungserkennung
### kiosk-watchdog.service
- **Zweck**: Intelligente Systemüberwachung
- **Funktionen**:
- HTTPS-Backend-Überwachung
- SSL-Zertifikat-Überwachung
- Kiosk-Session-Überwachung
- Speicher-Überwachung
- Automatische Neustarts
### kiosk-watchdog-python.service
- **Zweck**: Python-basierte Überwachung
- **Ergänzung**: Zusätzliche Überwachungsfunktionen
### myp-firewall.service
- **Zweck**: Automatische Firewall-Konfiguration beim Systemstart
- **Benutzer**: root
- **Abhängigkeiten**: firewalld.service
- **Funktionen**:
- Zone `myp-backend` für Netzwerk 192.168.0.0/24
- HTTPS-Port 443/tcp
- SSH-Port 22/tcp
- RDP-Port 3389/tcp
- Automatische Aktivierung beim Boot
## Konfiguration
### SSL-Zertifikate
**Mercedes Corporate Zertifikate**:
- Automatische Installation aus `certs/mercedes/`
- Unterstützte Formate: .crt, .pem, .cer
- DER-zu-PEM Konvertierung
**Localhost-Zertifikat**:
- Automatische Generierung für HTTPS
- Gültigkeitsdauer: 365 Tage
- Speicherort: `/opt/myp/certs/localhost/`
### Kiosk-Benutzer
**Benutzer**: `kiosk`
- Automatischer Login auf tty1
- Gruppen: audio, video, input, dialout, plugdev, users
- Passwortlos für Sicherheit
### Remote-Zugang
**SSH-Zugang**:
- Benutzer: `user`
- Passwort: `raspberry`
- Port: 22
- Sudo-Berechtigung: ja
**RDP-Zugang**:
- Benutzer: `root`
- Passwort: `744563017196A`
- Port: 3389
- Desktop: XFCE
- Verschlüsselung: TLS 1.2/1.3
**Firewall-Konfiguration**:
- Zone: `myp-backend`
- Quell-Netzwerke:
- `192.168.0.0/16` (erweitertes lokales Netzwerk)
- `127.0.0.1/32` (localhost IPv4)
- `raspberrypi` (lokaler Hostname - automatisch gesetzt)
- `m040tbaraspi001` (Frontend-Server - falls auflösbar)
- Erlaubte Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)
- **IPv6 vollständig deaktiviert und blockiert**
- Automatische Konfiguration beim Systemstart
### Hostname-Konfiguration
**Automatische Hostname-Setzung**:
- Lokaler Hostname wird automatisch auf `raspberrypi` gesetzt
- `/etc/hostname` und `/etc/hosts` werden entsprechend aktualisiert
- Hostname-Auflösung wird getestet und konfiguriert
- Firewall-Integration für lokalen Hostname
**Frontend-Server Integration**:
- `m040tbaraspi001` wird als separater Frontend-Server behandelt
- Automatische IP-Auflösung für `m040tbaraspi001` und `m040tbaraspi001.de040.corpintra.net`
- Firewall-Regel wird hinzugefügt, falls der Server auflösbar ist
- Keine Abhängigkeit - System funktioniert auch ohne Frontend-Server
### Netzwerk-Sicherheit
**IPv6-Deaktivierung**:
- Vollständige Deaktivierung auf Kernel-Ebene
- GRUB-Konfiguration: `ipv6.disable=1`
- Sysctl-Konfiguration für alle Interfaces
- NetworkManager/systemd-networkd Konfiguration
- Firewall blockiert alle IPv6-Pakete
**IP-Spoofing-Schutz**:
- Reverse Path Filtering aktiviert
- Source Routing deaktiviert
- ICMP Redirects ignoriert
- Secure Redirects deaktiviert
**DDoS-Schutz**:
- SYN-Flood-Schutz mit SYN-Cookies
- Optimierte TCP-Backlog-Größe
- Begrenzte SYN/SYNACK-Wiederholungen
- Broadcast-Ping-Schutz (Smurf-Angriffe)
**TCP-Optimierungen**:
- RFC-konforme Retry-Limits
- Optimierte Window-Skalierung
- Deaktivierte TCP-Timestamps (Anti-Fingerprinting)
- Deaktivierte TCP-SACK (Sicherheit)
- Time-Wait-Assassination-Schutz
**Logging und Monitoring**:
- Martian-Pakete werden geloggt
- Verdächtige Netzwerkaktivitäten protokolliert
- Bogus ICMP-Antworten ignoriert
### Verzeichnisstruktur
```
/opt/myp/ # Hauptanwendungsverzeichnis
├── app.py # Flask-Hauptanwendung
├── models.py # Datenbankmodelle
├── blueprints/ # Flask-Blueprints
├── config/ # Konfigurationsdateien
├── database/ # SQLite-Datenbank
├── static/ # Statische Dateien (CSS, JS)
├── templates/ # HTML-Templates
├── uploads/ # Upload-Verzeichnis
├── utils/ # Hilfsfunktionen
├── logs/ # Log-Dateien
└── certs/ # SSL-Zertifikate
└── localhost/ # Localhost-Zertifikate
```
## Logging
**Installationslog**: `/var/log/myp-install.log`
**Service-Logs**: `journalctl -u <service-name>`
**Watchdog-Log**: `/var/log/kiosk-watchdog.log`
## Fehlerbehebung
### Häufige Probleme
1. **HTTPS-Backend nicht erreichbar**
```bash
sudo systemctl status myp-https
sudo journalctl -u myp-https -f
```
2. **Kiosk-Browser startet nicht**
```bash
sudo systemctl status myp-kiosk
sudo journalctl -u myp-kiosk -f
```
3. **SSL-Zertifikat-Probleme**
```bash
sudo ./setup.sh
# Option 5 für System-Test
```
4. **Service-Neustart**
```bash
sudo systemctl restart myp-https
sudo systemctl restart kiosk-watchdog
```
5. **SSH-Verbindung fehlgeschlagen**
```bash
# SSH-Service prüfen
sudo systemctl status ssh
# SSH-Port prüfen
sudo ss -tlnp | grep :22
# Firewall-Regeln prüfen
sudo firewall-cmd --list-all
```
6. **RDP-Verbindung fehlgeschlagen**
```bash
# xrdp-Service prüfen
sudo systemctl status xrdp
# RDP-Port prüfen
sudo ss -tlnp | grep :3389
# xrdp-Logs prüfen
sudo journalctl -u xrdp -f
```
7. **Firewall-Probleme**
```bash
# Firewall-Status prüfen
sudo systemctl status firewalld
# Aktive Zonen anzeigen
sudo firewall-cmd --get-active-zones
# Zone-Konfiguration prüfen
sudo firewall-cmd --zone=myp-backend --list-all
# Firewall neu konfigurieren
sudo ./setup.sh
# Option 4 für Remote-Zugang
```
### Manuelle Service-Verwaltung
```bash
# Services aktivieren
sudo systemctl enable myp-https myp-kiosk kiosk-watchdog myp-firewall
# Services starten
sudo systemctl start myp-https myp-kiosk kiosk-watchdog
# Remote-Services aktivieren
sudo systemctl enable ssh xrdp firewalld
sudo systemctl start ssh xrdp firewalld
# Status prüfen
sudo systemctl status myp-https myp-kiosk kiosk-watchdog myp-firewall
sudo systemctl status ssh xrdp firewalld
# Logs anzeigen
sudo journalctl -u myp-https -f
sudo journalctl -u xrdp -f
sudo journalctl -u firewalld -f
```
## Wartung
### Regelmäßige Aufgaben
1. **System-Updates**
```bash
sudo apt update && sudo apt upgrade -y
```
2. **Log-Rotation**
- Automatisch durch systemd
- Watchdog rotiert eigene Logs bei >10MB
3. **SSL-Zertifikat-Erneuerung**
- Automatisch durch Watchdog bei Ablauf
- Manuell: Option 1 im Setup-Skript
4. **System-Test**
```bash
sudo ./setup.sh
# Option 5
```
## Sicherheit
### Implementierte Maßnahmen
- **Minimale Berechtigungen**: Services laufen mit minimal nötigen Rechten
- **SSL-Verschlüsselung**: HTTPS für alle Verbindungen
- **Systemd-Härtung**: NoNewPrivileges, ProtectSystem
- **Automatische Updates**: Watchdog überwacht und repariert
- **Passwortlose Kiosk**: Reduziert Angriffsfläche
### Empfohlene Zusatzmaßnahmen
- Firewall-Konfiguration
- SSH-Schlüssel statt Passwörter
- Regelmäßige Backups
- Monitoring der Log-Dateien
## Migration von alten Installationen
Wenn Sie eine bestehende Installation mit `combined.sh` oder `installer.sh` haben:
1. **Backup erstellen**
```bash
sudo cp -r /opt/myp /opt/myp.backup
```
2. **Neue Installation**
```bash
sudo ./setup.sh
# Option 3 für Service-Update
```
3. **Konfiguration übertragen**
- Datenbank-Dateien
- Upload-Verzeichnisse
- Benutzerdefinierte Konfigurationen
## Support
Bei Problemen:
1. **Log-Dateien prüfen**
2. **System-Test durchführen** (Option 5)
3. **Services neu starten**
4. **Installation wiederholen** mit entsprechender Option
Das konsolidierte Setup-System bietet maximale Flexibilität bei minimaler Komplexität und ermöglicht sowohl Entwicklungs- als auch Produktionsumgebungen.