달력

012018  이전 다음

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
[익스체인지 서버 2003, 바뀐 점은] ① 스팸메일 탈출 방법


구병국 (익스체인지 사용자 그룹 대표시샵) 21/06/2005
연재순서
1. 스팸 메일 수렁에서 벗어나기
2. 익스체인지 서버 2003 OWA 이용과 커스터마이제이션
3. 익스체인지 서버 2003과 ISA 서버 2004
스팸은 마치 노년기에 걸리는 당뇨병과 같다. 걸리지 않는 것이 가장 좋겠지만 일단 걸리면 세밀한 건강 검진과 식이요법, 운동 등으로 꾸준한 치료가 필수적이다. 스팸도 마찬가지다.

메시징 시스템이 제대로 돌아가는지 검사하고 제대로 설정한 뒤에 끊임없이 모니터링해야 안전한 상태로 유지할 수 있다. 관리자를 위한 익스체인지 서버 강좌, 그 첫번째 글은 스팸 필터링에서 시작한다.

인류 역사상 첫번째 스팸 메일은 지난 1978년 5월에 DEC가 새로운 제품에 대한 광고 메일을 600명의 사용자에게 보낸 것이 시초로 기록돼 있다. SMTP가 처음 고안될 때는 이것이 전화보다 더 널리 쓰이는 커뮤니케이션 수단으로 각광받을 줄은 상상하지 못했다.

한정된 대상, 한정된 공간에서만 사용하는 것을 고려했기 때문에 인증 없이도 보낼 수 있었고 받는 사람 역시 설마 보낸 사람 주소에 적힌 사람이 아닌 다른 사람이 메일을 보내리라곤 생각지 못했다.

하지만 역설적으로 말하면 그렇게 열린 공간에서 사용할 수 있었기에 오늘날 많은 경쟁자들을 물리치고 SMTP는 당당히 주요 메시징 프로토콜로 자리를 잡을 수 있었다. 물론 이후에 계속적으로 보안이 강화된 SMTP 프로토콜들이 발표됐지만 아직도 SMTP 자체로는 충분하지 못한 것이 현실이다.

오늘날 스팸에 관한 한 우리나라의 위치는 특별하다. 2004년 현재 전세계 스팸메일의 15.42%가 한국에서 발송됐다. 물론 여기에는 초고속 인터넷으로 연결된 많은 컴퓨터들이 스팸메일 발송 코드에 감염돼 봇(Bot)이라고 불리게 됨으로써 자신도 모르게 스팸을 보냈기 때문이다. 심한 경우 우리나라에서 발송되는 메일 전체를 스팸메일로 인식해 정상적인 메일마저 전달되지 않는 경우도 있었다.

MS는 지난 2003년부터 스팸에 대해 많은 관심을 보여 왔고, 그 결과 익스체인지 서버 2003에는 스팸에 대처할 수 있는 많은 기능들이 추가됐다. 여러가지 필터링 툴과 클라이언트인 아웃룩 2003과 함께 실행되도록 하는 기능 등이 대표적이다.

또한 지난해 8월에는 자체 개발하던 Caller-ID를 SPF(Sender Policy Framework)와 결합해 Sender-ID라는 명칭으로 인터넷국제표준화기구(IETF)에 표준으로 신청하기도 했다. 올해 새해 벽두에는 안티스파이웨어 베타 버전을 출시해 일반 사용자들의 컴퓨터에 있는 악성 코드와 응용 프로그램을 찾아 제거할 수 있는 툴을 선보였다.

최초의 스팸 필터링 기능 ‘보낸 사람 필터링’
익스체인지 2000이 시판됐을 때 처음 등장한 필터링 도구가 바로 보낸 사람 필터링(Sender Filtering)이다. 5.5 버전에서 지겹도록 큐에 쌓여졌던 @boss.com, @test.com, @test1.com 등의 메일 때문에 관리자들은 이 계정에서 보낸 메일에 대해 필터링을 하는 것이 필요하다고 입을 모았었다.

이것은 스패머가 릴레이 테스트, 메일 주소 추출, 사전식 메일 공격 등을 위해 해당 메일 서버로 뿌려졌던 메일에 대해 익스체인지 5.5의 Postmaster가 NDR(Non-Delivery-Report) 등을 보낸 사람에게 회신했기 때문이다. 여기에 응답하지 않기 때문에 큐에 쌓이고 이것들이 전체 서버의 성능을 떨어뜨리기 일쑤였다. 따라서 이를 원천적으로 막기 위해서는 아예 이런 도메인에서 오는 메시지들은 받지 않는 것이 좋겠다는 것이 관리자들의 의견이었다.

<화면 1> 보낸 사람 필터링

이렇게 탄생한 보낸 사람 필터링 탭이 바로 <화면 1>이다. 필요에 따라 도메인이나 특정 메일 주소를 등록할 수 있으며 여러 가지 옵션을 설정할 수도 있다. 먼저 [보낸 사람]은 필터링을 하고 싶은 도메인 앞에 @표시를 해서 입력하고, 주소 형태는 그대로 타이핑해 막을 수 있다. 약 850개까지 등록할 수 있으며 그 이상 입력하면 ‘LDAP Provider의 80072024’ 오류와 함께 먼저 입력한 것이 삭제된다.

이것은 [보낸 사람] 목록도 액티브 디렉토리(active directory) 데이터베이스 내에서 하나의 개체를 차지하게 되고 이것은 AD의 데이터베이스 단위인 8KB를 차지하는데, 이론적으로는 910개 정도(8*1024/9=910)가 들어가는 것이 정상이지만 이미 데이터베이스 내에 고정된 필드들이 존재하므로 이 50여개를 제외한 850여개로 제한되기 때문이다. [필터링한 메시지 보관]을 선택하게 되면 필터링한 것이 익스체인지가 설치된 하부 디렉토리의 Mailroot\vis 1\filter 폴더에 저장된다.

