发布于 10 天前
发布于 10 天前
m4x140
更新于 10 天前
0
0
想要在宝塔面板和宝塔云 WAF 使用长亭雷池 WAF 的 恶意 IP 情报库,快速阻断恶意 IP,不知道这样用对不对?
在开始集成之前,请确保您已经:
想要用bt cli实现,没有发现入口,先用python脚本实现。
首先,我们需要创建一个 Python 脚本来实现自动化封禁。登录宝塔面板后,在 /www/server/panel/plugin/
目录下创建 ip_intel.py
文件:
1#!/usr/bin/python3
2import requests
3import subprocess
4import logging
5from datetime import datetime
6
7# 配置日志
8logging.basicConfig(
9 filename='/www/server/panel/logs/ip_intel.log',
10 level=logging.INFO,
11 format='%(asctime)s - %(message)s'
12)
13
14# 长亭 IP 恶意情报库订阅地址
15API_URL = "https://ip-0.rivers.chaitin.cn/api/share/ip_group/xxxxxxxxxxxxxxxxxxxxxxxx?format=cidr"
16
17def get_malicious_ips():
18 """获取恶意 IP 列表"""
19 try:
20 response = requests.get(API_URL)
21 ip_list = response.content.decode('utf-8').split('\n')
22 return [ip.strip() for ip in ip_list if ip.strip()]
23 except Exception as e:
24 logging.error(f"获取恶意 IP 列表失败: {str(e)}")
25 return []
26
27def update_iptables_rules():
28 """更新 iptables 规则"""
29 try:
30 # 创建新的 chain(如果不存在)
31 subprocess.run("iptables -N CHAITIN_BLOCK 2>/dev/null || true", shell=True)
32
33 # 清空现有规则
34 subprocess.run("iptables -F CHAITIN_BLOCK", shell=True)
35
36 # 确保 chain 被引用(如果还没有)
37 subprocess.run("iptables -C INPUT -j CHAITIN_BLOCK 2>/dev/null || iptables -I INPUT -j CHAITIN_BLOCK", shell=True)
38
39 # 获取恶意IP列表并添加规则
40 ips = get_malicious_ips()
41 for ip in ips:
42 cmd = f"iptables -A CHAITIN_BLOCK -s {ip} -j DROP"
43 subprocess.run(cmd, shell=True)
44 logging.info(f"已添加封禁规则: {ip}")
45
46 logging.info(f"规则更新完成,共添加 {len(ips)} 条规则")
47
48 except Exception as e:
49 logging.error(f"更新防火墙规则失败: {str(e)}")
50
51if __name__ == "__main__":
52 update_iptables_rules()
在宝塔面板中添加定时任务,实现自动更新:
更新长亭IP威胁情报
python3 /www/server/panel/plugin/ip_intel.py
完成配置后,您可以通过以下方式查看防护效果:
/www/server/panel/logs/ip_intel.log
日志文件和宝塔面板类似,获取长亭恶意 IP 库的订阅链接,获得 IP 列表。
在宝塔云 WAF 中:
长亭恶意IP库
,将获取到的 IP 列表导入到 IP 组中。长亭恶意IP库
,点击【确定】导入后,过一段时间后观察IP组命中次数数量。