C24Be/AS_Network_List

GitHub: C24Be/AS_Network_List

该项目根据 RIPE 数据库自动生成俄罗斯政府机构关联网络的 IP 黑名单,每日更新并输出 Nginx、IPTables、nftables 等多种主流格式的即用型配置文件。

Stars: 665 | Forks: 16

# 俄罗斯政府机构及其关联网络。 ### 黑名单每日更新! 本仓库包含的 Python 脚本允许你根据自治系统(AS)名称或网络名称获取网络列表。你也可以下载并解析整个 RIPE 数据库,以获取网络信息供进一步分析。 ## 重要链接 **多种格式的即用型黑名单:** - [`blacklists/` 中的文本黑名单](https://github.com/C24Be/AS_Network_List/tree/main/blacklists) - 分离 IPv4/IPv6 的纯文本格式 - [`blacklists_nginx/` 中的 Nginx 配置](https://github.com/C24Be/AS_Network_List/tree/main/blacklists_nginx) - 可直接包含在你的 nginx 配置中 - [`blacklists_iptables/` 中的 IPTables/IPSet 文件](https://github.com/C24Be/AS_Network_List/tree/main/blacklists_iptables) - 针对使用 ipset 的 iptables 进行了优化 - [`blacklists_nftables/` 中的 nftables 文件](https://github.com/C24Be/AS_Network_List/tree/main/blacklists_nftables) - 用于 nftables 的可直接加载的集合与规则 - [`blacklists_route/` 中的 Linux 路由文件](https://github.com/C24Be/AS_Network_List/tree/main/blacklists_route) - VK 路由黑洞至 loopback(IPv4/IPv6) ## 文件与功能 ### 核心脚本 - `network_list_from_as.py`:检索与给定 AS 名称关联的网络列表。 - `network_list_from_netname.py`:检索与给定网络名称关联的网络列表。 - `get_info_from_ripe.py`:从 RIPE 数据库检索有关俄罗斯 AS 编号和网络的信息,供进一步分析。 - `get_description.py`:从 RIPE 检索网络名称、AS 名称和组织名称。更新 `auto/` 文件夹中的列表。 - `parse_ripe_db.py`:解析整个 RIPE 数据库以获取有关网络的信息,供进一步分析。 - `generate_nft_blacklist.py`:接收文本黑名单作为输入,并生成带有集合的 nftables 配置。 - `check_nft_blacklist.py`:根据生成的 nftables 配置检查 IPv4/IPv6 地址。 ### 黑名单生成器 - `blacklists_updater_txt.sh`:生成分离 IPv4/IPv6 的基于文本的黑名单 - `blacklists_updater_nginx.sh`:生成带有 deny 指令的 nginx 配置文件 - `blacklists_updater_iptables.sh`:为 iptables/ip6tables 生成 ipset 配置文件 - `blacklists_updater_nftables.sh`:生成 nftables 黑名单文件(混合/v4/v6 及特定于 VK 的) - `blacklists_updater_routes.sh`:生成 Linux 路由文件,将 VK 网络发送至 loopback(`127.0.0.1` / `::1`) ### 生成的黑名单 **文本格式**(`blacklists/` 文件夹): - `blacklist.txt`:混合 IPv4/IPv6 黑名单(**每日生成**) - `blacklist-v4.txt`:仅 IPv4 黑名单(**每日生成**) - `blacklist-v6.txt`:仅 IPv6 黑名单(**每日生成**) - `blacklist_with_comments.txt`:带有网络元数据的黑名单(**每日生成**) **Nginx 格式**(`blacklists_nginx/` 文件夹): - `blacklist.conf`:用于混合 IPv4/IPv6 的 Nginx deny 规则(**每日生成**) - `blacklist-v4.conf`:仅用于 IPv4 的 Nginx deny 规则(**每日生成**) - `blacklist-v6.conf`:仅用于 IPv6 的 Nginx deny 规则(**每日生成**) - `README.md`:完整的 nginx 集成使用文档 **IPTables/IPSet 格式**(`blacklists_iptables/` 文件夹): - `blacklist-v4.ipset`:仅用于 IPv4 的 IPSet 配置(**每日生成**) - `blacklist-v6.ipset`:仅用于 IPv6 的 IPSet 配置(**每日生成**) - `blacklist-vk-v4.ipset`:仅用于 VK IPv4 网络的 IPSet 配置(**每日生成**) - `blacklist-vk-v6.ipset`:仅用于 VK IPv6 网络的 IPSet 配置(**每日生成**) - `README.md`:完整的 iptables 集成使用文档 **nftables 格式**(`blacklists_nftables/` 文件夹): * `blacklist.nft`:用于混合 IPv4/IPv6 的 nftables 集合定义(**每日生成**) * `blacklist-v4.nft`:仅用于 IPv4 的 nftables 配置(**每日生成**) * `blacklist-v6.nft`:仅用于 IPv6 的 nftables 配置(**每日生成**) * `blacklist-vk.nft`:仅用于 VK 的混合 IPv4/IPv6 的 nftables 集合定义(**每日生成**) * `blacklist-vk-v4.nft`:仅用于 VK IPv4 网络的 nftables 配置(**每日生成**) * `blacklist-vk-v6.nft`:仅用于 VK IPv6 网络的 nftables 配置(**每日生成**) * `README.md`:完整的 nftables 集成使用文档 **Linux 路由格式**(`blacklists_route/` 文件夹): * `blacklist-vk-v4.routes`:用于 VK 专属网络通过 `lo` 到达 `127.0.0.1` 的 IPv4 路由(**每日生成**) * `blacklist-vk-v6.routes`:用于 VK 专属网络通过 `lo` 到达 `::1` 的 IPv6 路由(**每日生成**) ### 参考列表 **欢迎贡献者参与!** - `lists/ru-gov-netnames.txt`:与俄罗斯政府关联的网络名称列表。 - 用于黑名单的 ASN 候选项自动从 `auto/all-ru-asn.txt` 提取。 ### 自动生成的数据 - `auto/all-ru-*.txt`:**每月生成**的所有俄罗斯网络和 ASN 列表 - `auto/ripe-ru-*.txt`:**每周生成**的来自 RIPE 数据库的俄罗斯网络列表 image 这些脚本已在 MacOS、FreeBSD 和 Linux 上经过测试。 ## 快速开始 ### 使用预生成的黑名单 无需设置!只需下载并使用: **对于 Nginx:** ``` # 下载并包含到你的 nginx 配置中 wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nginx/blacklist.conf # 然后添加到你的 nginx 配置:include /path/to/blacklist.conf; ``` **对于 IPTables/IPSet:** ``` # 下载并加载 IPv4/IPv6 集合到 ipset wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_iptables/blacklist-v4.ipset wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_iptables/blacklist-v6.ipset ipset restore < blacklist-v4.ipset ipset restore < blacklist-v6.ipset iptables -I INPUT -m set --match-set blacklist-v4 src -m conntrack --ctstate NEW -j DROP ip6tables -I INPUT -m set --match-set blacklist-v6 src -m conntrack --ctstate NEW -j DROP ``` **对于 nftables:** ``` # 下载并加载 nftables 集合 wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist.nft wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist-v4.nft wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist-v6.nft sudo nft -f blacklist.nft sudo nft -f blacklist-v4.nft sudo nft -f blacklist-v6.nft # 保护 VM 免受传入的 blacklist 来源攻击 sudo nft add chain inet filter input '{ type filter hook input priority 0; policy accept; }' sudo nft add rule inet filter input ip saddr @blacklist_v4 counter reject sudo nft add rule inet filter input ip6 saddr @blacklist_v6 counter reject # 仅通过 NAT/FORWARD 为 VPN 客户端进行 VK 出站阻止 wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist-vk.nft wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist-vk-v4.nft wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_nftables/blacklist-vk-v6.nft sudo nft -f blacklist-vk.nft sudo nft -f blacklist-vk-v4.nft sudo nft -f blacklist-vk-v6.nft sudo nft add chain inet filter forward '{ type filter hook forward priority 0; policy accept; }' sudo nft add rule inet filter forward iifname "" ip daddr @blacklist_vk_v4 counter reject sudo nft add rule inet filter forward iifname "" ip6 daddr @blacklist_vk_v6 counter reject # 查看已加载的规则 sudo nft list ruleset ``` **对于 Linux 路由(VK loopback 黑洞):** ``` # 下载并应用 VK 路由文件 wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_route/blacklist-vk-v4.routes wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists_route/blacklist-vk-v6.routes sudo sh blacklist-vk-v4.routes sudo sh blacklist-vk-v6.routes ``` **对于自定义应用程序:** ``` # 下载纯文本 blacklist wget https://raw.githubusercontent.com/C24Be/AS_Network_List/main/blacklists/blacklist.txt ``` 请参阅每个文件夹中的 README 文件以获取详细的使用说明。 ## 前置条件 - Python 3:从[官方网站](https://www.python.org/downloads/)下载。 ## 安装说明 1. 克隆本仓库: git clone https://github.com/C24Be/AS_Network_List.git 2. 导航至仓库文件夹: cd AS_Network_List 3. 安装必需的 Python 包: ./requirements.sh 如果由于 python 版本 >=3.12 而导致此步骤出现 `PEP 668` 问题,并且你不熟悉虚拟环境,请使用此变通方法: pip install -r requirements.txt --break-system-packages ## 用法 ### `network_list_from_as.py` 1. 使用 AS 编号作为参数运行脚本: ./network_list_from_as.py AS61280 2. 使用指向每行一个 ASN 文件的 URL 运行脚本: ./network_list_from_as.py https://example.com/asns.txt 或者最好使用原始文件链接: ./network_list_from_as.py https://example.com/asns-raw.txt 3. 要显示帮助信息,请使用 `-h` 或 `--help` 开关: ./network_list_from_as.py --help ### `network_list_from_netname.py` 1. 使用包含网络名称列表的文件作为参数运行脚本: ./network_list_from_netname.py lists/ru-gov-netnames.txt 2. 使用指向 GitHub 仓库中文件的 URL 作为参数运行脚本: ./network_list_from_netname.py https://github.com/C24Be/AS_Network_List/blob/main/lists/ru-gov-netnames.txt 或者最好使用原始文件链接: ./network_list_from_netname.py https://raw.githubusercontent.com/C24Be/AS_Network_List/main/lists/ru-gov-netnames.txt 3. 要显示帮助信息,请使用 `-h` 或 `--help` 开关: ./network_list_from_netname.py --help ### `generate_nft_blacklist.py` 1. 从黑名单生成 nftables 配置: ./generate_nft_blacklist.py blacklists/blacklist.txt blacklist.nft ### `check_nft_blacklist.py` 1. 根据生成的配置检查 IP 地址: ./check_nft_blacklist.py blacklist.nft 77.37.166.239 ## 截图 image image ## 自动化工作流 本仓库使用 GitHub Actions 自动更新黑名单: - **每日更新**:`update_blacklists.yml` - 更新所有黑名单格式(文本、nginx、iptables) - **每月更新**:`update_ru_all_lists.yml` - 更新详尽的俄罗斯网络列表 - **每周更新**:`parse_ripe_database.yml` - 解析 RIPE 数据库以获取俄罗斯网络 - **网络解析**:`resolve_networks.yml` - 解析网络名称和描述 所有黑名单都会自动重新生成并提交,以确保你始终拥有最新数据。 ## 附加信息 - [RIPE DB Inetnum](https://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz) ## 贡献 我们欢迎你的贡献!随时欢迎提交 pull request 或开启 issue。
标签:Docker 部署, IP封锁, Python, 数字取证, 无后门, 网络运维, 自动化脚本, 逆向工具, 防火墙配置, 黑名单生成