# 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 ` **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.