Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
linux-malware-detect — Multi-Engine-Linux-Malware-Scanner mit fünf Erkennungsstufen (MD5, HEX-Muster, YARA, ClamAV, statistisch), Echtzeit-Überwachung per inotify, Quarantäne und mehrkanaliger Alarmierung | Kitploit
Tools/GitHubGitHub/rfxn/linux-malware-detect
DefensivwerkzeugeMalware-AnalyseBedrohungsanalyseEinbruchserkennungIncident ResponseAnomalieerkennung
GitHubrfxn/linux-malware-detect

linux-malware-detect

Multi-Engine-Linux-Malware-Scanner mit fünf Erkennungsstufen (MD5, HEX-Muster, YARA, ClamAV, statistisch), Echtzeit-Überwachung per inotify, Quarantäne und mehrkanaliger Alarmierung

Repository anzeigen
1.5k248vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Linux Malware Detect (LMD)

Linux Malware Detect

CI Version License: GPL v2 Platform: Linux

Malware-Scanner für Linux — mehrstufige Bedrohungserkennung (MD5, SHA-256, HEX, YARA, statistische Analyse), ClamAV-Integration, Echtzeit-Inotify-Überwachung, Quarantäne-/Bereinigungs-/Wiederherstellungsvorgänge und mehrkanalige Benachrichtigungen (E-Mail, Slack, Telegram, Discord).

(C) 2002-2026, R-fx Networks <[email protected]>
(C) 2026, Ryan MacDonald <[email protected]>
Lizenziert unter GNU GPL v2


Neuerungen in 2.0.1

43-mal schnellere native Scan-Engine — Die native Scan-Pipeline wurde komplett neu geschrieben, mit paralleler Stapelverarbeitung. Praxis-Benchmark mit ~10.000 Dateien:

VersionLaufzeitDateienTreffer
v1.6.61.217s9.93135
v2.0.128s9.93135

MD5- und HEX-Signaturabgleich verwenden jetzt Batch-grep mit parallelen Aho-Corasick-Workern, wodurch der Overhead der Musterkompilierung pro Datei und ~500.000 Subprocess-Forks pro Scan entfallen. Die Anzahl der parallelen Worker wird mit scan_workers konfiguriert (Standard: auto).

Weitere Highlights: Scan-Lebenszyklusverwaltung (--kill, --pause, --stop/--continue, -L), SHA-256-Hash-Scanning mit automatischer CPU-Hardware-Erkennung (scan_hashtype), natives YARA-Scanning (scan_yara=1), Discord-Webhook-Benachrichtigungen, Korrekturen für Slack/Telegram-Benachrichtigungen, ClamAV-Hex-Wildcard-Unterstützung in der nativen Engine und über 200 Fehlerbehebungen in der gesamten Codebasis. Weitere Details finden Sie im CHANGELOG.


Inhalt

  • 1. Einleitung
  • 2. Installation
  • 3. Konfiguration
    • 3.1 Allgemeine Optionen
    • 3.2 Benachrichtigungen
    • 3.3 Scan-Optionen
    • 3.4 YARA-Scanning
    • 3.5 Quarantäne-Optionen
    • 3.6 Überwachungsoptionen
    • 3.7 Post-Scan-Hooks
    • 3.8 ClamAV-Integration
    • 3.9 Remote-ClamAV
    • 3.10 ELK-Integration
    • 3.11 Lade-Reihenfolge der Konfiguration
  • 4. Verwendung
  • 5. Ignorieren-Optionen
  • 6. Täglicher Cron
  • 7. Inotify-Überwachung
  • 8. Signatursystem
    • 8.1 Signaturaktualisierungen
    • 8.2 Benutzerdefinierte Signaturen
  • 9. Quarantäne & Bereinigung
    • 9.1 Bereinigungsregeln
  • 10. Hook-Scanning
  • Integration
  • Lizenz
  • Support

Schnellstart```bash

Install to /usr/local/maldetect

./install.sh

Scan all files under a path

maldet -a /home/?/public_html

Scan files modified in the last 2 days

maldet -r /home/?/public_html 2

Enable YARA scanning at runtime

maldet -co scan_yara=1 -a /home/?/public_html

Quarantine all hits from a scan

maldet -q SCANID

Start real-time inotify monitoring

maldet -m users

Update signatures

maldet -u

root@kitploit:~
---

## 1. Einführung

Die Architektur von LMD, die Erkennungsstufen und die unterstützten Plattformen.

Linux Malware Detect (LMD) ist ein unter der GNU GPLv2 veröffentlichter Malware-Scanner für Linux, der speziell auf die Bedrohungen in gemeinsam genutzten Hosting-Umgebungen ausgerichtet ist. Er nutzt Bedrohungsdaten von Intrusion-Detection-Systemen an der Netzwerkgrenze, um Malware zu extrahieren, die aktiv in Angriffen verwendet wird, und generiert daraus Signaturen zur Erkennung. Darüber hinaus stammen Bedrohungsdaten aus Benutzereinreichungen über die LMD-Checkout-Funktion und aus Ressourcen der Malware-Community.

LMD konzentriert sich auf die Malware-Klassen, die herkömmliche Antivirenprodukte häufig übersehen: PHP-Shells, JavaScript-Injektoren, base64-kodierte Backdoors, IRC-Bots und andere Bedrohungen auf Webanwendungsebene, die eher auf Benutzerkonten von Shared-Hosting-Umgebungen abzielen als auf Betriebssystem-Interna.

**Erkennungsstufen**
- MD5-Dateihash-Abgleich zur exakten Identifizierung von Bedrohungen
- HEX-Musterabgleich über eine native Batch-Grep-Engine mit parallelen Workern
- Scan auf zusammengesetzte Signaturen (csig) mit Boolescher Mehrfachmuster-Logik (AND/OR/Schwellenwert), ohne Beachtung der Groß-/Kleinschreibung, Breitzeichen-Abgleich (UTF-16LE) und Wildcards mit begrenzter Lücke
- Nativer YARA-Regelscan mit vollständiger Modulunterstützung und benutzerdefinierten Regeln
- Statistische String-Längen-Analyse zur Erkennung verschleierter Bedrohungen (base64, gzinflate)
- ClamAV-Integration für erweiterte Abdeckung mit von LMD gepflegten ClamAV-Signaturen

**Scannen & Überwachung**
- Scan aller Dateien, kürzlich geänderter Dateien oder Dateien aus einer Liste
- Echtzeit-Dateiüberwachung mit Kernel-inotify (Ereignisse: Erstellen/Ändern/Verschieben)
- HTTP-Upload-Scan über den `inspectFile`-Hook von ModSecurity2
- Hintergrundscanning für unbeaufsichtigte Vorgänge in großem Maßstab

**Quarantäne & Reaktion**
- Quarantäne-Warteschlange mit Dateispeicherung ohne Berechtigungen
- Stapel-Quarantäne/-Wiederherstellung nach Scan-ID
- Signaturspezifische Bereinigungsregeln zur Entfernung von Malware
- Vollständige Dateiwiederherstellung (Inhalt, Eigentümer, Berechtigungen, mtime)

**Benachrichtigung & Berichte**
- HTML- und Text-E-Mail-Benachrichtigungen mit einheitlichem rfxn-Design (türkise Marke, Karteneinträge)
- SMTP-Relay-Unterstützung (TLS/SSL) für Umgebungen ohne lokalen MTA
- Slack Block Kit-, Telegram-MarkdownV2- und Discord-Embed-Benachrichtigungen pro Eintrag
- Anpassbare Benachrichtigungsvorlagen über `alert/custom.d/`-Overrides
- Scan-Berichte mit Trefferdetails pro Datei, farbcodierte Treffertypen

**Infrastruktur**
- Automatische Verknüpfung von ClamAV-Signaturen für Dual-Engine-Abdeckung
- Täglicher Cron-Job mit automatischer Erkennung von über 12 Hosting-Control-Panels
- CPU/IO-Ressourcenkontrolle (nice, ionice, cpulimit)
- Automatische Updates für Signaturen und Version
- Unterstützung für systemd-Service-Unit und SysV-Init-Skript

### Unterstützte Plattformen

LMD läuft auf jeder Linux-Distribution mit bash und standardmäßigen GNU-Werkzeugen. Getestete Plattformen:

| Plattform | Init-System | Paketkonfigurationspfad |
|----------|-------------|---------------------|
| RHEL / Rocky / AlmaLinux 8, 9, 10 | systemd | `/etc/sysconfig/maldet` |
| CentOS 6, 7 | SysV / systemd | `/etc/sysconfig/maldet` |
| Debian 10, 11, 12 | systemd | `/etc/default/maldet` |
| Ubuntu 20.04, 22.04, 24.04 | systemd | `/etc/default/maldet` |
| Gentoo | OpenRC | — |
| Slackware | SysV | — |
| FreeBSD | — | — (teilweise; kein inotify) |

---

## 2. Installation

Installieren, Aktualisieren und Entfernen von LMD auf einem System.

Das enthaltene Skript `install.sh` übernimmt alle Installationsaufgaben. Bereits vorhandene Installationen werden automatisch gesichert.```bash
./install.sh

