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