| shell_exec("echo $_SERVER['HTTP_HOST']>> domain.txt”); |
domain.txt里将保存被访问过的域名,被CC攻击的站点将在里面占绝大多数。
四,开始封堵IP
建立文件ban.php
|
<? $threshold = 10; $ips = array_count_values(file('ips.txt')); $ban_num = 0; foreach($ips as $ip=>$num){ if($num > $threshold){ $ip = trim($ip); $cmd = “iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP”; shell_exec($cmd); echo “$ip baned! ”; $ban_num ++; } } $proxy_arr = array_unique(file('ips.txt'))' foreach($proxy_arr as $proxy){ $proxy = trim($proxy); $cmd = “iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP”; shell_exec($cmd); echo “$ip baned! ”; $ban_num ++; } echo “total: $ban_num ips ”; ?> |
用下面的命令执行脚本(确保php命令在PATH中)
php ban.php
这个脚本依赖于第二段中ips.txt里保存的结果,当其中记录的IP访问次数超过10次,就被当作攻击源给屏蔽掉。如果是代理服务器,则不判断次数直接 封掉。
封完IP之后,把所有的网站设置恢复正常,站点可以继续正常运行了。
五,一些细节
为保持对操作过程的描述尽量简洁,没有在上面的内容中加入过多的解释,留在这段统一讲述。
1,关于“代理服务器”的一些本质
两个与TCP&HTTP协议相关的值,REMOTE_ADDR和HTTP_X_FORWARDED_FOR。
(1)REMOTE_ADDR总是取离Web服务器最接近的一台主机的IP,如果没有使用代理,这个值就是访问者本身的IP,如果使用了代理,这个值就是 代理服务器的IP,如果通过多个代理服务器进行的连接,这个值就是到达Web服务器前最后一台代理服务器的IP。
REMOTE_ADDR是由TCP/IP层决定的,不能修改不能伪造。








