nftables-blacklist配置全解析从基础设置到高级自定义【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklistnftables-blacklist是一款基于Bash脚本的安全工具能够自动下载公共IP黑名单并通过nftables实现高效拦截保护Linux服务器免受脚本小子、僵尸网络和恶意流量的侵扰。该工具全面支持IPv4和IPv6协议具备CIDR聚合、内置白名单、定时更新和服务器IP自动检测等实用功能是服务器安全防护的得力助手。快速上手5分钟完成基础部署系统要求与依赖安装 nftables-blacklist对系统环境有以下要求Debian 10/Ubuntu 20.04或其他支持nftables的Linux发行版nftables防火墙iprange工具用于IP范围合并和白名单处理基础命令行工具curl、grep、sed、sort、wc通常已预装在Debian/Ubuntu系统中可通过以下命令安装所需依赖sudo apt install curl iprange一键安装部署流程 ⚡下载核心脚本sudo curl -fsSL -o /usr/local/sbin/update-blacklist.sh \ https://raw.githubusercontent.com/trick77/nftables-blacklist/master/update-blacklist.sh sudo chmod x /usr/local/sbin/update-blacklist.sh创建配置目录并获取默认配置sudo mkdir -p /etc/nftables-blacklist if [ -f /etc/nftables-blacklist/nftables-blacklist.conf ]; then echo Config already exists, skipping download else sudo curl -fsSL -o /etc/nftables-blacklist/nftables-blacklist.conf \ https://raw.githubusercontent.com/trick77/nftables-blacklist/master/nftables-blacklist.conf fi执行首次更新sudo /usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf验证部署结果# 列出黑名单表 sudo nft list table inet blacklist # 查看IPv4集合内容 sudo nft list set inet blacklist blacklist4 # 查看IPv6集合内容 sudo nft list set inet blacklist blacklist6 # 检查拦截统计 sudo nft list chain inet blacklist input成功部署后你将看到类似以下的拦截统计信息chain input { type filter hook input priority -200; policy accept; ip saddr blacklist4 counter packets 1523 bytes 91380 drop comment IPv4 blacklist ip6 saddr blacklist6 counter packets 42 bytes 3360 drop comment IPv6 blacklist }核心配置详解打造个性化防护策略配置文件结构与路径nftables-blacklist的主配置文件为nftables-blacklist.conf默认位于/etc/nftables-blacklist/目录下。该文件采用Bash语法主要包含以下配置区域文件路径定义行为控制开关黑名单源配置白名单设置高级参数覆盖必知关键配置项 设置项默认值描述ENABLE_IPV4yes是否拦截IPv4地址ENABLE_IPV6yes是否拦截IPv6地址FORCEyes自动创建nftables表和集合推荐保持默认AUTO_WHITELISTno自动检测并白名单服务器自身IP推荐设为yesBLOCK_FORWARDno是否同时拦截转发链流量如容器流量NFT_CHAIN_PRIORITY-200规则检查优先级值越低越优先CURL_CONNECT_TIMEOUT10黑名单服务器连接超时秒CURL_MAX_TIME30单个黑名单下载最大时间秒自定义黑名单源默认配置已包含多个高质量公共黑名单源你可以根据需求在BLACKLISTS数组中增删条目BLACKLISTS( # 本地自定义列表 file:///etc/nftables-blacklist/custom.list # 公共黑名单 https://www.spamhaus.org/drop/drop_v4.json https://lists.blocklist.de/lists/all.txt # 国家/地区屏蔽取消注释并修改国家代码 # https://raw.githubusercontent.com/ipverse/country-ip-blocks/master/country/ru/ipv4-aggregated.txt )小贴士使用IPverse可以查询ASN、IP所有者和网络范围帮助你选择需要屏蔽的国家或网络。白名单策略避免误拦截的终极指南手动白名单配置编辑配置文件中的WHITELIST数组添加需要保护的IP或CIDR范围WHITELIST( 203.0.113.10 # 单个服务器IP 203.0.113.0/24 # 整个网段 2001:db8::1 # IPv6地址 file:///etc/nftables-blacklist/extra.list # 外部白名单文件 )对于IPv4白名单中的CIDR范围会自动排除该范围内的所有IP而IPv6白名单目前仅支持精确匹配单个IP。外部白名单文件当需要管理大量白名单条目时推荐使用外部文件创建白名单文件/etc/nftables-blacklist/extra.list按行添加IP/CIDR支持#开头的注释# 办公网络 192.168.1.0/24 # VPN服务器 203.0.113.50 # IPv6地址 2001:db8::/32在配置文件中引用file:///etc/nftables-blacklist/extra.list自动检测服务器IP推荐启用自动白名单功能可避免因服务器IP出现在公共黑名单而导致的自拦截问题AUTO_WHITELISTyes该功能会自动检测本地网卡IP地址排除私有地址通过外部服务获取的公网IP使用o11.net和icanhazip.com作为数据源启用后你将在更新日志中看到自动白名单的IPAuto-detecting server IPs for whitelist... Whitelisted: 2001:db8:305:2100::1 Whitelisted: 203.0.113.10高级应用从定时更新到性能优化配置系统服务实现开机自启为确保黑名单在服务器重启后自动加载创建系统服务文件sudo cat EOF /etc/systemd/system/nftables-blacklist.service [Unit] Descriptionnftables IP blacklist Afternetwork.target [Service] Typeoneshot ExecStart/usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf RemainAfterExityes [Install] WantedBymulti-user.target EOF启用服务sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist.service设置定时自动更新 ⏰创建定时器配置实现黑名单每日自动更新sudo cat EOF /etc/systemd/system/nftables-blacklist-update.timer [Unit] DescriptionUpdate nftables IP blacklist daily [Timer] OnCalendar*-*-* 23:33:00 Persistenttrue RandomizedDelaySec14400 [Install] WantedBytimers.target EOF sudo cat EOF /etc/systemd/system/nftables-blacklist-update.service [Unit] DescriptionUpdate nftables IP blacklist Afternetwork-online.target Wantsnetwork-online.target [Service] Typeoneshot ExecStart/usr/local/sbin/update-blacklist.sh --cron /etc/nftables-blacklist/nftables-blacklist.conf EOF启用定时器sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist-update.timer最佳实践每日更新1-2次即可过于频繁可能导致被黑名单提供商封禁。处理大型IP集合10万条目当黑名单包含大量IP时可能会遇到消息过长或无缓冲空间错误可通过调整内核网络缓冲区解决# 创建sysctl配置文件 sudo cat EOF /etc/sysctl.d/99-nftables.conf net.core.rmem_max 8388608 net.core.rmem_default 8388608 EOF # 应用配置 sudo sysctl -p /etc/sysctl.d/99-nftables.conf测试模式与日志分析使用--dry-run参数测试配置而不实际应用规则update-blacklist.sh --dry-run /etc/nftables-blacklist/nftables-blacklist.conf对于定时任务使用--cron参数生成结构化日志update-blacklist.sh --cron /etc/nftables-blacklist/nftables-blacklist.conf查看拦截统计sudo nft list chain inet blacklist input故障排除与常见问题nftables table does not exist错误当出现此错误时确保配置文件中FORCEyes默认已设置脚本会自动创建所需的nftables表和集合。检查特定IP是否被拦截# 检查IPv4 sudo nft get element inet blacklist blacklist4 { 1.2.3.4 } # 检查IPv6 sudo nft get element inet blacklist blacklist6 { 2001:db8::1 }与现有防火墙规则的集成nftables-blacklist使用独立的inet blacklist表不会干扰现有防火墙规则。默认优先级-200确保黑名单规则在大多数其他规则之前检查如需调整可修改NFT_CHAIN_PRIORITY参数。转发流量未被拦截默认情况下黑名单仅作用于input链保护服务器自身。要同时保护转发流量如Docker容器需设置BLOCK_FORWARDyes迁移指南从ipset-blacklist升级如果你之前使用的是旧版ipset/iptables版本可按以下步骤迁移清理旧版本# 移除iptables规则和ipset iptables -D INPUT -m set --match-set blacklist src -j DROP ipset destroy blacklist # 移除旧定时任务 rm -f /etc/cron.d/update-blacklist # 移除旧脚本和配置 rm -f /usr/local/sbin/update-blacklist.sh rm -rI /etc/ipset-blacklist按照本文档的快速上手部分安装新版注意Debian Trixie及更新版本用户需确保使用nftables后端update-alternatives --set iptables /usr/sbin/iptables-nft update-alternatives --set ip6tables /usr/sbin/ip6tables-nft完全卸载指南如需彻底移除nftables-blacklist停止并禁用服务sudo systemctl disable --now nftables-blacklist-update.timer sudo systemctl disable --now nftables-blacklist.service删除nftables表sudo nft delete table inet blacklist移除系统文件sudo rm -f /etc/systemd/system/nftables-blacklist.service sudo rm -f /etc/systemd/system/nftables-blacklist-update.service sudo rm -f /etc/systemd/system/nftables-blacklist-update.timer sudo systemctl daemon-reload sudo rm -f /usr/local/sbin/update-blacklist.sh sudo rm -rI /etc/nftables-blacklist移除内核参数调整如之前设置过sudo rm -f /etc/sysctl.d/99-nftables.conf sudo sysctl --system完成以上步骤后系统将恢复到安装前状态所有被拦截的流量将恢复正常。【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考