Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Fehlerbehebung

Diese Seite behandelt die häufigsten Probleme beim Ausführen von PRX-SD sowie deren Ursachen und Lösungen.

Signatur-Datenbank-Update schlägt fehl

Symptome: sd update schlägt mit einem Netzwerkfehler, Timeout oder SHA-256-Nichtübereinstimmung fehl.

Mögliche Ursachen:

  • Keine Internetverbindung oder Firewall blockiert ausgehende HTTPS-Verbindungen
  • Der Update-Server ist vorübergehend nicht verfügbar
  • Ein Proxy oder eine Unternehmens-Firewall modifiziert die Antwort

Lösungen:

  1. Konnektivität zum Update-Server prüfen:
bash
curl -fsSL https://api.github.com/repos/openprx/prx-sd-signatures/commits?per_page=1
  1. Offline-Update-Skript verwenden, wenn Netzwerkeinschränkungen bestehen:
bash
# Auf einem Computer mit Internetzugang
./tools/update-signatures.sh

# Signaturen-Verzeichnis auf den Zielcomputer kopieren
scp -r ~/.prx-sd/signatures user@target:~/.prx-sd/
  1. Neu herunterladen erzwingen, um beschädigten Cache zu löschen:
bash
sd update --force
  1. Benutzerdefinierten Update-Server verwenden, wenn Sie einen privaten Spiegel betreiben:
bash
sd config set update_server_url "https://internal-mirror.example.com/prx-sd/v1"
sd update
  1. SHA-256-Nichtübereinstimmung prüfen -- dies bedeutet normalerweise, dass der Download während der Übertragung beschädigt wurde. Erneut versuchen oder manuell herunterladen:
bash
sd update --force

TIP

sd update --check-only ausführen, um zu prüfen, ob ein Update verfügbar ist, ohne es herunterzuladen.

Scan-Geschwindigkeit ist langsam

Symptome: Das Scannen eines Verzeichnisses dauert viel länger als erwartet.

Mögliche Ursachen:

  • Scannen netzwerkgemounteter Dateisysteme (NFS, CIFS, SSHFS)
  • YARA-Regeln werden bei jedem Scan kompiliert (kein Kompilierungs-Cache)
  • Zu viele Threads konkurrieren um I/O auf Festplatten mit rotierenden Scheiben
  • Archiv-Rekursion bei großen verschachtelten Archiven

Lösungen:

  1. Thread-Anzahl für SSD-gespeicherte Daten erhöhen:
bash
sd config set scan.threads 16
  1. Thread-Anzahl für rotierende Festplatten reduzieren (I/O-gebunden):
bash
sd config set scan.threads 2
  1. Langsame oder irrelevante Pfade ausschließen:
bash
sd config set scan.exclude_paths '["/mnt/nfs", "/proc", "/sys", "/dev", "*.iso"]'
  1. Archiv-Scanning deaktivieren, wenn nicht benötigt:
bash
sd config set scan.scan_archives false
  1. Archiv-Tiefe reduzieren, um tief verschachtelte Archive zu vermeiden:
bash
sd config set scan.max_archive_depth 1
  1. --exclude-Flag für einmalige Scans verwenden:
bash
sd scan /home --exclude "*.iso" --exclude "node_modules"
  1. Debug-Protokollierung aktivieren, um Engpässe zu finden:
bash
sd --log-level debug scan /path/to/dir 2>&1 | grep -i "slow\|timeout\|skip"

fanotify-Berechtigungsfehler

Symptome: sd monitor --block schlägt mit "Permission denied" oder "Operation not permitted" fehl.

Mögliche Ursachen:

  • Nicht als Root ausgeführt
  • Linux-Kernel hat CONFIG_FANOTIFY_ACCESS_PERMISSIONS nicht aktiviert
  • AppArmor oder SELinux blockiert fanotify-Zugriff

Lösungen:

  1. Als Root ausführen:
bash
sudo sd monitor /home /tmp --block
  1. Kernel-Konfiguration prüfen:
bash
zgrep FANOTIFY /proc/config.gz
# Sollte anzeigen: CONFIG_FANOTIFY=y und CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
  1. Nicht-Block-Modus als Fallback verwenden (erkennt Bedrohungen noch, verhindert aber keinen Dateizugriff):
