Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
linux-malware-detect — 다중 엔진 Linux 멀웨어 스캐너로, 5단계 탐지(MD5, HEX 패턴, YARA, ClamAV, 통계 기반), 실시간 inotify 모니터링, 격리 및 다중 채널 알림을 제공합니다. | Kitploit
도구/GitHubGitHub/rfxn/linux-malware-detect
Defensive ToolsMalware AnalysisThreat IntelligenceIntrusion DetectionIncident ResponseAnomaly Detection
GitHubrfxn/linux-malware-detect

linux-malware-detect

다중 엔진 Linux 멀웨어 스캐너로, 5단계 탐지(MD5, HEX 패턴, YARA, ClamAV, 통계 기반), 실시간 inotify 모니터링, 격리 및 다중 채널 알림을 제공합니다.

저장소 보기
1.5k2482개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Linux Malware Detect (LMD)

Linux Malware Detect

CI Version License: GPL v2 Platform: Linux

Linux용 멀웨어 스캐너 — 다단계 위협 탐지(MD5, SHA-256, HEX, YARA, 통계 분석), ClamAV 통합, 실시간 inotify 모니터링, 격리/정리/복원 작업, 다중 채널 알림(이메일, Slack, Telegram, Discord).

(C) 2002-2026, R-fx Networks <[email protected]>
(C) 2026, Ryan MacDonald <[email protected]>
GNU GPL v2에 따라 라이선스가 부여됨


2.0.1 새로운 기능

43배 더 빠른 네이티브 스캔 엔진 — 네이티브 스캐닝 파이프라인이 배치 병렬 처리를 통해 완전히 재작성되었습니다. 약 10,000개 파일 대상 실사용 벤치마크:

버전실행 시간파일 수탐지 수
v1.6.61,217초9,93135
v2.0.128초9,93135

MD5 및 HEX 시그니처 매칭은 이제 Aho-Corasick 병렬 워커와 함께 배치 grep을 사용하여 파일별 패턴 컴파일 오버헤드와 스캔당 약 500,000회의 서브프로세스 포크를 제거합니다. 병렬 워커 수는 scan_workers로 구성합니다(기본값: 자동).

기타 주요 사항: 스캔 수명주기 관리(--kill, --pause, --stop/--continue, -L), CPU 하드웨어 자동 감지를 통한 SHA-256 해시 스캔(scan_hashtype), 네이티브 YARA 스캔(scan_yara=1), Discord 웹훅 알림, Slack/Telegram 알림 수정, 네이티브 엔진의 ClamAV HEX 와일드카드 지원, 코드베이스 전반에 걸친 200개 이상의 버그 수정. 전체 세부 사항은 CHANGELOG를 참조하세요.


목차

  • 1. 소개
  • 2. 설치
  • 3. 설정
    • 3.1 일반 옵션
    • 3.2 알림
    • 3.3 스캔 옵션
    • 3.4 YARA 스캔
    • 3.5 격리 옵션
    • 3.6 모니터링 옵션
    • 3.7 스캔 후 훅
    • 3.8 ClamAV 통합
    • 3.9 원격 ClamAV
    • 3.10 ELK 통합
    • 3.11 설정 로딩 순서
  • 4. 사용법
  • 5. 무시 옵션
  • 6. 크론 데일리
  • 7. Inotify 모니터링
  • 8. 시그니처 시스템
    • 8.1 시그니처 업데이트
    • 8.2 사용자 정의 시그니처
  • 9. 격리 및 정리
    • 9.1 정리 규칙
  • 10. 훅 스캔
  • 통합
  • 라이선스
  • 지원

빠른 시작```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. 소개

LMD의 아키텍처, 탐지 단계 및 지원 플랫폼.

Linux Malware Detect(LMD)는 GNU GPLv2 라이선스로 배포되는 Linux용 멀웨어 스캐너로, 공유 호스팅 환경에서 발생하는 위협에 맞춰 설계되었습니다. 네트워크 경계 침입 탐지 시스템의 위협 데이터를 사용하여 공격에 실제로 사용 중인 멀웨어를 추출하고 탐지용 시그니처를 생성합니다. 또한 LMD 체크아웃 기능을 통한 사용자 제출 및 멀웨어 커뮤니티 리소스에서도 위협 데이터를 얻습니다.

LMD는 기존 AV 제품이 자주 놓치는 멀웨어 클래스에 초점을 맞춥니다: PHP 셸, JavaScript 인젝터, base64 인코딩 백도어, IRC 봇 및 운영 체제 내부가 아닌 공유 호스팅 사용자 계정을 대상으로 하는 기타 웹 애플리케이션 계층 위협입니다.

**탐지 단계**
- 정확한 위협 식별을 위한 MD5 파일 해시 매칭
- 병렬 워커가 포함된 네이티브 배치 grep 엔진을 통한 HEX 패턴 매칭
- 다중 패턴 부울 논리(AND/OR/threshold), 대소문자 구분 없는 매칭, 와이드(UTF-16LE) 매칭, 제한된 갭 와일드카드를 지원하는 복합 시그니처(csig) 스캐닝
- 전체 모듈 지원 및 사용자 정의 규칙을 갖춘 네이티브 YARA 규칙 스캐닝
- 난독화된 위협(base64, gzinflate) 탐지를 위한 통계적 문자열 길이 분석
- LMD 관리 ClamAV 시그니처를 통한 확장된 커버리지를 위한 ClamAV 통합

**스캐닝 및 모니터링**
- 전체 파일, 최근 수정된 파일 또는 목록의 파일 스캔
- 커널 inotify 실시간 파일 모니터링(생성/수정/이동 이벤트)
- ModSecurity2 `inspectFile` 후크를 통한 HTTP 업로드 스캐닝
- 무인 대규모 작업을 위한 백그라운드 스캐닝
- 스캔별 포함/제외 정규식 필터링

**격리 및 대응**
- 권한 없음 파일 저장소를 갖춘 격리 대기열
- 스캔 ID별 일괄 격리/복원
- 멀웨어 제거를 위한 시그니처별 클리너 규칙
- 전체 파일 복원(콘텐츠, 소유자, 권한, mtime)

**알림 및 보고**
- 통합 rfxn 디자인(teal 브랜드, 카드 항목)의 HTML + 텍스트 이메일 알림
- 로컬 MTA가 없는 환경을 위한 SMTP 릴레이 지원(TLS/SSL)
- Slack Block Kit, Telegram MarkdownV2, Discord embed 항목별 알림
- `alert/custom.d/` 오버라이드를 통한 사용자 정의 알림 템플릿
- 파일별 적중 세부 정보와 색상 구분 적중 유형이 포함된 스캔 보고서

**인프라**
- 이중 엔진 커버리지를 위한 자동 ClamAV 시그니처 연결
- 12개 이상의 호스팅 제어판 자동 감지 기능이 있는 일일 cron
- CPU/IO 리소스 제어(nice, ionice, cpulimit)
- 시그니처 및 버전 자동 업데이트
- systemd 서비스 유닛 및 SysV init 스크립트 지원

### 지원 플랫폼

LMD는 bash 및 표준 GNU 유틸리티가 있는 모든 Linux 배포판에서 실행됩니다. 테스트된 플랫폼:

| 플랫폼 | Init 시스템 | 패키지 구성 경로 |
|----------|-------------|---------------------|
| 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 | — | — (부분 지원, inotify 없음) |

---

## 2. 설치

시스템에 LMD 설치, 업그레이드 및 제거.

포함된 `install.sh` 스크립트가 모든 설치 작업을 처리합니다. 이전 설치본은 자동으로 백업됩니다.```bash
./install.sh

