자동봇은 HTTP/1.0 을 이용한다.
1.0 으로만 공격해도 효과가 충분하기도 하고,
1.1 은 복잡해서 1.1 대응은 웬만한 정성으로는 못만들것이다.
모바일 접속용 브라우저는 1.0 을 사용할지도 모르고,
웹크롤러(검색엔진)도 1.0을 사용하지만 일단 막고,
막힌것이 무엇인지 검사 후 풀어주면 된다.
제가 관리하지 않던 서버의 홈페이지를 제가 관리하는 서버로 옮겼습니다.
옮기면서 php취약점 공격하던 넘들도 같이 넘어왔더군요.
로그를 좀 쌓으면서 보니까 봇 공격인듯 하여 일단 HTTP/1.0 을 막았습니다.
RewriteEngine On
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteRule .* /deny.php
deny.php
<?php
$fp = fopen('../denys.txt', 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR']."\n");
fclose($fp);
$fp = fopen('../agents.txt', 'a');
fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n");
fclose($fp);
HTTP/1.0 으로 접근하면 ip 와 user agent 를 기록하고 종료합니다.
이렇게 하는것 만으로 서버가 느려질 정도의 공격이 무효화 되었습니다.
서버가 바로 빨라지네요.
(이렇게 하기전에 잠시동안 iptables 로 ip 를 일일히 막았는데,
ip 를 바꾸면서 공격시도를 다시하고, 정도가 심해지는것이,
꼭 옆에앉아서 싸우는것 같은 느낌이었습니다.
ip 를 무한히 확보해 놓은듯 하더군요.-_-^)
ip 는 숫자세서 정말 공격이다 싶은것만 iptables 로 막고,
(rewrite 를 이용해 /etc/hosts.deny 를 연동할 수 있던데, DROP 이 안되더군요.
iptables 의 막는 방법은 REJECT, DROP 이 있는데,
REJECT 로 하면 상대방에게 끊어졌다는 것이 바로 알려지고,
DROP 으로 하면 아무것도 알리지를 않아서 느린 서버에 접속할 때 처럼
지연이 생기게 됩니다.)
agent 에서 크롤러인것만 풀어줬습니다.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} EMPAS\.ROBOT [OR]
RewriteCond %{HTTP_USER_AGENT} Twiceler [OR]
RewriteCond %{HTTP_USER_AGENT} Yahoo [OR]
RewriteCond %{HTTP_USER_AGENT} Snapbot [OR]
RewriteCond %{HTTP_USER_AGENT} yoofind [OR]
RewriteCond %{HTTP_USER_AGENT} NaverBot [OR]
RewriteCond %{HTTP_USER_AGENT} xMind
RewriteRule .* - [NS,L]
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteRule .* /deny.php
구글에 검색된 사이트던데,
구글봇이 안다녀갔네요.ㅎㅎ
야후봇이 수십개 되던데 해킹봇 외에 가장 미친듯이 접속하더군요.
게다가 deny.php 주소를 어떻게 알아냈는지 직접 접속하여,
deny 목록에 지가 추가되는군요-_-;
<?php
if(preg_match('@(EMPAS\.ROBOT|Twiceler|Yahoo|Snapbot|yoofind|NaverBot|xMind)@', $_SERVER['HTTP_USER_AGENT'])) exit;
$fp = fopen('../denys.txt', 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR']."\n");
fclose($fp);
$fp = fopen('../agents.txt', 'a');
fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n");
fclose($fp);
http://iplists.com/
검색엔진 ip 목록
출처 : PHPSCHOOL
'Server&OS > Apache' 카테고리의 다른 글
[본문스크랩] 404에러 페이지 만들기 (0) | 2010.04.23 |
---|---|
[서버운영] 중국 IP 대역 (0) | 2010.04.23 |
[보안] mod_evasive를 이용한 웹Dos 공격을 막자 (0) | 2010.04.23 |
httpd.conf파일 변경후 아파치 재기동 안하고 적용하기[httpd.conf리로드] (0) | 2009.09.04 |
아파치 웹서버 80포트로 접근이 안될때 (0) | 2009.09.02 |