Chủ Nhật, 17 tháng 6, 2012
Tự động lock ip khi bị ddos attack
Khi 1 ip gửi 1 request tới site của bạn. code sẽ tạo ra 1 file log ghi lại ip đó, và url mà ip đó truy cập.
Ví dụ : 113.22.70.69 - http://mydomain.com/4rum/index.php
nếu ip 113.22.70.69 truy cập nhanh và liên tiếp 5 lần vào cùng 1 url như trên thì code sẽ lock ip 113.22.70.69 bằng cách tạo ra 1 file htaccess
và ghi lệnh deny from 113.22.70.69
và ghi lệnh deny from 113.22.70.69
<?php
$n = 5; // Chặn ip nếu 5 lần nhanh và liên tiếp truy cập vào 1 URL
$ban = strpos($_SERVER***91;'REQUEST_URI'***93;, "vbshout.php")?0:1;
$in = "\n".$_SERVER***91;'REMOTE_ADDR'***93;." - ".$_SERVER***91;'REQUEST_URI'***93;;
$log = fopen('banip.log','a'); fwrite($log, $in); fclose($log);
$list = file('banip.log',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$last = count($list) - 1;
if($last >1000) { $in = "Deny from all"."\n";
$lock = fopen('.htaccess','a'); fwrite($lock, $in); fclose($lock); }
elseif($last > $n) { for($i = 1; $i < $n; $i++) if($list***91;$last - $i***93; != $list***91;$last***93 $ban = 0;
} else { $ban = 0; }
if($ban) { $in = "Deny from ".$_SERVER***91;'REMOTE_ADDR'***93;."\n";
$lock = fopen('.htaccess','a'); fwrite($lock, $in); fclose($lock);}
?>
$n = 5; // Chặn ip nếu 5 lần nhanh và liên tiếp truy cập vào 1 URL
$ban = strpos($_SERVER***91;'REQUEST_URI'***93;, "vbshout.php")?0:1;
$in = "\n".$_SERVER***91;'REMOTE_ADDR'***93;." - ".$_SERVER***91;'REQUEST_URI'***93;;
$log = fopen('banip.log','a'); fwrite($log, $in); fclose($log);
$list = file('banip.log',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$last = count($list) - 1;
if($last >1000) { $in = "Deny from all"."\n";
$lock = fopen('.htaccess','a'); fwrite($lock, $in); fclose($lock); }
elseif($last > $n) { for($i = 1; $i < $n; $i++) if($list***91;$last - $i***93; != $list***91;$last***93 $ban = 0;
} else { $ban = 0; }
if($ban) { $in = "Deny from ".$_SERVER***91;'REMOTE_ADDR'***93;."\n";
$lock = fopen('.htaccess','a'); fwrite($lock, $in); fclose($lock);}
?>
include 'banip.php';
if($last >1000) { $in = "Deny from all"."\n";
........
Khi 1 ip truy cập vào site. code sẽ ghi ip đó vào 1 dòng
Sau đó sẽ đếm tổng số dòng trong file log. nếu lớn hơn 1000 dòng trong 1 thời gian nhất định (Dấu hiệu bị tấn công bonet) thì sẽ ghi vào file
htaccess lệnh deny from all.Các bạn có thể lập lịch xoá file htaccess và file log theo 1 thời gian quy định bằng cron job trong cpanel của host
Sau đó sẽ đếm tổng số dòng trong file log. nếu lớn hơn 1000 dòng trong 1 thời gian nhất định (Dấu hiệu bị tấn công bonet) thì sẽ ghi vào file
htaccess lệnh deny from all.Các bạn có thể lập lịch xoá file htaccess và file log theo 1 thời gian quy định bằng cron job trong cpanel của host
<?php
if(file_exists('.htaccess')) unlink('.htaccess');
if(file_exists('banip.log')) unlink('banip.log');
?>
if(file_exists('.htaccess')) unlink('.htaccess');
if(file_exists('banip.log')) unlink('banip.log');
?>
Chuyên Mục:
Hacking and Security,
TUTORIALS
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào: