Messaging Server는 무료로 사용할 수 있는 인기 있는 타사 바이러스 스캐너인 ClamAV를 사용하여 바이러스와 트로이 목마에 감염된 메시지를 감지합니다. 새로 만들어진 바이러스를 감지하기 위해 ClamAV에서 사용하는 바이러스 서명은 ClamAV 소프트웨어 패키지에 제공되는 freshclam 유틸리티를 사용하여 자동으로 업데이트할 수 있습니다.
ClamAV에 대한 자세한 내용은 ClamAV 웹 사이트를 참조하십시오.
Messaging Server에 통합된 ClamAV에서는 ClamAV 패키지의 일부로 제공되는 clamd 데몬을 활용합니다. clamd는 소켓에서 메시지 처리 요청을 수신하는 다중 스레드 프로세스입니다. 이 프로세스는 메시지를 처리한 후에 응답을 반환하고 연결을 닫습니다. ClamAV 설치에서 클라이언트 부분인 clamdscan은 사용되지 않습니다. 이 기능은 Messaging Server의 일부인 libclamav.so라는 공유 라이브러리에서 수행됩니다.
libclamav.so는 Brightmail SDK에서와 동일한 방법으로 로드됩니다.
ClamAV는 자체 시스템, 단일 시스템 배포의 Messaging Server와 동일한 시스템 또는 2계층 배포의 MTA와 동일한 시스템에서 실행할 수 있습니다. LMTP(Local Mail Transfer Protocol)가 MTA와 메시지 저장소 사이에서 사용되는 경우 MTA에서 필터링을 호출해야 합니다. 메시지 저장소에서는 필터링을 호출할 수 없습니다. MTA와 메시지 저장소 사이에서 SMTP를 사용하는 경우 두 곳 모두에서 SMTP를 호출할 수 있습니다.
ClamAV를 실행 중인 서버 그룹을 사용하려면 해당 그룹의 앞에 로드 밸런서를 사용합니다. MTA는 ClamAV 서버에 대해 단일 주소로만 구성됩니다.
기타 고려 사항
ClamAV는 무료입니다. 소프트웨어와 설명서는 http://clamav.net에서 구할 수 있습니다.
MTA와 통합된 ClamAV는 사용자, 도메인 또는 채널에 대해 사용할 수 있습니다.
ClamAV 패키지는 바이러스 서명을 정기적으로 업데이트하는 유틸리티를 제공합니다. 이 유틸리티를 freshclam이라고 합니다. 자세한 내용은 ClamAV 패키지 설명서를 참조하십시오.
Messaging Server 2006Q4 이상에는 기본적으로 libclamav.so 라이브러리가 포함되어 있습니다.
ClamAV를 배포하려면 다음 단계를 수행합니다.
ClamAV를 설치하고 구성합니다.설치 및 구성 정보는 ClamAV 소프트웨어 설명서를 참조하십시오. 14.6.5 ClamAV 옵션을 참조하십시오.
ClamAV 클라이언트 라이브러리를 로드하고 구성합니다.이 작업에는 클라이언트 라이브러리 libclamav.so와 MTA에 대한 구성 파일(만들어야 함)을 지정하는 것이 포함됩니다. 14.2.1 스팸 필터링 소프트웨어 클라이언트 라이브러리 로드 및 구성을 참조하십시오.
스팸을 필터링할 메시지를 지정합니다.사용자, 도메인 또는 채널별로 메시지를 필터링할 수 있습니다. 14.2.2 필터링할 메시지 지정을 참조하십시오.
바이러스 메시지에 대해 수행할 작업을 지정합니다. 14.2.3 스팸 메시지에 대해 수행할 작업 지정을 참조하십시오.
기타 필터 구성 매개 변수를 원하는 대로 설정합니다. 14.6.5 ClamAV 옵션을 참조하십시오.
다음 예에서는 ClamAV에서 바이러스나 트로이 목마가 포함된 것으로 발견된 모든 메시지에 대해 jettison을 수행합니다. 답신 문자열은 사용되지 않습니다.
ClamAV 구성 파일을 만듭니다.
이 파일의 이름과 위치는 단계 2에서 지정됩니다. clamav.opt라는 이름을 사용하는 것이 좋습니다. 이 파일은 다음과 같은 행으로 구성되어 있습니다.
# more /opt/SUNWmsgsr/config/clamav.opt ! ClamAV Settings debug=1 host=127.0.0.1 port=3310 mode=1 |
debug=1은 ClamAV 라이브러리에서 디버깅을 설정합니다.
host 및 port는 clamd가 실행 중인 시스템의 이름과 clamd가 받는 요청을 수신하는 포트를 지정합니다.
mode=1은 바이러스에 감염된 전자 메일이 감지된 경우 ClamAV 플러그 인이 ClamAV 결과 문자열을 답신으로 반환하도록 지정합니다.
option.dat 파일을 수정합니다.
option.dat 파일에 다음 행을 추가합니다.
! ClamAV settings spamfilter2_config_file=/opt/SUNWmsgsr/config/clamav.opt spamfilter2_library=/opt/SUNWmsgsr/lib/libclamav.so spamfilter2_string_action=data:,require ["jettison"]; jettison; |
spamfilter2_config_file은 ClamAV 구성 파일을 지정합니다.
spamfilter2_library는 ClamAV 공유 라이브러리를 지정합니다.
spamfilter2_string_action은 바이러스에 감염된 전자 메일에 대해 수행할 시브(Sieve) 작업을 지정합니다.
필터링할 메시지를 지정합니다.
로컬 메시지 저장소로 들어오는 모든 메시지를 필터링하려면 ims-ms 채널에 destinationspamfilterXoptin 바이러스 키워드를 추가하여 imta.cnf 파일을 변경합니다.
! ! ims-ms ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" "pt30m" "pt1h" "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto $U+$S@$D destinationspamfilter2optin virus ims-ms-daemon |
구성을 다시 컴파일하고 서버를 다시 시작합니다.
MTA만 다시 시작해야 합니다. stop-msg는 실행할 필요가 없습니다.
# imsimta cnbuild # imsimta restart |
clamd 데몬을 시작합니다.
ClamAV를 테스트하려면 먼저 clamav.opt 파일에서 debug=1을 설정합니다. (imta.cnf.에서 채널별 master_debug 또는 slave_debug를 설정할 필요는 없습니다.) 그런 다음 테스트 사용자에게 EICAR 바이러스 문자열(http://www.eicar.org/anti_virus_test_file.htm)이 포함된 파일 첨부를 보냅니다. 이 문자열은 실제 바이러스를 첨부하지 않고도 바이러스 스캐너를 트리거하여 전자 메일을 바이러스에 감염된 것으로 인식할 수 있도록 설계되었습니다.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* |
테스트 로그를 검토합니다. msg-svr-base/data/log/tcp_local_slave.log* 파일은 다음과 비슷한 행으로 구성됩니다.
10:39:00.85: ClamAV callout debugging enabled; config /opt/SUNWmsgsr/config/clamav.opt 10:39:00.85: IP address 127.0.0.1 specified 10:39:00.85: Port 3310 selected 10:39:00.85: Mode 1 selected 10:39:00.85: Field "Virus-Test: " selected 10:39:00.85: Verdict "" selected 10:39:00.85: Initializing ClamAV message context ... 10:39:00.85: Creating socket to connect to clamd server 10:39:00.85: Binding clamd socket 10:39:00.85: Connecting to clamd server 10:39:00.85: Sending ClamAV STREAM request 10:39:00.85: Retrieving ClamAV STREAM response 10:39:00.85: STREAM response: PORT 2003 10:39:00.85: Creating socket to connect to clamd server data port 10:39:00.85: Binding clamd data socket 10:39:00.85: Connecting to clamd server data port 10:39:00.85: Sending ClamAV the message 10:39:00.85: Closing ClamAV data connection 10:39:00.85: Reading ClamAV result 10:39:00.87: Result line: stream: Eicar-Test-Signature FOUND 10:39:00.87: Scan result: Message is infected 10:39:00.87: Verdict line: Virus-Test: True ; Eicar-Test-Signature 10:39:00.87: Closing connection to ClamAV 10:39:00.87: Mode 1 verdict of Virus-Test: True ; Eicar-Test-Signature 10:39:00.87: Mode 1 verdict of Virus-Test: True ; Eicar-Test-Signature ... 10:39:00.87: Freeing ClamAV message context |
로그 파일이 위와 비슷한 행으로 구성되어 있지 않거나 clamd가 실행되고 있지 않은 경우 마지막 마침표(.)가 SMTP 서버로 보내진 후에 SMTP 대화 상자에 다음 오류 메시지가 반환됩니다.
452 4.4.5 Error writing message temporaries - Error connecting to ClamAV server |
ClamAV 옵션 파일은 option=value 형식의 행으로 구성된 일반적인 메시징 서버 스타일의 옵션 파일입니다. 유일한 필수 옵션은 HOST입니다. 이 옵션은 clamd가 실행 중인 시스템의 이름으로 설정해야 합니다. clamd가 로컬 호스트에서 실행 중인 경우에도 이 옵션을 설정해야 합니다.
이 옵션 파일에 사용할 수 있는 추가 옵션은 다음과 같습니다.
표 14–7 ClamAV 옵션
옵션 |
설명 |
기본값 |
|
---|---|---|---|
DEBUG |
ClamAV 인터페이스 모듈에서 디버그 출력을 활성화하거나 비활성화합니다. (clamd 자체의 디버그 출력은 clamd 명령줄에 있는 옵션에 의해 제어됩니다.)값이 클수록 디버깅 출력이 많아집니다. 0을 설정하면 출력이 없습니다. 1은 기본 디버깅을 제공합니다. 2는 clamd에서 TCP 트래픽 로깅을 추가합니다. |
0 |
|
FIELD |
ClamAV 결과 문자열 접두어를 지정합니다. ClamAV 결과 문자열은 일반적으로 다음 중 하나와 비슷합니다.
FIELD 옵션을 사용하면 결과의 Virus-Test 부분을 변경할 수 있습니다. 빈 FIELD 값을 지정하면 ": "도 제거된다는 점에 주의해야 합니다. |
“Virus-Test” |
|
MESSAGE_BUFFER_SIZE |
clamdscan/clamd 인터페이스의 특성으로 인해, ClamAV 플러그 인은 ClamAV로 메시지를 보내기 전에 메모리 버퍼에 메시지를 보관해야 합니다. 메모리 버퍼의 크기는 이 옵션에 의해 제어됩니다. 기본값은 1,048,576자입니다. 이 크기보다 긴 메시지는 잘리며 전체가 ClamAV로 전송되지 않습니다. 모든 메시지를 완전히 스캔하려면 이 값은 MTA가 받을 수 있는 최대 메시지 크기를 반영해야 합니다. 이 값을 줄이면 바이러스 스캔 시간을 절약할 수 있지만, 바이러스가 감지되지 않은 채 통과할 가능성이 있습니다. |
1048576 |
|
MODE |
ClamAV 결과를 답신 정보로 변환하는 것을 제어합니다. 서로 다른 네 가지 모드를 사용할 수 있습니다. 0 - 바이러스가 있는 메시지를 발견한 경우 VERDICT 옵션에 지정된 답신 문자열이 반환되고, 그렇지 않으면 기본 답신이 반환됩니다. VERDICT 옵션이 비어 있거나 지정되어 있지 않으면 null 답신이 반환됩니다. 1 - 바이러스가 있는 메시지를 발견한 경우 ClamAV 결과이 답신으로 반환되고, 그렇지 않으면 기본 답신이 반환됩니다. 2 - 무조건적으로 ClamAV 결과 문자열을 답신으로 반환합니다. 기본 또는 null 답신이 반환되지 않으며 VERDICT 옵션이 사용되지 않습니다. 3 - 메시지에 바이러스가 있는 경우 ClamAV 결과 문자열이 반환되고, 그렇지 않으면 VERDICT 옵션에서 지정한 답신 문자열이 반환됩니다. |
0 |
|
PORT |
clamd가 실행 중인 포트를 지정합니다. |
3310 |
|
SOCKS_HOST |
중간 SOCKS 서버의 이름을 지정합니다. 이 옵션을 지정하면 clamd가 직접 연결되지 않고 지정된 SOCKS 서버를 통해 연결됩니다. |
3310 |
|
SOCKS_PORT |
중간 SOCKS 서버가 실행 중인 포트를 지정합니다. |
1080 |
|
SOCKS_PASSWORD |
SOCKS 서버를 통해 연결을 설정할 때 사용할 비밀번호를 지정합니다. 아이디/비밀번호가 필요한지 여부는 SOCKS 서버 구성에 따라 다릅니다. |
"" |
|
SOCKS_USERNAME |
SOCKS 서버를 통해 연결을 설정할 때 사용할 아이디를 지정합니다. |
"" |
|
VERDICT |
모드 0과 3에 사용되는 답신 문자열을 지정합니다. |
"" |