강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
Clam AntiVirus를 이용한 메일서버 바이러스 차단
조회 : 9,365  


자료 : 한국정보보호진흥원(KISA)

 

1. 개요
기업 기관의 인터넷사용자가 이메일을 이용하는 방법은 주요 웹메일 사이트 및 ISP가 제공하
는 메일서비스를 이용하는 방법과 기업․기관 내 전산담당자가 구축한 자체 메일서버를 이용하는
방법이 있다. 주요 웹메일 사이트 및 ISP가 운용하는 메일서비스는 스팸 차단 솔루션 및 이메일로
전파되는 악성코드를 차단하고 더 이상의 확산을 방지하기 위한 기능을 어느 정도 적용하고 있다.
물론 기업․기관 역시 바이러스월 등의 솔루션 도입으로 이메일로 전파되는 악성코드를 사전에
차단하고 있다. 하지만 대다수의 기업․기관은 이러한 솔루션의 도입이 미진한 상태이다.
최근 발견되는 악성코드의 전파 경로는 네트워크를 통한 전파, 메일의 첨부 화일 형태로의 전
파, 기타 사용자를 악성 코드가 은닉된 사이트로 유도하여 감염 및 피해를 발생시키는 방식 등으
로 다양해지고 있다. 하지만 이메일을 통해 전파되는 악성코드의 비중은 아직도 가장 큰 비중을
차지하고 있다. 이에 따라 본고에서는 국내에 자체적으로 메일서버를 운용하는 업체 등을 이메일
로 전파되는 악성코드로부터 보호하기 위하여 메일서버용 공개 바이러스 차단 소프트웨어를 소개
하고자 한다.
Clam AntiVirus(ClamAV)는 주로 이메일로 전파되는 악성코드를 관문에서 차단하기 위해 개발
된 소프트웨어이다. ClamAV는 Tomasz Kojm에 의해 2001년에 시작된 오픈소스 프로젝트의 결과
이다. 시에는 OpenAntiVirus 프로젝트가 있었는데 설치하고 사용하기가 어려웠고 온라인업데이트
기능 등을 제대로 지원하지 않아 기능을 보완하기 위해 만들었던 것이 ClamAV의 시작이었다.
ClamAV는 GNU GPL 라이센스 버전2를 따르며, 메일서버와 연동해서 사용되는 것을 주목적으
로 하고 있다. Electric Mail와 같은 메일 서비스 제공업체가 ClamAV를 채택하여 사용하고 있다.
ClamAV를 활용하는 여러 3rd party의 노력으로 ClamAV에서 제공하는 엔진을 이용해 개인 사용
자를 위한 단독 백신(ClamWin)으로 활용하거나 Web Proxy, FTP Proxy 등과 함께 사용되어 웹
사이트, FTP 서버를 통해 전파되는 바이러스를 차단하는 수단으로도 개발, 배포되고 있다.
ClamAV의 주요 특징은 다음과 같다.
o 오픈소스 기반
- Snort 등과 같이 ClamAV는 오픈소스를 기반으로 한다.
- 오픈소스이기에 유연성이 있으며 www.sanesecurity.com/clamav에서는 비공식 Phishing 시그
너처도 제공하고 있다.
o 45,000개 이상의 패턴
- 2006년 3월 현재 45,000개 이상의 탐지 패턴을 보유하고 있다.
o 온라인 패턴 업데이트
- ClamAV 탐지 패턴은 하루에도 여러 번 업데이트되고 있다.
- 사용자는 인터넷을 통해 쉽게 업데이트된 탐지패턴을 적용할 수 있다.
o 다양한 압축 포맷 지원
- Zip, RAR, Tar, Gzip, Bzip2, MS OLE2, MS Cabinet Files, MS CHM, MS SZDD 등의 파일
압축 포맷을 지원.
- 실행 압축 포맷인 UPX, FSG, Petite 등을 지원.
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 3 -
본고에서는 메일서버를 통해 전파되는 바이러스를 효율적으로 차단하기 위한 수단으로
ClamAV를 중점적으로 살펴본다.
2. ClamAV 설치
ClamAV는 기존 메일서버에 설치되어 사용될 수 있으며, 별도의 ClamAV 메일서버를 구성하여
사용할 수 있다. 전자는 필요한 호스트 수를 하나 줄일 수 있지만, 기존 메일서버가 ClamAV에
의해 지원되지 않는 메일서버라면 사용할 수 없다는 단점이 있다. 후자는 기존 메일서버를 어떤
것을 사용하더라도 구성이 가능하다는 장점이 있지만 호스트가 하나 더 필요하다.
(그림 1) 기존 메일서버에 ClamAV를 추가한 사례
(그림 2) ClamAV를 설치한 메일서버를 별도로 구성한 사례
ClamAV는 Qmail, Postfix, Sendmail 등의 메일서버를 지원한다. 본고에서는 이 중에서
Sendmail에 설치되는 경우를 다룬다. Sendmail에 설치될 때는 메일서버인 Sendmail, 안티바이러
스인 ClamAV 외에 이 둘을 연동하기 위한 Clamav-milter, 이 세 개로 구성되는 것이 보통이다.
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 4 -
구성요소 설명
Sendmail MTA(Mail Transfer Agent)로서 메일 송수신을 담당한다.
ClamAV 웜, 바이러스 스캐닝을 하기 위한 안티바이러스 엔진이다.
Clamav-milter MTA와 안티바이러스 엔진을 연동하는 역할을 한다.
□ Sendmail의 Milter 지원 여부 확인
ClamAV를 이용하여 메일서버에 유입되는 메일을 검사하기 위해서 기본적으로 Sendmail이
Milter 기능을 지원해야 한다. Milter 기능이란 Sendmail이 외부프로그램과 소켓 기반으로 통신할
수 있도록 하는 것으로 Sendmail 8.12부터 공식적으로 지원한다. Milter는 외부 프로그램과 연동
하여 메일의 내용을 검사하고 필요에 따라서는 내용을 수정할 수 있도록 하며, 여러 가지 용도로
사용될 수 있지만 특히 바이러스 및 스팸 차단과 같이 이메일 보안을 위한 기능으로 주로 사용된
다.
Sendmail이 Milter를 지원하기 위해서는 컴파일 시에 옵션으로 Milter 기능을 포함하여야 한다.
현재 시스템에 설치된 Sendmail이 Milter 기능을 지원하는지 확인하는 방법은 다음과 같다.
prompt# sendmail -bt -d0.4 < /dev/null
Version 8.13.6
Compiled with: DNSMAP LOG MATCHGECOS MILTER MIME7TO8 MIME8TO7
만약 설치된 Sendmail이 Milter를 지원하지 않는다면 Milter 기능을 사용하기 위해 다시 컴파일
해야 한다. 혹은 Milter 기능을 지원하도록 컴파일된 바이너리 패키지를 설치하는 방법도 있지만
각 운영체제 및 버전, 배포본 종류 등에 따라 불가능한 경우도 있다.
□ Sendmail 설치
Sendmail을 컴파일하기 위해서는 우선 소스코드를 다운로드해야 한다. Sendmail 소스코드는
www.sendmail.org에서 다운로드할 수 있다. 2006년 3월 31일 기준으로 가장 최신 안정화 버전은
8.13.6이다.
① 다운로드한 파일은 다음과 같은 명령어로 적당한 디렉토리에 압축 해제한다.
prompt# tar xvfz sendmail.8.13.6.tar.gz
② sendmail 프로세스 소유주로 smmsp 사용자 계정을 생성한다.
prompt# groupadd smmsp
prompt# useradd -g smmsp smmsp
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 5 -
③ Sendmail 압축을 해제한 디렉토리로 이동하여 site.config.m4.sample 파일을 /etc/mail/site.config.m4
로 복사한다.
[user@clamav ~]# cd sendmail-8.13.6/
[user@clamav sendmail-8.13.6]# cp devtools/Site/site.config.m4.sample /etc/mail/site.config.m4
④ /etc/mail/site.config.m4 파일을 편집기로 열어 다음과 같은 설정을 확인하여 추가한다. 해당
라인은 Milter 기능을 활성화하고 Milter를 root 권한으로 실행하는 것을 방지하는 설정이다.
APPENDDEF(`confENVDEF', `-DMILTER')
APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER_ROOT_UNSAFE')
그 외 사이트 설정에 따라 필요한 내용이 있다면 /etc/mail/site.config.m4 파일에 추가한다.
⑤ sendmail 디렉토리로 이동하여 컴파일한다.
[user@clamav sendmail-8.13.6]# cd sendmail
[user@clamav sendmail]# sh Build -c -f /etc/mail/site.config.m4
⑥ sendmail-8.13.6/cf/cf/ 디렉토리로 이동하면 *.mc 템플릿이 각 운영체제 등의 환경별로 있는데
Sendmail이 설치될 환경에 가장 적합한 *.mc 파일을 sendmail.mc로 복사한다.
[user@clamav sendmail]# cd ../cf/cf/
[user@clamav cf]# cp generic-linux.mc sendmail.mc
⑦ sendmail.mc 파일을 편집기로 열어서 다음과 같은 라인을 추가한다. 이 설정은 Clamav-milter
사용을 위한 설정이다.
INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS',`clmilter')
그 외 사이트 설정에 따라 필요한 내용이 있다면 sendmail.mc 파일에 추가한다.
⑧ 다음 명령을 실행하여 /etc/mail/sendmail.cf, /etc/mail/submit.cf를 생성한다.
[user@clamav cf]# sh Build sendmail.cf
Using M4=/usr/bin/m4
rm -f sendmail.cf
...
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 6 -
[user@clamav cf]# sh Build install-cf
Using M4=/usr/bin/m4
../../devtools/bin/install.sh -c -o root -g bin -m 0444 sendmail.cf /etc/mail/sendmail.cf
../../devtools/bin/install.sh -c -o root -g bin -m 0444 submit.cf /etc/mail/submit.cf
⑨ sendmail-8.13.6/sendmail/ 디렉토리로 이동하여 다음과 같이 빌드한 결과를 설치한다.
[user@clamav cf]# cd ../../sendmail/
[user@clamav sendmail]# sh Build install
⑩ 성공적으로 설치가 끝나면 "Sendmail의 Milter 지원 여부 확인"에서와 같이 확인하여 Milter
지원 기능이 활성화되었는지 살펴본다.
□ Libmilter의 설치 여부 확인
다음과 같이 libmilter 라이브러리가 설치되어 있는지 확인한다. libmilter 라이브러리가 확인되
지 않는다면 해당 라이브러리도 설치해야 한다.
[user@clamav sendmail-8.13.6]# whereis libmilter
libmilter: /usr/lib/libmilter.a /usr/include/libmilter
□ Libmilter 설치
Libmilter는 sendmail 소스코드 압축을 해제하였던 디렉토리 하단의 libmilter에서 빌드하고 설
치할 수 있다.
[user@clamav libmilter]# sh Build
...
[user@clamav libmilter]# sh Build install
□ ClamAV의 설치
ClamAV는 www.clamav.net에서 다운로드할 수 있다. 2006년 3월 31일 기준으로 가장 최신 안
정화 버전은 0.88이다.
① ClamAV를 다운로드하여 다음과 같이 적당한 디렉토리에 압축 해제한다.
[user@clamav ~]# tar xvfz clamav-0.88.tar.gz
② ClamAV가 실행되기 위한 권한을 가진 사용자를 다음과 같이 생성한다.
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 7 -
[user@clamav ~]# groupadd clamav
[user@clamav ~]# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
③ ClamAV 압축 해제한 디렉토리로 이동하여 ClamAV를 컴파일하고 설치한다.
[user@clamav ~]# cd clamav-0.88
[user@clamav clamav-0.88]# ./configure --sysconfdir=/etc --enable-milter
...
[user@clamav clamav-0.88]# make
...
[user@clamav clamav-0.88]# make install
ClamAV 설정 파일(clamd.conf, freshclam.conf)은 configure 명령의 --sysconfdir 옵션에서 지정
된 /etc 디렉토리에 위치하게 되고 바이너리는 /usr/local 디렉토리에 저장된다.
③ 설치가 성공적으로 이루어졌는지 확인하기 위해 clamscan 명령어를 실행하면 현재 디렉토리에
있는 파일들에 대한 바이러스 점검 결과를 확인할 수 있다.
[user@clamav ~]# clamscan
/user/install.log: OK
/user/.autorun.lck: Empty file
/user/install.log.syslog: OK
/user/.tcshrc: OK
/user/.cshrc: OK
...
3. ClamAV 설정 및 실행
□ ClamAV의 설정
① 소켓 파일이 저장될 디렉토리를 /var/run/clamav에 생성하고 소유자는 clamav 사용자로 한정
한다.
prompt# mkdir /var/run/clamav
prompt# chmod 600 /var/run/clamav
prompt# chown clamav:clamav /var/run/clamav
② /etc/clamd.conf 파일을 환경에 맞게 편집한다.
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 8 -
LocalSocket을 수정하고 보안을 위해 clamd 프로세스의 소유자를 clamav로 한정한다. 또한
LogFile을 지정하여 로그를 저장한다. 그 밖의 설정은 “man clamd.conf“ 명령어를 통해
clamd.conf 맨페이지를 참고하여 필요에 따라 설정한다.
LocalSocket /var/run/clamav/clamd.sock
User clamav
LogFile /var/log/clamd.log
/etc/clamd.conf에서 다음과 같이 Example이라는 라인을 주석처리해야 한다.
# Comment or remove the line below.
# Example
③ 로그 파일을 생성하고 소유자를 clamav로 한정한다.
prompt# touch /var/log/clamd.log
prompt# chmod 600 /var/log/clamd.log
prompt# chown clamav:clamav /var/log/clamd.log
□ ClamAV의 실행
① clamd를 다음과 같이 실행한다.
[user@clamav ~]# /usr/local/sbin/clamd
clamd는 대몬으로 실행되며 다음과 같이 현재 프로세스 목록을 확인하면 clamd를 확인할 수
있다.
[user@clamav ~]# ps -ef | grep clamd
clamav 7277 1 0 16:20 ? 00:00:00 /usr/local/sbin/clamd
② clamav-milter를 실행한다.
[user@clamav ~]# /usr/local/sbin/clamav-milter -lo /var/run/clamav/clmilter.sock --external
clamav-milter 역시 대몬으로 실행되어 ps 명령어로 프로세스 내역을 확인할 수 있다.
[user@clamav ~]# ps -ef | grep clamav-milter
clamav 7312 1 0 16:27 ? 00:00:00 /usr/local/sbin/clamav-milter -lo
/var/run/clamav/clmilter.sock --external
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 9 -
③ sendmail 프로세스를 재시작한다. 프로세스가 정상적으로 실행된다면 설치는 완료되었다.
④ 설치된 ClamAV과 Sendmail과 연동하여 문제없이 동작하는지 확인한다.
구성된 ClamAV 메일서버를 통해 Eicar에서 제공하는 테스트를 위한 샘플 바이러스를 포함해서
메일을 발송한다. Eicar에서 제공하는 샘플 바이러스는 악성 행위를 하는 바이러스는 아니며, 안티
바이러스가 제대로 동작하는지를 시험하기 위해 제공하는 표준 시그너처이다.
※ 다운로드 사이트 : www.eicar.org/anti_virus_test_file.htm
다음은 해당 메일을 발송했을 때 ClamAV에 의해 바이러스로 탐지되고 반송된 화면이다.
(그림 3) ClamAV에 의한 바이러스 탐지 화면
또한, /var/log/clamd.log 파일에서 다음과 같은 탐지 로그를 확인할 수 있다.
/tmp/clamav-311cd8c9c0dcd132/msg.Tn3dwQ: Eicar-Test-Signature FOUND
바이러스가 포함되지 않은 메일이 ClamAV를 통해 보내졌을 경우에는 해당 메일의 헤더에서
다음과 같이 ClamAV로 점검되었음을 확인할 수 있다.
(그림 4) 메일 헤더를 통한 ClamAV 점검 확인
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 10 -
□ freshclam을 이용한 온라인업데이트
ClamAV는 바이러스 시그너처에 대한 온라인업데이트를 지원한다. 업데이트를 위해서는
freshclam 명령어를 실행하면 된다.
① /etc/freshclam.conf 파일을 환경에 맞게 편집한다.
업데이트 과정을 로그로 남기기 위해 다음과 같이 설정한다.
UpdateLogFile /var/log/freshclam.log
③ 로그 파일을 생성하고 소유자를 clamav로 한정한다.
prompt# touch /var/log/freshclam.log
prompt# chmod 600 /var/log/freshclam.log
prompt# chown clamav:clamav /var/log/freshclam.log
/etc/freshclam.conf에서 다음과 같이 Example이라는 라인을 주석처리해야 한다.
# Comment or remove the line below.
# Example
④ freshclam을 이용하여 온라인업데이트를 수행한다.
prompt]# freshclam
ClamAV update process started at Tue Apr 4 17:42:14 2006
Downloading main.cvd [*]
main.cvd updated (version: 37, sigs: 46700, f-level: 7, builder: ccordes)
Downloading daily.cvd [*]
daily.cvd updated (version: 1374, sigs: 2136, f-level: 7, builder: sven)
Database updated (48836 signatures) from database.clamav.net (IP: 218.189.210.14)
root나 clamav 사용자의 crontab으로 다음과 같이 해당 작업을 등록하여 정기적인 업데이트를
하도록 할 수 있다.
N * * * * /usr/local/bin/freshclam --quiet
또는 "freshclam -d" 명령을 이용해 대몬으로 실행할 수 있다.
KrCERT-TR-2006-003 http://www.krcert.or.kr
Clam AntiVirus를 이용한 메일서버 바이러스 차단 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 11 -
4. 결론
본고에서는 이메일 기반 바이러스 차단 공개소프트웨어 ClamAV에 대해 살펴보았다. ClamAV
는 오픈소스 안티바이러스로 활발한 시그너처 업데이트와 오픈소스의 특성과 많은 3rd party의
지원을 살려서 다양한 환경을 지원한다. 또한 IRC나 메일링리스트 등을 통한 무료 기술지원 창구
는 물론, ClamAV에 대한 상용 기술지원을 제공하는 업체들도 있다. 단점으로는 탐지율이 상용
제품에 비해서 낮은 편이며 사용자를 위한 GUI 환경의 프론트엔드가 거의 존재하지 않아 관리자
입장에서 관리가 불편하다는 것을 들 수 있다. 하지만 프로젝트가 계속하여 활발히 진행되고 있기
때문에 이 점도 개선될 것으로 보이며, 네트워크 관문에서의 악성코드 차단에 효과적인 역할을 할
수 있을 것으로 기대한다.


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1570


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
krcert
인터넷 침해사고대응지원센터의
허락하에 본 사이트에서 pdf 파일 형식으로 배포 됩니다.