90년대 말과 2000년 초에는 스팸 메일을 보내는 기술도 그리 발달하지 못해 보낸 사람을 공란으로 해서 보내는 경우가 많았다. 그래서 나온 것이 [보낸 사람]이 비어 있는 메시지 필터링 기능이다. 하지만 요즘은 보내는 사람 란에 비어 있는 스팸 메시지는 거의 찾아볼 수 없다(일부 보이스 메일에서 보내는 메일의 경우 [보낸 사람] 란이 비어 있는 경우가 있다).

[주소와 필터가 일치하면 연결 끊기] 옵션을 선택하면 해당 주소가 보낸 메시지는 Mail From 명령 후에 곧바로 ‘554 5.1.0 Sender Denied’가 나타나고 연결이 종료된다. 이 옵션은 아예 연결 자체를 막아버리기 때문에 받는 서버의 부하에 전혀 영향을 미치지 않는다는 장점이 있지만, 보내는 사람이 필터링된 것을 알게 되므로 보낸 사람 란에 다른 주소를 입력하는 방식으로 악용될 가능성이 있다.

[보낸 사람에게 필터링한 것을 알리지 않고 수락] 옵션은 [주소와 필터가 일치하면 연결 끊기] 옵션을 선택하지 않았을 때 사용할 수 있다. 즉 보낸 사람에게는 정상적으로 메일을 보낸 것처럼 처리하지만 실제로는 필터링하도록 하는 것이다. 보내는 사람에게 메시지 필터링의 여부를 알지 못하게 하는 장점이 있지만 큰 메시지를 보내올 때 서버가 일단 받아들이기 때문에 대용량 부하가 발생할 수 있다.

메일 주소 수집을 피해라 ‘받는 사람 필터링’
받는 사람 필터링은 디렉토리에 존재하지 않는 주소 또는 차단 목록에 기록된 특정 주소로 들어오는 메시지에 대해서 SMTP 세션에서 막아버리는 방법이다. <화면 2>는 받는 사람 필터링을 설정하는 방법을 보여준다.

<화면 2> 받는 사람 필터링

게이트웨이 역할을 하는 익스체인지 서버는 RCPT TO 명령을 받으면 받은 메일 주소가 유효한지를 알아보기 위해서 글로벌 카탈로그 서버에 질의를 한다. 이때 [디렉토리에 없는 사람 필터링] 옵션을 선택하면 메일 주소가 있는 경우에만 이후 명령을 수행해 메시지 전체 내용을 받고, 주소가 없으면 ‘501 5.5.4 Invalid Address’ 오류 메시지를 내보낸다. 이 옵션은 익스체인지 2003의 큐를 말끔하게 정리할 수 있는 팁이다.

2000 버전에서 큐 안에 그렇게 많이 쌓여서 괴롭히던 메일 찌꺼기들이 2003이 되면서부터 자취를 감추게 된 것도 모두 이 기능 덕분이다(사실 이것은 익스체인지 5.5나 익스체인지 2000에서도 특정 메일이 도착하면 디렉토리에 LDAP(Lightweight Directory Access Protocol)으로 질의하도록 하는 스크립트를 작성해 SMTP 이벤트 싱크(Event Sink)에 추가해도 충분히 방비할 수 있었다).

익스체인지 2000에서는 공용 폴더에서 익명의 사용자에게 기고자 권한이 주어졌었다. 또 회의실과 같이 리소스 사서함을 가진 서버에서는 외부의 사용자도 해당 사서함에 메일을 보낼 수가 있었다. 회사 내에 있던 배포 그룹이 메일 주소를 가질 수도 있었다.

스팸 메일 발송자들은 해당 메일 주소가 공용폴더 주소인지 아니면 리소스 사서함인지를 모르며, 설사 알고 있더라도 상관하지 않고 메일을 보낼 것이다. 만일 [받는 사람]란에 이런 리소스 주소들을 등록해 놓는다면 공용 폴더를 아주 깨끗하게 유지할 수 있을 것이다. [받는 사람]란에 특정 주소를 입력하고 나서 해당 주소로 접속하면 ‘550 5.7.1 Requested Action not taken: mailbox not available’ 오류를 나타낸다.

메일을 사용할 수 있도록 한 그룹의 경우 여기서 메일 주소를 입력해도 되며 <화면 3>과 같이 해당 메일 그룹의 속성 대화상에 있는 익스체인지 일반정보 탭에 있는 메시지 제한에서 설정해도 된다.

<화면 3> 익스체인지 일반정보 탭

주의해야 할 것은 <화면 3>과 달리 기본적으로 그룹에게는 모든 사람으로부터 메일을 받을 수 있도록 설정돼 있다는 사실이다. 따라서 가능하면 그룹에 대해서는 [인증된 사람으로부터만] 옵션을 선택하고 그 외 세부 옵션을 선택하는 것이 좋다. 그래야만 외부에 있는 사용자가 함부로 내부에 있는 메일 그룹으로 메시지를 보낼 수 없도록 막을 수 있다. 이렇게 설정한 상태에서 외부에 있는 사용자가 내부에 있는 그룹으로 메일을 보내면 ‘550 5.1.1 User unknown’ 오류가 나타난다.

받는 사람 필터링을 구성하면 서버의 부하를 줄일 수 있지만 DHA(Directory Harvest Attack)의 가능성이 여전히 존재한다. DHA란 스팸 메일 발송자들이 메일 주소를 얻는 방법 가운데 하나로, DNS 내에서 메일 서버의 위치를 파악해 해당 메일 서버에 사전식으로 조합된 메일 주소를 보내서 NDR을 보내지 않는 메일에 대해서 메일 주소의 유효성을 확인하는 방법이다. 이밖에도 스팸 메일 발송자들은 성인사이트나 메일링 서비스 업체의 데이터베이스를 해킹하거나 다른 사람들에게 돈을 주고 메일 주소를 사기도 한다.

<그림 1> DHA의 개념도

<그림 1>은 DNS 내에 포함된 MX 레코드와 호스트 주소로 메일 서버의 주소를 알아내 사전식으로 조합된 메일 주소 목록을 이용, 해당 서버에 있는 유효한 메일 주소를 검색하는 DHA를 그림으로 나타낸 것이다.

