Fail2Ban是一款运行在Linux服务器上的开源入侵防御软件,它会持续监控SSH、Web服务器或FTP等服务的日志,一旦发现某个IP地址在短时间内多次登录失败或触发异常请求,就立刻调用系统防火墙将该IP封禁一段时间,到期后自动解封,从而有效抵御暴力破解和简单的CC攻击。

一、安装Fail2Ban

①更新软件包列表

以root管理员身份登录linux服务器,复制粘贴以下命令并回车:

sudo apt update
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程1

②安装Fail2Ban

复制粘贴以下命令并回车:

sudo apt install fail2ban -y
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程2

二、安装可能会缺少的一些必须插件

①安装rsyslog

新版本 Debian 默认不使用 rsyslog,但 Fail2Ban 需要它来读取日志

复制粘贴以下命令并回车:

sudo apt install rsyslog -y
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程3

②安装python3-systemd

这能让 Fail2Ban 更好地与系统日志(systemd journal)集成

复制粘贴以下命令并回车:

sudo apt install python3-systemd -y
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程4

三、配置Fail2Ban

①创建配置文件

复制粘贴以下命令并回车:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程5

②编辑配置文件

复制粘贴以下命令并回车:

sudo nano /etc/fail2ban/jail.local
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程6

③进行基础配置

通过方向“↑↓”键更改光标位置,找到“[DEFAULT]”,继续向下移动可以对这一模块的变量进行编辑。

1.设置“白名单”IP(ignoreip)(由于大部分宽带不是固定IP,不建议进行设置
2.设置封禁时长(bantime)(默认是10分钟,基本不用改)
3.设置统计时间窗口(findtime)(默认10分钟,基本不用改)
4.设置最大尝试次数(maxretry)(默认是5次,基本不用改)
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程7
5.继续往下翻(隔得有点远……)
6.设置日志后端(backend)

将“backend = auto”修改为“backend = systemd”

Debian12系统安装配置Fail2Ban插件保护SSH22端口教程8
7.启用SSH防护([sshd])

向下移动光标找到“[sshd]”,通过回车增加一行并输入“enabled = true”

Debian12系统安装配置Fail2Ban插件保护SSH22端口教程9
8.修改封禁动作配置(banaction)

Debian从某个版本开始,默认的防火墙管理工具已经从iptables迁移到了nftables。fail2ban默认使用iptables命令来执行封禁动作,如果系统里没有安装iptables,或者iptables命令不在PATH环境变量里,防火墙封禁规则可能不会生效,所以需要把iptables的功能相关设置转成nftables。

向上移动光标,找到如图所示的区域,将“banaction = iptables”修改为“banaction = nftables-multiport”,将“banaction_allports = iptables-allports”修改为“banaction_allports = nftables-allports”

Debian12系统安装配置Fail2Ban插件保护SSH22端口教程10
9.保存配置并退出

在现在的界面中,先按Ctrl+X,然后按Y,最后按Enter(回车)保存

四、启动并验证

①启动服务并开机自启

复制粘贴以下命令并回车:

sudo systemctl enable --now fail2ban
Debian12系统安装配置Fail2Ban插件保护SSH22端口教程11

②检查服务状态

1.复制粘贴以下命令并回车,如果看到 Active: active (running),就说明安装和启动成功了:

sudo systemctl status fail2ban

提示:此操作会一直运行,如需结束操作回到输入状态请按Ctrl+C结束

2.复制粘贴以下命令并回车,如果输出显示类似以下内容,说明 SSH 防护完全生效:

sudo fail2ban-client status sshd

3.复制粘贴以下命令并回车,如果有输出就说明防火墙功能正常运行

sudo nft list ruleset | grep -i f2b

爱科技、爱教育、爱生活
最后更新于 2026-06-21