설치 프로그램은 다음 작업을 수행합니다:

  • /usr/local/maldetect에 파일을 복사합니다.
  • /usr/local/sbin/에 maldet 심볼릭 링크를 생성합니다.
  • cron.daily 스크립트를 /etc/cron.daily/maldet에 설치합니다.
  • systemd 서비스 유닛(또는 구형 시스템에서는 SysV init 스크립트)을 설치합니다.
  • LMD 시그니처를 ClamAV 데이터 디렉터리에 연결합니다(ClamAV가 설치된 경우).
  • 업그레이드 시 기존 구성(conf.maldet), 사용자 정의 시그니처 및 무시 파일을 보존합니다.

이전 설치본은 /usr/local/maldetect.bk{PID}에 저장되며, maldetect.last 심볼릭 링크는 가장 최근 백업을 가리킵니다.

기본 경로:

  • 설치 경로: /usr/local/maldetect
  • 바이너리 심볼릭 링크: /usr/local/sbin/maldet
  • Cron 스크립트: /etc/cron.daily/maldet
  • 서비스 유닛: /usr/lib/systemd/system/maldet.service

3. 구성

사용자가 설정할 수 있는 모든 옵션과 기본값입니다. 전체 참조는 man maldet(1)을 참조하십시오.

기본 구성 파일은 /usr/local/maldetect/conf.maldet입니다. 모든 옵션은 쉽게 구성할 수 있도록 주석 처리되어 있습니다. 별도로 명시되지 않는 한 옵션은 비활성화/활성화에 0/1을 사용합니다.

구성은 런타임에 -co 플래그를 사용하여 재정의할 수도 있습니다:```bash maldet -co quarantine_hits=1,email_addr=[email protected] -a /home

root@kitploit:~
### 3.1 일반 옵션

| Variable | Purpose | Default |
|----------|---------|---------|
| `autoupdate_signatures` | cron을 통해 매일 서명 자동 업데이트 | `1` |
| `autoupdate_version` | cron을 통해 LMD 버전을 매일 자동 업데이트 | `1` |
| `autoupdate_version_hashed` | 업스트림과 LMD 실행 파일 SHA-256 해시 검증(MD5로 대체) | `1` |
| `sigup_interval` | 독립적인 cron 작업(`/etc/cron.d/maldet-sigup`)을 통한 자동 서명 업데이트 확인 간격(시간), 0 = 비활성화 | `6` |
| `cron_prune_days` | 격리/세션/임시 데이터 보존 일수 | `21` |
| `cron_daily_scan` | cron을 통한 매일 자동 검사 활성화 | `1` |
| `scan_days` | 일일 cron 검사에서 수정된 파일을 찾을 기간(일) | `1` |
| `import_config_url` | 원격 구성 재정의를 다운로드할 URL | — |
| `import_config_expire` | 가져온 구성의 캐시 만료 시간(초) | `43200` |
| `sig_import_md5_url` | 사용자 정의 MD5 서명을 다운로드할 URL | — |
| `sig_import_hex_url` | 사용자 정의 HEX 서명을 다운로드할 URL | — |
| `sig_import_yara_url` | 사용자 정의 YARA 규칙을 다운로드할 URL | — |
| `sig_import_sha256_url` | 사용자 정의 SHA-256 서명을 다운로드할 URL | — |
| `sig_import_csig_url` | 사용자 정의 복합(compound) 서명을 다운로드할 URL | — |
| `session_legacy_compat` | TSV와 함께 레거시 일반 텍스트 세션 파일 생성: `auto`(이전 형식 세션 감지), `1`(항상), `0`(TSV만) | `auto` |

### 3.2 알림

| Variable | Purpose | Default |
|----------|---------|---------|
| `email_alert` | 검사 후 이메일 알림 활성화 | `0` |
| `email_addr` | 알림 수신자 주소 | `[email protected]` |
| `email_subj` | 이메일 제목 줄 템플릿 | `maldet alert from $(hostname)` |
| `email_ignore_clean` | 모든 탐지 항목이 정리되었을 때 알림 억제 | `1` |
| `email_panel_user_alerts` | 탐지 발생 시 패널 사용자 알림 전송 | `0` |
| `email_panel_from` | 패널 사용자 알림의 From 헤더 | `[email protected]` |
| `email_panel_replyto` | 패널 사용자 알림의 Reply-To 헤더 | `[email protected]` |
| `email_panel_alert_subj` | 패널 사용자 알림의 제목 줄 | `maldet alert from $(hostname)` |
| `email_format` | 이메일 형식: `text`, `html` 또는 `both` | `html` |
| `smtp_relay` | SMTP 릴레이 URL(예: `smtps://smtp.gmail.com:465`) | — |
| `smtp_from` | SMTP 릴레이 전송용 발신자 주소 | — |
| `smtp_user` | SMTP 인증 사용자 이름 | — |
| `smtp_pass` | SMTP 인증 비밀번호 | — |
| `slack_alert` | Slack 파일 업로드 알림 활성화 | `0` |
| `slack_subj` | Slack 업로드용 파일 이름 | `maldet alert from $(hostname)` |
| `slack_token` | Slack Bot API 토큰(범위: `files:write`, `files:read`) | — |
| `slack_channels` | 쉼표로 구분된 채널 이름 또는 ID 목록 | `maldetreports` |
| `telegram_alert` | Telegram 알림 활성화 | `0` |
| `telegram_bot_token` | Telegram Bot API 토큰 | — |
| `telegram_channel_id` | Telegram 채팅 또는 그룹 ID | — |
| `discord_alert` | Discord 웹훅 알림 활성화 | `0` |
| `discord_webhook_url` | 알림 전송용 Discord 웹훅 URL | — |