bash
sd monitor /home /tmp

WARNING

Block-Modus ist nur unter Linux mit fanotify-Unterstützung verfügbar. Unter macOS (FSEvents) und Windows (ReadDirectoryChangesW) arbeitet die Echtzeitüberwachung nur im Erkennungsmodus.

  1. SELinux/AppArmor prüfen:
bash
# SELinux: nach Ablehnungen suchen
ausearch -m AVC -ts recent | grep prx-sd

# AppArmor: nach Ablehnungen suchen
dmesg | grep apparmor | grep prx-sd

Falsch-Positiv (legitime Datei als Bedrohung erkannt)

Symptome: Eine bekannt-sichere Datei wird als Verdächtig oder Bösartig markiert.

Lösungen:

  1. Prüfen, was die Erkennung ausgelöst hat:
bash
sd scan /path/to/file --json

Die Felder detection_type und threat_name betrachten:

  • HashMatch -- der Hash der Datei stimmt mit einem bekannten Malware-Hash überein (unwahrscheinliches Falsch-Positiv)
  • YaraRule -- eine YARA-Regel hat Muster in der Datei gefunden
  • Heuristic -- die heuristische Engine hat die Datei über dem Schwellenwert bewertet
  1. Für heuristische Falsch-Positive, den Schwellenwert erhöhen:
bash
# Standard ist 60; auf 70 erhöhen für weniger Falsch-Positive
sd config set scan.heuristic_threshold 70
  1. Datei oder Verzeichnis vom Scanning ausschließen:
bash
sd config set scan.exclude_paths '["/path/to/safe-file", "/opt/known-good/"]'
  1. Für YARA-Falsch-Positive können bestimmte Regeln durch Entfernen oder Auskommentieren im Verzeichnis ~/.prx-sd/yara/ ausgeschlossen werden.

  2. Via Hash auf Whitelist setzen -- den SHA-256 der Datei zu einer lokalen Allowlist hinzufügen (zukünftige Funktion). Als Workaround die Datei nach Pfad ausschließen.

TIP

Wenn Sie glauben, dass eine Erkennung ein echtes Falsch-Positiv ist, melden Sie es bitte unter github.com/openprx/prx-sd/issues mit dem Datei-Hash (nicht der Datei selbst) und dem Regelnamen.

Daemon kann nicht starten

Symptome: sd daemon beendet sich sofort, oder sd status zeigt "stopped".

Mögliche Ursachen:

  • Eine andere Instanz läuft bereits (PID-Datei existiert)
  • Das Datenverzeichnis ist nicht zugänglich oder beschädigt
  • Die Signaturdatenbank fehlt

Lösungen:

  1. Nach veralteter PID-Datei suchen:
bash
cat ~/.prx-sd/prx-sd.pid
# Wenn die aufgelistete PID nicht läuft, Datei entfernen
rm ~/.prx-sd/prx-sd.pid
  1. Daemon-Status prüfen:
bash
sd status
  1. Im Vordergrund ausführen mit Debug-Protokollierung, um Startfehler zu sehen:
bash
sd --log-level debug daemon /home /tmp
  1. Sicherstellen, dass Signaturen existieren:
bash
sd info
# Wenn hash_count 0 ist, ausführen:
sd update
  1. Verzeichnis-Berechtigungen prüfen:
bash
ls -la ~/.prx-sd/
# Alle Verzeichnisse sollten Ihrem Benutzer gehören und beschreibbar sein
  1. Neu initialisieren, wenn das Datenverzeichnis beschädigt ist:
bash
# Vorhandene Daten sichern
mv ~/.prx-sd ~/.prx-sd.bak

# Beliebigen Befehl ausführen, um First-Run-Setup auszulösen
sd info

# Signaturen neu herunterladen
sd update

Protokollstufe anpassen

Problem: Sie benötigen mehr Diagnoseinformationen, um ein Problem zu debuggen.

PRX-SD unterstützt fünf Protokollstufen, von ausführlichster bis wenigster ausführlich:

