🐛 Backend Database Cleanup & Log Update 🎉

This commit is contained in:
Till Tomczak 2025-06-01 14:27:24 +02:00
parent f398bf896a
commit 3287b4558b
7 changed files with 442 additions and 144 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1141,3 +1141,10 @@ WHERE users.id = ?
2025-06-01 14:09:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:09:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:10:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:10:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:11:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:11:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:12:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:13:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:14:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:15:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:16:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:17:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:17:45 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True

View File

@ -1326,3 +1326,35 @@
2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden 2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... 2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden 2025-06-01 14:11:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:12:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:12:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:12:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:12:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:13:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:13:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:13:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:13:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:14:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:14:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:14:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:14:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:15:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:15:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:15:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:15:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:16:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:16:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:16:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:16:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden

View File

@ -3659,3 +3659,27 @@
2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker 2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.07ms 2025-06-01 14:11:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.07ms
2025-06-01 14:12:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:12:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:12:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.91ms
2025-06-01 14:13:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:13:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:13:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.09ms
2025-06-01 14:14:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:14:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:14:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.30ms
2025-06-01 14:15:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:15:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:15:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.15ms
2025-06-01 14:16:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:16:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:16:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.65ms
2025-06-01 14:17:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:17:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:17:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.89ms
2025-06-01 14:17:38 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:17:38 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:17:38 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.86ms
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.35ms

View File