### 3.3 검사 옵션

| Variable | Purpose | Default |
|----------|---------|---------|
| `scan_hashtype` | 1단계용 해시 알고리즘: `auto`, `sha256`, `md5`, `both` | `auto` |
| `scan_max_depth` | find의 최대 디렉터리 깊이 | `15` |
| `scan_min_filesize` | 검사할 최소 파일 크기 | `24` bytes |
| `scan_max_filesize` | 검사할 최대 파일 크기 | `2048k` |
| `scan_hexdepth` | HEX 서명 매칭용 바이트 깊이 | `262144` |
| `scan_hex_chunk_size` | HEX+CSIG 검사에서 마이크로 배치당 파일 수(범위: 1024-20480) | `10240` |
| `scan_csig` | 복합 서명(csig) 검사 활성화(네이티브 모드 전용) | `1` |
| `scan_workers` | MD5, SHA-256, HEX 및 CSIG 검사 패스용 병렬 워커 | `auto` |
| `scan_cpunice` | 검사 프로세스의 nice 우선순위(-19~19) | `19` |
| `scan_ionice` | IO 스케줄링 클래스 우선순위(0-7) | `6` |
| `scan_cpulimit` | 하드 CPU 제한 비율(0=비활성화) | `0` |
| `scan_ignore_root` | 검사에서 root 소유 파일 건너뛰기(기본적으로 모니터 모드에는 적용되지 않음, `monitor_scan_owner_filters` 참조) | `1` |
| `scan_ignore_user` | 특정 사용자가 소유한 파일 건너뛰기 | — |
| `scan_ignore_group` | 특정 그룹이 소유한 파일 건너뛰기 | — |
| `scan_user_access` | 비root 사용자가 검사를 실행하도록 허용 | `0` |
| `scan_user_access_minuid` | --mkpubpaths 사용자 디렉터리 생성용 최소 UID | `100` |
| `scan_find_timeout` | find 파일 목록 생성 제한 시간(0=비활성화, 최소 60초, 14400=4시간 권장) | `0` |
| `scan_export_filelist` | find 결과를 tmp/find_results.last에 저장 | `0` |
| `scan_tmpdir_paths` | -a/-r 검사에 포함되는 전역 쓰기 가능 임시 경로 | `/tmp /var/tmp /dev/shm /var/fcgi_ipc` |
| `string_length_scan` | 통계적 문자열 길이 분석 활성화 | `0` |
| `string_length` | 의심스러운 문자열의 최소 길이 | `150000` |
| `scan_progress_log_interval` | 백그라운드 검사 중 진행 로그 체크포인트 간격(초, 0=비활성화) | `60` |
| `scan_meta_cleanup_age` | 완료/중단된 검사 메타 파일 보존 시간(0=비활성화) | `48` |
| `maint_compress_age` | 완료된 세션 파일이 gzip되기 전 경과 일수(0=비활성화) | `30` |
| `maint_archive_age` | 압축된 세션이 월간 아카이브로 묶이기 전 경과 일수(0=비활성화) | `90` |

### 3.4 YARA 검사

네이티브 YARA 검사는 ClamAV와 독립적으로 `yara` 바이너리(또는 YARA-X의 `yr`)를 호출하며, ClamAV의 제한된 YARA 하위 집합으로는 처리할 수 없는 전체 YARA 모듈, 컴파일된 규칙, 사용자 정의 규칙 파일을 지원합니다. 둘 다 사용 가능한 경우 `yr`(YARA-X)이 우선됩니다. `auto`로 설정하면 네이티브 YARA는 ClamAV를 사용할 수 없고 yara/yr 바이너리가 발견된 경우에만 활성화되어 중복 규칙 평가를 방지합니다.

