본문 바로가기

StoreHouse/Server

RedHat 메일로 들어오는 바이러스 차단 AntiVir Milter

메일로 들어오는 바이러스 차단 AntiVir Milter 설치 및 운영 2003/08/21


베크



작성자 : 좋은진호(truefeel)
작성일 : 2003.02.10
수정일 : 2003.07.21
정리일 : 2003.08.19
 
H+BEDV AntiVir는 파일시스템, 메일(AntiVir Milter), 웹(AntiVir WebGate)을 통한
바이러스를 검사해주는 스캐너이다. 패턴이 업데이트되므로 최신 바이러스까지 검사할수
있다. Linux, OpenBSD, FreeBSD 등의 OS를 지원한다.
국내에서도 여러 곳에서 쓰고 있는 것으로 아는데, 설치 및 운영에 대한 글이 한글로
된 것을 찾기 힘들어(?) 기존에 써뒀던 글을 좀 다듬어 올린다.

AntiVir는 개인에 한하여 무료로 쓸 수 있는 key를 제공한다.
1개의 key 파일로
AntiVir for Linux and FreeBSD, AVMailGate for Linux,
AntiVir for Linux Workstation, AntiVir Command Line Scanner for Linux
를 사용할 수 있다.

1. AntiVir Milter 설치

http://www.hbedv.com/ -> Downloads (http://www.hbedv.com/download/download.htm)
에서 AntiVir Milter for Linux (avlxmlt.tgz) 를 받아온다.

------------------------------------------
[root@truefeel root]# tar xvfz avlxmlt.tgz
[root@truefeel root]# cd antivir-milter-x.y.z (x.y.z 는 버전)
------------------------------------------

INSTALL 파일을 읽으면 설치 방법이 잘 나와 있으니 참고하기 바란다.

  1) 실행 파일 설치 
 
  ---------------------------------------
  mkdir /usr/lib/AntiVir
  cp bin/avmilter /usr/sbin
  cp script/avq  /usr/lib/AntiVir (AntiVir Milter용 메일큐 관리스크립트)
  ln -s /usr/lib/AntiVir/avq /usr/sbin/avq

  AntiVir for Linux를 설치한적이 없을 경우 다음과 같이 엔진까지 함께 복사
  cp bin/antivir /usr/lib/AntiVir
  ln -s /usr/lib/AntiVir/antivir /usr/sbin/antivir
  ---------------------------------------

  ※ AntiVir for Linux(Scanner를 말함)는 installer가 제공되어 쉽게 설치할 수 있으며,
   운영중에 AntiVir Milter를 추가 설치가 가능하다.
   저는 하나의 시스템은 AntiVir 운영중에 AntiVir Milter를 추가 설치했고,
   다른 시스템은 AntiVir Milter부터 설치 운영하고 있다.

  2) 패턴 파일(antivir.vdf) 및 환경 파일 설치

  default로 avmilter는 uucp:uucp 권한으로 실행된다.

  ---------------------------------------
  cp vdf/antivir.vdf  /usr/lib/AntiVir
  cp etc/avmilter.conf /etc
  cp etc/antivir.conf /etc (AntiVir를 설치한 적이 없는 경우)
  ---------------------------------------

  3) 부팅용 스크립트 복사

  ---------------------------------------
  cp init.d/rc.avmilter /etc/rc.d/init.d/avmilter
  chkconfig --add avmilter
  ---------------------------------------

2. License key 받기