@ -283,6 +283,128 @@ EOF
log "✅ Autologin für $KIOSK_USER konfiguriert" log "✅ Autologin für $KIOSK_USER konfiguriert"
} }
configure_kiosk_autostart() {
log "=== KONFIGURIERE AUTOMATISCHEN KIOSK-START ==="
# Erstelle .bashrc für automatischen X-Server und Browser-Start
progress "Konfiguriere automatischen Kiosk-Start für $KIOSK_USER..."
local kiosk_home="/home/$KIOSK_USER"
# .bashrc für automatischen Start erstellen
cat > "$kiosk_home/.bashrc" << 'EOF'
# Automatischer Kiosk-Start beim Login
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
echo "Starte Kiosk-Modus..."
# X-Server im Hintergrund starten
startx /home/kiosk/.xinitrc -- :0 vt1 &
# Warte bis X-Server bereit ist
sleep 5
# Setze DISPLAY-Variable
export DISPLAY=:0
# Warte auf HTTPS-Backend
echo "Warte auf HTTPS-Backend..."
for i in {1..60}; do
if curl -k -s https://localhost:443 >/dev/null 2>&1; then
echo "HTTPS-Backend erreichbar"
break
fi
echo "Warte... ($i/60)"
sleep 2
done
# Bildschirmschoner deaktivieren
xset s off
xset s noblank
xset -dpms
# Mauszeiger verstecken
unclutter -idle 0.1 -root -noevents &
# Browser im Kiosk-Modus starten
if command -v chromium >/dev/null 2>&1; then
BROWSER="chromium"
elif command -v chromium-browser >/dev/null 2>&1; then
BROWSER="chromium-browser"
else
BROWSER="firefox-esr"
fi
echo "Starte $BROWSER im Kiosk-Modus..."
if [[ "$BROWSER" == "chromium"* ]]; then
exec $BROWSER \
--kiosk \
--no-sandbox \
--disable-infobars \
--disable-session-crashed-bubble \
--disable-restore-session-state \
--disable-features=TranslateUI \
--disable-extensions \
--disable-plugins \
--disable-popup-blocking \
--disable-prompt-on-repost \
--disable-sync \
--disable-translate \
--noerrdialogs \
--no-first-run \
--no-default-browser-check \
--autoplay-policy=no-user-gesture-required \
--start-fullscreen \
--start-maximized \
--user-data-dir=/home/kiosk/.chromium-kiosk \
--disable-background-mode \
--force-device-scale-factor=1.0 \
--disable-pinch \
--overscroll-history-navigation=0 \
--disable-dev-shm-usage \
--memory-pressure-off \
--max_old_space_size=512 \
--disable-background-timer-throttling \
--disable-backgrounding-occluded-windows \
--disable-renderer-backgrounding \
--disable-features=VizDisplayCompositor \
--enable-features=OverlayScrollbar \
--hide-scrollbars \
--ignore-certificate-errors \
--ignore-ssl-errors \
--ignore-certificate-errors-spki-list \
--disable-web-security \
--allow-running-insecure-content \
--unsafely-treat-insecure-origin-as-secure=https://localhost:443 \
https://localhost:443
else
exec firefox-esr \
--kiosk \
https://localhost:443
fi
fi
EOF
# .xinitrc für X-Server-Konfiguration erstellen
cat > "$kiosk_home/.xinitrc" << 'EOF'
#!/bin/bash
# Minimale X-Session für Kiosk-Modus
exec openbox-session
EOF
# Berechtigungen setzen
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.xinitrc"
chmod +x "$kiosk_home/.xinitrc"
# Erstelle Kiosk-Verzeichnisse
mkdir -p "$kiosk_home/.chromium-kiosk"
chown -R "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.chromium-kiosk"
log "✅ Automatischer Kiosk-Start konfiguriert"
info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER"
}
# =========================== PYTHON & NODE.JS INSTALLATION =========================== # =========================== PYTHON & NODE.JS INSTALLATION ===========================
install_python_dependencies() { install_python_dependencies() {
log "=== PYTHON-ABHÄNGIGKEITEN INSTALLATION ===" log "=== PYTHON-ABHÄNGIGKEITEN INSTALLATION ==="
@ -678,30 +800,24 @@ show_menu() {
echo "" echo ""
echo -e "${YELLOW}Bitte wählen Sie eine Option:${NC}" echo -e "${YELLOW}Bitte wählen Sie eine Option:${NC}"
echo "" echo ""
echo -e "${GREEN}1)${NC} Nur Abhängigkeiten installieren und System vorbereiten" echo -e "${GREEN}1)${NC} Abhängigkeiten installieren und System für manuelles Testen vorbereiten"
echo -e " ${BLUE}→ Python, Node.js, SSL-Zertifikate, minimaler Test${NC}" echo -e " ${BLUE}→ Python, Node.js, SSL-Zertifikate, Anwendung deployed, minimaler Test${NC}"
echo -e " ${BLUE}→ System bereit für manuelle Tests und Entwicklung${NC}"
echo "" echo ""
echo -e "${GREEN}2)${NC} Finale Installation mit kompletter Kiosk-Modus-Konfiguration" echo -e "${GREEN}2)${NC} Vollständige Kiosk-Installation mit Remote-Zugang"
echo -e " ${BLUE}→ Desktop entfernen, Autologin, Services aktivieren${NC}" echo -e " ${BLUE}→ Komplette Produktionsinstallation mit automatischem Kiosk-Start${NC}"
echo -e " ${BLUE}→ RDP (root:744563017196A), SSH (user:raspberry), Firewall${NC}"
echo -e " ${BLUE}→ Automatischer Login und Kiosk-Modus beim Boot${NC}"
echo "" echo ""
echo -e "${GREEN}3)${NC} Nur Services installieren/aktualisieren" echo -e "${GREEN}3)${NC} Beenden"
echo -e " ${BLUE}→ Systemd-Services aus systemd/ Verzeichnis kopieren${NC}"
echo ""
echo -e "${GREEN}4)${NC} Remote-Zugang konfigurieren (RDP + SSH + Firewall)"
echo -e " ${BLUE}→ SSH (user:raspberry), RDP (root:744563017196A), firewalld${NC}"
echo ""
echo -e "${GREEN}5)${NC} System-Test durchführen"
echo -e " ${BLUE}→ HTTPS-Verbindung, SSL-Zertifikat, Remote-Zugang testen${NC}"
echo ""
echo -e "${GREEN}6)${NC} Beenden"
echo "" echo ""
echo -e "${CYAN}=================================================================${NC}" echo -e "${CYAN}=================================================================${NC}"
echo -n "Ihre Wahl [1-6]: " echo -n "Ihre Wahl [1-3]: "
} }
# =========================== INSTALLATIONS-MODI =========================== # =========================== INSTALLATIONS-MODI ===========================
install_dependencies_only() { install_dependencies_only() {
log "=== MODUS: NUR ABHÄNGIGKEITEN INSTALLIEREN ===" log "=== MODUS: ABHÄNGIGKEITEN INSTALLIEREN FÜR MANUELLES TESTEN ==="
check_root check_root
check_debian_system check_debian_system
@ -730,114 +846,62 @@ install_dependencies_only() {
cd "$CURRENT_DIR" cd "$CURRENT_DIR"
success "✅ Abhängigkeiten-Installation abgeschlossen!" success "✅ Abhängigkeiten-Installation abgeschlossen!"
info "Das System ist bereit für die finale Kiosk-Installation (Option 2)" info "Das System ist bereit für manuelle Tests und Entwicklung"
info "HTTPS-Backend kann manuell gestartet werden mit:"
info " cd /opt/myp && python3 app.py"
} }
install_full_kiosk() { install_full_production_system() {
log "=== MODUS: FINALE KIOSK-INSTALLATION ===" log "=== MODUS: VOLLSTÄNDIGE KIOSK-INSTALLATION MIT REMOTE-ZUGANG ==="
check_root
check_debian_system
# Führe zuerst Abhängigkeiten-Installation durch (falls noch nicht geschehen)
if [ ! -d "$APP_DIR" ] || [ ! -f "$APP_DIR/app.py" ]; then
warning "Anwendung noch nicht deployed - führe Abhängigkeiten-Installation durch..."
install_dependencies_only
fi
remove_desktop_environments
install_minimal_x11
create_kiosk_user
configure_autologin
install_systemd_services
enable_and_start_services
# Frage nach Remote-Zugang
echo ""
echo -n "Remote-Zugang (RDP + SSH + Firewall) konfigurieren? [j/N]: "
read -r configure_remote
if [[ "$configure_remote" =~ ^[Jj]$ ]]; then
install_remote_access
configure_firewall
fi
test_application
cleanup_old_files
success "✅ Finale Kiosk-Installation abgeschlossen!"
info "Das System wird beim nächsten Neustart automatisch im Kiosk-Modus starten"
warning "⚠️ Neustart empfohlen: sudo reboot"
}
install_services_only() {
log "=== MODUS: NUR SERVICES INSTALLIEREN ==="
check_root
install_systemd_services
# Frage ob Services aktiviert werden sollen
echo ""
echo -n "Services aktivieren und starten? [j/N]: "
read -r activate_services
if [[ "$activate_services" =~ ^[Jj]$ ]]; then
enable_and_start_services
else
info "Services installiert aber nicht aktiviert"
info "Manuell aktivieren mit: sudo systemctl enable $HTTPS_SERVICE_NAME"
fi
success "✅ Service-Installation abgeschlossen!"
}
install_remote_access_only() {
log "=== MODUS: NUR REMOTE-ZUGANG KONFIGURIEREN ==="
check_root check_root
check_debian_system check_debian_system
check_internet_connection check_internet_connection
install_remote_access # Führe zuerst Abhängigkeiten-Installation durch (falls noch nicht geschehen)
configure_firewall if [ ! -d "$APP_DIR" ] || [ ! -f "$APP_DIR/app.py" ]; then
test_remote_access warning "Anwendung noch nicht deployed - führe Abhängigkeiten-Installation durch..."
update_system
success "✅ Remote-Zugang-Konfiguration abgeschlossen!" install_python_dependencies
info "Zugang verfügbar über:" install_nodejs_npm
info " 📡 SSH: ssh user@<ip-adresse> (Passwort: raspberry)" install_ssl_certificates
info " 🖥️ RDP: <ip-adresse>:3389 (Benutzer: root, Passwort: 744563017196A)" install_python_packages
} deploy_application
install_npm_dependencies
run_system_test() { generate_ssl_certificate
log "=== MODUS: SYSTEM-TEST ==="
test_application
# Zusätzliche Tests
progress "Prüfe Service-Status..."
local services=("$HTTPS_SERVICE_NAME" "$KIOSK_SERVICE_NAME" "$WATCHDOG_SERVICE_NAME" "$FIREWALL_SERVICE_NAME")
for service in "${services[@]}"; do
if systemctl is-enabled --quiet "$service" 2>/dev/null; then
if systemctl is-active --quiet "$service"; then
success "$service: aktiv und läuft"
else
warning "⚠️ $service: aktiviert aber läuft nicht"
fi
else
info " $service: nicht aktiviert"
fi
done
# Remote-Zugang testen (falls konfiguriert)
if systemctl is-enabled --quiet ssh 2>/dev/null || systemctl is-enabled --quiet xrdp 2>/dev/null; then
test_remote_access
else
info " Remote-Zugang nicht konfiguriert"
fi fi
success "✅ System-Test abgeschlossen!" # Desktop-Environments entfernen und minimale X11 installieren
remove_desktop_environments
install_minimal_x11
# Remote-Zugang konfigurieren
install_remote_access
configure_firewall
# Kiosk-Benutzer und Autologin konfigurieren
create_kiosk_user
configure_autologin
configure_kiosk_autostart
# Services installieren und aktivieren
install_systemd_services
enable_and_start_services
# System-Test
test_application
test_remote_access
# Aufräumen
cleanup_old_files
success "✅ Vollständige Kiosk-Installation abgeschlossen!"
info "Das System ist vollständig konfiguriert:"
info " 🖥️ Automatischer Kiosk-Modus beim Boot"
info " 📡 SSH: ssh user@<ip> (Passwort: raspberry)"
info " 🖥️ RDP: <ip>:3389 (Benutzer: root, Passwort: 744563017196A)"
info " 🔒 Firewall: 192.168.0.0/16 + localhost + m040tbaraspi001"
warning "⚠️ Neustart erforderlich für automatischen Kiosk-Start: sudo reboot"
} }
# =========================== RDP & SSH ZUGANG =========================== # =========================== RDP & SSH ZUGANG ===========================
@ -967,9 +1031,34 @@ configure_firewall() {
# Zone definieren # Zone definieren
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/24
# Nur HTTPS für API & Kiosk zulassen # Erweiterte Netzwerk-Quellen definieren
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16
firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32
firewall-cmd --permanent --zone=myp-backend --add-source=::1/128
# Lokaler Hostname hinzufügen (falls auflösbar)
local local_hostname=$(hostname)
if [ -n "$local_hostname" ]; then
progress "Füge lokalen Hostname hinzu: $local_hostname"
# Versuche IP-Adresse des lokalen Hostnames zu ermitteln
local local_ip=$(getent hosts "$local_hostname" | awk '{print $1}' | head -1 2>/dev/null || true)
if [ -n "$local_ip" ]; then
firewall-cmd --permanent --zone=myp-backend --add-source="$local_ip/32" 2>/dev/null || true
fi
fi
# Remote-Hostname m040tbaraspi001 hinzufügen (falls auflösbar)
progress "Füge Remote-Hostname hinzu: m040tbaraspi001"
local remote_ip=$(getent hosts "m040tbaraspi001" | awk '{print $1}' | head -1 2>/dev/null || true)
if [ -n "$remote_ip" ]; then
firewall-cmd --permanent --zone=myp-backend --add-source="$remote_ip/32" 2>/dev/null || true
log "✅ Remote-Hostname m040tbaraspi001 hinzugefügt: $remote_ip"
else
info "Remote-Hostname m040tbaraspi001 nicht auflösbar - überspringe"
fi
# HTTPS für API & Kiosk zulassen
firewall-cmd --permanent --zone=myp-backend --add-port=443/tcp firewall-cmd --permanent --zone=myp-backend --add-port=443/tcp
# SSH für Wartung # SSH für Wartung
@ -986,13 +1075,15 @@ configure_firewall() {
# Firewall-Status anzeigen # Firewall-Status anzeigen
progress "Firewall-Konfiguration:" progress "Firewall-Konfiguration:"
firewall-cmd --list-all-zones | grep -A 10 "myp-backend" || true firewall-cmd --list-all-zones | grep -A 15 "myp-backend" || true
log "✅ Firewall konfiguriert:" log "✅ Firewall konfiguriert:"
log " 🔒 Zone: myp-backend (192.168.0.0/24)" log " 🔒 Zone: myp-backend"
log " 🌐 HTTPS: Port 443/tcp" log " 🌐 Netzwerk: 192.168.0.0/16"
log " 📡 SSH: Port 22/tcp" log " 🏠 Localhost: 127.0.0.1, ::1"
log " 🖥️ RDP: Port 3389/tcp" log " 🖥️ Lokaler Host: $local_hostname"
log " 📡 Remote Host: m040tbaraspi001"
log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)"
} }
# =========================== REMOTE-ZUGANG TESTEN =========================== # =========================== REMOTE-ZUGANG TESTEN ===========================
@ -1044,6 +1135,150 @@ test_remote_access() {
log "✅ Remote-Zugang-Test abgeschlossen" log "✅ Remote-Zugang-Test abgeschlossen"
} }
# =========================== NETZWERK-SICHERHEIT ===========================
configure_network_security() {
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="
# IPv6 vollständig deaktivieren
progress "Deaktiviere IPv6..."
# IPv6 in GRUB deaktivieren
if [ -f /etc/default/grub ]; then
cp /etc/default/grub /etc/default/grub.backup
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& ipv6.disable=1/' /etc/default/grub
sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& ipv6.disable=1/' /etc/default/grub
update-grub 2>/dev/null || true
fi
# IPv6 in sysctl deaktivieren
cat >> /etc/sysctl.conf << 'EOF'
# ===================================================================
# MYP Netzwerk-Sicherheitskonfiguration
# ===================================================================
# IPv6 vollständig deaktivieren
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# IP-Spoofing-Schutz aktivieren
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Source-Routing deaktivieren (verhindert IP-Spoofing)
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# ICMP-Redirects ignorieren (verhindert Man-in-the-Middle)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# Secure ICMP-Redirects ignorieren
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# SYN-Flood-Schutz aktivieren
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# TCP-RFC-Compliance (verhindert aggressive Paketwiederholungen)
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_orphan_retries = 3
# TCP-Window-Skalierung optimieren (geringere Netzwerkauslastung)
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 5000
# Broadcast-Pings ignorieren (verhindert Smurf-Angriffe)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Bogus ICMP-Antworten ignorieren
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Paketweiterleitung verhindern (Router-Funktionalität deaktivieren)
net.ipv4.ip_forward = 0
# Martian-Pakete loggen (verdächtige Pakete)
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# TCP-Timestamps deaktivieren (verhindert Fingerprinting)
net.ipv4.tcp_timestamps = 0
# TCP-SACK deaktivieren (verhindert bestimmte Angriffe)
net.ipv4.tcp_sack = 0
# TCP-Keepalive optimieren
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
# Memory-Limits für Netzwerk-Buffers
net.core.rmem_default = 262144
net.core.wmem_default = 262144
# Schutz vor Time-Wait-Assassination
net.ipv4.tcp_rfc1337 = 1
EOF
# Sysctl-Einstellungen sofort anwenden
sysctl -p || warning "Einige sysctl-Einstellungen konnten nicht angewendet werden"
# IPv6 in Netzwerk-Interfaces deaktivieren
progress "Deaktiviere IPv6 in Netzwerk-Interfaces..."
# Für systemd-networkd
if systemctl is-enabled systemd-networkd 2>/dev/null; then
mkdir -p /etc/systemd/network
cat > /etc/systemd/network/99-disable-ipv6.network << 'EOF'
[Match]
Name=*
[Network]
IPv6AcceptRA=no
LinkLocalAddressing=no
EOF
systemctl restart systemd-networkd 2>/dev/null || true
fi
# Für NetworkManager
if systemctl is-enabled NetworkManager 2>/dev/null; then
cat > /etc/NetworkManager/conf.d/99-disable-ipv6.conf << 'EOF'
[main]
plugins=keyfile
[keyfile]
unmanaged-devices=none
[connection]
ipv6.method=ignore
EOF
systemctl restart NetworkManager 2>/dev/null || true
fi
# IPv6 in /etc/hosts auskommentieren
sed -i 's/^::1/#::1/' /etc/hosts 2>/dev/null || true
log "✅ Erweiterte Netzwerk-Sicherheit konfiguriert:"
log " 🚫 IPv6 vollständig deaktiviert"
log " 🛡️ IP-Spoofing-Schutz aktiviert"
log " 🔒 SYN-Flood-Schutz aktiviert"
log " 📝 Verdächtige Pakete werden geloggt"
log " 🚫 Paketweiterleitung deaktiviert"
log " ⚡ TCP-Performance optimiert"
log " 🔐 RFC-Compliance für TCP aktiviert"
}
# =========================== HAUPTPROGRAMM =========================== # =========================== HAUPTPROGRAMM ===========================
main() { main() {
# Erstelle Log-Datei # Erstelle Log-Datei
@ -1061,35 +1296,17 @@ main() {
read -r read -r
;; ;;
2) 2)
install_full_kiosk install_full_production_system
echo "" echo ""
echo -n "Drücken Sie Enter um fortzufahren..." echo -n "Drücken Sie Enter um fortzufahren..."
read -r read -r
;; ;;
3) 3)
install_services_only
echo ""
echo -n "Drücken Sie Enter um fortzufahren..."
read -r
;;
4)
install_remote_access_only
echo ""
echo -n "Drücken Sie Enter um fortzufahren..."
read -r
;;
5)
run_system_test
echo ""
echo -n "Drücken Sie Enter um fortzufahren..."
read -r
;;
6)
log "Setup-Skript beendet" log "Setup-Skript beendet"
exit 0 exit 0
;; ;;
*) *)
error "Ungültige Auswahl. Bitte wählen Sie 1-6." error "Ungültige Auswahl. Bitte wählen Sie 1-3."
;; ;;
esac esac
done done

