|
|
虽然Linux系统本身就很安全,但在很多时候都需要再次优化系统,下面将介绍简单处理CC攻击方法. 第一个脚本是通过查找日志中访问次数过多的ip,并用iptables屏蔽,600秒解封. #!/bin/bash btime=600 becur=`date -d "1 minute ago" +%H%M%S` badip=`tac /home/www.34514.cn/log/access.log | awk -v a="$becur" -F [' ':] '{t=$5$6$7;if (t>=a) print} else {exit;}' | egrep -v "\.(gif|jpg|jpeg|png|css|js)" | awk '{print $1}' | sort | uniq -c | awk '{if ($1>=20) print $2}'` if [ ! -z "$badip" ];then for ip in $badip; do if test -z "`/sbin/iptables -nL | grep $ip`";then /sbin/iptables -I INPUT -s $ip -j DROP UNBAN_SCRIPT=`mktemp /tmp/unban.XXXXXXXX` echo '#!/bin/sh' > $UNBAN_SCRIPT echo "sleep $btime" >> $UNBAN_SCRIPT echo "/sbin/iptables -D INPUT -s $ip -j DROP" >> $UNBAN_SCRIPT echo "rm -f $UNBAN_SCRIPT" >> $UNBAN_SCRIPT . $UNBAN_SCRIPT & fi done fi 将此代码保存为ban.sh,加入cronjob使每分钟执行一次. 此脚本的作用是:利用iptables屏蔽每分钟访问页面超过20的IP,这些页面已经排除图片,css,js等静态文件. 第二个脚本是通过在日志中查找cc攻击的特征进行屏蔽. #!/bin/bash keyword="cc-atack" badip=`tail -n 5000 /home/www.34514.cn/log/access.log | grep "$keyword" | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $2}'` if [ ! -z "$badip" ];then for ip in $badip; do if test -z "`/sbin/iptables -nL | grep $ip`";then /sbin/iptables -I INPUT -s $ip -j DROP fi done fi keyword则是日志中cc的特征,替换成有效的即可.
也许下面的会对您有所帮助: Linux VPS下简单解决CC攻击? http://www.34514.cn/style/info/shownews.asp?id=597 nginx文件类型错误解析漏洞? http://www.34514.cn/style/info/shownews.asp?id=596 关于服务器经常非正常的死机/蓝屏,怎么办?? http://www.34514.cn/style/info/shownews.asp?id=546
|
|