The installer:

  • Kopiert Dateien nach /usr/local/maldetect
  • Erstellt den Symlink maldet in /usr/local/sbin/
  • Installiert das cron.daily-Skript nach /etc/cron.daily/maldet
  • Installiert die systemd-Service-Unit (oder das SysV-Init-Skript auf älteren Systemen)
  • Verknüpft LMD-Signaturen mit den ClamAV-Datenverzeichnissen (falls ClamAV installiert ist)
  • Behält vorhandene Konfiguration (conf.maldet), benutzerdefinierte Signaturen und Ignore-Dateien bei Updates bei

Frühere Installationen werden unter /usr/local/maldetect.bk{PID} gespeichert, mit einem Symlink maldetect.last auf das neueste Backup.

Standardpfade:

  • Installationspfad: /usr/local/maldetect
  • Binär-Symlink: /usr/local/sbin/maldet
  • Cron-Skript: /etc/cron.daily/maldet
  • Service-Unit: /usr/lib/systemd/system/maldet.service

3. Konfiguration

Alle benutzerbezogenen Einstellungen und ihre Standardwerte. Vollständige Referenz siehe man maldet(1).

Die Hauptkonfigurationsdatei ist /usr/local/maldetect/conf.maldet. Alle Optionen sind zur einfachen Konfiguration auskommentiert. Optionen verwenden 0/1 zum Deaktivieren/Aktivieren, sofern nicht anders angegeben.

Die Konfiguration kann zur Laufzeit auch mit dem Flag -co überschrieben werden:```bash maldet -co quarantine_hits=1,email_addr=[email protected] -a /home

root@kitploit:~
### 3.1 Allgemeine Optionen

| Variable | Zweck | Standard |
|----------|---------|---------|
| `autoupdate_signatures` | Signaturen täglich per Cron automatisch aktualisieren | `1` |
| `autoupdate_version` | LMD-Version täglich per Cron automatisch aktualisieren | `1` |
| `autoupdate_version_hashed` | SHA-256-Hash der LMD-Ausführungsdatei gegen die Upstream-Version prüfen (Fallback auf MD5) | `1` |
| `sigup_interval` | Stunden zwischen automatischen Signatur-Update-Prüfungen über einen unabhängigen Cron-Job (`/etc/cron.d/maldet-sigup`); 0 = deaktiviert | `6` |
| `cron_prune_days` | Tage, die Quarantäne-/Sitzungs-/Temporärdaten aufbewahrt werden | `21` |
| `cron_daily_scan` | Täglichen automatischen Scan per Cron aktivieren | `1` |
| `scan_days` | Tage, die bei täglichen Cron-Scans für geänderte Dateien berücksichtigt werden | `1` |
| `import_config_url` | URL zum Herunterladen einer Remote-Konfigurations-Override | — |
| `import_config_expire` | Cache-Ablauf für importierte Konfiguration (Sekunden) | `43200` |
| `sig_import_md5_url` | URL zum Herunterladen benutzerdefinierter MD5-Signaturen | — |
| `sig_import_hex_url` | URL zum Herunterladen benutzerdefinierter HEX-Signaturen | — |
| `sig_import_yara_url` | URL zum Herunterladen benutzerdefinierter YARA-Regeln | — |
| `sig_import_sha256_url` | URL zum Herunterladen benutzerdefinierter SHA-256-Signaturen | — |
| `sig_import_csig_url` | URL zum Herunterladen benutzerdefinierter zusammengesetzter Signaturen | — |
| `session_legacy_compat` | Legacy-Klartext-Sitzungsdateien zusätzlich zu TSV erzeugen: `auto` (alte Sitzungsformate erkennen), `1` (immer), `0` (nur TSV) | `auto` |

### 3.2 Benachrichtigungen

| Variable | Zweck | Standard |
|----------|---------|---------|
| `email_alert` | E-Mail-Benachrichtigungen nach Scans aktivieren | `0` |
| `email_addr` | Empfängeradresse für Benachrichtigungen | `[email protected]` |
| `email_subj` | Betreffzeilen-Vorlage der E-Mail | `maldet alert from $(hostname)` |
| `email_ignore_clean` | Benachrichtigungen unterdrücken, wenn alle Treffer bereinigt wurden | `1` |
| `email_panel_user_alerts` | Panel-Benutzerbenachrichtigungen bei Treffererkennung senden | `0` |
| `email_panel_from` | From-Kopfzeile für Panel-Benutzerbenachrichtigungen | `[email protected]` |
| `email_panel_replyto` | Reply-To-Kopfzeile für Panel-Benutzerbenachrichtigungen | `[email protected]` |
| `email_panel_alert_subj` | Betreffzeile für Panel-Benutzerbenachrichtigungen | `maldet alert from $(hostname)` |
| `email_format` | E-Mail-Format: `text`, `html` oder `both` | `html` |
| `smtp_relay` | SMTP-Relay-URL (z. B. `smtps://smtp.gmail.com:465`) | — |
| `smtp_from` | Absenderadresse für die SMTP-Relay-Zustellung | — |
| `smtp_user` | SMTP-Authentifizierungsbenutzername | — |
| `smtp_pass` | SMTP-Authentifizierungspasswort | — |
| `slack_alert` | Slack-Datei-Upload-Benachrichtigungen aktivieren | `0` |
| `slack_subj` | Dateiname für den Slack-Upload | `maldet alert from $(hostname)` |
| `slack_token` | Slack-Bot-API-Token (Berechtigungen: `files:write`, `files:read`) | — |
| `slack_channels` | Kommagetrennte Liste von Kanalnamen oder -IDs | `maldetreports` |
| `telegram_alert` | Telegram-Benachrichtigungen aktivieren | `0` |
| `telegram_bot_token` | Telegram-Bot-API-Token | — |
| `telegram_channel_id` | Telegram-Chat- oder -Gruppen-ID | — |
| `discord_alert` | Discord-Webhook-Benachrichtigungen aktivieren | `0` |
| `discord_webhook_url` | Discord-Webhook-URL für die Zustellung von Benachrichtigungen | — |

