关于 fail2ban-setup
fail2ban-setup 用于为选定的日志服务配置 Fail2ban,同时保留其他 jail 和可信地址策略。它涵盖检查、受控配置、验证、拦截测试和恢复。
主要功能
- 01检查日志、过滤器和防火墙路径
- 02保留现有 jail 与允许列表
- 03预览并应用 SSH jail
- 04启用前验证配置
- 05验证拦截并恢复原状态
适用场景
- 01为服务器配置 SSH jail
- 02检查仅使用 journald 的 SSH 日志支持
- 03测试拦截且避免锁定管理员
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mikr13/ secure-server-setup-skills --skill fail2ban-setup安装后在 Claude Code 中输入/fail2ban-setup确认已加载。
附带文件references/fail2ban-filters.mdscripts/setup-fail2ban.sh
详细介绍
Fail2ban 设置
保护所选日志服务,同时不替换无关的 jail 或可信地址策略。进程正在运行,并不代表 jail 处于活动状态或有效。
检查
- 确认已安装的 Fail2ban/过滤器版本、实际 SSH 监听端口、活动 jail、本地覆盖项和现有
ignoreip值。测试封禁前,先检查管理员访问情况。 - 确定 SSH 事件是否写入
/var/log/auth.log、/var/log/secure,还是仅写入 journald。对于仅使用 journal 的系统,确认已安装python3-systemd,且已安装的 SSH 过滤器支持journalmatch。 - 确定防火墙封禁操作和网络路径;如适用,还要考虑反向代理或容器。jail 必须识别实际违规客户端,而不是共享代理或管理员地址。
选择后端、过滤器模式、自定义应用过滤器或受控测试时,请阅读 references/fail2ban-filters.md。
配置
如果 Fail2ban 和所需的后端软件包尚未安装,请在授权范围内安装。预览 scripts/setup-fail2ban.sh:
sudo bash scripts/setup-fail2ban.sh --dry-run
如果套接字激活或自定义端口导致无法明确判断端口,请为每个实际监听端口传入 --ssh-port。要在授权范围内更改 SSH jail 并激活:
sudo bash scripts/setup-fail2ban.sh --apply --activate
该辅助程序只写入 jail.d/99-secure-server-sshd.local,选择文件轮询或 systemd 后端,保留现有 ignoreip 和其他 jail,并在激活前验证配置。它使用已安装的 sshd 过滤器,阈值为十分钟内失败五次,封禁一小时。这些是可调整的本地策略选择,并非 Fail2ban 的通用默认值。不使用 --activate 时,运行中的服务不会改变。
除非已验证实际日志来源、过滤器和封禁操作,否则不要启用 recidive 或应用 jail。激进的 SSH 行为是已安装 sshd 过滤器的一种模式,并非假定存在 sshd-aggressive.conf 文件。
该辅助程序会验证合并后的封禁操作端口和 TCP 覆盖范围。已安装的 iptables/nftables 全端口操作需要明确批准 --allow-allports;无法验证的自定义操作需要手动处理流程。活动服务的重新加载和恢复只选择 sshd。启动非活动服务会加载所有已启用的 jail,因此必须相应地进行审核。
验证和恢复
- 激活后运行
sudo fail2ban-client -t,并检查sudo fail2ban-client status sshd。 - 确认所选日志/journal 中包含实际事件,并确认 jail 的过滤器能匹配身份验证失败,同时排除有代表性的合法流量。
- 从受控的备用客户端验证封禁会阻止目标网络路径,然后解除封禁。不要故意封禁唯一的管理客户端。
- 验证此前要求的所有 jail 和允许列表仍然有效。封禁通知和日志保留应与现有策略保持一致。
- 如果验证/激活失败,辅助程序会恢复先前管理的 jail,并尝试恢复先前的服务状态。之后如需回滚,请使用输出的目录恢复或移除该管理覆盖项,验证配置并重新加载。
分别报告运行中的服务、活动 jail、过滤器匹配情况和实际执行封禁的证据。