当前位置: 首页 > news >正文

nftables-blacklist配置全解析:从基础设置到高级自定义

nftables-blacklist配置全解析:从基础设置到高级自定义

【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist

nftables-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

一键安装部署流程 ⚡

  1. 下载核心脚本
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
  1. 创建配置目录并获取默认配置
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
  1. 执行首次更新
sudo /usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf
  1. 验证部署结果
# 列出黑名单表 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(推荐设为yes)
BLOCK_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。

外部白名单文件

当需要管理大量白名单条目时,推荐使用外部文件:

  1. 创建白名单文件:/etc/nftables-blacklist/extra.list
  2. 按行添加IP/CIDR,支持#开头的注释:
# 办公网络 192.168.1.0/24 # VPN服务器 203.0.113.50 # IPv6地址 2001:db8::/32
  1. 在配置文件中引用:"file:///etc/nftables-blacklist/extra.list"

自动检测服务器IP(推荐)

启用自动白名单功能可避免因服务器IP出现在公共黑名单而导致的自拦截问题:

AUTO_WHITELIST=yes

该功能会自动检测:

  • 本地网卡IP地址(排除私有地址)
  • 通过外部服务获取的公网IP(使用o11.net和icanhazip.com作为数据源)

启用后,你将在更新日志中看到自动白名单的IP:

Auto-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] Description=nftables IP blacklist After=network.target [Service] Type=oneshot ExecStart=/usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist.conf RemainAfterExit=yes [Install] WantedBy=multi-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] Description=Update nftables IP blacklist daily [Timer] OnCalendar=*-*-* 23:33:00 Persistent=true RandomizedDelaySec=14400 [Install] WantedBy=timers.target EOF sudo cat <<'EOF' > /etc/systemd/system/nftables-blacklist-update.service [Unit] Description=Update nftables IP blacklist After=network-online.target Wants=network-online.target [Service] Type=oneshot 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"错误

当出现此错误时,确保配置文件中FORCE=yes(默认已设置),脚本会自动创建所需的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_FORWARD=yes

迁移指南:从ipset-blacklist升级

如果你之前使用的是旧版ipset/iptables版本,可按以下步骤迁移:

  1. 清理旧版本
# 移除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
  1. 按照本文档的"快速上手"部分安装新版

注意:Debian Trixie及更新版本用户需确保使用nftables后端:

update-alternatives --set iptables /usr/sbin/iptables-nft update-alternatives --set ip6tables /usr/sbin/ip6tables-nft

完全卸载指南

如需彻底移除nftables-blacklist:

  1. 停止并禁用服务
sudo systemctl disable --now nftables-blacklist-update.timer sudo systemctl disable --now nftables-blacklist.service
  1. 删除nftables表
sudo nft delete table inet blacklist
  1. 移除系统文件
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
  1. 移除内核参数调整(如之前设置过)
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),仅供参考

http://www.jsqmd.com/news/1211812/

相关文章:

  • Python Playwright爬虫实战:从零构建动态网页数据抓取工具
  • G-Helper:基于ACPI/WMI接口的华硕笔记本硬件控制架构解析
  • PHP生态全景:从开发框架到性能优化实践
  • LeRobot:如何用PyTorch统一机器人学习的三大难题?
  • 2026年豆包GEO优化服务创新能力怎么样研发能力强吗 - myqiye
  • CGrep 语义搜索入门:使用通配符匹配复杂代码模式
  • 数字IC与FPGA双投策略:硬件工程师求职一鱼两吃指南
  • 嵌入式面试核心:从字节对齐到系统思维的深度解析
  • 东宁市 2026黄金回收指南 黄金回收白银回收铂金回收店铺TOP5排行榜及地址+联系方式 - 盛世金银回收
  • 会理市2026最新靠谱黄金回收门店及联系方式汇总 黄金回收白银回收铂金回收店铺TOP5排行榜 - 大熊猫898989
  • THSpringyCollectionView核心原理:深入理解UIDynamicAnimator与UIAttachmentBehavior
  • 小熊猫Dev-C++:让C++编程变得轻松愉快的Windows开发伙伴
  • 飞智BS3散热器进气优化实战:前端改件实现5℃降温全解析
  • OneX Neo扫地机器人深度评测:设计美学与清洁性能的平衡艺术
  • 如何快速离线下载ChromeOS Full ROM固件:download-fullrom.sh脚本完全指南
  • Java安全框架选型指南:Spring Security、Shiro与Sa-Token对比
  • Rodauth-Rails与Turbo Streams集成:构建响应式认证界面的技巧
  • 2026酒店餐具定制行业,实力测评五大口碑品牌,价格透明不交智商税 - myqiye
  • 软件工程师如何通过硬件实战提升嵌入式与物联网开发能力
  • 如何快速构建稳定Unity插件:BepInEx 6.0完整实战指南
  • Rodauth-Rails与Active Record集成:如何在Rails应用中无缝使用Sequel的终极指南
  • 构建高可用系统:从断路器、缓存到混沌工程的动态稳定性实践
  • Unity动态Mesh编程实战:陶艺模拟中的性能优化与视觉保真技巧
  • 东台市 2026黄金回收指南 黄金回收白银回收铂金回收店铺TOP5排行榜及地址+联系方式 - 盛世金银回收
  • 简阳市 2026黄金回收指南 黄金回收白银回收铂金回收店铺TOP5排行榜及地址+联系方式 - 盛世金银回收
  • CANN/asc-devkit:SIMT API整型数学函数ullmin
  • hierarchicalforecast API完全参考:核心类与方法使用手册
  • UniLab异步运行时:SharedReplayBuffer与内存优化技术
  • 2026混流风机生产厂出片品质哪家高,价格透明口碑推荐指南 - myqiye
  • Spring Boot 2.x集成PageHelper分页插件详解