Hello! 欢迎来到盒子萌!

Nginx DDOS防御脚本


avatar
嘉木 2016-09-08 44

参考网上的一些工具写的初始版本, 不过还蛮好用的, 就是容易误杀, 而且需要手动启动和配置.
主题思路: 当 WEB 被打死之后会记录每条访问日志, 通过分析错误日志统计访问次数最多的IP然后 gank 他.
运行环境: Linux + ROOT权限
备注: awk ‘{print $19}’ 这个 $19 代表着 IP 在错误日志中出现的位置, 如果日志的格式为 127.0.0.1 2016年7月31日 …
那么这个 $19 就要修改为 $1, 是按照空格来区分的,如果要以 ‘,’ 来区分的话.
把 awk ‘{print $19}’ 修改为 awk -F ‘,’ ‘{pring $19}’ 即可

#!/bin/bash
#author: a.tm.k
#site: sys7em.info
# 通过监控 nginx 的服务器 error 日志发现 ddos 然后自动屏蔽攻击 IP
logFile=/var/log/nginx/web-error.log // WEB 错误日志
tempMaxIp='0.0.0.0'
function checkIp(){
maxIp=`tail -n 200 ${logFile}|awk '{print $19}'|sort|uniq -c|sort -n -k 1 -r|head -n 1|awk '{print $2}'`
maxIp=${maxIp%,*}
if [[ $tempMaxIp != $maxIp ]]; then
iptables -A INPUT -s ${maxIp} -j DROP
echo "Attack Ip ===> ${maxIp} As Join BlackList"
tempMaxIp=$maxIp
# else
# echo "Attack Ip ===> ${maxIp} Is In BlackList"
fi
}
function main(){
while true
do
checkIp
sleep 5
done
}
main

 

暂无评论

发表评论