去评论
dz插件网

针对近期阿里云IP疯狂爬取,我写的IP加入ufw自动执行文件分享一下,懂的自己搞

婷姐
2024/06/19 18:54:59
我前面帖子发的IP放到/data/safe/black_ip.txt文件里面。只能帮到这,懂的自己搞,不懂别问我。做站真累。
代码模块还不给贴了,只能贴代码模块后面了。
  1. #!/bin/bash
#这部分是做拦截IP处理的============开始==========================================================
blacklist_file="/data/safe/black_ip.txt"
before_rules_file="/etc/ufw/before.rules"
flagmod=false  # 初始化标识为 false
# 检查黑名单文件是否存在
if [ -e "$blacklist_file" ]; then
    # 获取文件的修改时间
    last_modified=$(stat -c %Y "$blacklist_file")
    # 获取当前时间
    current_time=$(date +%s)
    # 计算文件修改距离当前时间的秒数
    time_difference=$((current_time - last_modified))
    # 检查文件是否在当前六分钟内修改过
    if [ "$time_difference" -le 360 ]; then
        # 读取黑名单文件中的IP
        while IFS= read -r black_ip
        do
                        #检查是否符合IP或者IP段规则
                        if [[ "$black_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ || "$black_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/[0-9]+$ ]]; then
            # 检查是否在before.rules中
            if ! grep -q "$black_ip" "$before_rules_file"; then
                # 如果不在,找到 "# End required lines" 所在行
                end_line=$(grep -n "# End required lines" "$before_rules_file" | cut -d: -f1)
                # 在 "# End required lines" 后添加新规则
                sed -i "${end_line}a-A ufw-before-input -s $black_ip -j DROP" "$before_rules_file"
                echo  `date +"%Y-%m-%d %H:%M:%S"`  "增加 $black_ip 到 $before_rules_file" >> /data/safe/cron.log
                  flagmod=true  # 将标识设置为 true,表示有新增阻止IP
            fi
                fi
        done < "$blacklist_file"

        # 重新加载ufw规则
       if [ "$flagmod" = true ]; then
               sudo ufw reload
        fi
    fi
fi
#这部分是做拦截IP处理的============结束=========================================================