Code · 2008-11-27

使用php脚本批量封IP

对于网络被攻击,管理员都希望能有简单而又有效的处理方式,使用shell也是个好办法,其他编程语言也都可以做到。今天我写个简单的php脚本来封IP。
Linux杀手锏之无效路由_route-add-or-del-host-ip-reject这篇日志里介绍了无效路由的block方法。
现在简单的介绍一下这个脚本的工作流程,首先他是读取apache2目录下的日志文件,我们可以先对攻击者的特征做出判断,然后把攻击者的IP列出来,放在一个文本文件,至于是awk或是sed的来抽取及如何判断,这个我想应该管理服务器的人会比我清楚。
我的测试文本文件是这样的:


debian:~/test# cat ip.list
www.baidu.com
www.g.cn
g.cn
www.163.com
www.sina.com
www.qq.com

当然上面的地址只是测试用的,要是真这样做了,在重启之前那台执行脚本的机器就无法与上述的域名或IP通信了。

#!/usr/bin/php -q
/root/test/ip.list”);
$a = file(“/root/test/ip.list”);
foreach ($a as $key=>$value)
{
#$cmd = “route del -host $value reject”;
$cmd = “route add -host $value reject”;
$cmd = str_replace(“\n”,”,$cmd);
system($cmd);
}
echo “\n”;
?>

如果是删除,当然是把add换成del,换掉注释就可以了。
当然,要完善还得加上log的记录及其他,有时间再补上。