### 3.3 Scan-Optionen

| Variable | Zweck | Standard |
|----------|---------|---------|
| `scan_hashtype` | Hash-Algorithmus für Stufe 1: `auto`, `sha256`, `md5`, `both` | `auto` |
| `scan_max_depth` | Maximale Verzeichnistiefe für find | `15` |
| `scan_min_filesize` | Mindestdateigröße für den Scan | `24` Bytes |
| `scan_max_filesize` | Maximale Dateigröße für den Scan | `2048k` |
| `scan_hexdepth` | Byte-Tiefe für den HEX-Signaturabgleich | `262144` |
| `scan_hex_chunk_size` | Dateien pro Mikro-Batch beim HEX+CSIG-Scan (Bereich: 1024-20480) | `10240` |
| `scan_csig` | Scan nach zusammengesetzten Signaturen (csig) aktivieren (nur nativer Modus) | `1` |
| `scan_workers` | Parallele Worker für MD5-, SHA-256-, HEX- und CSIG-Scanläufe | `auto` |
| `scan_cpunice` | Nice-Priorität für den Scanprozess (-19 bis 19) | `19` |
| `scan_ionice` | E/A-Scheduling-Klassen-Priorität (0-7) | `6` |
| `scan_cpulimit` | Harte CPU-Grenze in Prozent (0=deaktiviert) | `0` |
| `scan_ignore_root` | Root-gehörige Dateien beim Scannen überspringen (im Überwachungsmodus standardmäßig nicht angewendet; siehe `monitor_scan_owner_filters`) | `1` |
| `scan_ignore_user` | Dateien überspringen, die bestimmten Benutzern gehören | — |
| `scan_ignore_group` | Dateien überspringen, die bestimmten Gruppen gehören | — |
| `scan_user_access` | Nicht-Root-Benutzern erlauben, Scans auszuführen | `0` |
| `scan_user_access_minuid` | Mindest-UID für die Erstellung von Benutzerverzeichnissen mit `--mkpubpaths` | `100` |
| `scan_find_timeout` | Timeout für die Erzeugung der find-Dateiliste (0=deaktiviert, min. 60s, 14400=4 Std. empfohlen) | `0` |
| `scan_export_filelist` | find-Ergebnisse unter tmp/find_results.last speichern | `0` |
| `scan_tmpdir_paths` | Weltweit beschreibbare Temp-Pfade, die in -a/-r-Scans einbezogen werden | `/tmp /var/tmp /dev/shm /var/fcgi_ipc` |
| `string_length_scan` | Statistische Analyse der String-Länge aktivieren | `0` |
| `string_length` | Mindestlänge verdächtiger Strings | `150000` |
| `scan_progress_log_interval` | Sekunden zwischen Fortschrittsprotokoll-Checkpoints während Hintergrundscans (0=deaktiviert) | `60` |
| `scan_meta_cleanup_age` | Stunden, die abgeschlossene/abgebrochene Scan-Metadateien aufbewahrt werden (0=deaktiviert) | `48` |
| `maint_compress_age` | Tage, bevor abgeschlossene Sitzungsdateien gzip-komprimiert werden (0=deaktiviert) | `30` |
| `maint_archive_age` | Tage, bevor komprimierte Sitzungen in monatliche Archive gebündelt werden (0=deaktiviert) | `90` |

### 3.4 YARA-Scan

Das native YARA-Scannen ruft die Binärdatei `yara` (oder `yr` von YARA-X) unabhängig von ClamAV auf und unterstützt vollständige YARA-Module, kompilierte Regeln und benutzerdefinierte Regelsätze, die die eingeschränkte YARA-Teilmenge von ClamAV nicht verarbeiten kann. Wenn beide verfügbar sind, wird `yr` (YARA-X) bevorzugt. Bei `auto` ist natives YARA nur aktiviert, wenn ClamAV nicht verfügbar ist und eine yara/yr-Binärdatei gefunden wird; so wird eine doppelte Regelauswertung vermieden.

| Variable | Zweck | Standard |
|----------|---------|---------|
| `scan_yara` | Native YARA-Scanstufe aktivieren: `auto` (Binärdatei erkennen, ClamAV-Fallback), `0` (deaktiviert), `1` (aktiviert) | `auto` |
| `scan_yara_timeout` | Timeout in Sekunden (0=kein Timeout) | `300` |
| `scan_yara_scope` | Regelumfang, wenn ClamAV ebenfalls aktiv ist: `all` (voller nativer Scan) oder `custom` (nur benutzerdefinierte Regeln nativ, ClamAV übernimmt rfxn.yara) | `custom` |
| `sig_import_yara_url` | URL zum Herunterladen benutzerdefinierter YARA-Regeln bei Signaturaktualisierung | — |

**Benutzerdefinierte YARA-Regeln** können an zwei Orten abgelegt werden, die beide über Upgrades hinweg erhalten bleiben:
- `sigs/custom.yara` — Regeln in einer einzelnen Datei
- `sigs/custom.yara.d/` — Drop-in-Verzeichnis für `.yar`- und `.yara`-Regeldateien