| Variable | Purpose | Default |
|----------|---------|---------|
| `scan_yara` | 네이티브 YARA 검사 단계 활성화: `auto`(바이너리 감지, ClamAV 폴백), `0`(비활성화), `1`(활성화) | `auto` |
| `scan_yara_timeout` | 제한 시간(초, 0=제한 없음) | `300` |
| `scan_yara_scope` | ClamAV도 활성 상태일 때 규칙 범위: `all`(전체 네이티브 검사) 또는 `custom`(네이티브로 사용자 정의 규칙만, ClamAV는 rfxn.yara 처리) | `custom` |
| `sig_import_yara_url` | 서명 업데이트 시 사용자 정의 YARA 규칙을 다운로드할 URL | — |

**사용자 정의 YARA 규칙**은 업그레이드 후에도 유지되는 두 위치에 배치할 수 있습니다:
- `sigs/custom.yara` — 단일 파일 규칙
- `sigs/custom.yara.d/` — `.yar` 및 `.yara` 규칙 파일용 드롭인 디렉터리

[YARA Forge](https://yarahq.github.io/) 및 [Signature Base](https://github.com/Neo23x0/signature-base)와 같은 타사 규칙 세트와 호환됩니다. 컴파일된 규칙(`yarac` 출력)도 `sigs/compiled.yarc`를 통해 지원됩니다.

**배치 검사:** YARA 4.0+ 및 모든 YARA-X 버전은 `--scan-list`를 사용하여 효율적인 배치 파일 검사를 수행합니다. 이전 YARA 버전은 자동으로 파일별 검사로 대체됩니다.

구성 파일을 편집하지 않고 런타임에 활성화:```bash
maldet -co scan_yara=1 -a /home/?/public_html

3.5 격리 옵션

3.6 모니터링 옵션

3.7 스캔 후 훅

스캔 완료 후 구성 가능한 훅 스크립트를 호출할 수 있으며, 위치 인수, LMD_* 환경 변수, 그리고 선택적으로 stdin의 JSON을 통해 스캔 결과를 전달받습니다. 훅은 스캔을 중단시키지 않습니다. 실패는 기록될 뿐 치명적이지 않습니다. 전체 훅 계약은 maldet(1)을 참조하십시오.

3.8 ClamAV 통합

ClamAV 스캔이 활성화되면 (scan_clamscan=1 또는 감지된 바이너리로 auto), LMD는 우선순위에 따라 사용 가능한 최상의 ClamAV 엔진을 선택합니다:

  1. 원격 clamdscan (scan_clamd_remote=1이고 구성이 존재하는 경우)
  2. root로 실행 중인 로컬 clamd 데몬
  3. root가 아닌 사용자로 실행 중인 로컬 clamd 데몬 (--fdpass 사용)
  4. clamscan 바이너리 (폴백, 더 느림)

LMD 서명은 install.sh에 의해 ClamAV 데이터 디렉터리에 자동으로 심볼릭 링크되어, ClamAV가 LMD의 MD5 (rfxn.hdb), HEX (rfxn.ndb) 및 YARA (rfxn.yara) 서명에 접근할 수 있게 합니다.

서명 검증 게이트: 업데이트된 서명을 ClamAV 데이터 디렉터리에 배포하기 전에, LMD는 스테이징 디렉터리를 대상으로 clamscan -d를 통해 서명을 검증합니다. 검증에 실패하면 잘못된 데이터베이스가 ClamAV를 손상시키지 않도록 기존 LMD 서명이 ClamAV 경로에서 제거됩니다. clamd에 대한 SIGUSR2 재로드 신호는 ClamAV 데이터 디렉터리 중 하나 이상이 검증을 통과한 경우에만 전송됩니다 (issue #467).

변수용도기본값
scan_clamscanClamAV를 스캔 엔진으로 활성화: auto (런타임에 바이너리 감지), 0 (비활성화), 1 (활성화)auto

3.9 원격 ClamAV

3.10 ELK 통합

3.11 구성 로딩 순서

나중의 소스가 이전 값을 덮어씁니다:

  1. internals/internals.conf — 내부 경로, 바이너리 검색, URL 정의
  2. conf.maldet — 사용자 대상 구성
  3. internals/compat.conf — 더 이상 사용되지 않는 변수 매핑
  4. /etc/sysconfig/maldet 또는 /etc/default/maldet — 시스템 재정의
  5. CLI -co|--config-option — 런타임 재정의

4. 사용법

명령줄 인터페이스, 종료 코드 및 일반적인 예제. 전체 옵션 참조는 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 종료 코드

| 코드 | 의미 |
|------|---------|
| `0` | 성공, 악성코드 탐지 없음 |
| `1` | 오류 또는 모든 검사 경로가 존재하지 않음 |
| `2` | 악성코드 탐지됨 |

**예시:**```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 Output: --format json -e 또는 --json-report를 사용하여 구조화된 JSON(v1.2 스키마)을 출력할 수 있습니다. 여기에는 스캐너 메타데이터, 스캔 세부 정보(경로, 시간, 파일 수), 각 히트 항목의 시그니처 이름, 파일 경로, 히트 유형, 소유자, 권한, 격리 상태, 그리고 유형별 분류가 포함된 요약이 포함됩니다. TSV 및 레거시 일반 텍스트 세션도 모두 지원됩니다. 레거시 세션에는 "source": "legacy"가 포함되며 사용할 수 없는 보강 필드(해시, 크기, 소유자 등)는 null로 렌더링됩니다.

4.2 스캔 관리

대용량 파일 시스템(100만 개 이상의 파일)에서 장시간 실행되는 스캔은 kill -9 없이 제어할 수 있습니다:```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`은 검사 단계, 히트 수, 구성 옵션, 작업자별 진행 상황을 기록하는 체크포인트 파일을 작성합니다. `--continue`는 체크포인트를 검증하고, 시그니처가 변경되었으면 경고하며, 현재 파일 시스템 상태에서 파일 목록을 재구성하고, 이전 히트를 복원한 후 중단된 단계부터 검사를 재개합니다. HEX 작업자는 청크 단위로 재개됩니다(작업자당 약 30초의 작업 손실).

**엔진 지원:** 네이티브 엔진(HEX/CSIG/해시 작업자) 및 독립 실행형 `clamscan`은 모든 수명 주기 작업을 지원합니다. 데몬 기반 ClamAV(`clamdscan`/`clamd`)는 `--kill`만 지원합니다. `--pause`와 `--stop`은 데몬 I/O 상태가 불투명하고 다른 클라이언트와 공유되므로 오류 메시지와 함께 거부됩니다.

---

## 5. 제외 옵션

경로, 파일 유형, 시그니처를 검사 및 모니터링에서 제외합니다.

네 개의 무시 파일이 검사에서 제외할 항목을 제어합니다.

| 파일 | 형식 | 용도 |
|------|--------|---------|
| `ignore_paths` | 줄로 구분된 경로 | 검사에서 디렉터리 또는 파일 제외 |
| `ignore_file_ext` | 줄로 구분된 확장자 | 파일 확장자 제외 (`.js`, `.css`) |
| `ignore_sigs` | 줄로 구분된 패턴 | 일치하는 시그니처 건너뛰기 (정규식, 부분 문자열 일치) |
| `ignore_inotify` | 줄로 구분된 리터럴 경로 | inotify 모니터링 이벤트 제외 |

모든 무시 파일은 `/usr/local/maldetect/` 디렉터리에 있습니다.

**예시:**```
# 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.

참고: ignore_sigs 항목은 확장 정규식 패턴으로 처리되며 부분 문자열로 일치합니다. php.shell 항목은 php.shell, php.shell.v2, {YARA}php.shell.backdoor 등을 억제합니다. 정확히 일치하려면 ^php\.shell$을 사용하세요. 정규식에서 . 문자는 모든 문자와 일치하므로, 리터럴 점을 나타내려면 \.로 이스케이프하세요.


6. 일일 Cron 작업

자동 일일 검사, 데이터 정리 및 서명 업데이트.

/etc/cron.daily/maldet에 설치된 cron 작업은 다음 세 가지 작업을 수행합니다:

  1. 정리: cron_prune_days(기본값: 21)보다 오래된 격리, 세션 및 임시 데이터를 정리합니다.
  2. 업데이트: (autoupdate_signatures 및 autoupdate_version이 활성화된 경우) 서명과 버전을 업데이트합니다.
  3. 검사: 감지된 호스팅 패널 경로 아래에서 최근에 수정된 파일을 검사합니다(scan_days일 이내, 기본값: 1).

일일 검사는 설치된 제어판을 자동으로 감지하고 그에 따라 검사 경로를 조정합니다:

모니터 모드가 활성화되어 있으면 일일 검사를 건너뛰고 대신 모니터링 이벤트에 대한 일일 보고서가 발행됩니다.

사용자 지정 검사 경로를 사용하려면 후크 파일 /usr/local/maldetect/cron/custom.cron을 사용하세요. cron에 특화된 구성 재정의에는 /etc/sysconfig/maldet(RHEL) 또는 /etc/default/maldet(Debian) 또는 /usr/local/maldetect/cron/conf.maldet.cron을 사용하세요.

주간 watchdog 스크립트(/etc/cron.weekly/maldet-watchdog)는 기본 cron이 손상되었거나 오래된 경우 독립적인 대체 서명 업데이트를 제공합니다.


7. Inotify 모니터링

커널 inotify, 다이제스트 알림 및 슈퍼바이저 관리를 통한 실시간 파일 모니터링.

실시간 파일 모니터링은 커널 inotify 서브시스템을 사용하여 파일 생성, 수정 및 이동 이벤트를 감지합니다. CONFIG_INOTIFY_USER가 포함된 커널이 필요합니다(모든 최신 커널에서 표준).```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:~
**작동 방식:**

`maldet -m`은 기본적으로 포그라운드에서 감독(supervisor) 프로세스를 실행합니다. 감독 프로세스는 `inotifywait` 자식 프로세스를 관리하며, 크래시 복구, 설정 리로드, 요약(digest) 알림을 처리합니다. `-b`를 사용하면 감독 프로세스를 데몬화하고 즉시 복귀합니다.

1. `monitor_init()`는 모니터링 대상 경로 아래의 모든 파일에 inotify 감시(watch)를 설정합니다.
2. 파일 이벤트는 큐에 쌓이고 `inotify_sleep`초마다 일괄 스캔됩니다(기본값: 15).
3. 설정은 `inotify_reloadtime`초마다 다시 로드됩니다(기본값: 3600).
4. 커널의 `max_user_watches`와 `max_user_instances`는 최적의 성능을 위해 자동 조정됩니다.
5. `inotifywait`가 크래시되면 감독 프로세스는 지수 백오프(2, 4, 8, 16, 32초)로 이를 재시작합니다. 3회 연속 실패 후에는 감독 프로세스가 종료됩니다.

**요약 알림(Digest alerts)**은 `digest_interval`에 설정된 간격(기본값: `24h`)으로 주기적으로 전송됩니다. 마지막 요약 이후 적중 횟수가 `digest_escalate_hits`를 초과하면 즉시 에스컬레이션 알림이 전송됩니다(기본값: `0`, 비활성화).

**추가 경로(Additive paths):** `conf.maldet`을 편집하지 않고 추가 경로를 감시하려면 `monitor_paths_extra`가 참조하는 파일(기본값: `/usr/local/maldetect/monitor_paths.extra`)에 한 줄에 하나씩 추가하십시오. 이 항목들은 설정이 리로드될 때마다 기본 감시 목록과 병합됩니다.

`users` 모드를 사용할 때는 `inotify_docroot`(기본값: `public_html,public_ftp`)와 일치하는 하위 디렉터리만 모니터링되며, 시스템 임시 디렉터리인 `/tmp`, `/var/tmp`, `/dev/shm`도 함께 모니터링됩니다.

**무시 파일(inotify):** 모니터링 제외 항목은 두 파일을 병합합니다 — 사용자 소유의 `/usr/local/maldetect/ignore_inotify`와 LMD 관리형 `/usr/local/maldetect/internals/ignore_inotify.defaults`입니다. 두 파일 모두 줄 단위로 구분되며 `#` 주석과 빈 줄을 지원합니다. 사용자 소유 `ignore_inotify`는 기본적으로 POSIX ERE(확장 정규식)를 허용합니다 — 앵커(`^`, `$`)와 와일드카드(`.*`, `.+`)가 작동합니다. 정규식 메타문자를 포함하는 리터럴 경로를 제외하려면 항목 앞에 `literal:`을 붙이십시오(예: `literal:/tmp/app.cache`). LMD 관리형 `ignore_inotify.defaults`는 리터럴 부분 문자열로 취급되며, 선별된 항목은 로드 시 자동으로 이스케이프됩니다. 기본 파일은 LMD 업그레이드 때마다 덮어쓰여지므로 사이트별 제외 항목은 `ignore_inotify`에만 추가하십시오.

---

## 8. 시그니처 시스템

시그니처 유형, 명명 규칙, 업데이트 및 사용자 정의 규칙 파일.

LMD는 다섯 가지 시그니처 유형을 제공합니다:

| 유형 | 파일 | 형식 | 개수 |
|------|------|--------|-------|
| MD5 해시 | `sigs/md5v2.dat` | `HASH:SIZE:{MD5}sig.name.N` | ~14,801 |
| SHA-256 해시 | `sigs/sha256v2.dat` | `HASH:SIZE:{SHA256}sig.name.N` | CDN |
| HEX 패턴 | `sigs/hex.dat` | `HEXSTRING:{HEX}sig.name.N` | ~2,054 |
| 복합 시그니처 | `sigs/csig.dat` | `SUBSIG1\|\|SUBSIG2:signame` | CDN |
| YARA 규칙 | `sigs/rfxn.yara` | YARA 구문 | ~783규칙 |
| 컴파일된 YARA | `sigs/compiled.yarc` | `yarac` 출력 | 선택 사항 |

ClamAV 호환 시그니처도 유지 관리됩니다:
- `sigs/rfxn.hdb` — ClamAV MD5 형식
- `sigs/rfxn.ndb` — ClamAV HEX 형식
- `sigs/rfxn.hsb` — ClamAV SHA-256 형식 (ClamAV >= 0.97 필요)

**시그니처 명명 규칙:** `{TYPE}category.name.variant_number`

카테고리는 다음을 포함합니다: `bin.`(바이너리), `c.`(C 언어), `exp.`(익스플로잇), `php.`(PHP), `js.`(JavaScript), `perl.`(Perl), `html.`(피싱), `base64.inject.`, `gzbase64.`

**스캔 보고서의 적중 접두사:**

| 접두사 | 출처 |
|--------|--------|
| `{MD5}` | MD5 해시 일치(1단계) |
| `{SHA256}` | SHA-256 해시 일치(1단계) |
| `{HEX}` | HEX 패턴 일치(2단계) |
| `{CSIG}` | 복합 시그니처 일치(2.5단계) |
| `{SA}` | 통계 분석(문자열 길이) |
| `{YARA}` | 네이티브 YARA 스캔 (`scan_yara=1`) |
| `{CAV}` | ClamAV 엔진 (clamd/clamscan) |

### 8.1 시그니처 업데이트

시그니처는 cron 작업 또는 수동으로 매일 업데이트됩니다:```bash
maldet -u            # update signatures
maldet -u --force    # force update even if current

8.2 사용자 지정 서명

사용자 지정 서명은 세 가지 형식으로 추가할 수 있으며, 모든 형식은 업그레이드 후에도 유지됩니다.

원격 가져오기 URL은 서명 업데이트 중 자동 다운로드를 위해 구성할 수 있습니다.


9. 격리 및 정리

악성코드에 감염된 파일을 격리, 복원 및 정리합니다.

격리된 파일은 권한이 000으로 설정된 /usr/local/maldetect/quarantine/ 아래에 저장됩니다. 원래 경로, 소유자, 권한 및 수정 시간은 전체 복원을 위해 /usr/local/maldetect/sess/quarantine.hist에 기록됩니다.```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:~
**격리 파일 이름 지정:** `FILENAME.INODE` (예: `config.php.23754`)

비-root 스캔(예: ModSecurity2 업로드 스캔)의 경우, 격리 데이터는 `/usr/local/maldetect/pub/USERNAME/quar/` 아래에 저장됩니다. `-U` 플래그를 사용하여 비-root 격리와 상호작용하십시오:```bash
maldet -U nobody -s 112012-0032.13771

9.1 클리너 규칙

클리너 함수는 clean/ 디렉터리에서 시그니처 이름을 가진 스크립트를 찾습니다. 각 스크립트는 감염된 파일 경로를 인자로 전달받으며 악성 콘텐츠를 제거해야 합니다. 정리 후 파일은 다시 스캔되며, 여전히 탐지되면 클린은 FAILED로 표시됩니다.

시그니처 php.cmdshell.r57에 대한 클린 규칙을 만들려면 clean/php.cmdshell.r57 파일을 추가하고 sed -i와 같은 명령을 적절한 패턴과 함께 작성하면 됩니다. 성공적인 클린은 파일을 원래 경로, 소유자, 권한으로 복원합니다.

클리너는 격리(quarantine)의 하위 기능입니다. 클린이 실행되려면 파일이 격리되어야 하며(또는 -n 사용), 그래야 정리가 실행됩니다.


10. 후크 스캐닝

ModSecurity, FTP, Exim 및 사용자 정의 통합을 위한 서비스 후크 API.

LMD는 통합된 hookscan.sh API를 통해 여러 서비스에 대한 실시간 파일 스캐닝을 제공합니다. 단일 스크립트가 ModSecurity, pure-ftpd, ProFTPD, Exim 및 일반(사용자 정의) 통합에 대한 모드 디스패치를 처리합니다.

후크 스캔 탐지는 스캔별 세션 파일을 생성하는 대신 순환 히트 로그(hook.hits.log)에 기록됩니다. 탐지 항목은 주기적 요약 알림에 포함되며 maldet --report hooks를 통해 확인할 수 있습니다.

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:~
악성 업로드는 deny 작업으로 거부되고 ModSecurity 감사 로그에 기록됩니다. 모드 인수는 필요하지 않습니다. `hookscan.sh`는 이전 버전과의 호환성을 위해 기본적으로 ModSecurity 모드로 동작합니다. ModSecurity v2와 v3(libmodsecurity) 모두 동일한 `popen()` 계약을 사용합니다.

### 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

pure-ftpd가 --with-uploadscript로 컴파일되어 있어야 합니다. 모드는 UPLOAD_VUSER 환경 변수를 통해 자동 감지됩니다. 감염된 파일은 업로드 후 격리됩니다(fire-and-forget — 업로드를 차단할 수는 없고 사후 처리만 가능합니다).

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 ``` 참고: `mod_exec`는 스크립트 종료 코드와 관계없이 항상 `PR_DECLINED`를 반환합니다 — 업로드는 이 훅으로 차단할 수 없습니다. LMD는 업로드 완료 후 감염된 파일을 격리합니다.

10.4 Exim```

exim.conf

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

root@kitploit:~
콜론으로 구분된 세 개의 필드는 명령 템플릿, 트리거 정규식, 이름 캡처 정규식입니다. 멀웨어가 감지되면 Exim은 캡처된 시그니처 이름을 사용하여 메시지를 거부합니다.

### 10.5 일반 API

커스텀 통합, 일괄 스캐닝 및 타사 사용을 위한:```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

배치 출력은 파일당 하나의 STATUS: PATH 줄을 생성합니다. 종료 코드는 최악의 결과가 우선합니다.

10.6 구성

후크 스캔 구성은 conf.maldet.hookscan에 저장됩니다(선택 사항 — 기본값은 스크립트에 내장되어 있습니다). 참조 기본값은 conf.maldet.hookscan.default에 있습니다.

주요 변수:

활성화한 후 maldet --mkpubpaths를 실행하여 루트가 아닌 스캔 작업을 위한 사용자별 데이터 디렉터리를 생성하세요.

10.7 테스트 알림

알림 전달 채널이 올바르게 구성되었는지 확인합니다:```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]` 접두사가 붙습니다. 채널 격리를 통해 지정된 채널에서만 알림이 발생합니다.

### 10.8 Hook 다이제스트

Hook 탐지는 주기적인 다이제스트 알림으로 요약됩니다:```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

The daily cron job automatically fires a hook digest when new detections exist (conf.maldet의 cron_digest_hook=1에 의해 제어됨).

10.9 CXS 마이그레이션

CXS를 LMD로 교체하는 관리자를 위한 내용:


통합

LMD를 외부 도구, 자동화 파이프라인 및 타사 스캐너와 연결하기.

ClamAV

LMD 시그니처는 install.sh에 의해 ClamAV 데이터 디렉터리에 자동으로 심볼릭 링크되어 이중 엔진 적용 범위를 제공합니다. 자동 ClamAV 감지를 위해 scan_clamscan=auto(기본값)로 설정하세요. 엔진 선택 및 시그니처 검증은 3.8 ClamAV 통합을 참조하세요.

ELK 스택

enable_statistic=1을 elk_host, elk_port, elk_index와 함께 활성화하면 스캔 이벤트를 Elasticsearch로 스트리밍할 수 있습니다. 3.10 ELK 통합을 참조하세요.

알림 채널

LMD는 이메일 외에도 4가지 알림 전달 채널을 지원합니다: Slack(Block Kit), Telegram(MarkdownV2), Discord(웹훅 임베드), 그리고 로컬 MTA가 없는 환경을 위한 SMTP 릴레이입니다. 구성은 3.2 알림을 참조하세요.

JSON 보고서

CI/CD 및 자동화를 위한 기계 판독 가능한 스캔 출력:```bash maldet --format json -e SCANID # JSON report to stdout maldet --json-report list # list all scans as JSON

root@kitploit:~
v1.2 JSON 스키마에 대해서는 `man maldet`(1)을 참조하십시오(`-e SCANID`와 `-e list` 둘 다에서 일관된 `{schema_version, scanner, host, reports[]}` 형태입니다).

### 호스팅 패널 탐지

일일 cron은 12개 이상의 호스팅 제어 패널을 자동으로 탐지하여 스캔 경로를 조정합니다. 전체 패널 매트릭스는 [6. Cron Daily](#6-cron-daily)를 참조하십시오.

---

## 라이선스

LMD는 Ryan MacDonald [[email protected]]에 의해 자원봉사 기반으로 개발되고 지원됩니다.

Linux Malware Detect(LMD)는 GNU General Public License(GPL) v2에 따라 배포되며
사용 또는 재배포에 제한이 없습니다. 저작권 고지와 GNU GPL은
`COPYING.GPL` 파일에 포함되어 있습니다. 파생 저작물에 대해서는 GNU GPL이 요구하는 대로
저작자 표시를 해야 합니다.

---

## 지원

LMD 소스 저장소는 https://github.com/rfxn/linux-malware-detect 에 있습니다.

버그, 기능 요청, 일반적인 질문은 GitHub 이슈로 등록하거나 [email protected]으로 보내실 수 있습니다.

공식 프로젝트 페이지는 https://www.rfxn.com/projects/linux-malware-detect/ 입니다.
도구 다운로드
변수용도기본값
quarantine_hits감지된 악성코드를 자동으로 격리합니다0
quarantine_clean격리된 파일에서 악성코드 제거를 시도합니다0
quarantine_suspend_user감지 시 cPanel 계정을 일시 중지하거나 셸 접근을 해지합니다0
quarantine_suspend_user_minuid일시 중지할 최소 UID (시스템 계정 보호)500
quarantine_on_error스캔 엔진이 오류를 반환할 때 파일을 격리합니다1
변수용도기본값
default_monitor_mode모니터의 시작 모드 (users 또는 파일 경로); 비어 있으면 비활성화""
inotify_base_watches사용자 경로당 기본 파일 감시 수16384
inotify_minuid사용자 홈 모니터링을 위한 최소 UID500
inotify_docroot사용자 홈에서 모니터링할 하위 디렉터리public_html,public_ftp
inotify_sleep스캔 배치 사이의 대기 시간(초)15
inotify_reloadtime구성 재로드 사이의 시간(초)3600
inotify_cpunice모니터 프로세스의 nice 우선순위18
inotify_ionice모니터 프로세스의 IO 우선순위6
inotify_cpulimit모니터의 하드 CPU 제한 (0=비활성화)0
digest_interval주기적 요약 알림 간격: 24h, 30m, 7d, 0 (비활성화)24h
digest_escalate_hits즉시 에스컬레이션 알림을 위한 감지 수 임계값; 0 = 비활성화0
cron_digest_hookcron.daily 훅 요약 정리를 활성화합니다 (새 훅 감지가 있으면 요약을 트리거)1
monitor_paths_extra추가 inotify 감시 경로가 줄로 구분된 파일 경로/usr/local/maldetect/monitor_paths.extra
monitor_scan_owner_filters모니터 모드에서 scan_ignore_root/scan_ignore_user/scan_ignore_group 소유권 필터를 적용합니다; 0 (기본값) = 끔 — 모니터가 소유자와 관계없이 모든 파일을 스캔합니다 (1.6.6 동작을 복원하고 issue #485를 수정); 1 = 켬 — 소유권 필터를 적용합니다0
변수용도기본값
post_scan_hook훅 스크립트 경로 (root 소유, 전 세계 쓰기 불가). -co로는 설정할 수 없습니다""
post_scan_hook_format출력 단계: args, file, json (누적)args
post_scan_hook_exec실행 모드: async (비차단), sync (대기)async
post_scan_hook_timeoutSIGTERM 전 대기 시간(초) (0=비활성화, 최소 5)60
post_scan_hook_on스캔 유형 필터: all, cli, digestall
post_scan_hook_min_hits실행할 최소 감지 수 (0=항상)1
변수용도기본값
scan_clamd_remote스캔에 원격 clamd 서버 사용0
remote_clamd_config원격 clamd 구성 파일 경로/etc/clamd.d/clamd.remote.conf
remote_clamd_max_retry원격 clamd 실패 시 최대 재시도 횟수5
remote_clamd_retry_sleep재시도 사이 대기 시간(초)3
변수용도기본값
enable_statisticELK 스택 통계 수집 활성화0
elk_hostELK 입력용 TCP 호스트—
elk_portELK 입력용 TCP 포트—
elk_indexElasticsearch 인덱스 이름—
패널검사 경로
cPanel/home?/?/public_html/ (+ addon/서브도메인 문서 루트)
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/
유형파일형식
사용자 지정 MD5sigs/custom.md5.datmd5v2.dat와 동일
사용자 지정 SHA-256sigs/custom.sha256.datsha256v2.dat와 동일
사용자 지정 HEXsigs/custom.hex.dathex.dat와 동일
사용자 지정 CSIGsigs/custom.csig.datcsig.dat와 동일
사용자 지정 YARAsigs/custom.yaraYARA 규칙 구문
사용자 지정 YARA (드롭인)sigs/custom.yara.d/*.yarYARA 규칙 파일
컴파일된 YARAsigs/compiled.yarcyarac 출력 (선택 사항)
변수용도
sig_import_md5_url사용자 지정 MD5 서명용 URL
sig_import_sha256_url사용자 지정 SHA-256 서명용 URL
sig_import_hex_url사용자 지정 HEX 서명용 URL
sig_import_csig_url사용자 지정 복합 서명용 URL
sig_import_yara_url사용자 지정 YARA 규칙용 URL
변수기본값설명
hookscan_timeout30스캔 제한 시간(초)
hookscan_fail_open1스캔 오류 시 파일 허용(0 = 차단)
hookscan_escalate_hits0시간당 N회 후크 적중 시 즉시 경고(0 = 비활성화)
hookscan_service_usersapache,nginx,...홈 디렉터리 제한에서 면제되는 서비스 UID
hookscan_user_rate_limit60루트가 아닌 호출자의 시간당 최대 스캔 수
hookscan_user_show_signames1루트가 아닌 호출자에게 시그니처 이름 표시
hookscan_list_max_bytes1048576목록 파일 최대 크기(1MB)
hookscan_list_max_entries10000파일 목록의 최대 항목 수
CXS 구성 요소LMD 대응
cxscgi.shhookscan.sh modsec
cxsftp.shhookscan.sh ftp
ProFTPD mod_exec to cxshookscan.sh proftpd
cxs --filehookscan.sh generic
cxswatchmaldet --monitor
/etc/cxs/cxs.confconf.maldet.hookscan