From 3287b4558b6eaac9a6351229d7ad57836fab359e Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Sun, 1 Jun 2025 14:27:24 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Backend=20Database=20Cleanup=20&?= =?UTF-8?q?=20Log=20Update=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/database/myp.db-shm | Bin 32768 -> 0 bytes backend/database/myp.db-wal | Bin 4152 -> 0 bytes backend/logs/app/app.log | 7 + .../logs/printer_monitor/printer_monitor.log | 32 ++ backend/logs/printers/printers.log | 24 + backend/setup.sh | 501 +++++++++++++----- backend/systemd/myp-firewall.service | 22 +- 7 files changed, 442 insertions(+), 144 deletions(-) delete mode 100644 backend/database/myp.db-shm delete mode 100644 backend/database/myp.db-wal diff --git a/backend/database/myp.db-shm b/backend/database/myp.db-shm deleted file mode 100644 index ff64179b4231d797106f94624f53c1f64dc982a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)u?Ye}5CzaVZNTsnV-YmA2UANhzsNF-ti(tVyAX^N16vSd-4QuV&4ha&hS^<~ zS$G9(eVaz6SE`B_WFMBgH`mqWI6Iu;F`A6e>-oM~Y__{){p0;I>YbeX{L1IJZRPFg zw>t|01PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB=DR2;{F5LVy4P0^JhGABltj0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ`6zzgsa BC=>ty diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal deleted file mode 100644 index 0c1c6094f63313c40d1bf71ac250c3241a2ef883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4152 zcmXr7XKP~6eI&uaAiw|wOjjAcYWlTs6fxXkexY+F{x(pI4~S)9;?rGNb1po$+{z0S zWas9e*ExA-^ZTGT&dmvq0fdFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0)sOI^f*{F?S<1zQ;SRDi&6_gba7@%MLeoVd~r!)Nold6f}sjKi@2?DX>n>% zadBZzW=U#%VrfZ!W?o8aMLbwE-p~Z7ij9yeBcLiZR-h_zur8355bYo`FEKYYJ~cNn zGY6 "$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 =========================== install_python_dependencies() { log "=== PYTHON-ABHÄNGIGKEITEN INSTALLATION ===" @@ -678,30 +800,24 @@ show_menu() { echo "" echo -e "${YELLOW}Bitte wählen Sie eine Option:${NC}" echo "" - echo -e "${GREEN}1)${NC} Nur Abhängigkeiten installieren und System vorbereiten" - echo -e " ${BLUE}→ Python, Node.js, SSL-Zertifikate, minimaler Test${NC}" + echo -e "${GREEN}1)${NC} Abhängigkeiten installieren und System für manuelles Testen vorbereiten" + 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 -e "${GREEN}2)${NC} Finale Installation mit kompletter Kiosk-Modus-Konfiguration" - echo -e " ${BLUE}→ Desktop entfernen, Autologin, Services aktivieren${NC}" + echo -e "${GREEN}2)${NC} Vollständige Kiosk-Installation mit Remote-Zugang" + 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 -e "${GREEN}3)${NC} Nur Services installieren/aktualisieren" - 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 -e "${GREEN}3)${NC} Beenden" echo "" echo -e "${CYAN}=================================================================${NC}" - echo -n "Ihre Wahl [1-6]: " + echo -n "Ihre Wahl [1-3]: " } # =========================== INSTALLATIONS-MODI =========================== install_dependencies_only() { - log "=== MODUS: NUR ABHÄNGIGKEITEN INSTALLIEREN ===" + log "=== MODUS: ABHÄNGIGKEITEN INSTALLIEREN FÜR MANUELLES TESTEN ===" check_root check_debian_system @@ -730,114 +846,62 @@ install_dependencies_only() { cd "$CURRENT_DIR" 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() { - log "=== MODUS: FINALE KIOSK-INSTALLATION ===" - - 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 ===" +install_full_production_system() { + log "=== MODUS: VOLLSTÄNDIGE KIOSK-INSTALLATION MIT REMOTE-ZUGANG ===" check_root check_debian_system check_internet_connection - install_remote_access - configure_firewall - test_remote_access - - success "✅ Remote-Zugang-Konfiguration abgeschlossen!" - info "Zugang verfügbar über:" - info " 📡 SSH: ssh user@ (Passwort: raspberry)" - info " 🖥️ RDP: :3389 (Benutzer: root, Passwort: 744563017196A)" -} - -run_system_test() { - 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" + # 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..." + update_system + install_python_dependencies + install_nodejs_npm + install_ssl_certificates + install_python_packages + deploy_application + install_npm_dependencies + generate_ssl_certificate 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@ (Passwort: raspberry)" + info " 🖥️ RDP: :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 =========================== @@ -967,9 +1031,34 @@ configure_firewall() { # Zone definieren 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 # SSH für Wartung @@ -986,13 +1075,15 @@ configure_firewall() { # Firewall-Status anzeigen 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 " 🔒 Zone: myp-backend (192.168.0.0/24)" - log " 🌐 HTTPS: Port 443/tcp" - log " 📡 SSH: Port 22/tcp" - log " 🖥️ RDP: Port 3389/tcp" + log " 🔒 Zone: myp-backend" + log " 🌐 Netzwerk: 192.168.0.0/16" + log " 🏠 Localhost: 127.0.0.1, ::1" + log " 🖥️ Lokaler Host: $local_hostname" + log " 📡 Remote Host: m040tbaraspi001" + log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)" } # =========================== REMOTE-ZUGANG TESTEN =========================== @@ -1044,6 +1135,150 @@ test_remote_access() { 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 =========================== main() { # Erstelle Log-Datei @@ -1061,35 +1296,17 @@ main() { read -r ;; 2) - install_full_kiosk + install_full_production_system echo "" echo -n "Drücken Sie Enter um fortzufahren..." read -r ;; 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" exit 0 ;; *) - error "Ungültige Auswahl. Bitte wählen Sie 1-6." + error "Ungültige Auswahl. Bitte wählen Sie 1-3." ;; esac done diff --git a/backend/systemd/myp-firewall.service b/backend/systemd/myp-firewall.service index 6158a9b2..f5b8b401 100644 --- a/backend/systemd/myp-firewall.service +++ b/backend/systemd/myp-firewall.service @@ -19,8 +19,26 @@ ExecStart=/bin/bash -c '\ # Zone definieren (falls nicht vorhanden) \ firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \ \ - # Quell-Netzwerk definieren \ - firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/24; \ + # 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_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 \ firewall-cmd --permanent --zone=myp-backend --add-port=443/tcp; \