Old stories/Security
Sendmail 바이러스 메일 필터 관련
드카니
2010. 8. 6. 14:46
Sendmail 에서는 이러한 바이러스 메일이나 스팸메일에 대해 룰셋(ruleset)을 이용하여 차단하는 기능이 있는데, 이를 사용하는 방법에 대해 알아보도록 하자.
1. 멜리사 바이러스 메일 필터링
sendmail.cf 파일을 열어 제일 하단에 아래의 내용을 추가한다.
HSubject: $>Check_Subject
D{WORMmsg}Access Denied - This message may contain a virus.
SCheck_Subject
RILOVEYOU $#error $: 501 ${WORMmsg}
RRe: ILOVEYOU $#error $: 501 ${WORMmsg}
RFW: ILOVEYOU $#error $: 501 ${WORMmsg}
*.주의 : $#error 앞의 blank는 스페이스가 아니라 반드시 탭으로 띄워주어야 한다.
Sendmail.cf 의 설정 내용이 다소 어렵고 복잡하기는 한데, 위 설정의 의미를 간단히 살펴보도록 하자.
H : 위 경우에는 헤더에서 Subject:라는 문자열을 찾아 이 헤더를 Check_Subject로 정의한다.
D : WORMmsg 라는 매크로를 정의하여 해당 룰셋에 적용되는 제목을 확인시 발송한 유저에게 보낼 메시지를 정의한다.
S : 헤더에서 check_subject로 정의한 부분을 룰셋으로 지정하는 부분이다.
R : 해당 문자열이 포함된 메일을 발견시 앞에서 정의한 에러 메세지를 첨부하여 반송을 시킨다.
위와 같이 룰셋을 적용하였을 경우 "I LOVE YOU" 와 같이 공란이 있을 경우 적용되지 않으며 "ILOVEYOU from me" 와 같이 특정 단어가 추가시에도 적용되지 않으며 반드시 확히 일치하여야 한다. 추가적으로 회신시 추가되는 Re: 와 전달(포워딩)시 추가되는 FW: 가 추가된 메일도 거부한다.
2. Sircam 바이러스 메일 필터링
Sircam 바이러스의 헤더를 보면 정상적인 메일과는 달리 메일 헤더에 Content-Disposition: Multipart message 와 같은 부분이 추가되어 있으며 이 특징을 이용하여 필터링을 하면 된다.
Sendmail.cf 파일에 아래의 룰셋을 추가하면 된다.
HContent-Disposition: $>check_sircam
D{SIRCAM}"Warning: I Guess Sircam.worm Virus"
Scheck_sircam
RMultipart message $#error $: 550 ${SIRCAM}
*.주의 : $#error 앞의 blank는 스페이스가 아니라 탭으로 띄워주어야 한다.
sendmail.cf의 수정을 끝낸 후 바로 sendmail을 재 시작하지 말고 룰셋이 정상적으로 작동하고 있는지 아래와 같이 테스트를 하는 것이 좋다.
# /usr/lib/sendmail –bt # 테스트 모드로 접속
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter
> check_sircam Multipart message # Sircam 룰셋 테스트
check_sircam input: Multipart message
check_sircam returns: $# error $: 550 553 Warning: I Guess
Sircam.worm Virus
> ctrl-D # 테스트 종료
위와 같이 확인된 후 sendmail을 재시작(killall –HUP sendmail) 하면 바로 적용된다.
아래와 같이 tail –f /var/log/maillog 로 로그 파일을 지켜보면 아래와 같이 실제로 Sircam 바이러스가 필터링되고 있음을 확인할 수 있다.
Sep 27 15:09:51 www sendmail[21386]: f8369of21386:
to=<antihong at tt.co.kr>, delay=00:00:01,
pri=241584 Warning: I Guess
Sircam.worm Virus.
3. Nimda Worm 메일 필터링
Nimda Worm 은 정상적인 메일 메시지와 달리 헤더에 boundary="====_ABC1234567890DEF_====" 나 boundary="====_ABC123456j7890DEF_===="라는 부분이 있는데, 이 부분으로 필터링을 할 수 있다. 즉 메일 헤더에 위와 같은 설정이 되어 있으면 Nimda Worm 으로 간주하고 필터링 하면 되는 것이다. Sircam 에서와 같은 방법으로 sendmail.cf 파일의 설정은 아래와 같다.
HContent-Type: $>check_ct
D{NIMDA}"I guess NIMDA.WORM!!!"
Scheck_ct
R$+boundary="====_ABC1234567890DEF_====" $#error $: 550 ${NIMDA}
R$+boundary="====_ABC123456j7890DEF_====" $#error $: 550 ${NIMDA}
이외 메일 필터링에 대한 더욱 구체적인 방법에 대해서는
http://certcc.or.kr/paper/tr2001/tr2001-03/email security by procmail.html
http://quanta.khu.ac.kr/~dacapo/sendmail/rulesets/
바이러스를 스캔하거나 필터링 할 수 있는 몇몇 프로그램이 있는데 이에 대해서는
http://www.rav.ro/ , http://www.amavis.org/, http://www.sophos.com/ 등을 참고하기 바란다.
SIS 공부중 문제에 있길래 정리해 봅니다.
반응형