Projektarbeit-MYP/backend/docs/SETUP_ANLEITUNG.md

11 KiB

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:

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:

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

    sudo systemctl status myp-https
    sudo journalctl -u myp-https -f
    
  2. Kiosk-Browser startet nicht

    sudo systemctl status myp-kiosk
    sudo journalctl -u myp-kiosk -f
    
  3. SSL-Zertifikat-Probleme

    sudo ./setup.sh
    # Option 5 für System-Test
    
  4. Service-Neustart

    sudo systemctl restart myp-https
    sudo systemctl restart kiosk-watchdog
    
  5. SSH-Verbindung fehlgeschlagen

    # 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

    # 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

    # 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

# 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

    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

    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

    sudo cp -r /opt/myp /opt/myp.backup
    
  2. Neue Installation

    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.