안티바이러스 · 2 min read · Sep 22, 2025

데비안에서 Clamav를 구성하여 매일 시스템 스캔 및 이메일 알림 받기

오늘은 ClamAV 안티바이러스 소프트웨어와 이를 사용하여 서버나 데스크탑을 보호하는 방법을 살펴보겠습니다. ClamAV를 구성하여 모든 시스템, 웹사이트 및 이메일 파일을 매일 스캔하고 바이러스가 감지될 경우 이메일로 알림을 받는 방법을 보여드리겠습니다. ClamAV를 모르는 분들을 위해 설명하자면, ClamAV는 모든 리눅스 배포판에서 사용할 수 있는 오픈 소스 안티바이러스 소프트웨어 솔루션입니다. 이 가이드의 요구 사항 중 하나는 서버에 이미 작동하는 메일 서비스가 있어야 한다는 것입니다.

이 튜토리얼은 데비안 시스템에서 잘 작동하지만, 우분투 시스템에서도 호환되어야 합니다.

설치 및 구성

먼저 Clamav와 이메일 알림을 보내는 도구를 설치하는 명령을 실행합니다.

apt-get update && apt-get install clamav clamav-freshclam heirloom-mailx

바이러스 정의가 업데이트될 것임을 확인하려면 다음 명령을 실행하세요:

service ClamAV-freshclam start

기본적으로 ClamAV는 매시간 새로운 바이러스 정의를 확인합니다. 이 매개변수를 변경하려면 /etc/clamav/freshclam.conf 파일을 편집할 수 있습니다.

nano /etc/clamav/freshclam.conf

다음 줄을 변경하세요:

# Check for new database 24 times a day
Checks 24

to

# Check for new database 1 times a day
Checks 1

이 경우, 검사는 하루에 한 번만 수행됩니다. 하루에 24번으로 두는 것을 추천합니다.

바이러스 정의를 수동으로 업데이트하려면 다음을 실행할 수 있습니다:

freshclam -v

알림 활성화 및 스캔 예약

다음 스크립트에서 DIRTOSCAN 변수를 수정하여 스캔할 디렉토리를 지정합니다.

파일 /root/clamscan_daily.sh를 생성합니다.

nano /root/clamscan_daily.sh

그리고 다음 코드를 붙여넣습니다:

#!/bin/bash
LOGFILE="/var/log/clamav/clamav-$(date +'%Y-%m-%d').log";
EMAIL_MSG="로그 파일을 첨부했습니다.";
EMAIL_FROM="[email protected]";
EMAIL_TO="[email protected]";
DIRTOSCAN="/var/www /var/vmail";

for S in ${DIRTOSCAN}; do
 DIRSIZE=$(du -sh "$S" 2>/dev/null | cut -f1);

 echo ""$S" 디렉토리의 매일 스캔을 시작합니다. 스캔할 데이터 양은 "$DIRSIZE"입니다.";

 clamscan -ri "$S" >> "$LOGFILE";

 # "감염된 라인"의 값을 가져옵니다.
 MALWARE=$(tail "$LOGFILE"|grep Infected|cut -d" " -f3);

 # 값이 0이 아니면 로그 파일을 첨부하여 이메일을 보냅니다.
 if [ "$MALWARE" -ne "0" ];then
 # 아래에서 heirloom-mailx 사용
 echo "$EMAIL_MSG"|mail -a "$LOGFILE" -s "악성코드 발견" -r "$EMAIL_FROM" "$EMAIL_TO";
 fi 
done

exit 0

두 변수 EMAIL_FROM과 EMAIL_TO를 원하는 이메일 주소로 변경하고, DIRTOSCAN 변수에서 스캔할 디렉토리 목록을 변경할 수 있습니다.

파일을 저장하려면 ( ctrl+o )를 누르고, 다음과 같이 권한을 변경합니다:

chmod 0755 /root/clamscan_daily.sh

이제 /etc/cron.daily/ 디렉토리에 심볼릭 링크를 생성하여 스크립트의 매일 실행을 활성화합니다:

ln /root/clamscan_daily.sh /etc/cron.daily/clamscan_daily

이제 하루에 한 번 이메일 알림을 받을 수 있어야 하며, 이는 메일 파일이나 웹사이트에서 바이러스나 악성코드가 발견될 경우입니다. ClamAV는 또한 PHP 파일의 내용을 스캔하여 악성코드나 기타 잠재적으로 악성 콘텐츠의 존재를 확인합니다.

스크립트 테스트

이 구성에서는 ClamAV가 발견된 바이러스에 대해 아무런 조치를 취하지 않으며, 단지 보고만 합니다. 그러니 걱정하지 마세요, 아무것도 삭제되거나 변경되지 않습니다. 스크립트를 테스트하려면 다음을 실행하세요:

/root/clamscan_daily.sh

명령이 완료된 후 두 가지 가능한 상태가 있습니다:

  • Clamav가 바이러스를 발견했습니다: 이 경우, 첨부된 로그와 함께 받은 편지함에 이메일을 받게 됩니다.

  • Clamav가 아무것도 발견하지 않았거나 문제가 발생했습니다. 이 경우, 로그에서 무엇을 말하는지 확인해야 합니다. 로그를 확인하려면 /var/log/clamav/에서 확인해야 합니다.

어떤 내용을 읽어야 하는지 알기 위해 작은 로그 예제를 첨부하겠습니다:

Starting a daily scan of /var/www directory. Amount of data to be scanned is 36G.
Mon Jun 15 13:17:14 CEST 2015

----------- SCAN SUMMARY -----------
Known viruses: 3841819
Engine version: 0.98.4
Scanned directories: 47944
Scanned files: 316827
Infected files: 0
Data scanned: 17386.77 MB
Data read: 34921.59 MB (ratio 0.50:1)
Time: 1432.747 sec (23 m 52 s)
Mon Jun 15 13:41:06 CEST 2015
------------------------------------------------------
------------------------------------------------------
Starting a daily scan of /var/vmail directory. Amount of data to be scanned is 7.0G.
Mon Jun 15 13:41:27 CEST 2015
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1386677288.M361286P15524.domain.tld,W=2675,S=2627:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1371451873.M697795P19793.domain.tld,W=5421,S=5353:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1390203133.M981287P17350.domain.tld,W=3223,S=3157:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1386677288.M361285P15524.domain.tld,W=2270,S=2227:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND

이 경우, ClamAV가 [email protected]에서 피싱 이메일을 발견했으므로, 이 경우에도 이메일을 받게 됩니다.

이상입니다!

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.