nftables-blacklist自动化更新:使用Systemd Timer实现每日自动防护
【免费下载链接】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脚本工具,能够帮助系统管理员通过nftables集合阻止大量来自黑名单的恶意IP地址,为服务器提供可靠的安全防护。本文将详细介绍如何利用Systemd Timer实现nftables-blacklist的每日自动更新,让服务器防护更加智能化和自动化。
准备工作:安装与配置nftables-blacklist
克隆项目仓库
首先,需要将项目仓库克隆到本地服务器。打开终端,执行以下命令:
git clone https://gitcode.com/gh_mirrors/ip/nftables-blacklist配置文件详解
项目的核心配置文件是nftables-blacklist.conf,它包含了各种重要的设置选项。你可以根据自己的需求进行修改,以下是一些关键配置项的说明:
- 文件路径设置:
IP_BLACKLIST指定了IP黑名单文件的路径,NFT_BLACKLIST_SCRIPT则是nftables脚本文件的路径。确保这些目录存在,否则脚本可能无法正常运行。 - 行为设置:
FORCE=yes表示如果nftables表或集合不存在,将自动创建它们,这对于初次使用非常方便。 - 黑名单来源:
BLACKLISTS数组中包含了多个用于下载恶意IP地址的URL。这些URL涵盖了不同的威胁情报源,你可以根据实际情况添加或删除。 - 白名单设置:
WHITELIST数组用于指定永远不应该被阻止的IP或CIDR范围。同时,AUTO_WHITELIST选项可以自动检测并白名单服务器自身的IP,建议设置为yes以防止自我阻塞。
创建Systemd服务文件
为了让Systemd能够管理nftables-blacklist的更新任务,需要创建一个服务文件。在/etc/systemd/system/目录下创建nftables-blacklist.service文件,内容如下:
[Unit] Description=nftables-blacklist update service Documentation=https://github.com/trick77/nftables-blacklist [Service] Type=oneshot ExecStart=/data/web/disk1/git_repo/gh_mirrors/ip/nftables-blacklist/update-blacklist.sh --cron /data/web/disk1/git_repo/gh_mirrors/ip/nftables-blacklist/nftables-blacklist.conf User=root Group=root这个服务文件定义了一个oneshot类型的服务,它将在执行时运行update-blacklist.sh脚本,并传递--cron参数和配置文件路径。使用root用户和组可以确保脚本具有足够的权限来操作nftables。
创建Systemd Timer文件
接下来,创建一个Timer文件来调度服务的运行。在/etc/systemd/system/目录下创建nftables-blacklist.timer文件,内容如下:
[Unit] Description=Daily update of nftables-blacklist [Timer] OnCalendar=daily Persistent=true AccuracySec=1h [Install] WantedBy=timers.target这个Timer文件设置了每日运行服务,Persistent=true确保即使服务器在预定时间处于关闭状态,当服务器启动后也会执行错过的任务。AccuracySec=1h表示任务的执行时间可以在预定时间的前后1小时内浮动,以避免系统在同一时间执行过多任务。
启用并启动Timer
完成服务和Timer文件的创建后,需要启用并启动Timer。执行以下命令:
sudo systemctl daemon-reload sudo systemctl enable --now nftables-blacklist.timerdaemon-reload命令用于重新加载Systemd的配置,enable --now命令则启用Timer并立即启动它。
验证Timer状态
为了确保Timer已经正确配置并正在运行,可以执行以下命令来检查其状态:
sudo systemctl list-timers --all nftables-blacklist.timer该命令将显示Timer的下次运行时间、上次运行时间等信息,确认Timer处于活动状态。
测试自动更新功能
为了验证自动更新功能是否正常工作,可以手动触发服务运行:
sudo systemctl start nftables-blacklist.service然后查看日志文件,确认脚本是否成功执行:
journalctl -u nftables-blacklist.service日志中应该会显示下载黑名单、处理IP地址、应用nftables规则等过程的信息,以及最终的更新结果统计,如IPv4和IPv6地址的数量等。
常见问题解决
权限问题
如果在执行过程中遇到权限问题,确保服务文件中指定的用户和组具有足够的权限来访问相关文件和执行nftables命令。通常使用root用户可以避免大部分权限问题。
网络问题
如果下载黑名单时出现网络错误,检查服务器的网络连接是否正常,以及黑名单URL是否可访问。可以尝试手动使用curl命令测试URL的连通性。
配置文件错误
如果脚本执行失败,可能是配置文件中存在错误。仔细检查nftables-blacklist.conf中的各项设置,确保语法正确,路径有效。
通过以上步骤,你已经成功配置了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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考