StufeBeschreibung
traceAlles, einschließlich Details zum YARA-Matching pro Datei
debugDetaillierte Engine-Operationen, Plugin-Laden, Hash-Lookups
infoScan-Fortschritt, Signatur-Updates, Plugin-Registrierung
warnWarnungen und nicht-fatale Fehler (Standard)
errorNur kritische Fehler
bash
# Maximale Ausführlichkeit
sd --log-level trace scan /tmp

# Debug-Stufe für Fehlerbehebung
sd --log-level debug monitor /home

# Protokolle zur Analyse in Datei umleiten
sd --log-level debug scan /home 2> /tmp/prx-sd-debug.log

TIP

Das Flag --log-level ist global und muss vor dem Unterbefehl stehen:

bash
# Korrekt
sd --log-level debug scan /tmp

# Falsch (Flag nach Unterbefehl)
sd scan /tmp --log-level debug

Hoher Speicherverbrauch

Symptome: Der sd-Prozess verbraucht mehr Speicher als erwartet, besonders bei großen Verzeichnis-Scans.

Mögliche Ursachen:

  • Scannen einer sehr großen Anzahl von Dateien mit vielen Threads
  • YARA-Regeln werden in den Speicher kompiliert (38.800+ Regeln verbrauchen erheblichen Speicher)
  • Archiv-Scanning bläht große komprimierte Dateien in den Speicher auf
  • WASM-Plugins mit hohen max_memory_mb-Limits

Lösungen:

  1. Thread-Anzahl reduzieren (jeder Thread lädt seinen eigenen YARA-Kontext):
bash
sd config set scan.threads 2
  1. Maximale Dateigröße begrenzen, um sehr große Dateien zu überspringen:
bash
# Auf 50 MiB begrenzen
sd config set scan.max_file_size 52428800
  1. Archiv-Scanning deaktivieren für speicherbeschränkte Systeme:
bash
sd config set scan.scan_archives false
  1. Archiv-Tiefe reduzieren:
bash
sd config set scan.max_archive_depth 1
  1. WASM-Plugin-Speicherlimits prüfen -- ~/.prx-sd/plugins/*/plugin.json auf Plugins mit hohen max_memory_mb-Werten prüfen und diese reduzieren.

  2. Speicher während Scans überwachen:

bash
# In einem anderen Terminal
watch -n 1 'ps aux | grep sd | grep -v grep'
  1. Für den Daemon, Speicher über Zeit überwachen:
bash
sd status
# Zeigt PID; top/htop verwenden, um Speicher zu beobachten

Andere häufige Probleme

Warnung "No YARA rules found"

Das YARA-Regeln-Verzeichnis ist leer. First-Time-Setup erneut ausführen oder Regeln herunterladen:

bash
sd update
# Oder manuell Setup auslösen durch Entfernen des yara-Verzeichnisses:
rm -rf ~/.prx-sd/yara
sd info  # löst First-Run-Setup mit eingebetteten Regeln aus

Fehler "Failed to open signature database"

Die LMDB-Signaturdatenbank könnte beschädigt sein:

bash
rm -rf ~/.prx-sd/signatures
sd update

Adblock: "insufficient privileges"

Die Adblock-Aktivierungs-/Deaktivierungsbefehle modifizieren die System-Hosts-Datei und erfordern Root:

bash
sudo sd adblock enable
sudo sd adblock disable

Scan überspringt Dateien mit "timeout"-Fehler

Individuelle Datei-Timeouts sind standardmäßig auf 30 Sekunden gesetzt. Für komplexe Dateien erhöhen:

bash
sd config set scan.timeout_per_file_ms 60000

Hilfe erhalten

Wenn keine der oben genannten Lösungen Ihr Problem löst:

  1. Vorhandene Issues prüfen: github.com/openprx/prx-sd/issues
  2. Neues Issue einreichen mit:
    • PRX-SD-Version (sd info)
    • Betriebssystem und Kernel-Version
    • Debug-Protokollausgabe (sd --log-level debug ...)
    • Schritte zur Reproduktion

Nächste Schritte

  • Die Konfigurationsreferenz prüfen, um das Engine-Verhalten anzupassen
  • Die Erkennungsengine erlernen, um zu verstehen, wie Bedrohungen identifiziert werden
  • Alarme einrichten, um proaktiv über Probleme informiert zu werden

Released under the Apache-2.0 License.