mod_evasive 를 설치했습니다.
(여기서 젠투자랑 이것도 emerge 한방에 설치완료)
그리고, Rewrite 를 꺼버리고,
php.ini 의 auto_prepend_file 에
<?php
if(!($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' && $_SERVER['HTTP_USER_AGENT'] == 'Shockwave Flash')) {
if($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
if(count($_POST) != 0) {
$fp = fopen('/home/mysite/postdata.txt', 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR']."\n");
fwrite($fp, print_r($_POST, true));
fwrite($fp, print_r($_GET, true));
fwrite($fp, print_r($_SERVER, true));
fwrite($fp, "---\n");
fclose($fp);
exit;
}
if(!preg_match('/BlackBerry|Daum|EMPAS\.ROBOT|Gigabot|Googlebot|NaverBot|Snapbot|Speedy\|SurveyBot|Twiceler|Yahoo|Yeti|MFeedBot|msnbot|webcollage|yoofind|xMind|BrightCrawler|NimbleCrawler|StackRambler|SurveyBot|ia_archiver/', $_SERVER['HTTP_USER_AGENT'])) {
$fp = fopen('/home/mysite/agents.txt', 'a');
fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n");
fclose($fp);
header('Content-Type: text/html; charset=utf-8');
echo '인터넷 옵션 에서 프록시 설정을 제거하셔야 접속하실 수 있습니다.';
exit;
}
}
}
요런걸 추가하여 Rewrite 로 했던것과 비슷한 효과를 내었습니다.
HTTP/1.0 으로 POST 를 하는건 백발백중 스팸봇이네요.
HTTP/1.1 에서 HTTP_ACCEPT_ENCODING 요게 설정되면 압축전송을 받을 수 있다는 뜻이고,
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56751&sca=&sfl=wr_name%7C%7Csubject&stx=%BC%DB%C8%BF%C1%F8&sop=and&page=2
요게 되어 있으면, 압축전송을 하게 됩니다.
즉, 어설픈 봇은 HTTP_ACCEPT_ENCODING 를 보낼 수 없고,
흉내내려고 보냈다가는 받은 내용을 알아볼 수 없게 됩니다.
-------
플래시가 HTTP/1.1 을 쓰는데, 압축전송을 지원하지 않네요.
-------
출처 : PHPSCHOOL
'Server&OS > Linux' 카테고리의 다른 글
postgres 을 cron으로 자동백업 (0) | 2008.07.02 |
---|---|
[CentOS] DNS 네임서버 설정 (BIND 9) (1) | 2008.07.02 |
[CentOS] DNS 네임서버 설정 (BIND 9) (0) | 2008.07.02 |
[보안] php취약점 자동공격 봇 막기. (0) | 2008.06.27 |
[보안] mod_evasive를 이용한 웹Dos 공격을 막자 (0) | 2008.06.27 |