前段时间,发现有很多莫名奇妙的ip访问我的博客,十分频繁,量很高,已经不是一个月7天那么简单了(←_← !!)3。多数是访问博客程序的后台地址什么的,总之日志文件几天就上G了,对服务器影响很大。所以写了个简单的脚本把访问的ip加入了防火墙或者禁止让这个ip访问(无含量)。
– 有好脚本的请留下在走 –
拜托
脚本内容
其实只加入防火墙就够了,但我懒得改,自己改吧
最初我是想把这个访问直接在nginx内给deny了,但后来想这样不太好,还是会访问被占用资源。所以…
#!/bin/bash #_日志位置 _log_Path="/data0/nginx/weblogs/" #_日志文件名称 _log_FileName="access_blog.kinggoo.com.log" #_要被屏蔽的ip访问端口,默认80 _port="80" _nginx_deny="/opt/webserver/nginx/conf/deny.conf" _nginx_bin="/opt/webserver/nginx/sbin/nginx" _logfilepath=${_log_Path}${_log_FileName} #初始化被禁ip变量 _drop_Ip="" #检测文件 test -e ${_nginx_deny} || touch ${_nginx_deny} for _drop_Ip in $( tail -n50000 "${_logfilepath}" |awk '{print $1,$12}' |grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou|WordPress" |awk '{print $1}'|sort|uniq -c|sort -rn |awk '{if($1>1000)print ""$2""}' ); do grep -q "${_drop_Ip}" ${_nginx_deny} && eg=1 || eg=0 ; if (( ${eg}==0 ));then echo "deny ${_drop_Ip};" >> ${_nginx_deny} ${_nginx_bin} -s reload iptables -I INPUT -p tcp --dport ${_port} -s ${_drop_Ip} -j DROP echo ">>>>> `date '+%Y-%m-%d %H%M%S'` - 发现攻击源地址 -> ${_drop_Ip} " >> /tmp/nginx_deny.log; echo "iptables -I INPUT -p tcp --dport ${_port} -s ${_drop_Ip} -j DROP" >> /tmp/nginx_deny.log fi done
日志图
- THE END -
Category: Nginx
0 条评论。