🎉 Optimierung der RDP-Server-Installation und Firewall-Konfiguration im Backend 🛠️. Vereinfachte Installation von xrdp und XFCE, verbesserte Fehlerbehandlung und Validierung der Firewall-Einstellungen. Aktualisierte Logik zur Überprüfung des Dienststatus und zur Konfiguration von Netzwerkquellen.
This commit is contained in:
474
backend/setup.sh
474
backend/setup.sh
@@ -1083,50 +1083,41 @@ install_remote_access() {
|
||||
echo "user:raspberry" | chpasswd || warning "Konnte Passwort für SSH-Benutzer nicht aktualisieren"
|
||||
fi
|
||||
|
||||
# RDP-Server (xrdp) installieren
|
||||
progress "Installiere RDP-Server (xrdp)..."
|
||||
# RDP-Server (xrdp) installieren - vereinfachter Ansatz
|
||||
progress "Installiere RDP-Server (xrdp) - vereinfachte Installation..."
|
||||
|
||||
# Minimale Desktop-Umgebung für RDP installieren
|
||||
progress "Installiere minimale Desktop-Umgebung für RDP..."
|
||||
# Alle bestehenden xrdp-Installationen entfernen
|
||||
progress "Entferne vorherige xrdp-Installationen..."
|
||||
systemctl stop xrdp xrdp-sesman 2>/dev/null || true
|
||||
systemctl disable xrdp xrdp-sesman 2>/dev/null || true
|
||||
apt-get remove --purge -y xrdp 2>/dev/null || true
|
||||
rm -rf /etc/xrdp /var/log/xrdp* 2>/dev/null || true
|
||||
|
||||
# XFCE als leichtgewichtige Desktop-Umgebung installieren
|
||||
progress "Installiere XFCE Desktop-Umgebung..."
|
||||
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-Benutzer zur ssl-cert Gruppe hinzufügen
|
||||
usermod -aG ssl-cert xrdp 2>/dev/null || true
|
||||
|
||||
# Erstelle xrdp-Session-Konfiguration für XFCE
|
||||
progress "Konfiguriere XFCE für xrdp..."
|
||||
|
||||
# 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
|
||||
|
||||
# Kopiere .xsession für root
|
||||
cp /etc/skel/.xsession /root/.xsession
|
||||
chmod +x /root/.xsession
|
||||
|
||||
# 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
|
||||
# XFCE Desktop installieren (minimal)
|
||||
progress "Installiere minimale XFCE-Umgebung..."
|
||||
if ! apt-get install -y xfce4-session xfce4-panel xfce4-terminal xfce4-settings xfdesktop4 dbus-x11; then
|
||||
warning "Minimale XFCE-Installation fehlgeschlagen - verwende Fallback..."
|
||||
apt-get install -y xfce4 dbus-x11 || error "XFCE Installation fehlgeschlagen"
|
||||
fi
|
||||
|
||||
# xrdp-Konfiguration vereinfachen
|
||||
progress "Konfiguriere xrdp..."
|
||||
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.backup
|
||||
# xrdp neu installieren
|
||||
progress "Installiere xrdp neu..."
|
||||
apt-get update
|
||||
apt-get install -y xrdp || error "xrdp Installation fehlgeschlagen"
|
||||
|
||||
# Benutzer zur xrdp-Gruppe hinzufügen
|
||||
usermod -aG xrdp root 2>/dev/null || true
|
||||
if id "user" &>/dev/null; then
|
||||
usermod -aG xrdp user 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Erstelle minimale xrdp-Konfiguration
|
||||
progress "Erstelle minimale xrdp-Konfiguration..."
|
||||
|
||||
# Backup der Original-Konfiguration
|
||||
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.original 2>/dev/null || true
|
||||
|
||||
# Sehr einfache xrdp.ini
|
||||
cat > /etc/xrdp/xrdp.ini << 'EOF'
|
||||
[Globals]
|
||||
ini_version=1
|
||||
@@ -1137,15 +1128,15 @@ tcp_keepalive=true
|
||||
security_layer=rdp
|
||||
autorun=
|
||||
allow_channels=true
|
||||
allow_multimon=true
|
||||
allow_multimon=false
|
||||
bitmap_cache=true
|
||||
bitmap_compression=true
|
||||
bulk_compression=true
|
||||
max_bpp=32
|
||||
bulk_compression=false
|
||||
max_bpp=24
|
||||
new_cursors=true
|
||||
use_fastpath=both
|
||||
require_credentials=true
|
||||
ask_for_reconnect_reason=true
|
||||
ask_for_reconnect_reason=false
|
||||
enable_token_login=false
|
||||
|
||||
[Xorg]
|
||||
@@ -1156,20 +1147,10 @@ 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
|
||||
|
||||
# Einfache sesman.ini
|
||||
cp /etc/xrdp/sesman.ini /etc/xrdp/sesman.ini.original 2>/dev/null || true
|
||||
|
||||
cat > /etc/xrdp/sesman.ini << 'EOF'
|
||||
[Globals]
|
||||
@@ -1178,24 +1159,18 @@ 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
|
||||
MaxSessions=10
|
||||
KillDisconnected=false
|
||||
IdleTimeLimit=0
|
||||
DisconnectedTimeLimit=0
|
||||
Policy=UBD
|
||||
|
||||
[Logging]
|
||||
LogFile=xrdp-sesman.log
|
||||
@@ -1209,72 +1184,100 @@ param2=-nolisten
|
||||
param3=tcp
|
||||
param4=-dpi
|
||||
param5=96
|
||||
|
||||
[Xvnc]
|
||||
param1=-bs
|
||||
param2=-nolisten
|
||||
param3=tcp
|
||||
param4=-localhost
|
||||
param5=-dpi
|
||||
param6=96
|
||||
EOF
|
||||
|
||||
# Erstelle .xsession für XFCE
|
||||
progress "Konfiguriere XFCE-Sessions..."
|
||||
|
||||
# Root-Passwort für RDP setzen
|
||||
progress "Setze Root-Passwort für RDP-Zugang..."
|
||||
# Root .xsession
|
||||
cat > /root/.xsession << 'EOF'
|
||||
#!/bin/bash
|
||||
export XDG_SESSION_DESKTOP=xfce
|
||||
export XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share:/usr/share
|
||||
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg
|
||||
exec startxfce4
|
||||
EOF
|
||||
chmod +x /root/.xsession
|
||||
|
||||
# User .xsession (falls user existiert)
|
||||
if id "user" &>/dev/null; then
|
||||
cat > /home/user/.xsession << 'EOF'
|
||||
#!/bin/bash
|
||||
export XDG_SESSION_DESKTOP=xfce
|
||||
export XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share:/usr/share
|
||||
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg
|
||||
exec startxfce4
|
||||
EOF
|
||||
chown user:user /home/user/.xsession
|
||||
chmod +x /home/user/.xsession
|
||||
fi
|
||||
|
||||
# Root-Passwort setzen
|
||||
progress "Setze Root-Passwort für RDP..."
|
||||
echo "root:744563017196A" | chpasswd || error "Kann Root-Passwort nicht setzen"
|
||||
|
||||
# Polkit-Regel für xrdp erstellen
|
||||
progress "Erstelle Polkit-Regeln für xrdp..."
|
||||
mkdir -p /etc/polkit-1/localauthority/50-local.d
|
||||
# Log-Verzeichnisse erstellen mit korrekten Berechtigungen
|
||||
progress "Erstelle Log-Verzeichnisse..."
|
||||
mkdir -p /var/log
|
||||
touch /var/log/xrdp.log /var/log/xrdp-sesman.log 2>/dev/null || true
|
||||
chown xrdp:xrdp /var/log/xrdp*.log 2>/dev/null || true
|
||||
chmod 644 /var/log/xrdp*.log 2>/dev/null || true
|
||||
|
||||
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
|
||||
# Erstelle xrdp-Konfigurationsverzeichnisse
|
||||
mkdir -p /etc/xrdp/cert /var/run/xrdp
|
||||
chown xrdp:xrdp /etc/xrdp/cert /var/run/xrdp 2>/dev/null || true
|
||||
|
||||
# xrdp-Service aktivieren und starten
|
||||
# Services aktivieren und starten
|
||||
progress "Starte xrdp-Services..."
|
||||
systemctl enable xrdp
|
||||
|
||||
# systemd daemon reload
|
||||
systemctl daemon-reload
|
||||
|
||||
# Services aktivieren
|
||||
systemctl enable xrdp-sesman
|
||||
systemctl enable xrdp
|
||||
|
||||
# Services stoppen falls sie laufen
|
||||
systemctl stop xrdp 2>/dev/null || true
|
||||
systemctl stop xrdp-sesman 2>/dev/null || true
|
||||
|
||||
# Services neu starten
|
||||
# Services starten (sesman zuerst)
|
||||
systemctl start xrdp-sesman
|
||||
sleep 2
|
||||
systemctl start xrdp
|
||||
|
||||
# Warte und prüfe Status
|
||||
sleep 3
|
||||
|
||||
# Prüfe sesman-Status
|
||||
if systemctl is-active --quiet xrdp-sesman; then
|
||||
success "✅ xrdp-sesman erfolgreich gestartet"
|
||||
|
||||
# Jetzt xrdp starten
|
||||
systemctl start xrdp
|
||||
sleep 3
|
||||
|
||||
if systemctl is-active --quiet xrdp; then
|
||||
success "✅ xrdp erfolgreich gestartet"
|
||||
else
|
||||
warning "⚠️ xrdp konnte nicht gestartet werden"
|
||||
journalctl -u xrdp --no-pager -l | tail -10
|
||||
fi
|
||||
else
|
||||
warning "⚠️ xrdp-sesman konnte nicht gestartet werden"
|
||||
journalctl -u xrdp-sesman --no-pager -l | tail -10
|
||||
fi
|
||||
|
||||
cd "$CURRENT_DIR"
|
||||
|
||||
# Status prüfen
|
||||
if systemctl is-active --quiet xrdp; then
|
||||
log "✅ Remote-Zugang konfiguriert:"
|
||||
# Finaler Status-Check
|
||||
if systemctl is-active --quiet xrdp && systemctl is-active --quiet xrdp-sesman; then
|
||||
log "✅ Remote-Zugang vollständig konfiguriert:"
|
||||
log " 📡 SSH: user:raspberry (Port 22)"
|
||||
log " 🖥️ RDP: root:744563017196A (Port 3389)"
|
||||
log " 🖥️ RDP: user:raspberry (Port 3389)"
|
||||
elif systemctl is-active --quiet ssh; then
|
||||
log "✅ SSH-Zugang konfiguriert:"
|
||||
log " 📡 SSH: user:raspberry (Port 22)"
|
||||
warning "⚠️ RDP-Installation unvollständig"
|
||||
info "Manuelle Überprüfung erforderlich:"
|
||||
info " systemctl status xrdp"
|
||||
info " systemctl status xrdp-sesman"
|
||||
info " journalctl -u xrdp -f"
|
||||
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
|
||||
error "❌ Weder SSH noch RDP konnten konfiguriert werden"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1291,23 +1294,45 @@ configure_firewall() {
|
||||
systemctl start firewalld
|
||||
|
||||
# Warte kurz bis firewalld vollständig gestartet ist
|
||||
sleep 3
|
||||
sleep 5
|
||||
|
||||
progress "Konfiguriere firewalld-Zonen und -Regeln..."
|
||||
|
||||
# Zone definieren
|
||||
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true
|
||||
# Firewall-Status prüfen
|
||||
if ! firewall-cmd --state >/dev/null 2>&1; then
|
||||
error "firewalld ist nicht aktiv oder reagiert nicht"
|
||||
fi
|
||||
|
||||
# Bestehende Zone entfernen falls vorhanden
|
||||
progress "Entferne bestehende myp-backend Zone falls vorhanden..."
|
||||
if firewall-cmd --permanent --get-zones | grep -q "myp-backend"; then
|
||||
log "Entferne bestehende myp-backend Zone..."
|
||||
firewall-cmd --permanent --delete-zone=myp-backend 2>/dev/null || true
|
||||
firewall-cmd --reload
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
# Zone neu erstellen
|
||||
progress "Erstelle neue myp-backend Zone..."
|
||||
if ! firewall-cmd --permanent --new-zone=myp-backend; then
|
||||
error "Fehler beim Erstellen der myp-backend Zone"
|
||||
fi
|
||||
|
||||
# Konfiguration neu laden
|
||||
firewall-cmd --reload
|
||||
sleep 2
|
||||
|
||||
# Erweiterte Netzwerk-Quellen definieren (nur IPv4)
|
||||
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
|
||||
progress "Füge Netzwerk-Quellen hinzu..."
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16 || error "Fehler beim Hinzufügen des 192.168.0.0/16 Netzwerks"
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32 || error "Fehler beim Hinzufügen von localhost"
|
||||
|
||||
# Lokaler Hostname "raspberrypi" hinzufügen
|
||||
local local_hostname="raspberrypi"
|
||||
progress "Füge lokalen Hostname hinzu: $local_hostname"
|
||||
local local_ip=$(getent hosts "$local_hostname" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | 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
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source="$local_ip/32" 2>/dev/null || warning "Konnte lokalen Hostname nicht hinzufügen"
|
||||
log "✅ Lokaler Hostname $local_hostname hinzugefügt: $local_ip"
|
||||
else
|
||||
info "Lokaler Hostname $local_hostname nicht auflösbar - wird beim nächsten Boot verfügbar sein"
|
||||
@@ -1317,51 +1342,100 @@ configure_firewall() {
|
||||
progress "Füge Frontend-Server hinzu: m040tbaraspi001"
|
||||
local frontend_ip=$(getent hosts "m040tbaraspi001" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1 2>/dev/null || true)
|
||||
if [ -n "$frontend_ip" ]; then
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_ip/32" 2>/dev/null || true
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_ip/32" 2>/dev/null || warning "Konnte Frontend-Server IP nicht hinzufügen"
|
||||
log "✅ Frontend-Server m040tbaraspi001 hinzugefügt: $frontend_ip"
|
||||
else
|
||||
# Versuche auch mit FQDN
|
||||
local frontend_fqdn_ip=$(getent hosts "m040tbaraspi001.de040.corpintra.net" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1 2>/dev/null || true)
|
||||
if [ -n "$frontend_fqdn_ip" ]; then
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_fqdn_ip/32" 2>/dev/null || true
|
||||
firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_fqdn_ip/32" 2>/dev/null || warning "Konnte Frontend-Server FQDN nicht hinzufügen"
|
||||
log "✅ Frontend-Server m040tbaraspi001.de040.corpintra.net hinzugefügt: $frontend_fqdn_ip"
|
||||
else
|
||||
info "Frontend-Server m040tbaraspi001 nicht auflösbar - überspringe"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ports und Services hinzufügen
|
||||
progress "Konfiguriere Ports und Services..."
|
||||
|
||||
# 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 || error "Fehler beim Hinzufügen von Port 443"
|
||||
|
||||
# SSH für Wartung
|
||||
firewall-cmd --permanent --zone=myp-backend --add-service=ssh
|
||||
firewall-cmd --permanent --zone=myp-backend --add-service=ssh || error "Fehler beim Hinzufügen des SSH-Service"
|
||||
|
||||
# RDP für Remote-Desktop
|
||||
firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp
|
||||
firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp || error "Fehler beim Hinzufügen von Port 3389"
|
||||
|
||||
# IPv6 in firewalld deaktivieren
|
||||
progress "Deaktiviere IPv6 in firewalld..."
|
||||
firewall-cmd --permanent --set-target=DROP --zone=public --family=ipv6 2>/dev/null || true
|
||||
firewall-cmd --permanent --set-target=DROP --zone=myp-backend --family=ipv6 2>/dev/null || true
|
||||
firewall-cmd --permanent --set-target=DROP --zone=public --family=ipv6 2>/dev/null || warning "IPv6 konnte nicht in public Zone deaktiviert werden"
|
||||
firewall-cmd --permanent --set-target=DROP --zone=myp-backend --family=ipv6 2>/dev/null || warning "IPv6 konnte nicht in myp-backend Zone deaktiviert werden"
|
||||
|
||||
# Default-Zone setzen
|
||||
firewall-cmd --set-default-zone=myp-backend
|
||||
progress "Setze Default-Zone..."
|
||||
firewall-cmd --set-default-zone=myp-backend || error "Fehler beim Setzen der Default-Zone"
|
||||
|
||||
# Änderungen übernehmen
|
||||
firewall-cmd --reload
|
||||
progress "Lade Firewall-Konfiguration neu..."
|
||||
firewall-cmd --reload || error "Fehler beim Neuladen der Firewall-Konfiguration"
|
||||
|
||||
# Kurz warten und Status prüfen
|
||||
sleep 3
|
||||
|
||||
# Firewall-Status anzeigen
|
||||
progress "Firewall-Konfiguration:"
|
||||
firewall-cmd --list-all-zones | grep -A 15 "myp-backend" || true
|
||||
if firewall-cmd --list-all --zone=myp-backend 2>/dev/null; then
|
||||
log "✅ Firewall-Konfiguration erfolgreich angezeigt"
|
||||
else
|
||||
warning "⚠️ Firewall-Status konnte nicht angezeigt werden"
|
||||
fi
|
||||
|
||||
log "✅ Firewall konfiguriert:"
|
||||
log " 🔒 Zone: myp-backend"
|
||||
log " 🌐 Netzwerk: 192.168.0.0/16 (nur IPv4)"
|
||||
log " 🏠 Localhost: 127.0.0.1"
|
||||
log " 🖥️ Lokaler Host: raspberrypi"
|
||||
log " 📡 Frontend-Server: m040tbaraspi001"
|
||||
log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)"
|
||||
log " 🚫 IPv6 vollständig blockiert"
|
||||
# Finale Validierung
|
||||
progress "Validiere Firewall-Konfiguration..."
|
||||
local validation_errors=0
|
||||
|
||||
# Prüfe ob Zone existiert
|
||||
if ! firewall-cmd --get-zones | grep -q "myp-backend"; then
|
||||
error "Zone myp-backend wurde nicht korrekt erstellt"
|
||||
((validation_errors++))
|
||||
fi
|
||||
|
||||
# Prüfe Default-Zone
|
||||
if [ "$(firewall-cmd --get-default-zone)" != "myp-backend" ]; then
|
||||
warning "Default-Zone ist nicht myp-backend"
|
||||
((validation_errors++))
|
||||
fi
|
||||
|
||||
# Prüfe Ports
|
||||
if ! firewall-cmd --zone=myp-backend --query-port=443/tcp 2>/dev/null; then
|
||||
warning "Port 443 nicht korrekt konfiguriert"
|
||||
((validation_errors++))
|
||||
fi
|
||||
|
||||
if ! firewall-cmd --zone=myp-backend --query-port=3389/tcp 2>/dev/null; then
|
||||
warning "Port 3389 nicht korrekt konfiguriert"
|
||||
((validation_errors++))
|
||||
fi
|
||||
|
||||
if ! firewall-cmd --zone=myp-backend --query-service=ssh 2>/dev/null; then
|
||||
warning "SSH-Service nicht korrekt konfiguriert"
|
||||
((validation_errors++))
|
||||
fi
|
||||
|
||||
if [ $validation_errors -eq 0 ]; then
|
||||
log "✅ Firewall konfiguriert und validiert:"
|
||||
log " 🔒 Zone: myp-backend (als Default gesetzt)"
|
||||
log " 🌐 Netzwerk: 192.168.0.0/16 (nur IPv4)"
|
||||
log " 🏠 Localhost: 127.0.0.1"
|
||||
log " 🖥️ Lokaler Host: raspberrypi"
|
||||
log " 📡 Frontend-Server: m040tbaraspi001"
|
||||
log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)"
|
||||
log " 🚫 IPv6 vollständig blockiert"
|
||||
else
|
||||
warning "⚠️ Firewall-Konfiguration mit $validation_errors Fehlern abgeschlossen"
|
||||
info "System funktioniert möglicherweise trotzdem - manuelle Überprüfung empfohlen"
|
||||
fi
|
||||
}
|
||||
|
||||
# =========================== REMOTE-ZUGANG TESTEN ===========================
|
||||
@@ -1380,31 +1454,25 @@ test_remote_access() {
|
||||
warning "⚠️ SSH-Port 22 nicht erreichbar"
|
||||
fi
|
||||
else
|
||||
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
|
||||
warning "⚠️ SSH-Service läuft nicht"
|
||||
fi
|
||||
|
||||
# RDP-Service testen
|
||||
progress "Teste RDP-Service..."
|
||||
# RDP-Services testen
|
||||
progress "Teste RDP-Services..."
|
||||
|
||||
local xrdp_sesman_status="❌"
|
||||
local xrdp_status="❌"
|
||||
|
||||
# Prüfe xrdp-sesman zuerst
|
||||
if systemctl is-active --quiet xrdp-sesman; then
|
||||
xrdp_sesman_status="✅"
|
||||
success "✅ xrdp-sesman läuft"
|
||||
else
|
||||
warning "⚠️ xrdp-sesman läuft nicht - versuche Neustart..."
|
||||
systemctl restart xrdp-sesman 2>/dev/null || true
|
||||
sleep 2
|
||||
warning "⚠️ xrdp-sesman läuft nicht"
|
||||
fi
|
||||
|
||||
# Prüfe xrdp
|
||||
if systemctl is-active --quiet xrdp; then
|
||||
success "✅ RDP-Service läuft"
|
||||
xrdp_status="✅"
|
||||
success "✅ xrdp läuft"
|
||||
|
||||
# RDP-Port testen
|
||||
if ss -tlnp | grep -q ":3389 "; then
|
||||
@@ -1413,16 +1481,7 @@ test_remote_access() {
|
||||
warning "⚠️ RDP-Port 3389 nicht erreichbar"
|
||||
fi
|
||||
else
|
||||
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
|
||||
warning "⚠️ xrdp läuft nicht"
|
||||
fi
|
||||
|
||||
# Firewall-Status testen
|
||||
@@ -1430,10 +1489,6 @@ test_remote_access() {
|
||||
if systemctl is-active --quiet firewalld; then
|
||||
success "✅ Firewall läuft"
|
||||
|
||||
# Aktive Zone anzeigen
|
||||
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"
|
||||
@@ -1455,12 +1510,21 @@ test_remote_access() {
|
||||
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"
|
||||
info "Zugang-URLs:"
|
||||
info " SSH: ssh user@$ip_address"
|
||||
if [ "$xrdp_status" = "✅" ]; then
|
||||
info " RDP: $ip_address:3389 (root:744563017196A oder user:raspberry)"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ Keine Netzwerk-IP ermittelt"
|
||||
fi
|
||||
|
||||
# Status-Zusammenfassung
|
||||
log "📊 Service-Status:"
|
||||
log " SSH: $(systemctl is-active --quiet ssh && echo "✅ Aktiv" || echo "❌ Inaktiv")"
|
||||
log " xrdp-sesman: $xrdp_sesman_status $(systemctl is-active --quiet xrdp-sesman && echo "Aktiv" || echo "Inaktiv")"
|
||||
log " xrdp: $xrdp_status $(systemctl is-active --quiet xrdp && echo "Aktiv" || echo "Inaktiv")"
|
||||
|
||||
log "✅ Remote-Zugang-Test abgeschlossen"
|
||||
}
|
||||
|
||||
@@ -1503,80 +1567,6 @@ configure_hostname() {
|
||||
fi
|
||||
}
|
||||
|
||||
# =========================== XRDP DEBUGGING ===========================
|
||||
debug_xrdp_issues() {
|
||||
log "=== XRDP DEBUGGING ==="
|
||||
|
||||
progress "Analysiere xrdp-Probleme..."
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
# Prüfe Berechtigungen
|
||||
progress "Prüfe xrdp-Berechtigungen..."
|
||||
if [ ! -r /etc/xrdp/xrdp.ini ]; then
|
||||
warning "⚠️ xrdp.ini nicht lesbar"
|
||||
fi
|
||||
|
||||
if [ ! -r /etc/xrdp/sesman.ini ]; then
|
||||
warning "⚠️ sesman.ini nicht lesbar"
|
||||
fi
|
||||
|
||||
# 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 ===========================
|
||||
main() {
|
||||
# Erstelle Log-Datei
|
||||
|
Reference in New Issue
Block a user