首页 > 站点建设 > 【网站】攻击自动检测和自动屏蔽脚本

【网站】攻击自动检测和自动屏蔽脚本

2016年6月11日 发表评论 阅读评论

网站上线久了难免就会有人来攻击或扫描。除了防ssh密码猜测攻击外,今天还写了个防HTTP压力攻击脚本,分享给大家。

1、建立脚本文件/root/scripts/auto_detect_attack.sh

#!/bin/sh 
#auto deny attack IP address
#maplnan 2016-6-11
#定义变量 
LOG_FILE=/usr/local/nginx/logs/access.log
#定义脚本日志文件
SCRIPT_FILE_NAME=`basename $0`
SCRIPT_DIR_NAME=`dirname $0`
SCRIPT_LOG_FILE=${SCRIPT_DIR_NAME}/log/${SCRIPT_FILE_NAME}.log
#IP白名单文件
WHITELIST_FILE=${SCRIPT_DIR_NAME}/ip_whitelist.conf
#如下为截取日志文件恶意攻击ip,1秒内访问同一网址大于等于10次就写入防火墙,禁止以后再访问服务器的80端口 
IP_ADDR=`tail -n 99999 $LOG_FILE <del>|grep -v "saveOrderCoordinates"</del> | awk '{print $1" "$4"] "$7}'|sort |uniq -c |sort -nr|awk ' $1>=10 {print $2}'`
IPTABLE_CONF=/etc/sysconfig/iptables 
echo 
cat <<EOF 
++++++++++++++welcome to use auto detect attack IP address++++++++++++ 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
++++++++++++++++------------------------------------++++++++++++++++++ 
EOF</pre>
echo

RESTART_FLAG=0

for i in `echo $IP_ADDR`
do
#查看iptables配置文件是否含有提取的IP信息
RULE="-A INPUT -s $i -p TCP --dport 80 -j DROP"
RULE_COUNT=`cat $IPTABLE_CONF |grep -e "$RULE" -c`
WHITE_IP_COUNT=`cat $WHITELIST_FILE | grep -e "$i" -c`
if [ $WHITE_IP_COUNT -ne 0 ];then
echo  "$i exists in white list."
elif [ $RULE_COUNT -eq 0 ];then
#判断iptables配置文件里面是否存在已拒绝的ip,如何不存在就不再添加相应条目
sed -i "/Add/a $RULE" $IPTABLE_CONF
RESTART_FLAG=1
#记录日志
echo `date "+%Y-%m-%d %H:%M:%S"`" 发现非法访问IP ${i},增加iptables规则:${RULE}" >> ${SCRIPT_LOG_FILE}
echo `tail -n 99999 $LOG_FILE <del>|grep -v "saveOrderCoordinates"</del>|grep -e "$i" -m 1` >> ${SCRIPT_LOG_FILE}
echo `tail -n 99999 $LOG_FILE <del>|grep -v "saveOrderCoordinates"</del>|sort -r|grep -e "$i" -m 1` >> ${SCRIPT_LOG_FILE}
echo "" >> ${SCRIPT_LOG_FILE}
else
#如何存在的话,就打印提示信息即可
echo  "$i has existed in iptables."
fi
done

echo

#最后重启iptables生效
if [ $RESTART_FLAG -eq 1 ];then
/etc/init.d/iptables restart
fi

2016/6/12更新

  1. 增加IP白名单防止误伤,脚本同级目录下增加ip_whitelist.conf文件,每行一个白名单IP
  2. 增加特殊URI过滤,过滤的url通过grep -v命令过滤,见上文脚本删除线划掉的部分

2、增加crontab -e记录,定时执行脚本

*/5 * * * * /root/scripts/auto_detect_attack.sh

完毕。


枫芸志原创文章,转载请注明来源并保留原文链接




本文链接:http://witmax.cn/auto-detect-attack.html




分类: 站点建设 标签: 1,079次阅读
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量