宝塔面板批量封 IP - 自动获取恶意情报并更新

phx1 · 2024-11-12 16:53:52 · 312 次点击

使用宝塔面板经常遇到恶意 IP 攻击,需要手动封禁,非常麻烦。

想要实现的功能

  • 简单可以通过宝塔面板配置
  • 自动自动封禁最新的恶意 IP
  • **白嫖**:使用更多的恶意 IP 情报库

准备工作

在开始之前,请确保已经:

  1. 安装了宝塔面板
  2. 获取长亭恶意 IP 库的订阅链接(点此注册获取恶意 IP 库链接

宝塔面板具体步骤

想要用 bt cli 实现,没有发现入口,先用 python 脚本实现。

1. 创建自动化脚本

首先,我们需要创建一个 Python 脚本来实现自动化封禁。登录宝塔面板后,在 /www/server/panel/plugin/ 目录下创建 ip_intel.py 文件:

#!/usr/bin/python3
import requests
import subprocess
import logging
from datetime import datetime

# 配置日志
logging.basicConfig(
    filename='/www/server/panel/logs/ip_intel.log',
    level=logging.INFO,
    format='%(asctime)s - %(message)s'
)

# 长亭 IP 恶意情报库订阅地址
API_URL = "https://ip-0.rivers.chaitin.cn/api/share/ip_group/xxxxxxxxxxxxxxxxxxxxxxxx?format=cidr"

def get_malicious_ips():
    """获取恶意 IP 列表"""
    try:
        response = requests.get(API_URL)
        ip_list = response.content.decode('utf-8').split('\n')
        return [ip.strip() for ip in ip_list if ip.strip()]
    except Exception as e:
        logging.error(f"获取恶意 IP 列表失败: {str(e)}")
        return []

def update_iptables_rules():
    """更新 iptables 规则"""
    try:
        # 创建新的 chain (如果不存在)
        subprocess.run("iptables -N CHAITIN_BLOCK 2>/dev/null || true", shell=True)

        # 清空现有规则
        subprocess.run("iptables -F CHAITIN_BLOCK", shell=True)

        # 确保 chain 被引用(如果还没有)
        subprocess.run("iptables -C INPUT -j CHAITIN_BLOCK 2>/dev/null || iptables -I INPUT -j CHAITIN_BLOCK", shell=True)

        # 获取恶意 IP 列表并添加规则
        ips = get_malicious_ips()
        for ip in ips:
            cmd = f"iptables -A CHAITIN_BLOCK -s {ip} -j DROP"
            subprocess.run(cmd, shell=True)
            logging.info(f"已添加封禁规则: {ip}")

        logging.info(f"规则更新完成,共添加 {len(ips)} 条规则")

    except Exception as e:
        logging.error(f"更新防火墙规则失败: {str(e)}")

if __name__ == "__main__":
    update_iptables_rules()

2. 配置定时任务

在宝塔面板中添加定时任务,实现自动更新:

  1. 进入 [计划任务] 页面
  2. 点击 [添加计划任务]
  3. 填写配置信息:
    • 任务名称:更新长亭 IP 威胁情报
    • 执行周期:每天
    • 脚本内容:python3 /www/server/panel/plugin/ip_intel.py

3. 查看防护效果

完成配置后,您可以通过以下方式查看防护效果:

  1. 查看 /www/server/panel/logs/ip_intel.log 日志文件
  2. 通过网站访问日志观察恶意请求是否减少

4. 注意事项

  • 提前配置好白名单 IP ,避免误封。
举报· 312 次点击
登录 注册 站外分享
2 条回复  
ncmonster 初学 2024-11-12 16:55:38
宝塔明明可以直接在界面上封 IP ,何必搞这么复杂
phx1 楼主 初学 2024-11-12 17:08:18
@ncmonster 那你肯定没有用过,界面填 1000 个恶意 IP 封禁太卡了。而且我想是每天自动获取最新的 IP 自动封禁🐶
返回顶部