Fail2ban 安装与配置全攻略:从入门到实战
引言
Fail2ban 是一款开源的入侵防御工具,通过监控日志文件并自动封禁恶意 IP,有效防止暴力破解、DDoS 等攻击。本文将基于实际案例,详细介绍在 CentOS 系统上安装、配置 Fail2ban 的完整流程,并解答常见配置问题。
一、安装 Fail2ban
1. 更新系统并安装依赖
sudo yum update -y
sudo yum install epel-release -y
sudo yum install fail2ban -y
2. 启动服务并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
二、基础配置
1. 核心配置文件
-
主配置文件:
/etc/fail2ban/jail.conf
(默认配置,不要直接修改) -
用户自定义配置:
/etc/fail2ban/jail.local
(推荐在此文件修改)
2. 创建自定义配置
sudo vi /etc/fail2ban/jail.local
三、实战配置示例
案例 1:保护 SSH 服务
[sshd]
enabled = true # 启用 Jail
port = 22 # 监控端口
logpath = /var/log/secure # 日志路径
maxretry = 5 # 最大尝试次数(超过则封禁)
bantime = 3600 # 封禁时长(秒,默认 10 分钟)
案例 2:保护 Nginx 认证
[nginx]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
filter = nginx-http-auth # 使用认证失败过滤器
maxretry = 3
bantime = 300
四、常见错误与解决
错误 1:Wrong value for 'maxretry'
原因:未定义 maxretry
或值类型错误。 解决:显式设置有效整数值(如 maxretry = 5
)。
错误 2:Found no accessible config files for 'filter.d/...'
原因:过滤器名称被注释破坏。 错误配置:
filter = nginx-http-auth # 中文注释导致名称解析失败
正确配置:
filter = nginx-http-auth # 注释需独立一行或用英文
错误 3:服务启动失败
排查步骤:
-
检查配置文件语法:
sudo fail2ban-client -vvv # 查看配置是否有问题 fail2ban-server --test
-
查看日志定位错误:
sudo journalctl -u fail2ban -f
五、查看与管理封禁 IP
1. 查看所有 Jail 状态
sudo fail2ban-client status
2. 查看特定 Jail 的封禁列表
sudo fail2ban-client status sshd
3. 手动解封 IP
sudo fail2ban-client set <jail名称> unbanip <IP地址>
# 示例:解封 SSH Jail 中的 192.168.1.123
sudo fail2ban-client set sshd unbanip 192.168.1.123
4. 查看防火墙规则(iptables)
sudo iptables -L -n | grep fail2ban
六、进阶技巧
1. 自定义过滤器
-
在
/etc/fail2ban/filter.d/
下新建文件(如myfilter.conf
)。 -
定义正则匹配规则:
[Definition] failregex = ^<HOST> -.*"POST /login HTTP/1.1".* 401 ignoreregex =
2. 邮件告警通知
-
安装邮件发送工具:
sudo yum install sendmail -y
-
在
jail.local
中配置:[DEFAULT] destemail = admin@example.com sender = fail2ban@example.com action = %(action_mwl)s
3. 日志轮转配置
确保 /etc/logrotate.d/fail2ban
存在以下配置:
/var/log/fail2ban.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 640 root adm
}
七、注意事项
-
备份配置:修改前备份
jail.local
和 目录。 -
测试配置:使用
fail2ban-client -vvv
检查语法。 -
监控日志:定期查看
/var/log/fail2ban.log
捕获异常。 -
性能影响:高流量场景建议优化正则规则,避免过度消耗资源。
结语
通过本文,你已掌握 Fail2ban 的核心配置与问题排查方法。实际部署时,请根据业务需求调整 maxretry
、bantime
等参数,并结合日志分析持续优化规则。遇到问题时,优先检查配置文件语法和日志输出,也可通过 fail2ban-client