AntiVir for Linux Private User Registration ( http://www.hbedv.com/private/ )
에 각 항목을 입력하면 해당 메일로 라이센스 파일이 온다.
hbedv.key, lic_info.txt(이 txt파일은 없어도 운영에는 문제가 없지만)를
/usr/lib/AntiVir 로 복사하고 hbedv.key는 avmgate.key이름으로도 복사한다.

------------------------------------------
cp hbedv.key lic_info.txt /usr/lib/AntiVir (AntiVir를 설치한 적이 없는 경우)

cp hbedv.key /usr/lib/AntiVir/avmgate.key
chown uucp:uucp /usr/lib/AntiVir/avmgate.key
------------------------------------------

3. Milter용 메일 스풀 디렉토리 생성
 (/etc/avmilter.conf 에서 경로와 실행 user default값 변경 가능)

------------------------------------------
mkdir /var/spool/avmilter
cd  /var/spool/avmilter
mkdir incoming outgoing rejected

chown -R uucp:uucp /var/spool/avmilter
chmod -R 700    /var/spool/avmilter
------------------------------------------

4. sendmail.cf 설정

------------------------------------------
# Antivir Milter
Xavmilter, S=inet:3333@localhost, F=R, T=S:10m;R:10m;E:10m
O InputMailFilters=avmilter
------------------------------------------

메일을 송수신하게 되면 sendmail은 3333포트의 avmilter에게 전달하고, avmilter는
바이러스가 없으면 해당 사용자에게 전송하게 된다. 만약 바이러스가 존재하면
avmilter 큐에 저장을 해두며, 송수신자엑 메일에 바이러스가 있음을 알린다.
(환경 설정에 따라 알리지 않을 수 있다.)

5. 실행하기
 
------------------------------------------
/usr/sbin/avmilter -p inet:3333@localhost 또는 /etc/rc.d/init.d/avmilter start
 
/etc/rc.d/init.d/sendmail restart (sendmail.cf 설정 변경했으므로 재실행 필요)
------------------------------------------

netstat -atnp 로 동작중인지 확인해보자.
 
------------------------------------------
Proto Recv-Q Send-Q Local Address  Foreign Address State PID/Program name
...
tcp  0   0   127.0.0.1:3333 0.0.0.0:*    LISTEN 4259/avmilter
...
------------------------------------------

/etc/rc.d/init.d/avmilter start 할 때

can't initialize scan engine

오류가 발생했다면 /var/tmp 에 쓸 수 있는 권한이 있는지 확인해본다.
또는 /usr/lib/Antivir/antivir가 정상적으로 복사가 된 것인지도 확인해봐야한다.

※ Virus 메일일 때, 송수신자에게 모두 alert 메시지를 보내려면,
  /etc/avmilter.conf 에 다음 항목을 YES로 설정

  VirusAlertToRcpt         YES
  VirusAlertToSender        YES

  설정 변경 후 반드시 avmilter 를 재실행해야함.

※ 패턴이 매일 자동 업데이트 되도록 cron 에 다음을 넣어둔다.

20 4 * * * /usr/lib/AntiVir/antivir --update -q

6. 바이러스를 정상적으로 체크하는지 확인하는 방법

  1) eicar 표준 안티바이러스 테스트 파일을 메일로 첨부해서 보내면 된다.
   아래에 옮겨둔 68bytes 를 eicar.com.txt 로 저장한 후 첨부하거나 메시지로 써서
   외부에서 root@È=뵈??으로 보낸다.
  X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

  http://www.eicar.org/anti_virus_test_file.htm 에서 eicar.com.txt를 받을 수도 있다.

  2) 만약 postmaster 통해서 다음과 같은 메시지를 받았다면 바이러스를 정상적으로
   검사하고 있다는 의미이다.

------------------------------------
.. 생략 ..
Subject: AntiVir ALERT [mail from: truefeel ]
X-AntiVirus: checked by AntiVir Milter 1.0.4; AVE 6.20.0.1; VDF 6.20.0.43

* * * * * * * * * * * * * * * AntiVir ALERT * * * * * * * * * * * * * * *
This version of AntiVir is licensed for private and non-commercial use.

AntiVir has detected the following in a mail sent through your server:

    Eicar-Test-Signatur

The mail was not delivered.

.. 생략 ..
------------------------------------

7. AntiVir Milter용 메일큐 관리

