Projektarbeit-MYP/backend/systemd/myp-firewall.service

78 lines
2.5 KiB
Desktop File

[Unit]
Description=MYP Firewall Configuration Service
Documentation=https://github.com/MYP-Druckerverwaltung
After=firewalld.service
Wants=firewalld.service
Requires=firewalld.service
[Service]
Type=oneshot
RemainAfterExit=yes
User=root
Group=root
# Firewall-Konfiguration für MYP Backend
ExecStart=/bin/bash -c '\
# Warte bis firewalld vollständig gestartet ist \
sleep 5; \
\
# Zone definieren (falls nicht vorhanden) \
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \
\
# 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; \
\
# SSH für Wartung \
firewall-cmd --permanent --zone=myp-backend --add-service=ssh; \
\
# RDP für Remote-Desktop \
firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp; \
\
# Default-Zone setzen \
firewall-cmd --set-default-zone=myp-backend; \
\
# Änderungen übernehmen \
firewall-cmd --reload; \
\
# Status loggen \
logger "MYP Firewall: Konfiguration erfolgreich angewendet"; \
firewall-cmd --list-all-zones | logger -t "MYP-Firewall"; \
'
# Umgebungsvariablen
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myp-firewall
# Sicherheitseinstellungen
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=false
ProtectHome=true
[Install]
WantedBy=multi-user.target