이는 메일 주소를 수집하는 데 널리 사용되지만 사실 이렇게 해서 알아낸 메일 주소는 해킹을 통해서 얻은 주소 목록보다는 훨씬 가치가 떨어진다. 왜냐하면 특정 서버에 포함된 메일 주소는 해당 서버의 목적에 관심을 가진 사용자들의 주소지만 사전식으로 공격해서 얻은 메일 주소들은 해당 주소가 그것에 대해 관심이 있을지 여부를 알 수 없기 때문이다.

예를 들면 비아그라를 판매하려는 스팸 메일 발송자의 경우 일반 회사의 메일 서버에 사전식으로 공격하기 보다는 성인사이트를 운영하는 서버의 데이터베이스에 저장되어 있는 전자메일 주소 목록을 얻는 것이 비아그라를 훨씬 많이 판매할 수 있는 기회가 될 것이다.

아무리 메일 주소의 값어치가 떨어지더라도 잠재적인 고객확보 차원에서, 그리고 메일 주소를 다른 사람들에게 판매하기 위해서는 DHA를 수행하는데 이것을 방지하기 위해 널리 사용되는 기능이 타르피팅(Tarpiting) 기능(tar+pit의 합성어로 쥐를 잡을 때 사용하는 것처럼 타르로 된 끈끈이 덫을 의미한다)이다. SMTP 서버가 RCPT TO 명령을 통해 보낸 메일 주소가 디렉토리를 검색한 뒤 없다고 하면 늦게 응답하도록 해 스팸 발송자들이 해당 주소가 유효한지 여부를 알 수 없도록 하는 것이다.

타르피팅 기능은 윈도우 2003 환경에 SMTP 서비스의 버전(확인은 Windows\System32\inetsrv 디렉토리 안의 smtpsvc.dll이다)이 6.0.3790.175 이상 되어야 한다. 꾸준하게 보안 업데이트를 해 왔다면 문제가 없을 것이다. 지원 환경이 된다면 레지스트리를 변경해 줘야 한다. 레지스트리 HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\SMTPSVC\ Parameters에서 새로 만들기 → DWORD → TarpitTime을 입력한 후 시간을 초단위로 입력하고 재부팅하면 된다. 만일 값을 5라고 설정하면 RCPT TO 명령은 5초 뒤에 응답하게 될 것이다. 보통 스팸 메일 발송자들은 RCPT TO에 대한 응답이 늦어지면 재시도를 하지 않는 것이 특징이다.

스팸 발송 서버를 막는 ‘연결 필터링’
익스체인지 2000까지는 실시간 차단 목록(RBL, Realtime Blocklist)을 이용할 수 있는 방법이 없었다. RBL이란 특정 단체나 회사에서 스팸 메일을 보내는 서버나, 전화 접속자(일반적으로 동적 IP를 사용하는 전화 접속자들이 자신도 모르게 스팸을 발송하게 되는 경우가 많다), 오픈 릴레이로 맞추어진 서버들의 IP 목록들을 말하며 우리가 일반적으로 알고 있는 ORDB(Open Relay DataBase, www.ordb.net), Spamhause(www.spamhaus.org), Mail-abuse(www.mail-abuse.org), SpmaCop(www.spamcop.net) 등이 바로 이 RBL을 제공해 주는 회사들이다.

연결 필터링이란 메시지가 들어오면 메시지를 보낸 서버의 IP 주소를 추출해 RBL 제공자에게 질의를 하고 해당 IP 주소가 목록에 있는지 여부를 확인, 해당 주소가 없다면 메시지를 받아들이고 주소가 존재한다면 거부하는 방법이다. 이 방법을 사용하면 약 40~50%의 스팸들을 걸러낼 수 있다고 한다.

사실 지난 2002년 MS의 조사에서도 익스체인지 서버를 게이트웨이로 쓰는 회사는 미국 내에서 거의 없었던 것으로 조사됐다. RBL을 이용할 수 없기 때문이었다. 거의 대부분의 회사들이 센드메일(Sendmail)을 SMTP 게이트웨이로 사용해 RBL 기능과 그 외 서비스를 이용해 왔다. MS는 이런 고객들의 요청을 받아들여 SMTP 게이트웨이로 센드메일을 사용하지 않고 바로 익스체인지를 사용할 수 있도록 RBL을 지원하게 됐다.

RBL들은 보통 DNS 쿼리를 이용해 질의를 한다. 즉 SMTP 가상 서버가 메시지를 받으면 <화면 4>와 같이 연결 필터링 탭의 [차단 목록 서비스]에 설정돼 있는 목록 중 가장 위쪽 서버에 질의를 한다. RBL에 질의를 하는 방법은 역방향 조회와 비슷한 모양을 가지고 있다.

<화면 4> 연결 필터링

역방향 조회 시에는 in-addr.arpa를 사용하지만 RBL의 경우 bl.spamcop.net이 같이 RBL 제공자의 도메인 이름을 사용한다는 것이 차이점이다. 예를 들면 123.12.12.3이라는 서버가 메시지를 보내 왔다면 3.12.12.123.bl.spamcop.net으로 질의를 한다. 그러면 해당 서버에서는 IP 주소가 있는지 확인해 이름이 있는지 여부를 결과로 보내 준다. nslookup 명령을 통해서 알아보면 어떻게 확인하는지 간단하게 확인할 수 있다.

>nslookup -q=a 3.12.12.123.bl.spamcop.net

server:ns.techmentor.co.kr

address:211.114.57.123

Name: 3.12.12.123.bl.spamcop.net

Address: 127.0.0.2

이를 네트워크 모니터를 이용해서 보면 다음과 같다.

DNS: 0x6c:Std Qry for 3.12.12.123.bl.spamcop.net of type Host Addr on Class INET addr

이때 해당 주소가 자신의 데이터베이스에 없으면 다음과 같은 메시지를 보여 준다.

