 |
|
난이도 : 중급 Uche Ogbuji, Partner, Zepheira, LLC
원문 게재일 : 2008 년 12 월 09 일 번역 게재일 : 2009 년 3 월 17 일 2회에 걸쳐 연재되는 이 기사에서는 스팸 차단 기술에 대해
자세히 설명합니다. 이 두 번째 기사에서는 컨텐츠 분석과 링크백 스팸으로 인한 문제를 살펴본
후 블랙리스트 및 스팸 차단 서비스를 통해 다른 웹 사이트 관리자 커뮤니티와 함께 스팸 차단
기법을 공유하는 방법에 대해 설명합니다.
웹 스팸을 차단하기 위한 다양한 기술과 지식이 있다. 이 칼럼의 이전
기사에서는 워크플로우를 사용하여 정당한 사용자에게 부당한 불편을 주지 않고 스패머 로보트의 공격을 차단하는
장애물을 만드는 방법에 대해 살펴보았다. 이 기사에서는 컨텐츠 사이트 간 상호 관계로 인해
발생하는 스팸 문제와 스팸 피해자들이 커뮤니티를 결성하여 스패머와의 전쟁에 대응하는 방법에 대해 설명한다.
커뮤니티 정책
웹 스팸과의 전쟁을 승리로 이끌 수 있는 가장 효과적인 방법은 커뮤니티 활동을 활용하는
것이다. 스팸은 대규모 응답을 발생시키는 대규모 공격이다. 커뮤니티가 힘을 모아서 스패머의 동작 패턴과
컨텐츠 패턴을 밝혀낼 수 있다면 이러한 패턴을 공유하여 로보트의 공격 효과를 줄일 수 있다. 커뮤니티는
특히 이전 기사에서 설명한 워크플로우 접근법으로 해결할 수 없는 스팸 변형을 처리하는 데 매우 유용하다. 먼저 링크백 스팸에 대해 잠깐 설명하겠다.
링크백 스팸
Weblog와 웹 기사에서는 자신의 항목뿐 아니라 검색을 통해 발견한 여러 기사도 공유하고 있다. 실린
항목에 대해 Weblog에 직접 자신의 의견을 남기는 사람들도 있다. 사람들은 이러한 항목을 자신의 항목이나 기사에서
참조하기도 하는데 이처럼 사용자가 링크를 걸었을 때 다른 사이트에 통보하는 데 사용되는 기술 형식을
링크백이라고 한다. 링크백은 네트워크 신호인 "ping"을 사용하여 항목 간의 관계를 확인하는 기술로, 독자가
관련 컨텐츠를 찾는 데 도움이 된다. 하지만 링크백은 "sping"("spam ping"의 약자)을 보내서 Weblog를 남용할
수 있는 기회를 스패머에게 제공하기도 한다. 일반적으로 링크백에는 다음 세 가지 유형이 있으며, 이들은 모두
스팸과 관련되어 있다.
레프백(Refback). 웹 브라우저 사용자가 한 페이지에서 다른 페이지로 연결되는 링크를
클릭하면 두 번째 사이트에 대한 요청에 리퍼러라는 HTTP 헤더와 첫 번째 페이지의 URL이 포함된다. 이
프로세스를 "레프백"이라고 한다. 두 번째 사이트에서는 레프백을 추적하고, 레프백 목록을 게시할 수 있으며,
원래 사이트까지 레프백을 따라가서 제목, 메타 정보, 링크 텍스트 및 링크 주변의 다른 텍스트와 같은 정보를
추출할 수 있다. 스패머에게 레프백은 스패머의 검색 엔진 프로파일을 실행하는 클라이언트 링크를 합법적인
사이트에 심어 놓을 수 있는 한 방법으로 이용하고 있다. 스패머는 리퍼러 필드에 클라이언트 링크를 포함시켜서
대상 사이트에 요청을 보낸다. 이를 "리퍼러 스팸"이라고 한다. 리퍼러 스팸을 차단하는 일반적인 방법은 레프백
사이트 블랙리스트를 사용하는 것이다.
트랙백(TrackBack). 레프백은 사용자가 링크를 따라가는 방식에 의존한다. 하지만 일부 웹 블로거들은
보다 명확하게 링크백을 알리고 싶어 했으며 주요 Weblog 소프트웨어 업체 중 하나인 Six Apart에서 이러한
요구를 충족해 주었다. 트랙백은 "검색"(ping을 보낼 수 있는 위치와 방법을 공지하는 것)과 단순한 HTTP 요청을
사용한 ping 프로세스를 포함하는 스펙이다. 트랙백에 대한 공지와 검색은 페이지의 주석에 포함된 RDF(Resource
Description Framework) 형식의 정보이다. 항목을 참조하는 작성자가 공지된 엔드포인트로 ping을 보낸다. 트랙백은
웹 블로거들 사이에 매우 많이 사용되고 있으며, 스패머는 웹 블로거를 따라서 자유롭게 이동하고 있다. 스패머는
트랙백 리스너의 Weblog에 접근하여 자신의 클라이언트 사이트에 대한 거짓 알림을 보낸다. 트랙백 스팸은 많은
Weblog에서 어쩔 수 없이 트랙백을 사용할 수 없도록 할 뿐만 아니라 일부 Weblog 항목에서는 주석 폼마저도
사용할 수 없게 만드는 매우 심각한 문제이다. 트랙백 스팸에 대한 카운터 측정은 이 기사의 뒷부분에서 설명하는
주석 스팸에 대한 컨텐츠 분석 및 블랙리스트 카운터 측정과 비슷하다.
핑백(Pingback). 핑백은 알림 메시지의 형식이 단순한 HTTP 요청이 아닌 XML-RPC 요청이라는
점을 제외하고는 트랙백과 매우 비슷하다. 검색 메커니즘은 임베디드 RDF 대신 HTML 링크나 HTTP 헤더를 사용하여
더 안전하게 구현된다. 마지막으로 핑백의 수신자는 원래 사이트까지 ping을 역으로 따라가서 실제로 해당 사이트에
대한 링크인지 확인하게 된다. 이 단계만으로 많은 스패머를 차단할 수 있다. 트랙백도 이러한 검사를 수행하도록
구현할 수 있지만 이 기능은 핑백 스펙의 근본적인 부분이다. 이 검사 기능보다는 핑백의 스팸 차단 측정이 트랙백과
동일하다.
컨텐츠 분석
로보트에서 발생한 스팸과 mechanical turk 공격에 의해 발생한 스팸 모두 한 가지 근본적인
약점을 가지고 있다. 스패머의 주요 목표는 "black hat SEO(search engine optimization)" 또는 "Spamdexing"이라는
프로세스를 통해 자신의 클라이언트 사이트에 대한 검색 엔진 순위를 높이는 것이다. 따라서 스패머는
자신의 링크를 반드시 포함시켜야 한다. 그렇지 않으면 의미가 없으니까 말이다. 이는 곧 커뮤니티에서
통계와 보고된 링크 및 링크 패턴을 사용하여 스팸 클라이언트 링크에 대한 정보를 공유할 수 있다는
것을 뜻한다. 그러나 스패머가 자신의 사이트를 독자에게 직접 알리려고 하는 경우와 악의적으로
장난을 치는 경우는 소수적 예외가 될 것이다. 바로 이 점이 스팸 차단을 위한 다양한 접근법과 원리가 얼마나 중요한지를 나타내는 또 다른 이유인 것이다.
통계 분석
컨텐츠 분석의 기본 아이디어는 커뮤니티 접근법과 별개로 생각할 수 있다. 컨텐츠 분석에서는
컨텐츠를 자동으로 검사하여 텍스트에 대한 통계 분석을 통해 스팸으로 지정된 이전 컨텐츠와 유사한지 여부를
확인한다. 가장 일반적인 통계적 접근법은 베이즈 추론으로 다른 IBM developerWorks 기사에서 설명하고
있다(참고자료 참조). 사용자가 게시물을 스팸이나 좋은 컨텐츠("햄"이라고도 함)로
지정하거나 확인할 때마다 통계 테이블이 업데이트된다. 베이즈 추론은 이메일 스팸 차단 분야와 고객과
연관된 엔진(또는 상용 추천 엔진) 등의 스팸과 관련이 없는 분야에서도 많이 사용되고 있다.
커뮤니티 가입
컨텐츠 분석은 여러 대상 사이트에서 수행할 때 더 좋은 효과를 얻을 수 있다. 일반적으로
스패머는 많은 사이트가 포함된 긴 목록을 사용하여 로보트를 통해 차례대로 스팸을 보낸다. 한 사이트에서
스팸 게시물이 발견되면 다른 사이트에서도 이를 미리 알고 해당 게시물을 스팸으로 식별하도록 대비할 수
있다. 이 방법은 위에서 설명한 스팸 로보트 등록 이메일 및 IP 주소로 구성된 핫 목록과 비슷하다. 컨텐츠
분석의 경우에는 협력 이니셔티브를 보완하기 위한 여러 가지 상용(및 부분 상용) 서비스가 있다.
Akismet은 잘 알려진 협업 컨텐츠 분석 시스템 중 하나로 WordPress Weblog 플랫폼과 관련된
회사에서 제공하는 상용 서비스이다. 사용자는 이 서비스에 주석을 제출하고 해당 주석이 스팸으로 발견되었는지 여부를 나타내는 플래그를 받는다. Akismet은 문제의 복잡도를 흥미롭게 보여 준다. 이 서비스는
폐쇄적이다. 즉, 사용자와 관찰자에게 스팸 감지 프로세스를 검토할 수 있는 방법을 제공하지 않는다. 이처럼
폐쇄적인 이유는 스패머가 시스템을 쉽게 조작할 수 없도록 프로세스의 구체적인 메커니즘을 감추기 위한
것이다. 반대로 다른 사람들도 서비스를 향상시킬 수 없다는 단점이 있다. 게다가 정당한 주석이 스팸으로
판정되는 경우 이 서비스를 신뢰할 수 없게 된다. Akismet이 회사나 설립자를 비판하는 사람들을 비롯한
많은 사람들을 부당하게 블랙리스트에 올린다는 비난도 있었다. 이와 비슷한 서비스에는 Mollom, Defensio,
PHSDL(Project Honeypot Spam Domains List) 등이 있다.
등록 및 발신자 세부사항 검사
많은 Weblog에서는 누구나 자유롭게 댓글을 게시할 수 있지만 포럼과 같은 사이트에서는 게시물을
올리기 전에 등록이 필요한 경우도 있다. 등록 프로세스는 스패머를 차단할 수 있는 또 하나의 단계이다. 일반적으로
로보트는 여러 대상 사이트에 등록할 때 이메일 주소를 재사용한다. 주소를 자동 생성하는 스마트한 로보트라고
하더라도 생성된 주소의 패턴을 보면 그 흔적을 찾을 수 있다. 스패머 등록을 발견하는 데 도움이 되는 사이트와 서비스에는
"Stop Forum Spam"과 "The phpBB Anti Spam Project"가 있다(참고자료 참조).
소스에 다가가기
웹 스팸과의 대규모 전쟁 환경에서는 쓰기가 허용되는 모든 컨텐츠 공간에서 전투가 벌어진다. 지금까지
이 기사에서는 스패머의 공격 대상인 대상 사이트를 중점적으로 다루는 접근법에 대해 설명했다. 거의
모든 스패머 활동에는 폭넓게 사용되는 패턴이 있으며, 일부 스팸 차단 기법에서는 이러한 패턴을 이용한다.
Honeypot
이메일 스패머가 열려 있는 SMTP 릴레이를 사용하듯이 대부분의 웹 스패머는 열려 있는 HTTP
프록시 릴레이를 사용하여 작업을 수행한다. 이 방법을 사용하면 스패머의 실제 IP 주소가 마스킹되어 블랙리스트에 의한 발견을 피할 수도 있다. 이런 스패머의 패턴을 고려하여 일부 블랙리스트에서는
실제로 열려 있는 모든 HTTP 릴레이를 검색하기도 한다. 커뮤니티에서 사용하는 또 다른 방법은 "honeypot"을
배치하는 것이다. honeypot은 단순히 열려 있는 HTTP 프록시 릴레이처럼 기다리다가 스패머가 honeypot을
사용하면 스패머의 활동을 로그에 남긴다. 이 로그는 블랙리스트를 업데이트하는 데 사용된다. 또한 honeypot
운영자는 스패머의 동작 패턴에 변화가 있는지도 확인한다.
모든 프록시 차단
HTTP 프록시 블랙리스트를 사용하는 동시에 프록시된 모든 요청을 자동으로 차단할 수도
있다. HTTP 프록시는 사용자가 확인할 수 있는 특정 헤더를 업데이트한다. Listing 1은 이 작업을
수행하는 Apache 구성이다(참고자료 참조).
Listing 1. 프록시 서버를 차단하기 위한 Apache 구성
# Apache config recipe for blocking proxy servers
# http://perishablepress.com/press/2008/04/20/how-to-block-proxy-servers-via-htaccess/
RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ - [F]
|
비용 기반의 스팸 방지를 위한 커뮤니티의 노력
우체국을 통해 우편을 보낼 때 비용이 들지 않는다면 물리적 정크 우편 문제가 매우 심각해질
것이다. 필자가 받는 우편물 중에서도 대략 40%가 정크 우편이다. 그에 반해 이메일의 경우에는 90% 이상이
정크 이메일이다. 이메일 스팸과 웹 스팸을 포함한 전자 정크를 줄이기 위한 방법으로 메일을 보내거나 웹
사이트에 정보를 게시하는 활동에 적은 비용을 부과하는 방법이 있다. 이 아이디어는 정당한 사용자에게는
감당할 수 있는 수준의 약간의 부담만을 주면서 수백만 번의 공격을 시도하여 수천 개의 스팸 메시지나
게시물을 보내려는 스패머의 행동을 차단하는 것이다. 이 목적을 위해 실제 화폐를 사용하자고 이야기하는
사람들도 있지만 이 접근 방법에는 많은 문제가 내재되어 있다. 소액 결제 및 신용 카드 결제를 위해
복잡하고 많은 비용이 드는 관리가 필요하다. 또한 지역과 사회 계층에 따라 화폐 가치의 차이가 크기 때문에
서유럽이나 북아메리카의 주민에게 푼돈처럼 보이는 금액도 사하라 이남 아프리카의 주민에게는 큰 부담이
된다. 인터넷은 정보 격차를 줄이는 강력한 도구이지만 화폐로 비용을 지불하게 되면 이러한 장점이 크게 훼손된다.
비용 기반 스팸에 대한 보다 실질적인 접근 방법은 사용자가 이메일을 보내거나 메시지를
게시할 때 할당되는 CPU 주기의 양을 제한하는 것이다. 이 방법을 사용하면 라고스의 인터넷 카페에 앉아
있는 사람이나 샌프란시스코에 있는 집에서 노트북 컴퓨터를 사용하는 사람이나 상관없이 많은 부담을
느끼지 않고 유효한 항목을 게시할 수 있다. 그에 반에 천 개의 웹 사이트에 각기 천 개의 게시물을 올리려고
시도하는 스패머의 공격은 막을 수 있다. 이러한 접근 방법을 "proof-of-work" 스키마라고 하며 가장
일반적인 방법은 "hashcash"이다.
Hashcash
Hashcash는 효과적인 비용 기반의 스팸 방지 기법이다. 이 방법에서는 사용자가 컨텐츠를 게시하기
전에 중요한 SHA-1 해시를 계산해야 한다. 예를 들어 게시 페이지의 JavaScript에 해시 코드를 포함시켜 놓을
수 있다. 이 경우 요청자는 게시하기 위해 특정 양의 CPU 주기를 사용해야 하지만 대상 사이트에서는 매우 적은
비용만으로도 확인할 수 있다. 이 방법은 기본적으로 서비스 거부 카운터를 측정하는 것이다. hashcash의 주요 문제는
많은 스패머가 스패머의 명령을 따르도록 재프로그래밍된 해킹된 컴퓨터나 "botnets"을 사용한다는 것이다. 즉,
자신의 CPU를 사용하는 것이 아니기 때문에 스패머는 CPU 사용량을 고려할 필요가 없다. 따라서 hashcash의
효과를 높이려면 다른 스팸 차단 기법과 함께 사용하는 것이 좋다.
결론
지금까지 설명한 웹 스팸과의 전쟁과 관련된 모든 속임수, 용어 및 세부사항 때문에 머리 속이
복잡하다면 이 문제의 심각성과 난제를 이해하고 있는 것이다. 그러나 Real Web 2.0이란 사회적 그룹의 힘을
이용해서 정보 시스템을 향상시키는 것을 의미하기 때문에 오늘날 이 분야를 간과하는 웹 개발자는
없다. 좋은 사용자뿐만 아니라 악의적 사용자도 이에 대한 매력을 느끼기 마련이며, 이러한 변화가 악의적
사용자에게 얼마나 많은 기회를 제공하고 있는지, 더 나아가 악의적 사용자가 이 기회를 자신들의 계략 속에서
얼마나 교묘하게 활용하고 있는지 곧 알게 될 것이다. 현명한 새 Web 2.0 기능을 롤아웃하게 되면 거의 대부분
스패머를 위해 문을 열어 주게 되는 것과 마찬가지이다. 스팸과 스팸 차단으로 복잡하게 얽혀 있는 이 세상을
둘러보면 웹 상의 커뮤니티와 관련된 문제점과 동일한 커뮤니티에서 힘을 모아 해결책을 찾을 수 있는 몇 가지
방법을 알 수 있다.
참고자료 교육
제품 및 기술 얻기
- 다음과 같은 일부 포럼
등록 블랙리스트 및 금지 목록 서비스를 사용해 보자.
토론
필자소개  | 
|  | Uche Ogbuji는 차세대 웹 기술에 특화된 솔루션 회사인 Zepheira, LLC의
파트너로 XML, RDF 및 지식 관리 애플리케이션용 오픈 소스 플랫폼인
4Suite와 후속 플랫폼인 Akara의
책임 개발자로 활동하고 있다. 팀 웹 개발을 위한 Jacqard
애자일 방법론과 Versa RDF 쿼리 언어에 대한 연구에도 참여하고 있다. 나이지리아 출신의 컴퓨터 엔지니어이자 작가인 그는 미국 콜로라도의 볼더
지역에서 살고 있다. Ogbuji의 Weblog Copia에서 더
많은 정보를 찾아볼 수 있다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|