ClamAV로 리눅스 서버의 악성코드 검사 체계 구성하기

ClamAV의 구성 요소와 설치 명령, 서버별 통합 방식, 성능 설정 및 운영상 한계를 정리한 리눅스 서버 보안 가이드

2026-08-14 · 최초 발행 2025-06-04

서버 경로마다 다른 방식으로 쓰는 ClamAV

ClamAV는 리눅스 환경에서 악성코드를 탐지하고 방어하는 오픈소스 안티바이러스 소프트웨어다. 이메일 게이트웨이, 웹 서버의 업로드 경로, 파일 서버처럼 외부 파일이 유입되거나 공유되는 인프라에서 특히 활용할 수 있다.

GPL 라이선스로 배포되며 소스 코드가 공개되어 있다. 리눅스 외에 Windows와 macOS에서도 사용할 수 있고, CLI·데몬 모드·GUI를 제공한다. 온액세스 스캐너를 이용하면 파일 시스템 변경 시 검사를 수행할 수 있으며, 바이러스 시그니처 데이터베이스는 정기적으로 갱신된다.

스캔과 업데이트를 나누는 구성

ClamAV는 요청 시 실행하는 스캐너, 상주 데몬, 정의 업데이트 도구, 메일 필터 구성 요소로 구성된다.

  • clamscan은 파일 또는 디렉터리를 필요할 때 검사하는 기본 명령줄 스캐너다. 단일 스캔에 적합하다.
  • clamd는 백그라운드에서 지속 실행되는 데몬 프로세스로, 네트워크 요청도 처리할 수 있다.
  • freshclam은 바이러스 데이터베이스를 갱신하고 자동 업데이트 스케줄링을 지원한다.
  • clamav-milter는 Sendmail과 연동해 이메일을 검사하는 메일 필터 구성 요소다.
ClamAV 시스템clamscanclamdfreshclamclamav-milter파일/디렉토리 스캔지속적 백그라운드 스캔바이러스 DB 업데이트이메일 필터링

패키지 설치 후 정의 파일 갱신

Debian이나 Ubuntu 계열에서는 다음 패키지로 스캐너와 데몬을 설치한다.

sudo apt update
sudo apt install clamav clamav-daemon

CentOS 또는 RHEL 계열에서는 EPEL 저장소와 관련 패키지를 설치한다.

sudo yum install epel-release
sudo yum install clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-server-systemd

설치 후에는 freshclam으로 바이러스 데이터베이스를 갱신한다.

sudo freshclam

필요한 경로를 재귀적으로 검사하고, 감염 파일 표시·삭제·로그 기록을 명령 옵션으로 선택할 수 있다.

# 특정 디렉토리 스캔
clamscan -r /home/user

# 감염된 파일만 표시
clamscan -r --infected /var/www

# 감염된 파일 자동 삭제
clamscan -r --infected --remove /path/to/scan

# 스캔 결과 로그 파일로 저장
clamscan -r /path/to/scan --log=/path/to/logfile.log

이메일, 웹 업로드, 공유 스토리지에 연결하기

메일 서버에서는 첨부파일이 전달되기 전에 ClamAV 검사를 거치도록 구성할 수 있다. Postfix와 연동해 이메일 첨부파일을 자동 검사하고, Amavisd-new를 스팸 필터링과 함께 사용할 수 있다. Sendmail 환경에서는 Milter 인터페이스가 통합 지점이 된다.

YesNo이메일 클라이언트메일 서버ClamAV 스캔바이러스 검출?격리 또는 삭제메일 전달

웹 서버에서는 사용자가 올리는 파일을 검사하고, 웹 서버 디렉터리를 정기적으로 스캔하는 방식으로 적용한다. 온액세스 기능을 사용하면 파일 시스템 변경을 실시간으로 모니터링할 수 있다.

파일 서버에서는 Samba를 통해 Windows 클라이언트용 검사 기능을 제공하거나, NFS 공유 콘텐츠를 보호하는 데 활용할 수 있다. 백업과 아카이브 데이터의 무결성을 검증하는 경로에도 적용할 수 있다.

서버 자원과 운영 주기에 맞춘 설정

clamd.conf에서는 스캔에 사용할 스레드 수, 디렉터리 재귀 깊이, 파일 크기와 스캔 데이터 크기를 제한할 수 있다.

# clamd.conf 최적화 설정 예시
MaxThreads 10           # 스캔에 사용할 최대 스레드 수
MaxDirectoryRecursion 20 # 디렉토리 재귀 탐색 깊이 제한
MaxFileSize 100M        # 스캔할 최대 파일 크기
MaxScanSize 150M        # 단일 파일 내에서 스캔할 최대 데이터 양

정기 검사는 시스템 부하가 낮은 시간대로 예약할 수 있다. 다음 설정은 매일 새벽 3시에 /home/var/www를 검사하고 결과를 로그에 남긴다.

# crontab 예시 (매일 새벽 3시에 스캔)
0 3 * * * /usr/bin/clamscan -r --infected --remove /home /var/www > /var/log/clamav/daily_scan.log

탐지 결과를 격리 경로로 옮기고 관리자에게 이메일을 보내는 방식도 가능하다.

# 바이러스 탐지 시 이메일 알림 스크립트 예시
clamscan -r /path/to/scan --infected --move=/quarantine | \
grep FOUND | mail -s "Virus detected on server" admin@example.com

시그니처 탐지 범위를 넘어서기

ClamAV는 시그니처 기반 탐지 방식이므로 제로데이 공격에 대한 대응에는 한계가 있다. 전체 시스템 스캔은 상당한 시스템 리소스를 소비할 수 있고, 상용 안티바이러스 제품보다 낮은 탐지율을 보일 수 있다.

따라서 방화벽, IDS/IPS, 엔드포인트 보호 솔루션과 함께 다층 방어 전략의 일부로 두는 편이 적절하다. 바이러스 데이터베이스와 ClamAV 엔진을 최신 버전으로 유지하고, 휴리스틱 스캔을 활용해 시그니처 기반 탐지의 범위를 보완할 수 있다.

운영 환경에서의 적용 모습

중소기업 A사는 ClamAV를 메일 서버와 통합해 모든 인바운드 및 아웃바운드 이메일을 스캔했다. Amavis와 SpamAssassin을 함께 구성해 스팸 필터링과 바이러스 검사를 수행했고, 연간 20만 건 이상의 악성 첨부파일을 차단했다.

웹 호스팅 제공업체 B사는 수천 개의 고객 웹사이트를 호스팅하는 환경에 ClamAV를 도입했다. 파일 업로드 시 실시간 스캔과 매일 밤 전체 웹 디렉터리 스캔을 수행해 웹셸과 악성 스크립트를 탐지했으며, 해킹 사고가 30% 이상 감소했다.

교육기관 C대학은 수만 명의 학생과 교직원이 사용하는 파일 서버에 온액세스 스캔을 적용했다. 파일 시스템 변경을 실시간으로 모니터링하고 감염 파일을 즉시 격리해 랜섬웨어와 같은 위협으로부터 중요 학술 데이터를 보호하고 있다.

ClamAV리눅스 보안악성코드 탐지서버 보안오픈소스 백신