手机版

linux服务器和webbench攻击解决方案:阻止攻击者ip

时间:2021-08-15 来源:互联网 编辑:宝哥软件园 浏览:

类型:服务器面积大小:62.3M语言:中文评分:5.0标签:立即下载。首先,我来说说这个被攻击网站的大致部署。这个网站主要是nginx mysql php,有两个服务器,分别是web和数据库。网络只开放80个端口。操作系统是centos,而数据库服务器在内部网中。攻击者的手段其实很简单。使用webbench网站压力测试工具向服务器发送大量请求,在发送每一个请求之前,数据库都会进行对应,然后读取内容并最终显示出来,导致数据库和web之间的数据交换量很大,甚至导致mysql达到最大连接数,请求被拒绝,攻击者有很多时间,所以他不停地更换浮动ip,所以直接用防火墙屏蔽ip是没有意义的。

一开始,我做的是用php获取攻击者的代理头,判断webbench是否来访。如果是死,真的有效,数据库也不会超过限制。但是对方频繁发送请求,导致网络带宽被严重消耗。好像还得考虑其他方法,最后想出了一个解决方案,实际测试发现是可行的,就分享给大家了。其实我练习的原理很简单。使用php获取用户代理头来判断是否是webbench源码。如果是,在服务器上写一个shell文件。这个文件的内容就是封杀IP的规则。

然后用chmod函数修改这个文件,使其可以执行,然后用cron服务读取这个文件执行,并阻塞ip。整个过程完全自动化,无需人工干预。另外给我发邮件通知我一个倒霉的人在封杀的时候被杀了,那就行了。

具体实现代码如下:

IF(isSet($ _ SERVER[' HTTP _ USER _ AGENT '])和Trim($ _ SERVER[' HTTP _ USER _ AGENT '])!='') {

$ _ SERVER[' HTTP _ USER _ AGENT ']=StRTLower($ _ SERVER[' HTTP _ USER _ AGENT ']);

IF(StriStr($ _ SERVER[' HTTP _ USER _ AGENT '],' webbench ')!==False){ 0

$ p='/home/www/web bench . sh ';

$ _ SERVER[' REMOTE _ ADDR ']=ISset($ _ SERVER[' REMOTE _ ADDR '])?$ _ SERVER[' REMOTE _ ADDR ']: ' unknow ';

span style=' color: # ff0000'File_Put_Contents($p,' #!/bin/bash \ nip tables-I INPUT-s { $ _ SERVER[' REMOTE _ ADDR ']}-j DROP;\n ',LOCK _ EX);

/span Chmod(p,0755美元);

chown($p,' www ');

span style=' color: # ff0000'函数sMail($to,$tit,$ msg){ 0

IF(Filter_var($to,FILTER _ VALIDATE _ EMail)=' '){ 0

ThrownewException('错误的电子邮件地址!');

}

$tit='=?UTF 8号?“b,”. Base64_Encode($tit)。=';

$msg=str_replace('\n . ',' \n . ',$ msg);//如果在一行的开头找到句点,Windows将删除该句点。要避免此问题,请将单个周期替换为两个周期。

Return Mail($to,$tit,$msg,' from : no-reply @ ADM . boss ADM.com . tw '。\n。内容类型:文本/html;charset=utf-8 ');

}

Smail ('see7di @ gmail.com ','[webbench再次开始t]!',日期(' Y-m-d H:i:s ',时间())。{ $ _ SERVER[' REMOTE _ ADDR ']} ');/span

标题(' location :http://127 . 0 . 0 . 1 ');

die();

}

}

后来我又做了一个调整,把邮件部分写入shell文件,不再用php发送邮件,因为这样会把你的邮箱炸开,把上面的代码修改成:

IF(isSet($ _ SERVER[' HTTP _ USER _ AGENT '])和Trim($ _ SERVER[' HTTP _ USER _ AGENT '])!='') {

$ _ SERVER[' HTTP _ USER _ AGENT ']=StRTLower($ _ SERVER[' HTTP _ USER _ AGENT ']);

IF(StriStr($ _ SERVER[' HTTP _ USER _ AGENT '],' webbench ')!==False){ 0

$ p='/home/www/web bench . sh ';

$ _ SERVER[' REMOTE _ ADDR ']=ISset($ _ SERVER[' REMOTE _ ADDR '])?$ _ SERVER[' REMOTE _ ADDR ']: ' unknow ';

File_Put_Contents($p,' #!/bin/bash \ nip tables-I INPUT-s { $ _ SERVER[' REMOTE _ ADDR ']}-j DROP;\ ne CHO \ ' { $ _ SERVER[' REMOTE _ ADDR ']}-` date `\ ' | mail-s ' webbinch-www . 7di . net ' see 7di @ Gmail.com \ n ',LOCK _ EX);

chmod(p,0755美元);

chown($p,' www ');

标题(' location :http://127 . 0 . 0 . 1 ');

die();

}

}

版权声明:linux服务器和webbench攻击解决方案:阻止攻击者ip是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。