ClamAV로 리눅스 서버의 악성코드 검사 체계 구성하기
ClamAV의 구성 요소와 설치 명령, 서버별 통합 방식, 성능 설정 및 운영상 한계를 정리한 리눅스 서버 보안 가이드
2026-08-14 · 최초 발행 2025-06-04
서버 경로마다 다른 방식으로 쓰는 ClamAV
ClamAV는 리눅스 환경에서 악성코드를 탐지하고 방어하는 오픈소스 안티바이러스 소프트웨어다. 이메일 게이트웨이, 웹 서버의 업로드 경로, 파일 서버처럼 외부 파일이 유입되거나 공유되는 인프라에서 특히 활용할 수 있다.
GPL 라이선스로 배포되며 소스 코드가 공개되어 있다. 리눅스 외에 Windows와 macOS에서도 사용할 수 있고, CLI·데몬 모드·GUI를 제공한다. 온액세스 스캐너를 이용하면 파일 시스템 변경 시 검사를 수행할 수 있으며, 바이러스 시그니처 데이터베이스는 정기적으로 갱신된다.
스캔과 업데이트를 나누는 구성
ClamAV는 요청 시 실행하는 스캐너, 상주 데몬, 정의 업데이트 도구, 메일 필터 구성 요소로 구성된다.
clamscan은 파일 또는 디렉터리를 필요할 때 검사하는 기본 명령줄 스캐너다. 단일 스캔에 적합하다.clamd는 백그라운드에서 지속 실행되는 데몬 프로세스로, 네트워크 요청도 처리할 수 있다.freshclam은 바이러스 데이터베이스를 갱신하고 자동 업데이트 스케줄링을 지원한다.clamav-milter는 Sendmail과 연동해 이메일을 검사하는 메일 필터 구성 요소다.
패키지 설치 후 정의 파일 갱신
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 인터페이스가 통합 지점이 된다.
웹 서버에서는 사용자가 올리는 파일을 검사하고, 웹 서버 디렉터리를 정기적으로 스캔하는 방식으로 적용한다. 온액세스 기능을 사용하면 파일 시스템 변경을 실시간으로 모니터링할 수 있다.
파일 서버에서는 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대학은 수만 명의 학생과 교직원이 사용하는 파일 서버에 온액세스 스캔을 적용했다. 파일 시스템 변경을 실시간으로 모니터링하고 감염 파일을 즉시 격리해 랜섬웨어와 같은 위협으로부터 중요 학술 데이터를 보호하고 있다.