DNS: 0x6c:Std Resp. Auth. Ns is spamcop.net. of type SOA on Class INET addr.: Name does not exist

데이터베이스에 존재한다면 다음과 같이 처리를 한다.

DNS: Answer section: 3.12.12.123.bl.spamcop.net of type SOA on class INET addr.
DNS: Resource Name: 3.12.12.123.bl.spamcop.net.
DNS: Resource Type= Host Address
DNS: Resource Class= Internet address class
DNS: Time To Live=2048(0x800)
DNS: Resource Data Length =4(0x4)
DNS: IP address=127.0.0.2

이렇게 되면 클라이언트에게는 기본적으로 550 5.7.1 123.12.12.3 has been blocked by Spamcop RBL list라는 응답을 보내 준다. 여기서 중요한 것이 바로 127.0.0.2라는 IP 주소다. 이것은 보통 반환상태 코드라고 부르는데, 해당 주소가 어떤 RBL에 포함돼 있는지를 나타내는 코드로 각 RBL 업체에 따라 약간의 차이가 있다. 그러므로 자신이 사용하는 RBL의 제공자 홈페이지에서 상태 반환 코드를 확인한 후 <화면 5>와 같이 필요한 코드만 적용할 수 있다. email-policy.com 웹사이트(www.email-policy.com/spam-black.lists.html)에 보면 각 RBL 제공회사별 반환 상태코드를 확인할 수 있다.

<화면 5> 연결 필터링의 상태반환 코드

메시지를 보낸 사용자에게 반환할 메시지의 내용도 지정할 수 있다. 기본적으로 [IP 주소 has been blocked by 규칙의 표시이름]으로 나타나는데 이것을 필요에 따라 바꿀 수 있다. 한글은 사용할 수 없으며, 다음과 같은 변수를 사용하면 적당하게 수정할 수 있다.

◆ %0: 보낸 메일 서버의 IP 주소
◆ %1: 연결 필터링의 규칙 표시 이름
◆ %2: RBL 서비스 제공회사 이름

예를 들어 ‘The IP address %0 was rejected by the Realtime Block List provider %2’라고 [반환할 사용자 지정 오류 메시지]에 입력하면 ‘The IP address 123.12.12.3 was rejected by the Realtime Block List provider bl.Spamcop.net’이라는 메시지를 받게 된다. 이때 특정 메일 주소에 대해 연결 필터링에 예외를 두기 원한다면 [예외]를 선택하고 SMTP 주소를 입력하면 해당 주소에 대해서는 연결 필터링의 결과에 상관없이 메시지를 받아 들인다.

만약 특정 주소가 아니라 특정 서버가 된다면 상황은 달라진다. 이때는 사용자가 원하는 작업이 무엇인지 먼저 결정해야 한다. 즉 특정 IP 주소에 대해서 거부할지 아니면 허용할지를 결정해야 한다. 특정 IP 주소에 대해서 거부한다는 말은 연결 필터링 결과에 상관없이 특정 IP 주소나 그 대역에 있는 컴퓨터 그룹들을 모두 거부한다는 의미이며, 반대로 허용한다는 것은 RBL의 질의 결과에 상관없이 해당 IP 주소에 대해서는 모두 허용한다는 뜻이다. 익스체인지 5.5의 경우 허용 목록에 해당 IP 주소를 입력해 바로 연결을 허용할 수 있다(이것을 보통 블랙 리스트의 반대 개념으로 화이트 리스트라고 한다).

차세대 안티 스팸 기능 ‘지능형 메시지 필터’
우리나라 사람들이 싫어하고 고통스러워하는 이야기가 바로 IMF이다. 처음 Intelligent Message Filter라고 했을 때는 좀 있어 보이더니 이것을 줄여서 IMF라고 하니 바로 인상이 구겨지는 것이 우리나라 사람들의 인지상정이다.

어쨌든 IMF가 첫선을 보인 것이 2004년 5월 미국에서 열린 TechED 2004이다. 이전까지만 해도 MS 익스체인지 컨퍼런스(MEC)가 따로 개최될 정도로 활기가 있었으나 2003년부터는 TechED에 통합돼 세션의 숫자도 줄어 들었다. 메시징의 중요성은 점점 강조되고 있지만 MS는 오히려 뒷걸음질치는 인상이다.

본래 IMF 개념이 처음 제기된 것이 지난 2003년 가을 컴덱스다. 빌 게이츠 회장이 자신도 하루에 수천통의 스팸을 받는다는 고백과 함께 앞으로 MS가 스팸과의 전쟁을 선포하고 그것을 위해 엄청난 돈을 투자하겠다고 밝혔다. 익스체인지 서버에 기계 학습(Machine Learning) 기술을 접목시킨 새로운 필터링 도구를 선보이겠다는 것이었다. 그리고 이 가운데 가장 먼저 제품화한 것이 바로 IMF였다.

익스체인지 2003이 출시될 때 이미 IMF에 대한 윤곽이 있었다. 왜냐하면 이전 버전에서 받는 사람 필터링, 연결 필터링 기능까지 구현했기 때문에 고객들의 컨텐츠 필터링에 대한 요구가 더욱 높아질 것으로 예상했기 때문이다. 실제로 익스체인지 2003이 출시될 당시 아웃룩 2003에 스팸 방지 기술을 추가했고, 이때 이미 SCL(Spam Confidence Level) 이야기도 함께 제기됐다. 이제 IMF의 내면 속으로 들어가 보자.

IFM의 기술 기반 ‘스마트스크린’
스마트스크린(SmartScreen) 기술은 MS에서 특허를 낸 기술로, 특정 메시지가 들어오면 이 메시지가 스팸인지 아닌지를 통계학으로 판단하는 기술이다. 이 기술의 근간에는 베이지언(Bayesian) 정리가 있다. 베이지언 정리는 우리가 고등학교 때 배운 조건부 확률을 기초로 하고 있는데 이 조건부 확률을 이해하는 것이 스마트스크린을 이해하는데 도움을 줄 것이다(박스 기사 참조).

