$attach_ip;
$block_ip;
function parse_file()
{
global $attach_ip;
$fp = fopen("/var/log/auth.log", "r");
if (! $fp)
{
echo "open error!\n";
return;
}
$line_num = 0;
while (! feof($fp)) {
$line_num ++;
$buff = trim(fgets($fp));
//$tok = explode(" ", $buff);
$tok = preg_split("/[\s]+/", $buff);
//print_r($tok);
if (!strcmp($tok[5], "Failed") && !strcmp($tok[6], "password"))
{
// from 다음에 ip 값이 위치함.
$ip = $tok[array_search("from", $tok) + 1];
$time = strtotime($tok[1] . " " . $tok[0] . " 2006 " . $tok[2]);
$attach_ip[] = array($ip, $time);
//echo "DEBUG:".$line_num."|".$buff."\n";
//echo "DEBUG:".$ip."|".$time."\n";
}
}
fclose($fp);
// sorting with ip
//sort ($attach_ip);
}
// 블럭 시킬 ip을 찾는다.
function make_block_list()
{
global $attach_ip, $block_ip;
$size = count($attach_ip);
$cnt = 1;
list($w_addr, $w_time) = $attach_ip[0];
for ($i = 1; $i < $size; $i++) {
list($ip, $time) = $attach_ip[$i];
if (count($block_ip) > 0 && in_array($ip, $block_ip))
continue; // 이미 목록상에 있는경우 다음것을 찾음
if (strcmp($ip, $w_addr)) {
$cnt = 1; // 횟수
$w_addr = $ip;
$w_time = $time;
$diff = 0;
$recent = array($time);
}
else {
$cnt ++;
$recent[$cnt - 1] = $time;
}
// 가장 인접한 목록에서 diff 값을 계산한다.
if ($cnt >= 10) $diff = $time - $recent[$cnt - 10];
else $diff = $time - $recent[$cnt - 1];
//echo "DEBUG:" . $ip . "/" . $cnt . "/" . $diff . "/" . $diff/$cnt . "\n";
// 횟수가 6번 이상이고 60초 이내인 경우
if ($cnt >= 10 && $diff <= 60) {
// block 시킬 IP로 판단하고 등록한다.
$block_ip[] = $w_addr;
//echo "DEBUG:".$diff."/".$w_addr."\n";
}
// 횟수가 30번 이상이고 6시간이내인 경우
//else if ($cnt >= 30 && $diff <55*60*50) {
// $block_ip[] = $w_addr;
//}
}
}
parse_file();
//print_r ($attach_ip);
make_block_list();
echo "\nALL: ";
$i = 0;
while (list($time,$ip) = each($block_ip))
{
echo $ip;
$i ++;
if ($i < count($block_ip))
echo ", ";
}
echo "\n";
?>
서버설정 : http://kltp.kldp.org/stories.php?story=05/08/02/4164861
'인터넷정보' 카테고리의 다른 글
image mapping 프로그램, 이미지맵, 이미지매핑 (0) | 2007.10.13 |
---|---|
자바스크립트 라이브러리 목록 (0) | 2007.10.13 |
자바스크립트 라이브러리 목록 (0) | 2007.10.13 |
이미지와 글씨 정렬 (0) | 2007.10.13 |
이미지와 글씨 정렬 (0) | 2007.10.13 |
SSH 공격 아이피 필터링 스크립트(recent IP 기반) - 아이피 차단 (0) | 2007.10.13 |
자바스크립트로 플래시 메뉴처럼 (0) | 2007.10.13 |
자바스크립트로 플래시 메뉴처럼 (0) | 2007.10.13 |
윈도우의 바로가기 모음을 내 맘대로 (0) | 2007.10.13 |
윈도우의 바로가기 모음을 내 맘대로 (0) | 2007.10.13 |