Kompatibel mit Drittanbieter-Regelsätzen wie [YARA Forge](https://yarahq.github.io/) und [Signature Base](https://github.com/Neo23x0/signature-base). Kompilierte Regeln (`yarac`-Ausgabe) werden ebenfalls über `sigs/compiled.yarc` unterstützt.

**Batch-Scan:** YARA 4.0+ und alle YARA-X-Versionen verwenden `--scan-list` für effizientes Batch-Datei-Scannen. Ältere YARA-Versionen fallen automatisch auf das Scannen einzelner Dateien zurück.

Zur Laufzeit aktivieren, ohne die Konfiguration zu bearbeiten:```bash
maldet -co scan_yara=1 -a /home/?/public_html

3.5 Quarantäne-Optionen

3.6 Überwachungsoptionen

3.7 Post-Scan-Hooks

Ein konfigurierbares Hook-Skript kann nach Abschluss eines Scans aufgerufen werden und erhält die Scan-Ergebnisse über Positionsargumente, LMD_*-Umgebungsvariablen und optional JSON über stdin. Der Hook unterbricht das Scannen niemals — Fehler werden protokolliert, sind aber nicht fatal. Die vollständige Hook-Spezifikation finden Sie in maldet(1).

3.8 ClamAV-Integration

Wenn ClamAV-Scans aktiviert sind (scan_clamscan=1 oder auto mit einem erkannten Binary), wählt LMD die beste verfügbare ClamAV-Engine in der folgenden Prioritätsreihenfolge:

  1. Remote-clamdscan (wenn scan_clamd_remote=1 und eine Konfiguration vorhanden ist)
  2. Lokaler clamd-Daemon, der als root läuft
  3. Lokaler clamd-Daemon, der als Nicht-root-Benutzer läuft (mit --fdpass)
  4. clamscan-Binary (Fallback, langsamer)

LMD-Signaturen werden von install.sh automatisch als Symlinks in die ClamAV-Datenverzeichnisse eingebunden, sodass ClamAV Zugriff auf die MD5- (rfxn.hdb), HEX- (rfxn.ndb) und YARA-Signaturen (rfxn.yara) von LMD erhält.

Signatur-Validierungs-Gate: Bevor aktualisierte Signaturen in die ClamAV-Datenverzeichnisse übernommen werden, validiert LMD sie über clamscan -d gegen ein Staging-Verzeichnis. Schlägt die Validierung fehl, werden vorhandene LMD-Signaturen aus dem ClamAV-Pfad entfernt, um zu verhindern, dass fehlerhafte Datenbanken ClamAV beschädigen. Das SIGUSR2-Neuladesignal an clamd wird nur gesendet, wenn mindestens ein ClamAV-Datenverzeichnis die Validierung besteht (Issue #467).

VariableZweckStandardwert
scan_clamscanClamAV als Scan-Engine aktivieren: auto (Binary zur Laufzeit erkennen), 0 (deaktiviert), 1 (aktiviert)auto

3.9 Remote-ClamAV

3.10 ELK-Integration

3.11 Ladereihenfolge der Konfiguration

Spätere Quellen überschreiben frühere Werte:

  1. internals/internals.conf — interne Pfade, Binary-Erkennung, URL-Definitionen
  2. conf.maldet — benutzerseitige Konfiguration
  3. internals/compat.conf — Zuordnungen veralteter Variablen
  4. /etc/sysconfig/maldet oder /etc/default/maldet — System-Überschreibungen
  5. CLI -co|--config-option — Laufzeit-Überschreibungen

4. Verwendung

Kommandozeilen-Schnittstelle, Exit-Codes und gängige Beispiele. Die vollständige Referenz der Optionen finden Sie in man maldet(1).``` usage: maldet [OPTION] [ARGUMENT]

SCANNING: -a, --scan-all PATH scan all files in path (wildcard: ?) -r, --scan-recent PATH DAYS scan files created/modified in last X days -f, --file-list FILE scan files from a line-separated file list -b, --background run scan in the background

SCAN FILTERS: -i, --include-regex REGEX include only matching paths -x, --exclude-regex REGEX exclude matching paths -co, --config-option V=V,... override config options at runtime -U, --user USER run as specified user

MONITORING: -m, --monitor USERS|PATHS|FILE|RELOAD start inotify monitoring -k, --kill-monitor stop inotify monitoring

SCAN MANAGEMENT: -L, --list-active list active scans (text/json/tsv) --kill SCANID abort a running scan --pause SCANID [DURATION] pause a running scan (e.g., 2h, 30m) --unpause SCANID resume a paused scan --stop SCANID checkpoint and stop a running scan --continue SCANID resume a stopped scan from checkpoint --maintenance rotate histories, compress/archive old sessions

QUARANTINE & RESTORE: -q, --quarantine SCANID quarantine hits from scan -n, --clean SCANID clean malware from scan hits -s, --restore FILE|SCANID restore quarantined file(s) -qd PATH override quarantine directory for this run

REPORTING: -e, --report [SCANID|list|latest|hooks|active] view scan report --all show full history with -e list (default: recent) --format text|json|html|tsv set report output format (default: text) --mailto ADDRESS email report to address --json-report [SCANID|list] shorthand: --report --format json --alert-daily generate inotify monitor digest alert --digest fire unified digest (monitor + hook sources) -l, --log view event log

UPDATES: -u, --update-sigs [--force] update malware signatures -d, --update-ver [--force|--beta] update LMD version --cron-sigup cron sig update (internal use)

OTHER: -p, --purge clear logs, quarantine, temp data -c, --checkout FILE submit suspected malware to rfxn.com --test-alert TYPE CHANNEL test alert delivery (scan|digest, email|slack|telegram|discord) --mkpubpaths create per-user pub/ data directories --web-proxy IP:PORT set HTTP/HTTPS proxy -hscan, --hook-scan scan via service hook (internal use) -v, --version show version information -h, --help show detailed help

root@kitploit:~
### 4.1 Exit-Codes

| Code | Bedeutung |
|------|---------|
| `0` | Erfolg, keine Malware-Treffer |
| `1` | Fehler oder alle Scan-Pfade nicht vorhanden |
| `2` | Malware-Treffer gefunden |

**Beispiele:**```bash
# Scan all files under user web roots
maldet -a /home/?/public_html

# Scan recent files with auto-quarantine and YARA enabled
maldet -co quarantine_hits=1,scan_yara=1 -r /home/?/public_html 2

# Background scan with email alert to specific address
maldet -b -co [email protected] -a /var/www

# View the most recent scan report
maldet -e

# Email a specific report
maldet --mailto [email protected] -e 050910-1534.21135

# Output scan report as JSON (pipe to jq for formatting)
maldet --format json -e 050910-1534.21135

# List all reports as JSON
maldet --format json -e list

# Shorthand JSON output (equivalent to --format json -e)
maldet --json-report 050910-1534.21135

# Restore all quarantined files from a scan
maldet -s 050910-1534.21135

JSON-Ausgabe: Verwenden Sie --format json -e oder --json-report, um strukturiertes JSON auszugeben (v1.2-Schema) mit Scanner-Metadaten, Scan-Details (Pfad, Zeiten, Dateianzahl), pro Treffer Einträge mit Signaturname, Dateipfad, Treffertyp, Besitzer, Berechtigungen und Quarantänestatus sowie einer Zusammenfassung mit Aufschlüsselungen nach Typ. Sowohl TSV- als auch Legacy-Klartext-Sitzungen werden unterstützt; Legacy-Sitzungen enthalten "source": "legacy" und rendern nicht verfügbare angereicherte Felder (Hash, Größe, Besitzer usw.) als null.

4.2 Scan-Verwaltung

Langlaufende Scans auf großen Dateisystemen (1M+ Dateien) können ohne kill -9 gesteuert werden:```bash

List active scans (running, paused, stopped)

maldet -L

List active scans as JSON

maldet --format json -L

Abort a running scan (full cleanup of temp files and workers)

maldet --kill 260327-1509.25279

Pause a scan for 2 hours (workers sleep, I/O freed)

maldet --pause 260327-1509.25279 2h

Resume a paused scan

maldet --unpause 260327-1509.25279

Checkpoint and stop a scan for later resume

maldet --stop 260327-1509.25279

Resume from checkpoint (skips completed stages, restores prior hits)

maldet --continue 260327-1509.25279

Rotate histories, compress old sessions, archive by month

maldet --maintenance

root@kitploit:~
**Checkpoint resume:** `--stop` schreibt eine Checkpoint-Datei, die die Scan-Phase, Trefferanzahl, Konfigurationsoptionen und den Fortschritt pro Worker aufzeichnet. `--continue` validiert den Checkpoint, warnt, wenn sich Signaturen geändert haben, erstellt die Dateiliste aus dem aktuellen Dateisystemzustand neu, stellt frühere Treffer wieder her und setzt das Scannen an der unterbrochenen Phase fort. HEX-Worker setzen auf Chunk-Granularität fort (~30s verlorene Arbeit pro Worker).

**Engine support:** Native Engine (HEX/CSIG/Hash-Worker) und eigenständiges `clamscan` unterstützen alle Lebenszyklus-Operationen. Daemon-basiertes ClamAV (`clamdscan`/`clamd`) unterstützt nur `--kill` — `--pause` und `--stop` werden mit einer Fehlermeldung abgelehnt, da der I/O-Zustand des Daemons undurchsichtig ist und mit anderen Clients geteilt wird.

---

## 5. Ignorieroptionen

Schließt Pfade, Dateitypen und Signaturen von Scans und Überwachung aus.

Vier Ignore-Dateien steuern, was vom Scannen ausgeschlossen wird:

| Datei | Format | Zweck |
|------|--------|---------|
| `ignore_paths` | Zeilengetrennte Pfade | Verzeichnisse oder Dateien von Scans ausschließen |
| `ignore_file_ext` | Zeilengetrennte Erweiterungen | Dateierweiterungen ausschließen (`.js`, `.css`) |
| `ignore_sigs` | Zeilengetrennte Muster | Übereinstimmende Signaturen überspringen (Regex, Teilstring-Match) |
| `ignore_inotify` | Zeilengetrennte literale Pfade | inotify-Überwachungsereignisse ausschließen |

Alle Ignore-Dateien befinden sich unter `/usr/local/maldetect/`.

**Beispiele:**```
# ignore_paths
/home/user/public_html/cgi-bin

# ignore_file_ext
.js
.css

# ignore_sigs
base64.inject.unclassed

# ignore_inotify (user-owned — your additions only)
/home/user/public_html/cache/
backup-

# ignore_inotify.defaults (LMD-managed — refreshed on every upgrade)
# Ships under /usr/local/maldetect/internals/ with curated defaults
# for systemd-private tmpdirs, MariaDB temp tables, Redis, ClamAV, etc.
# Do NOT edit — add your own entries to ignore_inotify instead.

Hinweis: ignore_sigs-Einträge werden als erweiterte Regex-Muster behandelt und als Teilzeichenfolgen abgeglichen. Ein Eintrag php.shell unterdrückt php.shell, php.shell.v2, {YARA}php.shell.backdoor usw. Verwenden Sie ^php\.shell$ für eine exakte Übereinstimmung. Das Zeichen . passt in Regex auf jedes beliebige Zeichen; maskieren Sie es als \., um einen wörtlichen Punkt zu erhalten.


6. Cron täglich

Automatisierte tägliche Scans, Datenbereinigung und Signaturaktualisierungen.

Der unter /etc/cron.daily/maldet installierte Cron-Job führt drei Aufgaben aus:

  1. Bereinigen von Quarantäne-, Sitzungs- und temporären Daten, die älter als cron_prune_days sind (Standard: 21)
  2. Aktualisieren von Signaturen und Version (wenn autoupdate_signatures und autoupdate_version aktiviert sind)
  3. Scannen kürzlich geänderter Dateien unter erkannten Hosting-Panel-Pfaden (innerhalb von scan_days Tagen, Standard: 1)

Der tägliche Scan erkennt automatisch installierte Control-Panels und passt die Scan-Pfade entsprechend an:

Wenn der Monitor-Modus aktiv ist, werden die täglichen Scans übersprungen und stattdessen ein täglicher Bericht über Überwachungsereignisse ausgegeben.

Für benutzerdefinierte Scan-Pfade verwenden Sie die Hook-Datei /usr/local/maldetect/cron/custom.cron. Für cron-spezifische Konfigurationsüberschreibungen verwenden Sie /etc/sysconfig/maldet (RHEL) oder /etc/default/maldet (Debian) oder /usr/local/maldetect/cron/conf.maldet.cron.

Ein wöchentliches Watchdog-Skript (/etc/cron.weekly/maldet-watchdog) bietet unabhängige Fallback-Signaturaktualisierungen, wenn der primäre Cron defekt oder veraltet ist.


7. Inotify-Überwachung

Echtzeit-Dateiüberwachung mit Kernel-Inotify, Digest-Warnungen und Supervisor-Verwaltung.

Die Echtzeit-Dateiüberwachung nutzt das Inotify-Subsystem des Kernels, um Dateierstellungs-, -änderungs- und -verschiebungsereignisse zu erkennen. Erfordert einen Kernel mit CONFIG_INOTIFY_USER (Standard auf allen modernen Kerneln).```bash

Monitor all user home directories (UIDs >= inotify_minuid) — foreground

maldet -m users

Monitor in the background (daemon mode)

maldet -b -m users

Monitor specific paths

maldet -m /home/mike,/home/ashton

Monitor paths from a file

maldet -m /root/monitor_paths

Stop monitoring (sends SIGTERM; escalates to SIGKILL after 10s)

maldet -k

root@kitploit:~
**So funktioniert es:**

`maldet -m` führt standardmäßig einen Supervisor-Prozess im Vordergrund aus. Der Supervisor verwaltet ein `inotifywait`-Kind und übernimmt Crash-Recovery, Konfigurations-Neuladen und Digest-Benachrichtigungen. Verwenden Sie `-b`, um den Supervisor zu daemonisieren und sofort zurückzukehren.

1. `monitor_init()` richtet inotify-Watches auf allen Dateien unter überwachten Pfaden ein
2. Dateiereignisse werden in die Warteschlange gestellt und alle `inotify_sleep` Sekunden (Standard: 15) stapelweise gescannt
3. Die Konfiguration wird alle `inotify_reloadtime` Sekunden neu geladen (Standard: 3600)
4. Die Kernel-Parameter `max_user_watches` und `max_user_instances` werden für optimale Leistung automatisch angepasst
5. Wenn `inotifywait` abstürzt, startet der Supervisor es mit exponentiellem Backoff neu (2, 4, 8, 16, 32 Sekunden); nach 3 aufeinanderfolgenden Fehlern beendet sich der Supervisor

**Digest-Benachrichtigungen** werden regelmäßig in dem Intervall gesendet, das durch `digest_interval` festgelegt ist (Standard: `24h`). Wenn die Anzahl der Treffer seit dem letzten Digest `digest_escalate_hits` überschreitet, wird eine sofortige Eskalationswarnung gesendet (Standard: `0`, deaktiviert).

**Zusätzliche Pfade:** Um weitere Pfade ohne Bearbeitung von `conf.maldet` zu überwachen, fügen Sie sie zeilenweise der Datei hinzu, auf die `monitor_paths_extra` verweist (Standard: `/usr/local/maldetect/monitor_paths.extra`). Diese werden bei jedem Neuladen der Konfiguration mit der primären Überwachungsliste zusammengeführt.

Im Modus `users` werden nur Unterverzeichnisse überwacht, die `inotify_docroot` entsprechen (Standard: `public_html,public_ftp`), sowie die System-Temp-Verzeichnisse `/tmp`, `/var/tmp` und `/dev/shm`.

**Ignorierdateien (inotify):** Die Überwachungsausschlüsse vereinen zwei Dateien – die benutzereigene `/usr/local/maldetect/ignore_inotify` und die von LMD verwaltete `/usr/local/maldetect/internals/ignore_inotify.defaults`. Beide sind zeilengetrennt und unterstützen `#`-Kommentare sowie Leerzeilen. Die benutzereigene `ignore_inotify` akzeptiert standardmäßig POSIX ERE (erweiterter regulärer Ausdruck) – Anker (`^`, `$`) und Platzhalter (`.*`, `.+`) funktionieren. Um einen Literalpfad auszuschließen, der Regex-Metazeichen enthält, stellen Sie dem Eintrag `literal:` voran (z. B. `literal:/tmp/app.cache`). Die von LMD verwaltete `ignore_inotify.defaults` wird als literale Teilzeichenfolgen behandelt – ihre kuratierten Einträge werden beim Laden automatisch maskiert. Die Defaults-Datei wird bei jedem LMD-Upgrade überschrieben; fügen Sie standortspezifische Ausschlüsse nur zu `ignore_inotify` hinzu.

---

## 8. Signatursystem

Signaturentypen, Namenskonventionen, Aktualisierungen und benutzerdefinierte Regeldateien.

LMD wird mit fünf Signaturentypen ausgeliefert:

| Typ | Datei | Format | Anzahl |
|------|------|--------|-------|
| MD5-Hashes | `sigs/md5v2.dat` | `HASH:SIZE:{MD5}sig.name.N` | ~14,801 |
| SHA-256-Hashes | `sigs/sha256v2.dat` | `HASH:SIZE:{SHA256}sig.name.N` | CDN |
| HEX-Muster | `sigs/hex.dat` | `HEXSTRING:{HEX}sig.name.N` | ~2,054 |
| Verbundsignaturen | `sigs/csig.dat` | `SUBSIG1\|\|SUBSIG2:signame` | CDN |
| YARA-Regeln | `sigs/rfxn.yara` | YARA-Syntax | ~783 Regeln |
| Kompilierte YARA | `sigs/compiled.yarc` | `yarac`-Ausgabe | optional |

ClamAV-kompatible Signaturen werden ebenfalls gepflegt:
- `sigs/rfxn.hdb` — ClamAV-MD5-Format
- `sigs/rfxn.ndb` — ClamAV-HEX-Format
- `sigs/rfxn.hsb` — ClamAV-SHA-256-Format (erfordert ClamAV >= 0.97)

**Namenskonvention für Signaturen:** `{TYPE}category.name.variant_number`

Zu den Kategorien gehören: `bin.` (Binär), `c.` (C-Sprache), `exp.` (Exploit), `php.` (PHP), `js.` (JavaScript), `perl.` (Perl), `html.` (Phishing), `base64.inject.`, `gzbase64.`

**Treffer-Präfixe in Scan-Berichten:**

| Präfix | Quelle |
|--------|--------|
| `{MD5}` | MD5-Hash-Übereinstimmung (Stufe 1) |
| `{SHA256}` | SHA-256-Hash-Übereinstimmung (Stufe 1) |
| `{HEX}` | HEX-Muster-Übereinstimmung (Stufe 2) |
| `{CSIG}` | Übereinstimmung mit Verbundsignatur (Stufe 2.5) |
| `{SA}` | Statistische Analyse (Zeichenfolgenlänge) |
| `{YARA}` | Nativer YARA-Scan (`scan_yara=1`) |
| `{CAV}` | ClamAV-Engine (clamd/clamscan) |

### 8.1 Signaturaktualisierungen

Signaturen werden täglich über den Cron-Job oder manuell aktualisiert:```bash
maldet -u            # update signatures
maldet -u --force    # force update even if current

8.2 Benutzerdefinierte Signaturen

Benutzerdefinierte Signaturen können in drei Formaten hinzugefügt werden, die alle über Upgrades hinweg erhalten bleiben:

Remote-Import-URLs können für den automatischen Download während Signatur-Updates konfiguriert werden:


9. Quarantäne & Bereinigung

Isolieren, Wiederherstellen und Bereinigen von mit Malware infizierten Dateien.

Quarantänedateien werden unter /usr/local/maldetect/quarantine/ mit Berechtigungen von 000 gespeichert. Originalpfad, Besitzer, Berechtigungen und Änderungszeitpunkt werden in /usr/local/maldetect/sess/quarantine.hist für die vollständige Wiederherstellung aufgezeichnet.```bash

Quarantine all hits from a scan

maldet -q SCANID

Restore all quarantined files from a scan

maldet -s SCANID

Restore a specific file

maldet -s /usr/local/maldetect/quarantine/config.php.23754

Clean (attempt malware removal) from a scan

maldet -n SCANID

root@kitploit:~
**Benennung der Quarantänedateien:** `FILENAME.INODE` (z. B. `config.php.23754`)

Bei Nicht-Root-Scans (z. B. ModSecurity2-Upload-Scans) werden die Quarantänedaten unter `/usr/local/maldetect/pub/USERNAME/quar/` gespeichert. Verwenden Sie das Flag `-U`, um mit der Nicht-Root-Quarantäne zu interagieren:```bash
maldet -U nobody -s 112012-0032.13771

9.1 Cleaner-Regeln

Die Cleaner-Funktion sucht nach signaturbenannten Skripten im Verzeichnis clean/. Jedes Skript erhält den Pfad der infizierten Datei als Argument und sollte den schädlichen Inhalt entfernen. Nach der Bereinigung wird die Datei erneut gescannt – wenn sie weiterhin einen Treffer auslöst, wird die Bereinigung als FAILED markiert.

Um eine Clean-Regel für die Signatur php.cmdshell.r57 zu erstellen, fügen Sie eine Datei clean/php.cmdshell.r57 hinzu, die einen Befehl wie sed -i mit dem passenden Muster enthält. Erfolgreiche Bereinigungen stellen die Datei unter ihrem ursprünglichen Pfad, mit ihrem ursprünglichen Besitzer und ihren ursprünglichen Berechtigungen wieder her.

Der Cleaner ist eine Unterfunktion der Quarantäne – Dateien müssen unter Quarantäne gestellt werden (oder -n verwendet werden), damit die Bereinigung ausgeführt wird.


10. Hook-Scanning

Service-Hook-API für ModSecurity, FTP, Exim und benutzerdefinierte Integrationen.

LMD bietet Echtzeit-Dateiscans für mehrere Dienste über die einheitliche hookscan.sh-API. Ein einzelnes Skript übernimmt die Modusverteilung für ModSecurity, pure-ftpd, ProFTPD, Exim und generische (benutzerdefinierte) Integrationen.

Erkennungen durch Hook-Scans werden in einem rotierenden Trefferprotokoll (hook.hits.log) protokolliert, anstatt pro Scan Sitzungsdateien zu erstellen. Erkennungen werden in periodischen Digest-Warnungen aufgenommen und können über maldet --report hooks angezeigt werden.

10.1 ModSecurity```apache

SecRequestBodyAccess On SecTmpSaveUploadedFiles On # Required for ModSecurity >= 2.9 SecRule FILES_TMPNAMES "@inspectFile /usr/local/maldetect/hookscan.sh"
"id:1999999,phase:2,t:none,deny,log,auditlog,severity:2,
msg:'Malware upload blocked by LMD'"

root@kitploit:~
Malicious uploads are rejected with a deny action and logged to the ModSecurity audit log. No mode argument is needed — `hookscan.sh` defaults to ModSecurity mode for backward compatibility. Both ModSecurity v2 and v3 (libmodsecurity) use the same `popen()` contract.

### 10.2 pure-ftpd```bash
# pure-ftpd.conf (or command-line flags):
CallUploadScript yes

# Start the upload-script daemon:
pure-uploadscript -r /usr/local/maldetect/hookscan.sh -B

Erfordert pure-ftpd, kompiliert mit --with-uploadscript. Der Modus wird automatisch über die Umgebungsvariable UPLOAD_VUSER erkannt. Infizierte Dateien werden nach dem Upload unter Quarantäne gestellt (Fire-and-forget — Uploads können nicht blockiert, sondern nur nachträglich verarbeitet werden).

10.3 ProFTPD```

ExecEngine on ExecLog /var/log/proftpd/exec.log ExecTimeout 30 ExecOnCommand STOR /usr/local/maldetect/hookscan.sh proftpd %f ExecEnviron PROFTPD_USER %u ExecEnviron PROFTPD_HOME %d ``` Hinweis: `mod_exec` gibt immer `PR_DECLINED` zurück, unabhängig vom Exit-Code des Skripts — Uploads können durch diesen Hook nicht blockiert werden. LMD verschiebt infizierte Dateien nach Abschluss des Uploads in Quarantäne.

10.4 Exim```

exim.conf

av_scanner = cmdline:
/usr/local/maldetect/hookscan.sh exim %s :
maldet: (.+):
maldet: (.+)

root@kitploit:~
Die drei durch Doppelpunkte getrennten Felder sind: Befehlsvorlage, Trigger-Regex und Name-Erfassungs-Regex. Wenn Malware erkannt wird, lehnt Exim die Nachricht unter Verwendung des erfassten Signaturnamens ab.

### 10.5 Generische API

Für benutzerdefinierte Integrationen, Stapelscans und die Verwendung durch Dritte:```bash
# Single file scan
hookscan.sh generic /path/to/file
# Exit: 0 = clean, 1 = error, 2 = infected
# Stdout: CLEAN: /path, INFECTED: signame /path, ERROR: reason

# Batch scan from a file list
hookscan.sh generic --list /tmp/filelist.txt

# Batch scan from stdin
find /uploads -newer /tmp/marker -type f | hookscan.sh generic --stdin

Batch-Ausgabe erzeugt eine STATUS: PATH-Zeile pro Datei. Der Exit-Code folgt dem Prinzip „schlechtestes Ergebnis gewinnt“.

10.6 Konfiguration

Die Hook-Scan-Konfiguration wird in conf.maldet.hookscan gespeichert (optional – Standardwerte sind im Skript eingebaut). Die Referenz-Standardwerte befinden sich in conf.maldet.hookscan.default.

Wichtige Variablen:

Führen Sie nach dem Aktivieren maldet --mkpubpaths aus, um benutzerspezifische Datenverzeichnisse für Nicht-Root-Scanvorgänge zu erstellen.

10.7 Testalarme

Stellen Sie sicher, dass die Benachrichtigungskanäle korrekt konfiguriert sind:```bash maldet --test-alert scan email # test per-scan email alert maldet --test-alert scan slack # test per-scan Slack alert maldet --test-alert digest email # test digest email alert maldet --test-alert digest telegram # test digest Telegram alert

root@kitploit:~
Test-Alerts verwenden die echte Rendering-Pipeline mit synthetischen Daten. Die Betreffzeile wird um das Präfix `[TEST]` ergänzt. Die Kanalisolierung stellt sicher, dass nur der angegebene Kanal ausgelöst wird.

### 10.8 Hook Digest

Hook-Erkennungen werden über periodische Digest-Benachrichtigungen zusammengefasst:```bash
# On-demand digest (reads all sources: monitor + hooks)
maldet --digest

# View hook scan activity
maldet --report hooks                    # last 24 hours
maldet --report hooks --last 7d          # last 7 days
maldet --report hooks --mode modsec      # filter by mode

Der tägliche Cron-Job löst automatisch einen Hook-Digest aus, wenn neue Erkennungen vorliegen (gesteuert durch cron_digest_hook=1 in conf.maldet).

10.9 CXS Migration

Für Administratoren, die CXS durch LMD ersetzen:


Integration

LMD mit externen Tools, Automatisierungspipelines und Drittanbieter-Scannern verbinden.

ClamAV

LMD-Signaturen werden von install.sh automatisch in die ClamAV-Datenverzeichnisse verlinkt, was eine Abdeckung durch zwei Engines bietet. Setzen Sie scan_clamscan=auto (Standard) für die automatische ClamAV-Erkennung. Siehe 3.8 ClamAV-Integration für die Engine-Auswahl und Signaturvalidierung.

ELK Stack

Aktivieren Sie enable_statistic=1 mit elk_host, elk_port und elk_index, um Scan-Ereignisse an Elasticsearch zu streamen. Siehe 3.10 ELK-Integration.

Benachrichtigungskanäle

LMD unterstützt vier Benachrichtigungskanäle über E-Mail hinaus: Slack (Block Kit), Telegram (MarkdownV2), Discord (Webhook-Embeds) und SMTP-Relay für Umgebungen ohne lokalen MTA. Siehe 3.2 Benachrichtigung für die Konfiguration.

JSON-Berichte

Maschinenlesbare Scan-Ausgabe für CI/CD und Automatisierung:```bash maldet --format json -e SCANID # JSON report to stdout maldet --json-report list # list all scans as JSON

root@kitploit:~
Siehe `man maldet`(1) für das v1.2-JSON-Schema (einheitliche `{schema_version, scanner, host, reports[]}`-Struktur sowohl bei `-e SCANID` als auch bei `-e list`).

### Erkennung von Hosting-Panels

Der tägliche Cron-Job erkennt automatisch 12+ Hosting-Control-Panels und passt die Scan-Pfade an. Siehe [6. Cron Daily](#6-cron-daily) für die vollständige Panel-Matrix.

---

## Lizenz

LMD wird auf ehrenamtlicher Basis von Ryan MacDonald [[email protected]] entwickelt und unterstützt.

Linux Malware Detect (LMD) wird unter der GNU General Public License (GPL) v2
ohne Einschränkungen hinsichtlich Nutzung oder Weiterverbreitung verbreitet. Der Urheberrechtshinweis und die GNU GPL
sind in der Datei `COPYING.GPL` enthalten. Bei abgeleiteten Werken muss eine Quellenangabe erfolgen, wie
unter der GNU GPL gefordert.

---

## Support

Das LMD-Quellrepository befindet sich unter: https://github.com/rfxn/linux-malware-detect

Fehler, Funktionswünsche und allgemeine Fragen können als GitHub-Issues eingereicht oder an [email protected] gesendet werden.

Die offizielle Projektseite befindet sich unter: https://www.rfxn.com/projects/linux-malware-detect/
Tool herunterladen
VariableZweckStandardwert
quarantine_hitsErkannte Malware automatisch unter Quarantäne stellen0
quarantine_cleanVersuchen, Malware aus unter Quarantäne gestellten Dateien zu entfernen0
quarantine_suspend_usercPanel-Konto bei Treffer sperren oder Shell entziehen0
quarantine_suspend_user_minuidMindest-UID für die Sperrung (schützt Systemkonten)500
quarantine_on_errorDateien unter Quarantäne stellen, wenn die Scan-Engine einen Fehler zurückgibt1
VariableZweckStandardwert
default_monitor_modeStartmodus für den Monitor (users oder Pfad zu einer Datei); leer = deaktiviert""
inotify_base_watchesBasisanzahl der Dateiüberwachungen pro Benutzerpfad16384
inotify_minuidMindest-UID für die Überwachung von Benutzerverzeichnissen500
inotify_docrootZu überwachende Unterverzeichnisse in den Benutzerverzeichnissenpublic_html,public_ftp
inotify_sleepSekunden zwischen Scan-Stapeln15
inotify_reloadtimeSekunden zwischen Konfigurations-Neuladungen3600
inotify_cpuniceNice-Priorität für den Monitorprozess18
inotify_ioniceIO-Priorität für den Monitorprozess6
inotify_cpulimitHartes CPU-Limit für den Monitor (0=deaktiviert)0
digest_intervalIntervall zwischen periodischen Digest-Zusammenfassungswarnungen: 24h, 30m, 7d, 0 (deaktiviert)24h
digest_escalate_hitsTrefferzahl-Schwelle für sofortige Eskalationswarnung; 0 = deaktiviert0
cron_digest_hookcron.daily-Hook-Digest-Durchlauf aktivieren (löst einen Digest aus, wenn neue Hook-Erkennungen vorhanden sind)1
monitor_paths_extraPfad zu einer zeilenweise getrennten Datei mit zusätzlichen inotify-Überwachungspfaden/usr/local/maldetect/monitor_paths.extra
monitor_scan_owner_filtersEigentümer-Filter scan_ignore_root/scan_ignore_user/scan_ignore_group im Überwachungsmodus anwenden; 0 (Standard) = aus — der Monitor scannt alle Dateien unabhängig vom Eigentümer (stellt die Semantik von 1.6.6 wieder her, behebt Issue #485); 1 = ein — Eigentümer-Filter anwenden0
VariableZweckStandardwert
post_scan_hookPfad zum Hook-Skript (im Besitz von root, nicht weltweit beschreibbar). Kann nicht über -co gesetzt werden""
post_scan_hook_formatAusgabestufe: args, file, json (kumulativ)args
post_scan_hook_execAusführungsmodus: async (nicht blockierend), sync (warten)async
post_scan_hook_timeoutSekunden bis SIGTERM (0=deaktiviert, min. 5)60
post_scan_hook_onScan-Typ-Filter: all, cli, digestall
post_scan_hook_min_hitsMindesttrefferzahl für die Auslösung (0=immer)1
VariableZweckStandardwert
scan_clamd_remoteEinen Remote-clamd-Server für Scans verwenden0
remote_clamd_configPfad zur Konfigurationsdatei des Remote-clamd/etc/clamd.d/clamd.remote.conf
remote_clamd_max_retryMaximale Wiederholungsversuche bei Remote-clamd-Fehlern5
remote_clamd_retry_sleepSekunden zwischen den Wiederholungsversuchen3
VariableZweckStandardwert
enable_statisticErfassung von ELK-Stack-Statistiken aktivieren0
elk_hostTCP-Host für den ELK-Eingang—
elk_portTCP-Port für den ELK-Eingang—
elk_indexName des Elasticsearch-Index—
PanelScan-Pfad
cPanel/home?/?/public_html/ (+ Addon-/Subdomain-DocumentRoots)
Plesk/var/www/vhosts/?/
DirectAdmin/home?/?/domains/?/public_html/, /var/www/html/?/
Ensim/home/virtual/?/fst/var/www/html/
ISPConfig/var/www/clients/?/web?/web, …/subdomains, /var/www
Virtualmin/home/?/public_html/, /home/?/domains/?/public_html/
ISPmanager/var/www/?/data/, /home/?/data/
Froxlor/var/customers/webs/
Bitrix/home/bitrix/www/, /home/bitrix/ext_www/?/
VestaCP / HestiaCP/home/?/web/?/public_html/ (+ public_shtml, tmp, private)
DTC${conf_hosting_path:-/var/www/sites}/?/?/subdomains/?/html/
TypDateiFormat
Benutzerdefiniertes MD5sigs/custom.md5.datWie md5v2.dat
Benutzerdefiniertes SHA-256sigs/custom.sha256.datWie sha256v2.dat
Benutzerdefiniertes HEXsigs/custom.hex.datWie hex.dat
Benutzerdefiniertes CSIGsigs/custom.csig.datWie csig.dat
Benutzerdefiniertes YARAsigs/custom.yaraYARA-Regelsyntax
Benutzerdefiniertes YARA (Drop-in)sigs/custom.yara.d/*.yarYARA-Regeldateien
Kompiliertes YARAsigs/compiled.yarcyarac-Ausgabe (optional)
VariableZweck
sig_import_md5_urlURL für benutzerdefinierte MD5-Signaturen
sig_import_sha256_urlURL für benutzerdefinierte SHA-256-Signaturen
sig_import_hex_urlURL für benutzerdefinierte HEX-Signaturen
sig_import_csig_urlURL für benutzerdefinierte zusammengesetzte Signaturen
sig_import_yara_urlURL für benutzerdefinierte YARA-Regeln
VariableDefaultBeschreibung
hookscan_timeout30Scan-Timeout in Sekunden
hookscan_fail_open1Datei bei Scan-Fehler zulassen (0 = blockieren)
hookscan_escalate_hits0Sofortige Warnung bei N Hook-Treffern/Stunde (0 = deaktiviert)
hookscan_service_usersapache,nginx,...Dienst-UIDs, die von der Homeverzeichnis-Beschränkung ausgenommen sind
hookscan_user_rate_limit60Maximale Scans/Stunde für Nicht-Root-Aufrufer
hookscan_user_show_signames1Signaturnamen Nicht-Root-Aufrufern anzeigen
hookscan_list_max_bytes1048576Maximale Listendateigröße (1 MB)
hookscan_list_max_entries10000Maximale Einträge in der Dateiliste
CXS-KomponenteLMD-Entsprechung
cxscgi.shhookscan.sh modsec
cxsftp.shhookscan.sh ftp
ProFTPD mod_exec auf cxshookscan.sh proftpd
cxs --filehookscan.sh generic
cxswatchmaldet --monitor
/etc/cxs/cxs.confconf.maldet.hookscan