스마트스크린은 이와 같은 통계학적 방법에 의해 미래의 정보에 점수를 매겨 스팸인지 아닌지를 평가한다. 그러므로 스마트스크린에 사용되는 확률 정보가 얼마나 정확한지에 따라 메시지 분류의 정확도가 결정된다. 필자는 여기서 변인을 하나만 두었다. 즉 특정 낱말이 들어간 경우에 스팸인지 여부를 결정하지만 스마트스크린에 적용되는 변인은 여러 가지이며 각 변인에 대한 가중치도 다르다. 그렇기 때문에 MS는 스마트스크린 전체 기술에 대해서 특허가 있으며 이 기술은 MSN, Hotmail, 아웃룩에서 사용되고 있다.

이 기술은 베이지언 정리를 스팸 부분에 적용하는데 권위자인 David Hekermann이 MS 연구소의 MLAS(Machine Learning and Applied Stastistics)와 ASI(Adaptive Systems annd Interactions) 그리고 시그널 프로세싱(Signal Processing) 그룹을 이끌고 완성시킨 것이다. MS는 스마트스크린 기술을 개발한 후 스팸 분류의 정확도를 높이기 위해 피드백 루프 프로그램을 이용, 고객들로부터 50만개 이상의 스팸 메일들을 받아 각각의 특징을 분석했다.

현재에는 MS의 스마트스크린 뿐만 아니라 스팸 어세신(Spam Assassin)이라는 스팸방지 공개 소프트웨어에도 베이지언 정리가 이용되고 있다. 미국의 대다수 컨텐츠 필터링을 이용한 스팸방지 솔루션도 마찬가지다. 이렇게 스마트스크린 기술을 통해서 얻어진 결과가 각 메시지별로 SCL로 표시된다. SCL 값은 모두 11단계의 값으로 구성돼 있으며 상세한 내용은 <표 1>과 같다.

<표 1> SCL 값과 그 의미

SCL 값설명-1익스체인지 서버 2003 내부에서 이동하는 메시지에 부여하는 값이다. 내부적으로 배달되는 메시지에 대해 위양성(False Positive: 스팸 메일이 아닌데 스팸 메일로 분류되는 경우)일 가능성은 전혀 없으므로 따로 구분하며 덮어쓰기도 불가능하다. 인증 받은 사용자로부터 받는 메일은 기본적으로 -1이 된다.0전혀 스팸이 아닐 때 쓰여진다.1~9스팸일 가능성을 나타내는데 1은 스팸이 아닐 가능성이 높고 숫자가 높아짐에 따라 스팸일 가능성이 높아진다. 9가 되면 스팸일 가능성이 99% 이상이 된다.

이렇게 각 메시지 별로 SCL이 정해지는데 IMF는 스팸 여부를 판단하는 임계값을 정한다. 임계값을 5로 정하면 5이상의 SCL 값을 부여받은 메일을 스팸으로 인식한다. 임계값을 낮게 설정하면 스팸 메일로 분류되는 메일이 많은 반면 위양성 메일도 증가하고, 임계점을 높게 설정하면 위양성 메일을 줄일 수 있지만 스팸 메일들의 덜 걸러질 가능성이 있다.

그럼 좀더 내부적으로 어떤 과정을 거쳐서 SCL이 완성되는지 알고리즘을 살펴 보자. SCL은 수신된 특정 메시지에 대해 보낸 시간과 받은 시간의 차이, 메시지가 HTML로 되어 있는지 여부, 단어들이 사전에 있는지 여부 등을 확인한다. 메시지에서 반복되는 단어들을 제외하며 메시지 제목에 있는 단어들과 메시지 본문에 대해서 가중치(weight)를 정하고 영어일 경우 메시지 헤더에 대문자 수와 메시지 헤더에 숫자가 얼마나 있는지, 특정 단어가 반복되는 횟수 등도 가중치에 반영한다.

이런 가중치들은 -10에서 +10까지의 값으로 정해지는데 (-)값을 가지게 되면 스팸이 아닌 것으로, (+)값을 가지면 스팸일 가능성이 높은 것으로 해석한다. 이런 가중치가 다시 정규화 과정을 거쳐 0에서 1사이의 값을 가지며 이런 정규화 값을 모두 더하면 SCL이 된다.

베이지언 정리  
조건부 확률은 과거의 A라는 사건의 발생해 W1이라는 것으로 분류됐다면 B라는 사건이 일어날 때 다시 W1으로 분류될 확률을 계산하는 것이다. 즉 메시지 내용에 비아그라라는 내용이 포함됐을 때 스팸 메일로 분류했다면, 다음 번 메시지의 내용에 비아그라가 나오면 W1으로 분류될 확률을 계산해 내는 것이다. 그러면 일단 A라는 사건이 일어날 확률을 P(A)라고 하고 W1에 속할 확률을 P(W1)이라고 하자.


P(W1)+P(W2)=1→스팸일 확률과 스팸이 아닐 확률을 더하면 1이다
P(W1|A)→비아그라라는 내용이 포함됐을 때 스팸으로 분류될 확률
P(A|W1)→스팸으로 분류됐을 때 비아그라라는 내용이 포함될 확률
P(A, B)가 동시에 일어날 확률

조건부 확률이론에 따르면 이것은 증명할 필요가 없는 공리로 P(W1|A)=P(W1, A)/P(W1)이며 P(A|W1)=P(A, W1)/P(A)가 될 수 있다. P(W1, A)와 P(A, W1)는 두 가지 사건이 동시에 일어날 확률이기 때문에 같은 의미이다. 그러므로 P(W1, A)와 P(A, W1)를 없애면 P(W1|A)=P(A|W1)P(W1)/P(A)가 된다. P(W1|A)는 A라는 성질이 있을 때 W1에 속할 확률이다. 즉 비아그라라는 성질이 있을 때 스팸에 속할 확률을 의미한다. 그러면 P(W1|A)+P(W2|A)=1이다. 즉 A라는 성질이 있으면 W1 그룹에 속할 확률과 W2 그룹에 속할 확률의 합은 1이 된다. 당연한 결과이다.

