CERTCC-KR-TR-2001-12 메일서버의 SPAM RELAY TEST 해킹바이러스상담지원센터 cert@certcc.or.kr 김상철 kims@certcc.or.kr 1. 개요 E-Mail의보편화와맞물려서스팸 (Spam) 메일이라일컬어지는악성광고메일이요즘극성을부리는통에메일서버관리자들 (Postmasters) 은메일송수신에이전트 (MTA : Mail Transport Agent) 프로그램의환경설정방법에많은주의를기울일필요가있다. 많은관리자들은메일서버를설치시 Anti-Spam 메일서버의정확한설치와환경설정방법을몰라메일서버가스팸릴레이서버로이용되는불미스러운일이발생하기도한다. 뿐만아니라국내메일서버들이스팸메일서버로오인되게끔하여메일서버로서의제기능을담당하지못하도록하는일이종종발생하기도한다. 이문서에서는국내에서보편적으로많이사용되는메일서버의메일릴레이테스트방법에대하여서술하였으며, 각각의메일서버가릴레이되고있는경우에는참고문헌사이트를통하여메일서버관리자들에게대응방법을제공하고자하였다. 2. Mail Relay 테스트 아래의스크립트는 kisa.or.kr(211.252.150.11) 의위치에서실행되는메일릴레이테스트의세부명령및명령어의실행결과에대한상세내용을보여준다. 메일릴레이테스트를위해사용된 MTA (172.16.4.140 : certlinux.certcc.or.kr) 는 Sendmail 8.11.0을사용하였다. ksch90@korea.com은현재테스트를위해사용되고있는 korea.com의웹메일계정이다. 다음의시험들은현재사용되고있는 MTA가외부에서 Spam 메일릴레이로악용될취약점이있는지를체크하도록구성되어졌다. 아래의 19가지시험항목중에서하나이상의시험결과에성공하였다면해당메일서버가스팸메일서버로악용될취약점을갖고있음을의미한다. 그렇기때문에해당기관의보안정책을잠재적으로위반하게될것이다. 당신의메일서버가메일릴레이에취약하다면 3절의 " 문제해결 " 을참조하여대응하기바란다. 이러한메일릴레이테스트를자동화시켜주는자동화된메일릴레이테스트도구들인인터넷상에많이공개되고있다. 이러한도구를사용해서테스트하는방법도좋은방법이지만공개도구들에는여러가지세부사항에맞추어테스트하기가어렵게구성되어있다. 이스크립트중에서 "<<<" 는실행결과를표준출력장치 ( 모니터 ) 에출력된결과를의미하며, ">>>" 는표준입력장치 ( 키보드 ) 에의해입력되는명령어를의미한다. [tomcat:root]:/ > telnet 172.16.4.140 25 Trying 172.16.4.140... Connected to 172.16.4.140. Escape character is '^]'. <<< 220 certlinux.certcc.or.kr ESMTP Sendmail 8.11.0/8.11.0; Sun, 18 Feb 2001 23:54:18 +0900 >>> helo kisa <<< 250 certlinux.certcc.or.kr Hello tomcat.cyber118.or.kr [211.252.150.7], pleased to meet you >>> mail from:<ksch@certlinux.certcc.or.kr> <<< 250 2.1.0 <ksch@certlinux.certcc.or.kr>... Sender ok
>>> rcpt to:<ksch90@korea.com> <<< 550 5.7.1 <ksch90@korea.com>... Relaying denied >>> rset <<< 250 2.0.0 Reset state 이테스트는스팸메일릴레이의가장기본적인테스트로서사용되는방법이다. 내부도메인및내부 IP주소가아닌곳에서의 Relay 테스트가 "250 2.1.5 ksch90@korea.com... Recipient ok" 로응답하면릴레이를허용하는것이므로허용정책설정을반드시재점검하여 "550 5.7.1 <ksch90@korea.com>... Relaying denied" 메시지가뜨도록설정해주어야만한다. 이러한설정방법에대한 3절의문제해결을참조하기바란다. Relay test #1: 출발지와목적지의 Email 주소가동일한경우의릴레이시도테스트 >>> maill from:ksch@kisa.or.kr <<< 250 2.1.0 ksch@kisa.or.kr... Sender ok >>> rcpt to:ksch@kisa.or.kr <<< 550 5.7.1 ksch@kisa.or.kr... Relaying denied Relay test #2 : 올바르지않은출발지주소를사용하여시도할경우 >>> mail from: spamtest@spam.mail.kisa.or.kr <<< 501 5.1.8 spamtest@spam.mail.kisa.or.kr... Sender domain must exist Relay test #3 : 출발지주소를 localhost 호스트명을사용할경우 >>> mail from: relaytest@localhost <<< 553 5.5.4 relaytest@localhost... Real domain name required Relay test #4 : 메일을보내려고하는시스템이로컬도메인에있는것처럼속이기위해전체적인도메인이름을생략하여메일을보내려고할때 >>> mail from: <relaytest> <<< 553 5.5.4 <relaytest>... Domain name required Relay test #5 : 출발지메일주소없이메일을보내기위한시도 >>> mail from:<> <<< 250 2.1.0 <>... Sender ok >>> rcpt to:ksch90@korea.com <<< 550 5.7.1 ksch90@korea.com... Relaying denied Relay test #6 : 피해서버의 FQDN(Fully qualified domain name) 을출발지주소로지정하여시도 >>> mail from: root@certlinux.certcc.or.kr <<< 250 2.1.0 root@certlinux.certcc.or.kr... Sender ok >>> rcpt to: ksch90@korea.com <<< 550 5.7.1 ksch90@korea.com... Relaying denied Relay test #7 : 피해 SMTP 서버의 IP 주소를 [] 를사용하여시도 >>> mail from: spamtest@[172.16.4.140]
<<< 250 2.1.0 spamtest@[172.16.4.140]... Sender ok >>> rcpt to: ksch90@korea.com <<< 550 5.7.1 ksch90@korea.com... Relaying denied Relay test #8 : % 스타일의 relay 를사용하여시도. 많은예전의 MTA 들은이러한문법들을지원할수있다. >>>mail from:ksch@kisa.or.kr <<<250 2.1.0 ksch@kisa.or.kr... Sender ok >>>rcpt to:ksch90%korea.com@certlinux.certcc.or.kr <<<550 5.7.1 ksch90%korea.com@certlinux.certcc.or.kr... Relaying denied Relay test #9 : FQDN 대신에피해 SMTP 서버의 IP 주소를사용하여 % 스타일의 relay 를시도 >>> rcpt to:ksch%kisa.or.kr@[172.16.4.140] <<< 550 5.7.1 ksch%kisa.or.kr@[172.16.4.140]... Relaying denied Relay test #10 : 이중인용부호 ("") 를사용하여목적지주소를지정하여 relay 를시도 >>> rcpt to:"ksch90@korea.com" <<< 550 5.7.1 "ksch90@korea.com"... Relaying denied >>> rcpt to:"ksch@kisa.or.kr" <<< 550 5.7.1 "ksch@kisa.or.kr"... Relaying denied Relay test #11 : % 스타일의문법과이중인용부호 ("") 를사용하여 Relay 를시도 >>> rcpt to:"ksch90%korea.com" <<< 550 5.7.1 "ksch90%korea.com"... Relaying denied >>> rcpt to:"ksch%kisa.or.kr" <<< 550 5.7.1 "ksch%kisa.or.kr"... Relaying denied Relay test #12 : 출발지 E-Mail주소의호스트명이피해SMTP 서버의 IP주소이고, 또한목적지 E-mail주소가이중인용부호를사용된 @@ 릴레이문법을사용하여릴레이시도 >>> mail from:ksch@[172.16.4.140] <<< 250 2.1.0 ksch@[172.16.4.140]... Sender ok >>> rcpt to:"ksch90@korea.com@certlinux.certcc.or.kr" <<< 550 5.7.1 "ksch90@korea.com@certlinux.certcc.or.kr"... Relaying denied Relay test #13 : 목적지 E-Mail주소에이중인용부호를사용하고피해 SMTP버서의 IP주소를사용해서 relay 시도 >>> rcpt to:"ksch90@korea.com"@[172.16.4.140]
<<< 550 5.7.1 "ksch90@korea.com"@[172.16.4.140]... Relaying denied Relay test #14 : 인용부호없이 Style 을사용하고 SMTP 서버의 IP 주소를사용하여릴레이시도 >>> rcpt to:ksch90@korea.com@[172.16.4.140] <<< 550 5.7.1 ksch90@korea.com@[172.16.4.140]... Relaying denied Relay test #15 : Relay 를허용할수있는또다른 email syntax >>> mail from:ksch@[172.16.4.140] <<< 250 2.1.0 ksch@[172.16.4.140]... Sender ok >>> rcpt to:@certlinux.certcc.or.kr:root@kisa.or.kr <<< 550 5.7.1 @certlinux.certcc.or.kr:root@kisa.or.kr... Relaying denied Relay test #16 : 피해 SMTP 서버의 IP 주소를사용하여릴레이를허용할수있는또다른 E-mail Syntax 방법 >>> rcpt to:@[211.252.150.11]:root@kisa.or.kr <<< 550 5.7.1 @[211.252.150.11]:root@kisa.or.kr... Relaying denied Relay test #17 : E-mail 주소의문법을변조하고, IP 주소가출발지의 E-Mail 주소로사용하여릴레이시도 >>> mail from:ksch@[172.16.4.14] <<< 250 2.1.0 ksch@[172.16.4.14]... Sender ok >>> rcpt to:<kisa.or.kr!root> <<< 550 5.7.1 <kisa.or.kr!root>... Relaying denied >>> rcpt to:kisa.or.kr!nobody <<< 550 5.7.1 kisa.or.kr!nobody... Relaying denied >>> rcpt to:kisa.or.kr!root <<< 550 5.7.1 kisa.or.kr!root... Relaying denied Relay test #18 : E-mail 주소의문법을변조하고피해 SMTP서버의 IP주소를목적지주소로사용하여 Relay 시도 >>> rcpt to:kisa.or.kr!nobody@[172.16.4.14] <<< 550 5.7.1 kisa.or.kr!nobody@[172.16.4.14]... Relaying denied Relay test #19 : "Postmaster" 의계정이름을사용하여시도할경우, 아마도이러한경우는어떤 SMTP서버는특별한경우로취급되어져서릴레이가허용될수도있다. >>> mail from:postmaster@certlinux.certcc.or.kr <<< 250 2.1.0 postmaster@certlinux.certcc.or.kr... Sender ok >>> rcpt to:root@kisa.or.kr <<< 550 5.7.1 root@kisa.or.kr... Relaying denied
3. Fix The Problem ( 문제해결 ) 이절에서는국내에서가장보편화되어많이사용되는 MTA에대해서만언급하였다. UNIX기반에서는 sendmail, exim에대해서만기술하였거, Window Workgroup에서는 EMWAC와 Microsoft의 Exchange Server에대해서만기술하였다. 3.1 UNIX 3.1.1 Exim o Status : Freely Avaliable o Systems : UNIX o Info : http://www.exim.org Exim MTA의장점들은메일필터링과메일의효과적인처리능력에있다. 최근버전은디폴트로메일릴레이가차단되도록설정되어있다. 호스트, 도메인, 네트워크에대한릴레이를제어하기위한몇가지의환경설정옵션들이있다. 이러한옵션들을설정하는방법들을기술하고있는다음의사이트정보를참조하기바란다. ( http://www.exim.org/howto/relay.html ) 또한 Exim은사용자로보내어지는 Spam을줄이기위한다양한 MAPS 필터기능을사용할수있다. 더자세한정보는다음의 howto문서를참조하기바란다. ( http://www.exim.org/howto/rbl.html ) 3.1.2 Sendmail Version 8 o Status : Freely Avaliable o Systems : Unix o Info : http://www.sendmail.org 버전 8.8.4이전의버전은해킹취약점이존재한다. 심지어전체적으로안전하지않은 MTA이므로 Upgrade하기바란다. 8.8.x버전에대한 Ruleset들은 sendmail.org에있는 Claus Asmann의웹사이트 (http://www.sendmail.org/~ca/email/check.html) 를방문하면관련된최신의정보들이있다. 물론다른사이트들도관련된많은좋은정보들이있지만 Calus의사이트가가장빈번하게자료를업그레이드하는경향이있다. 그리고 8.8.x버전들이동작하고있는많은사이트들이 anti-relay구성설정기능을추가하였지만, 여전히해킹당할가능성이있다. 또다른좋은접근방법중의하나는 POP 패스워드를사용하여그들자신들을인증한사용자들에게만메일서버의접근을하도록제한하는것이다. 이것은소위 POP-before-SMTP 솔루션이라불리는방법이다. 이렇게사용하기위해서 sendmail의환경설정을하는것이복잡하다할지라도 "roaming" 사용자들를가진프로바이더 (Provider) 들에게는훌륭한솔루션중의하나라할수있다. http://spam.abuse.net/tools/smpbs.html
8.9.0버전에서는디폴트로메일릴레이기능을제한하도록되어있으며이러한기능들을제어하기위한많은환경변수들을제공한다. 이러한환경파라미터들의설정을올바르게사용하기위해서는 cf/readme 파일을 Anti-Spam configuration Control부분을참조하기바란다. (http://www.sendmail.org/m4/anti-spam.html) o Caution : 대부분의이러한 Anti-Spam Relay 솔루션들은메일관리자가허용되는 Relay 도메인들의리스트들을설정하는것을필요로한다. 이리스트에는보든허가인증된도메인들를포함하고있는지반드시확인하여야하며주의하여야할점은반드시 MX (Mail Exchanger) 뿐만아니라당신의도메인에서사용하고있는가상의도메일들이포함되도록설정하여야한다. 그렇지않으면당신이보낸메일이거절될수도있을것이다. 당신의메일서버가 FEATURE(relay_entire_domain) 을사용해서 8.9.x버전이상의 sendmail을구성하였다면, 이는당신의도메인내에있는모든호스트로부터의릴레이를허용한다는것을의미한다. 만약 "relay_entire_domain" 이호스트이름 ("host." : host.domain.com) 을사용한다면불행히도디폴트로 sendmail은당신의시스템에있는모든 IP 주소를체크해서 "reverse lookups" 를수행한다. 메일서버의시스템부하를가중시키게될것이다. Spam Relay의가장좋은해결방법은.cf파일을포함하여 relay_entire_domain을사용하는대신에 IP주소를사용하여 Relay호스트를설정하는것이설정상의오류를해결할수있는좋은방법이될수있다.. 3.2 Windows 3.2.1 EMWAC IMS o Status : Freeware o Systems : Windows o Info : http://www1.sica.com/ims EMWAC(European Microsoft Windows NT Academic Centre : http://emwac.ed.ac.uk/) 는무료용 Window/NT 메일서버인 IMS(Internet Mail Server) 를만들었다. 가장최근버전인 0.83는허가되지않는메일릴레이차단을위한해결책을제공하지않는단점이있다. 그래서 SICA Consulting Service ( http://www.sica.com/ ) 는이문제에대한가능한해결책으로 add-on서비스를제공하였다. 첫번째로 IMS에필터링기능을부여해주는 SCMSFILTER (http://www.sica.com/freestuf/scsmfilt.htm) 를설치하고나서 Gorden Fecyk의 Antirelay Plugin을 (http://www.orca.bc.ca/win95/antirelay.zip) 설치하면스팸릴레이에대한문제점을해결할수있을것이다. 3.2.2 Microsoft Exchange Server o Status : Commercial (Microsoft Corp.) o Systems : Win/NT o info : http://www.microsoft.com
Version 5.0은릴레이에취약하다. 다시말하면 Exchange Server 5.0이인터넷상에연결되어있으면외부의스팸메일공격자에게 relay를허용할것이다. 5.5 버전부터허가되지않은 relay를예방할수있는기능을지원한다. 이러한 Anti-Relay 에대한상세한설명은다음사이트를참조하기바란다. (http://www.microsoft.com/technet/exchange/relay.asp) 만약당신의 Exchange Mail Server가 5.5버전보다낮은버전을사용하고있다면지금업그레이드해야만한다. 4. 참고문헌및웹사이트 [1] http://sendmail.net/ [2] http://sendmail.org/ [3] http://www.whitehats.com/library [4] http://www.rahul.net/falk/index.html [5] http://www.plus.or.kr [6] http://www.exim.org/ [7] http://www1.sica.com/ims/ [8] http://www.microsoft.com/ Korea Computer Emergency Response Team Coordination Center : CERTCC-KR, cert@certcc.or.kr