找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 205|回复: 4

献给alist在openwrt公网裸奔的你

[复制链接]
发表于 2024-9-28 19:19 | 显示全部楼层 |阅读模式
分享一个用于openwrt alist服务 自动封禁恶意ip的python脚本.微信推送。想要邮件或钉钉推送的自己动手加。
本人较菜,不懂最新版的firewall4的nft命令,但是iptables还能用。大佬还请嘴下留情,热心人士请补全nft命令,不胜感激。
最遗憾的还是由于alist日志中TLS正确认证日志中也带有401特征码,所以无法进行操作。


# */5 * * * * python3 ip.py
import re,os,subprocess,requests,json
from collections import defaultdict

webhook_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=自己去申请'
ip_count = defaultdict(int)
log_file = "/tmp/log/alist.log"
output_file = "/root/alist_eip.log" # 拉黑前请手动添加白ip

def send_wx(ip, dip, count):
    message_data = {
        "msgtype": "text",
        "text": {
            "content": f"Alist可疑ip 错{count}次 已拉黑\n{ip}\n\n洗白\n{dip}"
        }
    }
    response = requests.post(url=webhook_url, json=message_data, headers={'Content-Type': 'application/json; charset=UTF-8'})

def find_new_ips(log_file, output_file):
    ipv4_pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'
    ipv6_pattern = r'\b(?:[A-Fa-f0-9]{1,4}{7}[A-Fa-f0-9]{1,4}\b'
    found_ips = set()
    existing_ips = set()

    if os.path.exists(output_file):
        with open(output_file, 'r') as f:
            for line in f:
                existing_ips.add(line.strip())

    with open(log_file, 'r') as file:
        for line in file:
            if "handshake error from" in line:
                ipv4_match = re.search(ipv4_pattern, line)
                ipv6_match = re.search(ipv6_pattern, line)
                if ipv4_match:
                    found_ips.add(ipv4_match.group())
                    ip_count[ipv4_match.group()] += 1
                elif ipv6_match:
                    found_ips.add(ipv6_match.group())
                    ip_count[ipv6_match.group()] += 1

    new_ips = found_ips - existing_ips

    with open(output_file, 'a') as f:
        for ip, count in ip_count.items():
            if ip in new_ips and count > 2:
                f.write(f"{ip}\n")
                # print(f"恶意ip{ip} 错误{count}次")
                if ":" in ip:
                    subprocess.run(["ip6tables", "-A", "INPUT", "-s", ip, "-j", "DROP"])
                    dip = f"ip6tables -D INPUT -s {ip} -j DROP"
                else:
                    subprocess.run(["iptables", "-A", "INPUT", "-s", ip, "-j", "DROP"])
                    dip = f"iptables -D INPUT -s {ip} -j DROP"
                send_wx(ip, dip, count)

if __name__ == "__main__":
    find_new_ips(log_file, output_file)



流程说明:
先从alist日志读取包含handshake error from的错误日志,读取ip并计数
2024/09/28 18:02:16 http: TLS handshake error from [2409::670c]:37512: tls: first record does not look like a TLS handshake
2024/09/28 18:03:10 http: TLS handshake error from 111.*.*.*:2254: tls: first record does not look like a TLS handshake
如/root/alist_eip.log不存在此ip且错误计数大于2就写入此ip并拉黑。

切记!!!
运行脚本前先在/root/alist_eip.log添加白名单。运行后也可以防火墙放行。

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2024-9-28 20:41 | 显示全部楼层
alist装在了群晖上,没裸奔,用的加密连接的虚拟局域网,毕竟没有公网ip

点评

羡慕你们这些有'裙挥'的人,豪,可玩性高。 不像我呀,穷,搞不起,只有买个60块钱的极路由HC5962刷个op只能装个alist、python挂挂盘签签到。  详情 回复 发表于 2024-9-28 20:48
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-28 20:48 来自手机 | 显示全部楼层
ca972008 发表于 2024-9-28 20:41
alist装在了群晖上,没裸奔,用的加密连接的虚拟局域网,毕竟没有公网ip

羡慕你们这些有'裙挥'的人,豪,可玩性高。
不像我呀,穷,搞不起,只有买个60块钱的极路由HC5962刷个op只能装个alist、python挂挂盘签签到。

点评

我那个是丐中丐版群晖,猫盘改刷的ds120j。 我那op的机器是小米mini做旁路由,还不如你这个呢。  详情 回复 发表于 2024-9-28 20:52
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-9-28 20:52 | 显示全部楼层
676407926 发表于 2024-9-28 20:48
羡慕你们这些有'裙挥'的人,豪,可玩性高。
不像我呀,穷,搞不起,只有买个60块钱的极路由HC5962刷个op ...

我那个是丐中丐版群晖,猫盘改刷的ds120j。

我那op的机器是小米mini做旁路由,还不如你这个呢。

点评

听着挺高端!  详情 回复 发表于 2024-9-28 21:10
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-28 21:10 来自手机 | 显示全部楼层
ca972008 发表于 2024-9-28 20:52
我那个是丐中丐版群晖,猫盘改刷的ds120j。

我那op的机器是小米mini做旁路由,还不如你这个呢。 ...

听着挺高端!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-29 03:26

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表