스팸 리퍼러 차단

By | 2005-03-30

방문자가 어느 링크를 클릭해서 자신의 사이트로 오게되었는지를 확인하기 위해서 referer 체크하는 블로거들이 많습니다. 블로그가 웹+로그에서 유래한것처럼 글의 본문에 링크를 포함하는 경우가 많다보니 내 글이, 내 블로그가 다른 사람의 글에 언급될 가능성이 많은데 리퍼러를 기록하다보면 그 곳을 발견하고 찾아가보는 재미를 얻을 수 있습니다.
다만 스팸메일에 이어 스팸코멘트, 스팸트랙백과 함께 스팸리퍼러가 극성인데요. 실제로 상대방의 페이지를 링크하지도 않았으면서 마치 그 쪽페이지의 링크를 클릭해서 온것처럼 조작된 데이터를 블로거들의 웹서버로 무차별 전송하는 경우가 있습니다.
아래 이미지는 제 서버쪽에 남겨진 스팸리퍼러들입니다.
스팸리퍼러들
이들이 스팸리퍼러를 보내는 이유는 두가지 정도로 추측되는데.
첫번째는 블로거들이 자신의 블로그에 찍힌 리퍼러를 즐겨 체크한다는 것을 알고 해당 블로그 운영자의 방문을 노림과 동시에 최근 리퍼러 사이트의 목록을 블로그 초기화면에 게시하는 경우가 많으므로 다른 방문자들의 클릭도 기대하고 있으며 두번째는 구글등에서 사용하는 남의 사이트에서 자신의 사이트로 향하는 링크가 많을 경우 랭킹이 상승하는 방법을 노려 자신의 사이트 링크를 남의 사이트에 많이 걸어놓기 위한 목적입니다.
리퍼러를 기록하는 프로그램에 자체적으로 스팸리퍼러를 걸러내는 기능을 제공하기도 하는데요. 우선 자주 스팸리퍼러를 보내는 사이트의 명단을 확보하여 비교한 뒤 의심갈 경우 기록을 남기지 않고 무시해버리는 방법이 있고 또 해당 사이트의 소스를 분석해서 내 사이트의 주소가 포함되어있는지 아닌지를 실제로 확인하는 방법이 있습니다.
리눅스 환경에서 블로그를 운영할 경우 대부분 아파치 웹서버를 사용할텐데 mod_rewrite모듈이 설치되어 있을 경우에 RewriteCond 와 RewriteRule 을 조합하여 스팸리퍼러를 차단시켜버릴 수 있습니다.
블로그가 설치된 디렉토리에 .htaccess 파일을 만든 다음 안에 아래와 같이 기록합니다.

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.*)casino.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.*)loan.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.*)poker.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.*)texas.*$ [NC]
RewriteRule .* – [F,L]

만약 이미 .htaccess 파일 안에 RewriteEngine On 이 써있다면 새로 추가 안하셔도 됩니다. 워드프레스의 fancy URL기능을 쓰고 있다면 이미 RewriteEngine On이 써있습니다. 주소에 casino 또는 loan 또는 poker 또는 texas 라는 문자가 포함된 주소에서 리퍼러 데이타를 보내올 경우 403 Forbidden 에러를 내버라는 뜻입니다. 맨 뒤에 붙은 [NC,OR]에서 NC는 No Case라고 대소문자를 구별하지 않는다는 뜻이며 OR는 OR Next의 뜻이므로 “이게 아니면 다음”의 조건을 검사합니다. 따라서 맨 마지막에는 OR를 넣지 말아야합니다. 지금 넣은 방법은 단지 해당 문자열이 포함되었는지의 여부만을 검사하는 것이므로 선의의 피해자가 생길 수 있습니다. 차단할 주소를 미세하게 조정하는 방법은 정규식 또는 Regular expression에서 도움을 받을 수 있습니다.
RewriteCond와 정규식을 사용하는 것이 쉽지 않더군요. 제가 잘못알고 있거나 추가하실 내용이 있으시면 코멘트나 트랙백 부탁드립니다. 이것저것 질문했을때 기꺼이 테스트해주시고 조언해주신 허드옹께 감사드립니다. (위와 같은 규칙으로만 할때는 위의 RewriteCond 항목을 RewriteCond %{HTTP_REFERER} (casino|loan|poker|texas) [NC] 처럼 한줄로 해도 된답니다.)
참고 사이트
SpywareInfo.com – Block Referrer Spam
joe maller – Referer Spam
Wikipedia – Referer spam

8 thoughts on “스팸 리퍼러 차단

  1. Pingback: Gratia's SadCafe

  2. prozac

    설명해주신 방법대로 해봤더니 보기싫은 스팸 레퍼러들이 싸악 없어졌네요.
    너무 감사드립니다…

  3. KC

    이런이런 저두 글보고 싹 정리했습니다.
    mod_rewrite도 On 시켜놨습니다. ㅋㅋㅋ
    감사합니다~!

  4. Pingback: Eyes of ignoramus

  5. Pingback: Rosarux Manufacturing

  6. Pingback: ZLBL! » Blog Archive » web server 손질하기

Comments are closed.