17 DOS攻击防范

复制代码
#!/bin/bash
source /etc/profile

HOST_IP="172.16.1.122"
DROP_IP_FILE="/tmp/drop_ip.log"
[ ! -f $DROP_IP_FILE ] && touch $DROP_IP_FILE
DATE="$(date +%d/%b/%Y:%H:%M)"
# nginx的时间格式为"01/Sep/2020:10:51:51"
# 当前DATE的时间格式为"01/Sep/2020:10:51"
# 目的是取nginx一分钟的访问日志
LOG_FILE="/usr/local/nginx/logs/access.log"

ABNORMAL_IP="$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++} END {for(i in a) if(a[i]>10) print i}')"

for IP in $ABNORMAL_IP; do
    if [ $(firewall-cmd --list-rich-rules |grep -c "$IP") -eq 0 ]; then
        firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$IP' reject" &>/dev/null
        firewall-cmd --reload &>/dev/null
        echo "$(date +'%F_%T') $IP" >> $DROP_IP_FILE
    fi
done

if [ $ABNORMAL_IP ]; then
    echo "Server $HOST_IP AT $DATE Block ip address $ABNORMAL_IP" |mail -s "Server $HOST_IP Block ip address" 2504164765@qq.com
fi


# iptables 方式过滤
# if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then
#    iptables -I INPUT -s $IP -j DROP
# fi
复制代码

 

posted @   云起时。  阅读(214)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2020-04-24 29、Tomcat只允许指定域名访问,禁用IP地址访问,防止恶意解析
点击右上角即可分享
微信分享提示
主题色彩