Computer/LINUX

http 1.0 막기

알찬돌삐 2012. 8. 10. 16:18

자동봇은 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 를 기록하고 종료합니다.
이렇게 하는것 만으로 서버가 느려질 정도의 공격이 무효화 되었습니다.

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\!.*Slurp [OR]
RewriteCond %{HTTP_USER_AGENT} Snapbot [OR]
RewriteCond %{HTTP_USER_AGENT} yoofind [OR]
RewriteCond %{HTTP_USER_AGENT} xMind
RewriteRule .* - [NS,L]
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteRule .* /deny.php


이 글은 스프링노트에서 작성되었습니다.

.

'Computer > LINUX' 카테고리의 다른 글

HTTP Request  (0) 2012.08.10
HTTP ERROR  (0) 2012.08.10
.htaccess  (0) 2012.08.10
qmail vpopmail mysql 설치  (0) 2012.08.10
Qmail Antispam 구축  (0) 2012.08.10