📚 Improved log file structure & organization in backend 🛠️

This commit is contained in:
2025-06-01 15:11:23 +02:00
parent 5287dbd1eb
commit 9e980cc01a
25 changed files with 920 additions and 169 deletions

View File

@@ -139,6 +139,7 @@ update_system() {
log "✅ System-Update abgeschlossen"
}
# =========================== NETZWERK-SICHERHEIT ===========================
configure_network_security() {
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="
@@ -1087,35 +1088,43 @@ install_remote_access() {
# Minimale Desktop-Umgebung für RDP installieren
progress "Installiere minimale Desktop-Umgebung für RDP..."
apt-get install -y tasksel || error "tasksel Installation fehlgeschlagen"
# XFCE als leichtgewichtige Desktop-Umgebung installieren
progress "Installiere XFCE Desktop-Umgebung..."
apt-get install -y xfce4 xfce4-goodies || error "XFCE Installation fehlgeschlagen"
apt-get install -y xfce4 xfce4-goodies dbus-x11 || error "XFCE Installation fehlgeschlagen"
# xrdp installieren
apt-get install -y xrdp || error "xrdp Installation fehlgeschlagen"
# xrdp-Service aktivieren
systemctl enable xrdp
systemctl start xrdp
# xrdp-Benutzer zur ssl-cert Gruppe hinzufügen
usermod -aG ssl-cert xrdp 2>/dev/null || true
# SSL-Zertifikate für xrdp erstellen
progress "Erstelle SSL-Zertifikate für xrdp..."
mkdir -p /etc/xrdp/certs
cd /etc/xrdp/certs
# Erstelle xrdp-Session-Konfiguration für XFCE
progress "Konfiguriere XFCE für xrdp..."
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650 \
-subj "/C=DE/ST=Baden-Wuerttemberg/L=Stuttgart/O=Mercedes-Benz/OU=IT/CN=myp-rdp" \
|| error "SSL-Zertifikat-Generierung für xrdp fehlgeschlagen"
# Erstelle .xsession für alle Benutzer
cat > /etc/skel/.xsession << 'EOF'
#!/bin/bash
# XFCE Session für xrdp
export XDG_SESSION_DESKTOP=xfce
export XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg
startxfce4
EOF
# Berechtigungen für xrdp-Zertifikate setzen
chown -R xrdp:xrdp /etc/xrdp/certs
chmod 0644 /etc/xrdp/certs/cert.pem
chmod 0600 /etc/xrdp/certs/key.pem
# Kopiere .xsession für root
cp /etc/skel/.xsession /root/.xsession
chmod +x /root/.xsession
# xrdp-Konfiguration für TLS
progress "Konfiguriere xrdp für TLS..."
# Kopiere .xsession für user (falls vorhanden)
if id "user" &>/dev/null; then
cp /etc/skel/.xsession /home/user/.xsession
chown user:user /home/user/.xsession
chmod +x /home/user/.xsession
fi
# xrdp-Konfiguration vereinfachen
progress "Konfiguriere xrdp..."
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.backup
cat > /etc/xrdp/xrdp.ini << 'EOF'
@@ -1125,10 +1134,7 @@ fork=true
port=3389
tcp_nodelay=true
tcp_keepalive=true
security_layer=tls
certificate=/etc/xrdp/certs/cert.pem
key_file=/etc/xrdp/certs/key.pem
ssl_protocols=TLSv1.2, TLSv1.3
security_layer=rdp
autorun=
allow_channels=true
allow_multimon=true
@@ -1140,7 +1146,7 @@ new_cursors=true
use_fastpath=both
require_credentials=true
ask_for_reconnect_reason=true
enable_token_login=true
enable_token_login=false
[Xorg]
name=Xorg
@@ -1150,20 +1156,126 @@ password=ask
ip=127.0.0.1
port=-1
code=20
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=10
EOF
# xrdp-sesman Konfiguration
progress "Konfiguriere xrdp-sesman..."
cp /etc/xrdp/sesman.ini /etc/xrdp/sesman.ini.backup
cat > /etc/xrdp/sesman.ini << 'EOF'
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startxfce4
DefaultWindowManager=startxfce4
ReconnectSh=/etc/xrdp/reconnectwm.sh
[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
AlwaysGroupCheck=false
RestrictOutboundClipboard=false
RestrictInboundClipboard=false
[Sessions]
X11DisplayOffset=10
MaxSessions=50
KillDisconnected=false
IdleTimeLimit=0
DisconnectedTimeLimit=0
Policy=UBD
[Logging]
LogFile=xrdp-sesman.log
LogLevel=INFO
EnableSyslog=true
SyslogLevel=INFO
[Xorg]
param1=-bs
param2=-nolisten
param3=tcp
param4=-dpi
param5=96
[Xvnc]
param1=-bs
param2=-nolisten
param3=tcp
param4=-localhost
param5=-dpi
param6=96
EOF
# Root-Passwort für RDP setzen
progress "Setze Root-Passwort für RDP-Zugang..."
echo "root:744563017196A" | chpasswd || error "Kann Root-Passwort nicht setzen"
# xrdp-Service neu starten
systemctl restart xrdp
# Polkit-Regel für xrdp erstellen
progress "Erstelle Polkit-Regeln für xrdp..."
mkdir -p /etc/polkit-1/localauthority/50-local.d
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla << 'EOF'
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF
# xrdp-Service aktivieren und starten
progress "Starte xrdp-Services..."
systemctl enable xrdp
systemctl enable xrdp-sesman
# Services stoppen falls sie laufen
systemctl stop xrdp 2>/dev/null || true
systemctl stop xrdp-sesman 2>/dev/null || true
# Services neu starten
systemctl start xrdp-sesman
sleep 2
systemctl start xrdp
# Warte und prüfe Status
sleep 3
cd "$CURRENT_DIR"
log "✅ Remote-Zugang konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
log " 🖥️ RDP: root:744563017196A (Port 3389)"
# Status prüfen
if systemctl is-active --quiet xrdp; then
log "✅ Remote-Zugang konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
log " 🖥️ RDP: root:744563017196A (Port 3389)"
else
warning "⚠️ xrdp-Service konnte nicht gestartet werden - starte Debugging..."
debug_xrdp_issues
# Nach Debugging nochmal prüfen
if systemctl is-active --quiet xrdp; then
log "✅ Remote-Zugang nach Debugging konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
log " 🖥️ RDP: root:744563017196A (Port 3389)"
else
log "✅ SSH-Zugang konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
warning "⚠️ RDP-Zugang konnte nicht konfiguriert werden"
info "Manuelle Fehlerbehebung erforderlich - siehe Logs"
fi
fi
}
# =========================== FIREWALL KONFIGURATION ===========================
@@ -1268,11 +1380,29 @@ test_remote_access() {
warning "⚠️ SSH-Port 22 nicht erreichbar"
fi
else
error " SSH-Service läuft nicht"
warning "⚠️ SSH-Service läuft nicht - versuche Neustart..."
systemctl restart ssh 2>/dev/null || true
sleep 2
if systemctl is-active --quiet ssh; then
success "✅ SSH-Service nach Neustart aktiv"
else
error "❌ SSH-Service konnte nicht gestartet werden"
fi
fi
# RDP-Service testen
progress "Teste RDP-Service..."
# Prüfe xrdp-sesman zuerst
if systemctl is-active --quiet xrdp-sesman; then
success "✅ xrdp-sesman läuft"
else
warning "⚠️ xrdp-sesman läuft nicht - versuche Neustart..."
systemctl restart xrdp-sesman 2>/dev/null || true
sleep 2
fi
# Prüfe xrdp
if systemctl is-active --quiet xrdp; then
success "✅ RDP-Service läuft"
@@ -1283,7 +1413,16 @@ test_remote_access() {
warning "⚠️ RDP-Port 3389 nicht erreichbar"
fi
else
error " RDP-Service läuft nicht"
warning "⚠️ RDP-Service läuft nicht - versuche Neustart..."
systemctl restart xrdp 2>/dev/null || true
sleep 3
if systemctl is-active --quiet xrdp; then
success "✅ RDP-Service nach Neustart aktiv"
else
warning "⚠️ RDP-Service konnte nicht gestartet werden"
info "Prüfe Logs mit: journalctl -u xrdp -f"
info "Prüfe sesman Logs mit: journalctl -u xrdp-sesman -f"
fi
fi
# Firewall-Status testen
@@ -1292,12 +1431,36 @@ test_remote_access() {
success "✅ Firewall läuft"
# Aktive Zone anzeigen
local active_zone=$(firewall-cmd --get-active-zones | head -1)
local active_zone=$(firewall-cmd --get-active-zones 2>/dev/null | head -1 || echo "Keine Zone aktiv")
info "Aktive Zone: $active_zone"
# Prüfe ob Ports offen sind
if firewall-cmd --zone=myp-backend --query-port=22/tcp 2>/dev/null; then
success "✅ SSH-Port in Firewall freigegeben"
else
warning "⚠️ SSH-Port nicht in Firewall freigegeben"
fi
if firewall-cmd --zone=myp-backend --query-port=3389/tcp 2>/dev/null; then
success "✅ RDP-Port in Firewall freigegeben"
else
warning "⚠️ RDP-Port nicht in Firewall freigegeben"
fi
else
warning "⚠️ Firewall läuft nicht"
fi
# Netzwerk-Interface testen
progress "Teste Netzwerk-Konfiguration..."
local ip_address=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $7}' | head -1 || echo "Unbekannt")
if [ "$ip_address" != "Unbekannt" ]; then
success "✅ Netzwerk-Interface aktiv: $ip_address"
info "SSH-Zugang: ssh user@$ip_address"
info "RDP-Zugang: $ip_address:3389"
else
warning "⚠️ Keine Netzwerk-IP ermittelt"
fi
log "✅ Remote-Zugang-Test abgeschlossen"
}
@@ -1340,148 +1503,78 @@ configure_hostname() {
fi
}
# =========================== NETZWERK-SICHERHEIT ===========================
configure_network_security() {
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="
# =========================== XRDP DEBUGGING ===========================
debug_xrdp_issues() {
log "=== XRDP DEBUGGING ==="
# IPv6 vollständig deaktivieren
progress "Deaktiviere IPv6..."
progress "Analysiere xrdp-Probleme..."
# 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
# Prüfe xrdp-Logs
if [ -f /var/log/xrdp.log ]; then
local xrdp_errors=$(tail -20 /var/log/xrdp.log | grep -i "error\|fail\|denied" | wc -l)
if [ "$xrdp_errors" -gt 0 ]; then
warning "⚠️ Fehler in xrdp.log gefunden:"
tail -10 /var/log/xrdp.log | grep -i "error\|fail\|denied" || true
fi
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
# Prüfe sesman-Logs
if [ -f /var/log/xrdp-sesman.log ]; then
local sesman_errors=$(tail -20 /var/log/xrdp-sesman.log | grep -i "error\|fail\|denied" | wc -l)
if [ "$sesman_errors" -gt 0 ]; then
warning "⚠️ Fehler in xrdp-sesman.log gefunden:"
tail -10 /var/log/xrdp-sesman.log | grep -i "error\|fail\|denied" || true
fi
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
# Prüfe Berechtigungen
progress "Prüfe xrdp-Berechtigungen..."
if [ ! -r /etc/xrdp/xrdp.ini ]; then
warning "⚠️ xrdp.ini nicht lesbar"
fi
# IPv6 in /etc/hosts auskommentieren
sed -i 's/^::1/#::1/' /etc/hosts 2>/dev/null || true
if [ ! -r /etc/xrdp/sesman.ini ]; then
warning "⚠️ sesman.ini nicht lesbar"
fi
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"
# Prüfe ob XFCE installiert ist
if ! command -v startxfce4 >/dev/null 2>&1; then
warning "⚠️ XFCE nicht gefunden - installiere..."
apt-get install -y xfce4 xfce4-goodies dbus-x11 || true
fi
# Prüfe Polkit
if [ ! -f /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla ]; then
warning "⚠️ Polkit-Regel fehlt - erstelle..."
mkdir -p /etc/polkit-1/localauthority/50-local.d
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla << 'EOF'
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF
fi
# Versuche Services neu zu starten
progress "Starte xrdp-Services neu..."
systemctl stop xrdp xrdp-sesman 2>/dev/null || true
sleep 2
systemctl start xrdp-sesman
sleep 2
systemctl start xrdp
sleep 3
if systemctl is-active --quiet xrdp; then
success "✅ xrdp nach Debugging erfolgreich gestartet"
else
warning "⚠️ xrdp konnte auch nach Debugging nicht gestartet werden"
info "Manuelle Prüfung erforderlich:"
info " journalctl -u xrdp -f"
info " journalctl -u xrdp-sesman -f"
info " tail -f /var/log/xrdp.log"
fi
}
# =========================== HAUPTPROGRAMM ===========================