
다중 엔진 Linux 멀웨어 스캐너로, 5단계 탐지(MD5, HEX 패턴, YARA, ClamAV, 통계 기반), 실시간 inotify 모니터링, 격리 및 다중 채널 알림을 제공합니다.
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에 따라 라이선스가 부여됨
43배 더 빠른 네이티브 스캔 엔진 — 네이티브 스캐닝 파이프라인이 배치 병렬 처리를 통해 완전히 재작성되었습니다. 약 10,000개 파일 대상 실사용 벤치마크:
| 버전 | 실행 시간 | 파일 수 | 탐지 수 |
|---|---|---|---|
| v1.6.6 | 1,217초 | 9,931 | 35 |
| v2.0.1 | 28초 | 9,931 | 35 |
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를 참조하세요.
./install.sh
maldet -a /home/?/public_html
maldet -r /home/?/public_html 2
maldet -co scan_yara=1 -a /home/?/public_html
maldet -q SCANID
maldet -m users
maldet -u
---
## 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 심볼릭 링크를 생성합니다./etc/cron.daily/maldet에 설치합니다.conf.maldet), 사용자 정의 시그니처 및 무시 파일을 보존합니다.이전 설치본은 /usr/local/maldetect.bk{PID}에 저장되며, maldetect.last 심볼릭 링크는 가장 최근 백업을 가리킵니다.
기본 경로:
/usr/local/maldetect/usr/local/sbin/maldet/etc/cron.daily/maldet/usr/lib/systemd/system/maldet.service사용자가 설정할 수 있는 모든 옵션과 기본값입니다. 전체 참조는 man maldet(1)을 참조하십시오.
기본 구성 파일은 /usr/local/maldetect/conf.maldet입니다. 모든 옵션은 쉽게 구성할 수 있도록 주석 처리되어 있습니다. 별도로 명시되지 않는 한 옵션은 비활성화/활성화에 0/1을 사용합니다.
구성은 런타임에 -co 플래그를 사용하여 재정의할 수도 있습니다:```bash
maldet -co quarantine_hits=1,email_addr=[email protected] -a /home
### 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 알림