nftables-blacklist实战如何自定义IP黑名单源和规则【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist你是否曾经为服务器不断遭受恶意IP攻击而烦恼 nftables-blacklist 是一个强大的Bash脚本工具可以自动下载公共IP黑名单并使用nftables进行批量封禁。本文将为你详细介绍如何自定义IP黑名单源和规则打造专属的服务器安全防护系统为什么选择nftables-blacklist在网络安全防护中手动维护IP黑名单既耗时又容易出错。nftables-blacklist 解决了这一痛点它能够自动更新定期从多个公共黑名单源获取最新恶意IP智能合并自动合并重叠的IP范围减少规则数量双栈支持同时支持IPv4和IPv6地址原子更新黑名单切换无中断不影响正常流量白名单保护防止误封服务器自身IP快速上手安装配置首先让我们快速部署nftables-blacklist# 安装依赖工具 sudo apt install curl iprange # 下载脚本 sudo curl -fsSL -o /usr/local/sbin/update-blacklist.sh \ https://gitcode.com/gh_mirrors/ip/nftables-blacklist/raw/master/update-blacklist.sh sudo chmod x /usr/local/sbin/update-blacklist.sh # 创建配置目录 sudo mkdir -p /etc/nftables-blacklist # 下载配置文件 sudo curl -fsSL -o /etc/nftables-blacklist/nftables-blacklist.conf \ https://gitcode.com/gh_mirrors/ip/nftables-blacklist/raw/master/nftables-blacklist.conf 自定义IP黑名单源nftables-blacklist 最强大的功能之一就是可以灵活配置黑名单源。默认配置文件 nftables-blacklist.conf 中已经预置了一些常用的黑名单源但你可以根据需求进行自定义。理解BLACKLISTS数组在配置文件中BLACKLISTS数组定义了所有要下载的黑名单源BLACKLISTS( # 本地自定义列表 file:///etc/nftables-blacklist/custom.list # 公共黑名单源 https://www.spamhaus.org/drop/drop_v4.json https://lists.blocklist.de/lists/all.txt )添加自定义黑名单源1.本地文件黑名单创建本地黑名单文件/etc/nftables-blacklist/custom.list# 自定义恶意IP列表 192.168.1.100 10.0.0.0/24 2001:db8::/32 # 支持注释 # 这个IP来自恶意扫描器 203.0.113.50然后在配置文件中添加file:///etc/nftables-blacklist/custom.list2.公共黑名单源你可以添加各种公共黑名单源# Spamhaus DROP列表IPv4 https://www.spamhaus.org/drop/drop_v4.json # Spamhaus DROP列表IPv6 https://www.spamhaus.org/drop/drop_v6.json # Blocklist.de - 所有攻击者 https://lists.blocklist.de/lists/all.txt # 国家IP封锁俄罗斯 https://raw.githubusercontent.com/ipverse/country-ip-blocks/master/country/ru/ipv4-aggregated.txt https://raw.githubusercontent.com/ipverse/country-ip-blocks/master/country/ru/ipv6-aggregated.txt # ASN封锁特定网络 https://raw.githubusercontent.com/ipverse/as-ip-blocks/master/as/64496/ipv4-aggregated.txt3.高级动态生成的黑名单你可以创建脚本动态生成黑名单#!/bin/bash # /usr/local/bin/generate-custom-blacklist.sh # 从日志中提取恶意IP grep Failed password /var/log/auth.log | \ grep -oE \b([0-9]{1,3}\.){3}[0-9]{1,3}\b | \ sort -u /tmp/ssh-brute-force.list # 从API获取恶意IP curl -s https://api.threat-intelligence.com/ips | \ jq -r .malicious_ips[] /tmp/ssh-brute-force.list # 去重并保存 sort -u /tmp/ssh-brute-force.list /etc/nftables-blacklist/dynamic.list然后通过cron定时执行并在配置中引用file:///etc/nftables-blacklist/dynamic.list️ 配置白名单保护白名单配置至关重要可以防止误封重要IP地址特别是服务器自身的IP。自动检测服务器IP启用自动白名单功能是最安全的做法# 在 nftables-blacklist.conf 中设置 AUTO_WHITELISTyes这个功能会自动检测服务器的所有网络接口IP并通过外部服务查询公网IP确保不会误封自己。手动配置白名单你也可以手动指定白名单WHITELIST( # 服务器IP地址 203.0.113.10 # 服务器所在网络段 203.0.113.0/24 # IPv6地址 2001:db8::1 # 外部白名单文件 file:///etc/nftables-blacklist/trusted-ips.list )高级白名单技巧1.动态白名单文件创建动态更新的白名单文件# /etc/nftables-blacklist/trusted-ips.list # 信任的VPN服务器 104.200.131.0/24 2607:5300:60::/48 # 办公室IP段 192.168.100.0/242.从API获取白名单通过脚本从API获取信任的IP#!/bin/bash # /usr/local/sbin/refresh-trusted-ips.sh # 从Cloudflare获取IP范围 curl -s https://www.cloudflare.com/ips-v4 /tmp/cloudflare-v4.txt curl -s https://www.cloudflare.com/ips-v6 /tmp/cloudflare-v6.txt # 从AWS获取IP范围 curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \ jq -r .prefixes[] | .ip_prefix /tmp/aws-ips.txt # 合并并保存 cat /tmp/cloudflare-v4.txt /tmp/cloudflare-v6.txt /tmp/aws-ips.txt | \ sort -u /etc/nftables-blacklist/cloud-services.list⚙️ 高级配置选项网络链配置默认情况下nftables-blacklist 只检查input链。如果你需要保护容器或虚拟机流量可以启用转发链# 启用forward链保护 BLOCK_FORWARDyes规则优先级调整调整规则优先级确保黑名单规则先于其他规则执行# 默认优先级为-200非常靠前 NFT_CHAIN_PRIORITY-200分块处理大量IP当处理大量IP时可以调整分块大小# 每个nft命令处理的IP数量 CHUNK_SIZE5000 实战配置示例场景1Web服务器防护# /etc/nftables-blacklist/nftables-blacklist.conf # 启用IPv4/IPv6 ENABLE_IPV4yes ENABLE_IPV6yes # 自动白名单 AUTO_WHITELISTyes # 黑名单源配置 BLACKLISTS( # Web攻击防护 https://www.spamhaus.org/drop/drop_v4.json https://www.spamhaus.org/drop/drop_v6.json # 暴力破解防护 https://lists.blocklist.de/lists/ssh.txt https://lists.blocklist.de/lists/apache.txt # 自定义攻击IP file:///etc/nftables-blacklist/web-attacks.list ) # 白名单配置 WHITELIST( # CDN服务 file:///etc/nftables-blacklist/cdn-ips.list # 监控服务 104.16.0.0/12 # Datadog 34.120.0.0/16 # Google Cloud Monitoring )场景2游戏服务器防护# 游戏服务器专用配置 BLACKLISTS( # DDoS防护 https://iplists.firehol.org/files/firehol_level1.netset # 游戏作弊IP https://iplists.firehol.org/files/stopforumspam_7d.ipset # 特定地区封锁 https://raw.githubusercontent.com/ipverse/country-ip-blocks/master/country/cn/ipv4-aggregated.txt # 自定义游戏作弊IP file:///etc/nftables-blacklist/game-cheaters.list ) # 游戏服务器需要更高的并发处理 CHUNK_SIZE10000场景3家庭服务器防护# 家庭服务器简化配置 BLACKLISTS( # 基础防护 https://www.spamhaus.org/drop/drop_v4.json https://lists.blocklist.de/lists/all.txt # 本地网络保护 file:///etc/nftables-blacklist/local-threats.list ) # 家庭网络白名单 WHITELIST( # 家庭设备IP段 192.168.1.0/24 192.168.2.0/24 # 智能家居设备 192.168.1.100 192.168.1.101 ) # 不启用IPv6如果不需要 ENABLE_IPV6no 自动化部署与管理Systemd定时任务创建自动更新服务# 创建服务文件 sudo nano /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# 创建定时器 sudo nano /etc/systemd/system/nftables-blacklist-update.timer [Unit] DescriptionUpdate nftables IP blacklist daily [Timer] OnCalendar*-*-* 03:00:00 # 每天凌晨3点执行 Persistenttrue RandomizedDelaySec3600 # 随机延迟1小时 [Install] WantedBytimers.target启用定时任务sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist-update.timerCron定时任务传统方式# 每天凌晨3点执行随机延迟0-3600秒 0 3 * * * sleep $((RANDOM \% 3600)) /usr/local/sbin/update-blacklist.sh --cron /etc/nftables-blacklist/nftables-blacklist.conf 故障排除与调试测试配置干运行在应用规则前进行测试sudo /usr/local/sbin/update-blacklist.sh --dry-run /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验证IP是否被封锁检查特定IP是否在黑名单中# IPv4检查 sudo nft get element inet blacklist blacklist4 { 1.2.3.4 } # IPv6检查 sudo nft get element inet blacklist blacklist6 { 2001:db8::1 }查看日志输出启用详细日志# 查看systemd日志 sudo journalctl -u nftables-blacklist-update.service # 跟踪实时日志 sudo journalctl -fu nftables-blacklist-update.service 性能优化建议1.合理选择黑名单源选择信誉良好的黑名单源避免过多源导致性能下降定期评估黑名单质量2.调整更新频率# 每天更新1-2次足够 OnCalendar*-*-* 03:00:00 OnCalendar*-*-* 15:00:003.监控系统资源# 查看nftables内存使用 sudo nft list ruleset | wc -l # 监控网络性能 sudo nft list chain inet blacklist input4.处理大量IP如果黑名单超过10万条调整内核参数# /etc/sysctl.d/99-nftables.conf net.core.rmem_max 8388608 net.core.rmem_default 8388608 # 应用配置 sudo sysctl -p /etc/sysctl.d/99-nftables.conf 最佳实践总结启用自动白名单防止误封服务器自身IP选择可靠的黑名单源质量比数量更重要定期审查配置移除不再需要的黑名单源监控规则效果查看丢弃统计评估防护效果备份配置文件定期备份自定义配置测试变更使用--dry-run测试配置变更保持更新定期更新脚本和依赖 实用技巧创建配置备份# 备份配置文件 sudo cp /etc/nftables-blacklist/nftables-blacklist.conf /etc/nftables-blacklist/nftables-blacklist.conf.backup.$(date %Y%m%d) # 备份自定义黑名单 sudo tar -czf /backup/nftables-blacklist-$(date %Y%m%d).tar.gz /etc/nftables-blacklist/快速切换配置# 创建多个配置文件 sudo cp /etc/nftables-blacklist/nftables-blacklist.conf /etc/nftables-blacklist/nftables-blacklist-aggressive.conf sudo cp /etc/nftables-blacklist/nftables-blacklist.conf /etc/nftables-blacklist/nftables-blacklist-conservative.conf # 切换配置 sudo /usr/local/sbin/update-blacklist.sh /etc/nftables-blacklist/nftables-blacklist-aggressive.conf集成到现有防火墙如果你的服务器已经有nftables规则可以调整优先级避免冲突# 在现有规则之后执行黑名单检查 NFT_CHAIN_PRIORITY0 注意事项不要过度封锁过于激进的黑名单可能影响正常用户定期审查白名单确保重要服务不被误封监控误报关注被误封的合法流量备份规则在重大变更前备份当前规则测试恢复流程确保可以快速恢复服务通过合理配置nftables-blacklist你可以为服务器构建强大的IP黑名单防护系统。记住安全是一个持续的过程定期审查和优化配置才能获得最佳防护效果️现在就开始自定义你的IP黑名单规则让服务器更加安全可靠吧【免费下载链接】nftables-blacklistA bash script to ban large numbers of IP addresses published in blacklists.项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考