그러면 P(W1|A)<P(W2|A)라고 가정하자. 즉 A라는 특성 W2 그룹에 속할 확률이 높다고 가정하는 것이다. 그러면 P(W1|A)=P(A|W1)P(W1)/P(A)와 P(W2|A)=P(A|W2)P(w2)/P(A)가 된다. 가정한 P(W1|A)<P(W2|A)에 대입하면 P(A|W1)P(W1)/P(A)<P(A|W2)P(W2)/P(A)가 될 것이다. 여기서 P(A)를 제거하면 P(A|W1)P(W1)<P(A|W2)P(W2)가 된다. 좌우를 정리하면 P(A|W1)/P(A|W2)<P(W2)/P(W1)이 된다. 이것이 베이지언 정리이다.

사실 오른쪽 왼쪽 모두 이전의 데이터로 알아낼 수 있는 것이다. 왼쪽을 가능성비(likelihood ratio)라고 부르며, 오른쪽을 임계점(threshold)이라고 부른다. 예를 들어 현재 받는 메시지의 10%가 스팸 메일이라고 하자. 그러면 스팸 메일일 경우 W1, 스팸이 아닐 경우 W2라고 하자. 임계점은 0.9/0.1=9가 된다. 그럼 비아그라라는 내용이 포함된 메일을 받을 확률을 P(A)이라고 하면 P(A|W1)은 비아그라라는 내용이 포함된 메시지가 스팸 메일로 분류될 확률이고 P(A|W2)는 스팸이 아닐 확률일 것이다.

이전의 통계에 따르면 비아그라라는 글자가 포함된 메시지가 스팸으로 분류된 경우가 80%이고 스팸이 아니었을 경우가 20%라고 하면 P(A|W1)/P(A|W2)=0.8/0.2=4가 된다. 그러므로 베이지언 정리에 의하면 4<9가 되므로 참이 된다. 이것은 앞으로 비아그라라는 글자가 들어간 메시지가 배달되면 스팸으로 분류하게 된다는 것을 의미한다. 왼쪽과 오른쪽의 차이가 크면 클수록 그 정확도는 높아진다.

실전! 지능형 메시지 필터 사용하기
지능형 메시지 필터 기능을 사용하려면 SMTP 게이트웨이 역할을 하거나 브리지헤더 역할을 하는 서버에 설치해야 한다. IMF를 설치하면 전역 설정의 메시지 배달 특성에 <화면 6>과 같이 지능형 메시지 필터 탭이 추가된다. 이 값을 정하기 전에 [메시지 차단하는 경우]에서 기본으로 선택되어 있는 [작업없음]을 그대로 두고 성능 모니터에서 [Total Messages Assigned an SCL Rating of X] 카운터들을 이용해서 전체적인 메시지의 SCL 단계를 모니터링한 뒤 메시지 차단 임계점을 정해야 한다.

<화면 6> 지능형 메시지 필터 탭

지능형 메시지 필터에는 게이트웨이에서의 차단을 구성하거나 정보 저장소 단계에서 정크메일로 분류하도록 구성할 수 있는데 그 내용을 살펴보면 다음과 같다.

◆ 게이트웨이 차단 구성 : 메시지가 들어오게 되면 SCL을 부여 받고 이 SCL은 게이트웨이 차단 구성의 [SCL 등급이 다음보다 크거나 같은 메시지 차단]에서 설정한 임계값 보다 높은지 낮은지를 판단해, 낮으면 게이트웨이를 통과해 사서함이 위치해 있는 서버의 정보 저장소로 전달되고, 높으면 [메시지를 차단하는 경우]에서 설정한 옵션대로 처리한다.

① 거부 : 게이트웨이에서 메시지를 거부한다. 익스체인지는 SMTP 세션 동안 메시지를 거부하므로 연결하는 SMTP 서버가 보낸 사람에게 NDR을 발송해야 한다.

② 보관 : 등급이 지정한 임계값 이상인 UCE로 표시된 모든 메시지를 보관한다. 보관된 메시지는 보관 디렉토리에 저장된다. 이 디렉토리는 SMTP 가상 서버 속성의 메시지 탭에서 지정한 큐 디렉토리의 루트 디렉토리에 있다. 기본적으로 보관 디렉토리는 Exchsrvr\Mailroot\vsi n\UCEArchive이며 여기서 n은 SMTP 가상 서버 인스턴스 번호이다. 메모장으로 열거나 MS 아웃룩 익스프레스를 이용해 보관 디렉토리에 있는 메시지를 검토할 수 있다. 합법적인 전자 메일 메시지가 보관돼 있는 것을 발견하면 해당 메시지를 Exchsrvr\Mailroot\vsi n\pickup 디렉토리로 이동해 다시 전송할 수도 있다. 그러면 SMTP 서비스가 전자 메일 메시지를 해당 사서함으로 배달한다. HKEY_LOCAL_MACHINE\Software\Microsoft\Exchange\ContentFilter 레지스트리 밑에 새로 만들기, 문자열 값 그리고 ArchiveDir를 입력한 다음 보관할 위치를 D:\ArchiveDir 등과 같이 변경할 수 있다.

③ 삭제 : 등급이 지정한 임계값 이상인 UCE로 표시된 모든 메시지를 삭제한다. 해당 메시지는 익스체인지에서 받아 삭제한다. 보낸 사람과 받는 사람 모두 해당 메시지가 삭제됐는지 여부를 알 수 없다.

④ 작업 없음: 작업 없음을 선택하면 등급이 지정한 임계값 이상인 UCE로 표시된 메시지에 대해 어떤 작업도 수행하지 않는다. 이 UCE 등급은 다른 메시지 속성과 함께 저장되며 이러한 속성은 해당 메시지와 함께 다른 익스체인지 서버에 전송된다. 익스체인지 사서함 서버는 UCE 등급과 정보 저장소 정크 메일 구성에서 지정한 설정을 사용해 메시지를 사용자의 받은 편지함으로 배달할 것인지 정크 메일 폴더로 배달할 것인지 결정한다.

