Fail2Ban 最流行的自动化封禁工具
原理:监控日志文件(如
/var/log/auth.log),通过正则表达式匹配非法行为(如 SSH 登录失败),触发封禁规则。功能:
支持多种服务(SSH、Apache、Nginx、MySQL 等)。
可自定义封禁时间(如 10 分钟或永久)。
支持联动防火墙(iptables/nftables/ufw)。
安装:
sudo apt update sudo apt install fail2ban配置:
主配置文件:
/etc/fail2ban/jail.conf(建议复制为jail.local并修改)。示例封禁 SSH 的配置:
[sshd] enabled = true maxretry = 3 # 3 次失败后封禁 bantime = 1h # 封禁 1 小时
验证封禁是否生效:
# 查看 iptables/nftables 规则
sudo iptables -L -n
sudo nft list ruleset
# 查看 fail2ban 状态
sudo fail2ban-client status sshd1. 安装 Fail2Ban
# 更新软件包列表
sudo apt update
# 安装 Fail2Ban
sudo apt install fail2ban -y
# 启动 Fail2Ban 并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban2. 基本配置
Fail2Ban 的主要配置文件位于 /etc/fail2ban/,建议不要直接修改 jail.conf,而是创建 jail.local 进行覆盖:
# 复制默认配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local编辑 jail.local
sudo nano /etc/fail2ban/jail.local常用配置选项
[DEFAULT]
# 封禁时间(默认 10 分钟)
bantime = 1h # 1 小时
# 最大失败尝试次数
maxretry = 3 # 3 次失败后封禁
# 查找日志的时间窗口(秒)
findtime = 10m # 10 分钟内失败 3 次才封禁
# 封禁方式(默认 iptables)
banaction = iptables-multiport
# 是否启用 IPv6
banaction_allports = iptables-allports启用 SSH 防护(默认已启用)
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
bantime = 1h启用 Nginx 防护(防暴力破解)
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log启用 MySQL 防护
[mysqld-auth]
enabled = true
port = 3306
logpath = /var/log/mysql/error.log3. 重启 Fail2Ban 使配置生效
sudo systemctl restart fail2ban4. 检查 Fail2Ban 状态
查看所有 jail 状态
sudo fail2ban-client status查看 SSH jail 状态
sudo fail2ban-client status sshd查看被封禁的 IP
sudo fail2ban-client banned手动封禁/解封 IP
# 封禁 IP
sudo fail2ban-client set sshd banip 192.168.1.100
# 解封 IP
sudo fail2ban-client set sshd unbanip 192.168.1.1005. 日志监控
Fail2Ban 日志位于:
sudo tail -f /var/log/fail2ban.log如果发现攻击,日志会显示类似:
2023-10-01 12:34:56 fail2ban.actions [1234]: NOTICE [sshd] Ban 192.168.1.1006. 高级配置(可选)
自定义过滤规则
Fail2Ban 使用正则表达式匹配日志,可以在 /etc/fail2ban/filter.d/ 下自定义规则:
sudo nano /etc/fail2ban/filter.d/custom-ssh.conf示例:
[Definition]
failregex = ^.*Failed password for .* from <HOST>.*$
ignoreregex =使用 UFW 代替 iptables
如果使用 ufw(Ubuntu 默认防火墙),可以修改 banaction:
[DEFAULT]
banaction = ufw7. 卸载 Fail2Ban
sudo apt remove fail2ban --purge
sudo rm -rf /etc/fail2ban/总结
Fail2Ban 是 Ubuntu Server 上最常用的自动封禁工具,适用于 SSH、Nginx、MySQL、FTP 等服务的防护。配置完成后,可以大幅减少暴力破解攻击的风险。🚀
Fail2Ban 最流行的自动化封禁工具
https://halo.jiangling.site/archives/fail2ban