mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
728 字
2 分钟
Fail2ban 入门教程
2026-05-14

什么是 Fail2ban?#

Fail2ban 是一款开源的入侵防御工具,它可以监控服务器日志,自动识别暴力破解等恶意行为,并通过防火墙规则暂时封禁攻击者的 IP 地址。

简单来说,Fail2ban 就是服务器的”保安”,它会24小时监控日志,一旦发现有人恶意攻击,就会自动把他拉黑。

为什么需要 Fail2ban?#

你可能会想:我的服务器有密码保护,还需要 Fail2ban 吗?

答案是 非常需要!! 原因如下:

  1. 暴力破解攻击很常见:攻击者会用程序自动尝试成千上万的密码组合
  2. 密码再强也不安全:如果攻击者尝试的次数足够多,再强的密码也可能被破解
  3. 防患于未然:与其等到被攻击后再补救,不如提前做好防护
真实案例

有一台服务器,一天内被尝试登录超过1000次!还好装了 Fail2ban,攻击者很快就被封禁了。

安装 Fail2ban#

在 Debian/Ubuntu 上安装#

# 更新软件包列表
sudo apt update
# 安装 Fail2ban
sudo apt install fail2ban -y

在 CentOS/RHEL 上安装#

# 安装 EPEL 仓库
sudo yum install epel-release -y
# 安装 Fail2ban
sudo yum install fail2ban -y

启动并设置开机自启#

# 启动 Fail2ban
sudo systemctl start fail2ban
# 设置开机自启
sudo systemctl enable fail2ban
# 查看状态
sudo systemctl status fail2ban

基本配置#

Fail2ban 的配置文件位于 /etc/fail2ban/ 目录下。

主配置文件#

# 编辑主配置文件
sudo vim /etc/fail2ban/jail.conf

但不建议直接修改 jail.conf,而是创建一个 jail.local 文件来覆盖默认配置:

# 创建自定义配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑自定义配置
sudo vim /etc/fail2ban/jail.local

常用配置项说明#

[DEFAULT]
# 封禁时间(秒),默认 600 秒(10分钟)
bantime = 600
# 检测时间窗口(秒),默认 600 秒(10分钟)
findtime = 600
# 最大尝试次数,超过这个次数就封禁
maxretry = 5
# 是否发送邮件通知
sendmail-whois = root@localhost
# 忽略的 IP 地址(不会被封禁)
ignoreip = 127.0.0.1/8 192.168.1.0/24

启用 SSH 防护#

SSH 是最常被攻击的服务,一定要启用防护:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600 # 封禁1小时

常用命令#

查看状态#

# 查看整体状态
sudo fail2ban-client status
# 查看特定服务的状态
sudo fail2ban-client status sshd

查看被封禁的 IP#

# 查看被 SSH 服务封禁的 IP
sudo fail2ban-client status sshd

手动解封 IP#

# 解封特定 IP
sudo fail2ban-client set sshd unbanip 192.168.1.100

手动封禁 IP#

# 手动封禁特定 IP
sudo fail2ban-client set sshd banip 192.168.1.100

重新加载配置#

# 修改配置后需要重新加载
sudo fail2ban-client reload

保护其他服务#

Fail2ban 不仅可以保护 SSH,还可以保护其他服务。

保护 Nginx#

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600

保护 WordPress#

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 3600

保护 FTP#

[vsftpd]
enabled = true
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 3600

自定义过滤规则#

如果默认的过滤规则不够用,可以创建自定义规则。

创建自定义过滤器#

# 创建过滤器文件
sudo vim /etc/fail2ban/filter.d/myapp.conf
[Definition]
failregex = ^.*Failed login from <HOST>.*$
ignoreregex =

使用自定义过滤器#

jail.local 中添加:

[myapp]
enabled = true
filter = myapp
logpath = /var/log/myapp.log
maxretry = 3
bantime = 3600

常见问题解答#

Q1:Fail2ban 不生效怎么办?#

# 检查日志
sudo tail -f /var/log/fail2ban.log
# 检查防火墙是否正常
sudo iptables -L
# 检查配置是否正确
sudo fail2ban-client -d

Q2:不小心封禁了自己的 IP 怎么办?#

# 立即解封
sudo fail2ban-client set sshd unbanip 你的IP
# 将自己的 IP 添加到白名单
sudo vim /etc/fail2ban/jail.local
# 在 ignoreip 中添加你的 IP

Q3:如何永久封禁某个 IP?#

# 使用 iptables 永久封禁
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
# 保存规则
sudo iptables-save > /etc/iptables/rules.v4

Q4:如何设置更长的封禁时间?#

# 修改 bantime 参数
sudo vim /etc/fail2ban/jail.local
# 设置 bantime = 86400 # 封禁一天

安全建议#

WARNING

安全加固建议

  1. 更改 SSH 默认端口(22)
  2. 禁用密码登录,改用密钥认证
  3. 限制允许登录的用户
  4. 定期检查 Fail2ban 状态
  5. 将重要 IP 添加到白名单

总结#

Fail2ban 是一款简单实用的服务器安全工具,配置好后可以自动保护你的服务器免受暴力攻击。

安装步骤总结

  1. ✅ 安装 Fail2ban
  2. ✅ 配置 jail.local
  3. ✅ 启用需要保护的服务
  4. ✅ 启动并设置开机自启

现在你的服务器就多了一层安全保护!


保护服务器安全,从配置 Fail2ban 开始!🔒

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Fail2ban 入门教程
https://wxh168.vip/posts/fail2ban-tutorial/
作者
毒影马
发布于
2026-05-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录