◆ 정보 저장소 정크 메일 구성 : 게이트웨이 차단 구성을 통과한 메일들은 실제 자신의 사서함이 있는 저장소에 저장될 때 각 사서함에 존재하는 정크 메일 폴더에 저장될지, 아니면 받은 편지함으로 이동할지 여부를 결정해야 하는데, 이때 [정보 저장소 정크 메일 구성]의 [SCL 등급보다 크거나 같은 메시지 이동]에서 설정한 SCL 값에 따르게 된다. 즉 여기서 설정한 SCL 값보다 크거나 같으면 해당 사서함 내의 정크 메일 폴더로 이동하고 작으면 받은 편지함으로 간다. 기억해 둘 것은 SCL 값은 정수가 아니라 소수점까지 포함된 유리수라는 것이다. 이 값은 당연히 게이트웨이에서 설정한 차단 구성의 SCL 값보다 같거나 작아야 한다.

IMF를 통과한 메시지들은 x-sender, x-receiver 속성이 추가되며 기본적으로 X-SCL 속성은 확장되지 않는다. 이를 확장하기 위해서는 HKEY_LOCAL_MACHINE\Software\Microsoft\Exchange\ContentFilter에서 새로 만들기 → DWORD → ArchiveSCL라고 입력하고 DWORD 편집에서 1이라 입력한다. 만일 0이나 이 값이 없으면 헤더 정보에 X-SCL이 남지 않는다. 다음은 IMF에서 확장된 헤더 특성에 대한 예이다.

x-sender: bkuk@korea.com
x-receiver: administrator@numi.ne.kr
X-SCL: 6 90.64%

아웃룩의 스팸 필터 기능
앞서 설명한 것처럼 아웃룩도 내부적으로 스마트스크린 기술이 적용된 제품이기 때문에 SCL 값을 이용해 스팸 여부를 결정할 수 있다. 그러나 아웃룩 2003이 출시될 당시에는 위양성이 많았다. 정상 메일을 스팸 메일로 분류할 가능성이 매우 높았던 것이다. 이것은 스마트스크린이란 알고리즘이 영어를 기반으로 하고 있기 때문에 한글이나 중국어, 일본어와 같은 2바이트를 사용하는 동아시아권 메일에 대해서는 위양성이 많았던 것이다.

하지만 아웃룩은 보안 업데이트에서 제공된 새로운 필터링 알고리즘을 이용해 점점 똑똑해지고 있다(2003년 12월, 2004년 3월 그리고 9월에 업데이트됐다. 업데이트 다운로드는 support.microsoft.com/default.aspx?scid=kb;ko;872976을 참고). 그리고 베이지언 정리의 특성상 과거의 판단기준을 통해 새로운 데이터가 들어왔을 때 확률을 추론하는 것이므로 데이터가 많이 쌓이면 쌓일수록 정확도는 높아진다.

<화면 7> 아웃룩의 정크메일 옵션

스마트스크린 알고리즘이 설정된 아웃룩의 정크메일 판단 옵션을 보면 <화면 7>과 같다. 여기에는 차단 수준을 다음과 같이 네 단계로 구성하고 있다.

◆ 자동 필터링 사용안함 : 수신거부 목록에 있는 것만 정크 메일로 보냄
◆ 낮음 : SCL이 7 이상 스팸으로 인식하게 된다.
◆ 높음 : SCL이 4 이상 스팸으로 인식하게 된다.
◆ 수신허용 목록만 : [수신 허용-보낸 사람] 목록이나 [수신 허용-받는 사람] 목록에 있는 정보로부터 받는 메시지만 받은 편지함에 저장한다.

아웃룩은 자체적으로 블랙 리스트인 수신 거부 목록을, 화이트 리스트로는 수신 허용 보낸 사람 목록과 수신-허용 받는 사람 목록을 가지고 있어 SCL 여부에 관계없이 메시지를 분류할 수 있다. 사용자가 만든 규칙들 중 수신 허용-보낸 사람 목록과 수신 거부 목록들의 최대 크기는 510KB로 약 2000개의 항목이 들어가는데 레지스트리를 변경해 크기를 조절할 수도 있다. 이 목록은 텍스트 파일로 저장하거나 불러들일 수 있어, 목록들을 네트워크 파일 서버에 두고 주기적으로 업데이트해 개별 사용자들이 아웃룩에 추가하도록 하면 더욱 효과적이다. MAPI(Messaging Application Programming Interface)를 사용하고 있다면 아웃룩 2003과 OWA(Outlook Web Access) 간에 서로 동기화도 할 수 있다. 단 OWA는 파일을 보내거나 가져올 수 없다.

작동방법과 순서
필터링 적용방법
전역설정에서 설정한 보낸 사람 필터링, 받는 사람 필터링, 그리고 연결 필터링은 아주 간단한 방법으로 각 SMTP 가상 서버별로 <화면 8>과 같이 속성 탭의 IP 주소에 있는 고급의 구분정보 란에서 사용할지 여부를 결정할 수 있다.

<화면 8> 필터링 사용 여부 결정하기

하지만 IMF는 <화면 9>와 같이 독립적으로 인터페이스가 따로 구성돼 있어서 원하는 가상 서버를 선택할 수 있도록 되어 있다. IMF는 인터넷 메일을 주고받는 게이트웨이나 브리지해드 서버에만 설정하면 되고 사서함이 저장된 서버에서는 따로 설치할 필요가 없다.

<화면 9> 지능형 메시지 필터링 속성


필터링 동작 순서
각 필터링이 어떤 순서를 거쳐서 분류되는지에 대해서는 <그림 2>에 나와 있다.

① SMTP 서버가 익스체인지에 연결해 SMTP 세션을 시작한다.