AntiVir는 avq라는 스크립트를 제공한다.
------------------------------------
[root@truefeel root]# avq

S ---Queue ID--- --Size-- ---Sender/Recipients-------
v 06191-3F35903C  12425
             
------------------------------------

바이러스가 있다고(State가 v) 판단되어 발송이 되지 않고 큐(/var/spool/avmilter)에
메일이 1개 남아있음을 나타낸다. 필요없는 메일이면 큐를 clear 시킨다.

------------------------------------
[root@truefeel root]# avq --remove=06911-3F35903C
ctor: /var/spool/avmilter/rejected/vf-06911-3F35903C
/var/spool/avmilter/rejected/df-06911-3F35903C
avq: message id '06911-3F35903C' removed.
AntiVir Milter mail queue is empty.
[root@truefeel root]#
[root@truefeel root]# avq
AntiVir Milter mail queue is empty.
[root@truefeel root]#
------------------------------------

8. syslog 통해서 남는 로그 (/var/log/maillog)

  1) 실행할 수 없는 예

  Mar 14 19:50:14 free avmilter[19330]: Scan engine is not available - exiting!
  Mar 14 19:50:14 free avmilter[19330]: can't initialize scan engine

  2) avmilter 실행할 때

  Jul 21 22:20:36 truefeel avmilter[5347]: engine version: 6.20.0.1
  Jul 21 22:20:36 truefeel avmilter[5347]: vdf version: 6.20.0.43
  Jul 21 22:20:36 truefeel avmilter[5347]: running in private mode

  3) 메일에 virus가 감지될 때 (/var/log/maillog)

  Jul 21 22:24:08 truefeel avmilter[5405]: Alert! the file "/var/tmp/av-05405-jfej1c/av-1" contains "W32/Nimda.eml" virus
  Jul 21 22:24:08 truefeel avmilter[5405]: Potential malicious code has been found - mail will be rejected.

  4) 메일에 virus 감지될 때 antivir (/var/log/messages)

  Jul 21 22:28:35 truefeel antivir[5535]: AntiVir ALERT: [W32/Nimda.eml virus] /var/tmp/av-05531-oMFI2L/av-1 <<< Contains code of the Windows virus W32/Nimda.eml

9. AntiVir 로 파일시스템의 바이러스 검사

/usr/sbin/antivir 로 링크도 해뒀으니 바이러스 검사도 쉽게 할 수 있을 것이다.

사용자 홈 디렉토리만 검사를 해보자.
--allfiles 옵션은 모든 파일을, -s는 서브 디렉토리까지 검사하라는 것이다.
만약 link를 따라 검사하기를 원하지 않으면 -nolnk 까지 추가해서 하면 된다.

------------------------------------
[root@truefeel root] antivir --allfiles -s /home

AntiVir / Linux Version 2.0.7-41
Copyright (C) 1994-2003 by H+BEDV Datentechnik GmbH.
All rights reserved. 

Loading /usr/lib/AntiVir/antivir.vdf ...                                         

VDF version: 6.20.0.43 created 18 Jul 2003                                        

For private, non-commercial use only.
AntiVir license: ?????????? for Jinho Hwangbo, ??????

\ /home/oracle/oui/bin/linux/libclntsh.so.9.0
------------------------------------

검사가 완료되면 다음과 같이 표시해준다.

----- scan results -----
directories:   1017
    files:   5193
   alerts:    0
  scan time: 00:00:46
------------------------
Thank you for using AntiVir.

삼바(samba)로 윈도 시스템과 공유를 할 때 antivir는 위력을 발휘할 것이다.
저는 파일서버로 운영중인 Network Drive(자체 OS, SMB 지원하는)장비를 검사하는데
antivir가 큰 도움이 되었다.

10. 맺음말

운영중에 문제가 생기면 
AntiVir MailGate Linux FAQ and Answers ( http://www.hbedv.com/support/mailgatefaq_e.htm )
가 도움이 될 것이다.

출처 KLTP