Nginx DDOS防御脚本

参考网上的一些工具写的初始版本, 不过还蛮好用的, 就是容易误杀, 而且需要手动启动和配置.
主题思路: 当 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

 

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:XiaoZ BLOG » Nginx DDOS防御脚本

未来,离我很遥远!

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活