② SMTP 세션 중 익스체인지는 다음 기준에 따라 [연결 필터링]을 적용한다.
◆ 연결 필터링이 전체 수락 목록을 확인한다. IP 주소가 전체 수락 목록에 있으면 다른 연결, 받는 사람 또는 보낸 사람 필터링은 적용하지 않고 메시지를 수락한다.
◆ 연결 필터링이 전체 거부 목록을 확인한다. 보내는 서버의 IP 주소가 전체 거부 목록에 있으면 메시지를 자동으로 거부하고 다른 필터는 적용하지 않는다.
◆ 연결 필터링이 구성된 공급자의 실시간 차단 목록을 확인한다. 보내는 서버의 IP 주소가 차단 목록에 있으면 메시지는 거부하고 다른 필터는 적용하지 않는다.

③ 익스체인지는 [받는 사람 필터링]에 등록한 목록에 받는 사람이 있는지 확인한다. 받는 사람이 필터링하는 전자 메일 주소와 일치하면 익스체인지는 해당 메시지를 거부하고 다른 필터는 적용하지 않는다.

④ 받는 사람 필터링이 적용되면 익스체인지는 [보낸 사람 필터링]으로 구성된 보낸 사람 목록에서 확인된 보낸 사람 주소를 확인한다. 보낸 사람이 보낸 사람 목록에 있는 주소와 일치하면 구성된 옵션에 따라 필터링하고 다른 필터는 적용하지 않는다.

⑤ 메시지가 연결, 받는 사람 또는 보낸 사람 필터링 별로 필터링하지 않으면 지능형 메시지 필터가 적용되고 게이트웨이에서 다음 둘 중 하나가 발생한다.

◆ 지능형 메시지 필터가 메시지에 게이트웨이 임계값보다 높은 SCL 등급을 매기면 지능형 메시지 필터는 적절한 게이트웨이 작업을 수행한다.
◆ 지능형 메시지 필터가 메시지에 게이트웨이 임계값보다 낮거나 같은 SCL 등급을 매기면 메시지는 사용자의 사서함 저장소를 사용해 익스체인지 서버로 전달된다.

⑥ 사용자가 아웃룩 2003 또는 익스체인지 2003용 OWA를 사용하고 있는 경우, 사용자의 사서함 저장소가 메시지 SCL 등급과 사용자가 구성한 저장소 임계값을 비교하면 다음 중 하나가 실행된다.
◆ 메시지 등급이 저장소 임계값보다 낮거나 같으면 사서함 저장소는 아웃룩 또는 OWA에서 구성한 사용자의 차단할 보낸 사람 목록을 확인하고 다음 중 하나가 발생한다.
◆ 메시지를 보낸 사람이 아웃룩 또는 OWA에서 구성된 차단할 보낸 사람 목록에 없거나 차단할 보낸 사람 목록이 사용 가능하지 않거나 정의돼 있지 않으면 메시지는 받는 사람의 받은 편지함으로 배달된다.
◆ 보낸 사람이 아웃룩 또는 OWA에서 구성된 차단할 보낸 사람 목록에 있으면 메시지는 사용자의 정크 메일 폴더로 배달된다.

⑦ 메시지 등급이 저장소 임계값보다 높으면 사서함 저장소는 아웃룩 또는 OWA에서 구성된 사용자의 수신 허용-보낸 사람 목록을 확인하고 다음 중 하나가 발생한다.
◆ 보낸 사람이 수신 허용-보낸 사람 목록에 있으면 메시지는 받는 사람의 받은 편지함으로 배달된다.
◆ 보낸 사람이 수신 허용-보낸 사람 목록에 없거나 수신 허용-보낸 사람 목록을 사용할 수 없거나 정의돼 있지 않으면 메시지는 받는 사람의 정크 메일 폴더에 저장된다.


<그림 2> 필터링을 통한 메시지 흐름

스팸과 필터링 기술 ‘창과 방패’
MS는 현재 스팸메일 발송자에 대해 현재 엄청난 금액의 손해배상 소송을 제기한 상태다. 스팸왕이라고 불리는 Stanford Wallace도 소송 기간동안 스팸메일을 발송하지 않을 것이라고 선포했다. 그러나 이것은 진정한 해결책이 되지 못한다. 스팸 메일 발송자에게 엄청난 금액의 소송을 제기하는 것은 일종의 본보기 역할을 하는 것일 뿐이다. 현재 스팸메일의 54%가 미국에서 발송되며 그 중에서도 플로리다 지역이 가장 많다고 한다(아이러니하게도 2004년 여름 허리케인이 미국을 강타했을 때 전세계로 발송된 스팸 메일 양이 엄청나게 줄었다).

스팸 메일은 앞으로도 존재할 것이다. 스팸 메일과 정상 메일을 판단하는 기준은 모두 사용자에 달려있기 때문이다. 어디까지가 마케팅 메일이고 어디까지가 스팸 메일인지 기준도 모호하다. 어쩌면 우리가 교통경찰관에 딱지를 떼는 것과 마찬가지로 앞으로는 스팸 발송자들에 대해서 간단하게 벌금이 부과될지도 모른다. 하지만 진보된 기술은 이런 소모적인 과정을 크게 줄여줄 수 있다. 즉 사용자의 사서함에 도달하기 전에 스팸일 가능성이 높은 것은 제거하거나 정크 메일로 걸러내 혹시라도 있을 위양성을 줄여줄 수 있다.

실제로 MS에서는 익스체인지에 이런 기술을 추가했다. [보낸 사람], [받는 사람], [연결 필터링] 그리고 컨텐츠 필터링 기능인 IMF까지 추가했고, 클라이언트에서는 아웃룩의 정크 메일 옵션에서 다시 한번 판단할 수 있는 도구를 집어 넣었다. 올해에는 스팸 방지 기능을 강화하기 위해 IMF v2와 익스체인지 서비스팩 2 그리고 진정한 SMTP 게이트웨이로써 역할을 수행할 에지(Edge) 서비스가 출시될 예정이다. @

* 이 기사는 ZDNet Korea의 제휴매체인 마이크로소프트웨어에 게재된 내용입니다.
Posted by Tornado tornado