|
|
최신 스팸 차단 기법으로 스팸에서 해방되기② | |
SURBL을 이용해 스팸 정확도 극대화하기
특히 국내 스팸메일의 경우 주로 화려하고 이미지가 많이 포함돼 있는 등 스팸의 전형적인 특징을 가지고 있어 스팸메일로 잘 걸러지는 편이지만, 해외에서 발송되는 영문 스팸메일은 (화면 3)과 같이 단 몇 줄의 텍스트와 URL 링크만 있는 경우가 많아 스팸메일로 걸러지지 않는 경우가 많아졌다. [그림3] 최근 영문 스팸의 전형 그렇다면 이런 종류의 스팸에 대해서는 어떻게 대응해야 할까. 바로 RBL(Realtime Blackhole List)을 활용하면 일일이 룰을 설정하지 않아도 거의 오탐없이 정확도를 상당히 높일 수 있다. RBL은 공식/비공식적으로 많은 목록들이 운영되고 있는데, 가장 대표적인 몇 가지만 알아보면 다음과 같다. - RBL (Realtime Blackhole List): 상업적 스팸메일을 발송한 IP 어드레스에 대한 목록 - RSS (Relay Spam Stopper): relay가 허용된 메일 서버의 IP 어드레스에 대한 목록 - OPS (Open Proxy Stopper): proxy가 허용된 메일 서버의 IP 어드레스에 대한 목록 이같은 기능을 이용해 적지 않은 스팸메일을 인식하고 있지만, 오탐(False Positive)도 적지 않다는 문제점이 있다. 특히, 어떤 경우 특정한 1개 IP만 블랙리스트로 등재하는 것이 아니라 아예 /24나 /16 단위로 등재하는 경우도 있어 선의의 피해도 발생하고 있다. 반면에 지금부터 살펴보려는 SURBL(www.surbl.org/)은 이런 오탐 문제를 깨끗이 해결하면서도 오히려 정확도를 높이고 있어 상용 스팸메일 차단 솔루션에도 적극 도입해 사용하고 있는 기술이다. 기존의 RBL 방식이 주로 전자우편 발송지의 IP 어드레스로 판단한 것인데 비해 SURBL은 메시지(message body) 내 링크된 URL을 보고 스팸메일인지 여부를 판단하는 것으로, 스팸 발송 IP를 바꾼다 하더라도 링크된 웹 페이지 어드레스는 수시로 변경이 불가능하므로 인식율이 뛰어나고 오탐이 거의 없는 것으로 알려져 있다. 실제 알려진 바로는 약 80∼90% 정도의 스팸메일을 인식해 구별해 내며 오탐은 0.001%에서 0.4% 정도로 매우 낮은 것으로 알려져 있는데, 이는 기존의 다른 RBL과는 달리 자체적으로 오탐을 줄이기 위해 복잡하고 엄격한 메커니즘을 이용하기 때문이다. 이 기능을 이용하려면 전자우편 메시지에서 URL 부분을 빼내어 실시간으로 SURBL에 질의할 수 있는 프로그램이 필요한데, 최근의 스팸어세신 3.x 버전부터는 SURBL 기능을 기본적으로 사용할 수 있으므로 이 기능을 이용하려면 설치 과정에서 네트워크 테스트를 활성화하고 최신 버전의 Net::DNS 모듈을 설치하면 된다. 그런데 SURBL은 매우 정확하고 신뢰할 수 있음에도 불구하고 기본적으로 설정돼 있는 값이 너무 낮게 돼 있으므로 이 값을 적당히 늘릴 필요가 있다. 다음의 경우 각각의 항목에 대해 3점이나 4점과 같은 점수를 부여한 것을 알 수 있다. score URIBL_AB_SURBL 4 score URIBL_OB_SURBL 4 score URIBL_PH_SURBL 4 score URIBL_SC_SURBL 4 score URIBL_WS_SURBL 3 이후 스팸메일로 분류된 전자우편의 헤더를 보면 [그림4]와 같이 SURBL에 의해 정상적으로 걸러지고 있음을 알 수 있다. [그림4]는 이미 살펴본 바와 같이 단 몇 줄의 텍스트와 1개 URL만을 링크하고 있어 만약 SURBL 기능을 이용하지 않았다면 정상메일(HAM)로 구분됐을 것이다. [그림4] SURBL의 작동 결과 참고로, 특정 도메인이 SURBL 목록에 있는지 여부는 www.rulesemporium.com/cgi-bin/uribl.cgi에서 확인해 볼 수 있는데, 혹 여러분의 도메인도 blackhole 목록에 있는지 모르니 각자 확인해 보기 바란다. 또한 비슷한 종류의 기능을 제공하는 URIBL(/)도 일부 사용되고 있는데, 이 곳에서는 정확도에 따라 BLACK, GREY, RED 등으로 구분해 서비스 중이다. 하지만 모두 사용하는 것보다는 정확도를 높이기 위해 오탐이 거의 없는 BLACK을 사용하는 것이 좋다. 스팸어세신을 사용한다면 설정 파일에 다음 부분을 추가하기만 하면 URIBL 기능을 바로 이용할 수 있다. 스팸메일 처리 정책 설정하기 기본적으로 스팸으로 추정되는 전자우편은 제목에 [SPAM]과 같이 붙게 되는데, 워낙 스팸 메일이 많다보니 용량도 많이 차지하므로 스팸 메일은 메일박스에 저장되지 않고 아예 서버에서 바로 삭제하기를 원할 수 있다. 이런 경우 스팸어세신을 통과한 전자우편은 헤더에 스팸과 관련된 별도의 정보가 남는다는 사실을 이용해 MDA인 procmail의 설정을 이용하면 되는데, 다음의 내용을 /etc / procmailrc 에 두면 모든 사용자에게 적용되고, 특정한 유저의 ~$HOME/.procmailrc 파일에 설정하면 해당 계정에게 전달되는 전자우편만 적용하도록 할 수 있다. 다음 설정은 *가 10개 즉, 스팸 수치가 10 이상인 전자우편은 /dev/null로 보냄으로써 해당 메일을 삭제한다는 의미이다. :0 * ^X-Spam-Level: ₩*₩*₩*₩*₩*₩*₩*₩*₩*₩* /dev/null 그렇지 않고, 스팸 수치와는 관계없이 [SPAM]으로 분류된 모든 메일을 삭제하려면 다음과 같이 설정하면 된다. :0 * ^X-Spam-Status: Yes /dev/null 만약 스팸으로 지정된 전자우편을 삭제하지 않고 특정한 파일 또는 다른 사용자의 메일박스에 저장하려면 다음과 같이 /dev/null 대신 저장될 파일 이름을 지정하면 된다. :0 * ^X-Spam-Status: Yes spam-mail 또한, 이와는 별도로 procmail 설정에 아래의 내용을 추가하면 특정한 첨부파일을 포함한 전자우편은 아예 삭제하도록 할 수 있다. 특히 다음의 경우 com, pif, scr등 바이러스성 전자우편에서 자주 사용되는 첨부파일의 확장자인데, 각자의 환경에 따라 적당히 변경해서 사용하면 된다. :0 B * Content-Disposition: attachment * name=.*₩.(com|pif|scr|bat|lnk|shf|cmd|vbs) { # Stick it somewhere :0 B: /dev/null |