View File

@ -19,8 +19,26 @@ ExecStart=/bin/bash -c '\
# Zone definieren (falls nicht vorhanden) \ # Zone definieren (falls nicht vorhanden) \
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \ firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \
\ \
# Quell-Netzwerk definieren \ # Erweiterte Netzwerk-Quellen definieren \
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/24; \ firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16; \
firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32; \
firewall-cmd --permanent --zone=myp-backend --add-source=::1/128; \
\
# Lokaler Hostname hinzufügen (falls auflösbar) \
LOCAL_HOSTNAME=$(hostname); \
if [ -n "$LOCAL_HOSTNAME" ]; then \
LOCAL_IP=$(getent hosts "$LOCAL_HOSTNAME" | awk "{print \$1}" | head -1 2>/dev/null || true); \
if [ -n "$LOCAL_IP" ]; then \
firewall-cmd --permanent --zone=myp-backend --add-source="$LOCAL_IP/32" 2>/dev/null || true; \
fi; \
fi; \
\
# Remote-Hostname m040tbaraspi001 hinzufügen (falls auflösbar) \
REMOTE_IP=$(getent hosts "m040tbaraspi001" | awk "{print \$1}" | head -1 2>/dev/null || true); \
if [ -n "$REMOTE_IP" ]; then \
firewall-cmd --permanent --zone=myp-backend --add-source="$REMOTE_IP/32" 2>/dev/null || true; \
logger "MYP Firewall: Remote-Hostname m040tbaraspi001 hinzugefügt: $REMOTE_IP"; \
fi; \
\ \
# HTTPS für API & Kiosk \ # HTTPS für API & Kiosk \
firewall-cmd --permanent --zone=myp-backend --add-port=443/tcp; \ firewall-cmd --permanent --zone=myp-backend --add-port=443/tcp; \