PHP自动战斗,php与cron自动实现封锁攻击者ip的代码

该博客介绍了如何通过PHP检测并防御WebBench攻击。当检测到攻击者使用WebBench时,系统会创建一个shell脚本,利用iptables封锁攻击者的IP,并通过邮件发送警告。更新后的代码直接在shell脚本中执行邮件发送,避免了PHP邮件可能导致的问题,实现了自动化防御和通知。
摘要由CSDN通过智能技术生成

原理分析:

用php取得攻击者的agent头,判断是不是webbench来访,如果是就die掉,不在请求数据库,确实挺有效,数据库不会再超出限制了,但是对方频繁的发送请求过来,导致网络带宽被严重消耗。

最终解决方法:用php取得用户agent头判断是否是webbench来源,如果是的话就在服务器上写一个shell档案,这个档案的内容就是封锁IP的规则,然后再用chmod函数修改一下这个档案让其可执行,再用cron服务读取这个档案执行,把ip封锁掉,整个过程全部自动化完成不需要人为干预,同时可以发邮件给攻击者警告他。

代码:

/**

* 封锁攻击者IP地址

* www.jbxue.com

*/

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

$_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

$p='/home/www/webbench.sh';

$_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\n",LOCK_EX);

Chmod($p,0755);

chown($p,'www');

Function sMail($to,$tit,$msg) {

IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){

throw new Exception('電郵地址錯誤!');

}

$tit='=?UTF-8?B?'.Base64_Encode($tit).'?=';

$msg = str_replace("\n.","\n..",$msg); //Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号

Return Mail($to,$tit,$msg,'From:No-reply@adm.bossadm.com.tw'."\n".'Content-Type:text/html;charset=utf-8');

}

sMail('see7di@gmail.com','【WebBench又開始了-by http://www.jbxue.com】!',date('Y-m-d H:i:s',time())." {$_SERVER['REMOTE_ADDR']}");

Header('Location:http://127.0.0.1');

Die();

}

}

?>

把發email的部份寫入了shell文件內,不再用php發email,因為那會灌爆你的信箱。

修改后的代码:

/**

* 自动封锁恶意攻击者的IP地址

* www.jbxue.com

*/

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {

$_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);

IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {

$p='/home/www/webbench.sh';

$_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';

File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\necho \"{$_SERVER['REMOTE_ADDR']} - `date`\" | mail -s \"WebBench-www.jbxue.com\" see7di@gmail.com\n",LOCK_EX);

Chmod($p,0755);

chown($p,'www');

Header('Location:http://127.0.0.1');

Die();

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值