2022-03-11 15:49:45
fail2ban可通过监控登录失败记录并自动封禁异常IP的方式,有效防御SSH服务器的暴力破解攻击。 以下是具体实施步骤及关键配置说明:
一、安装fail2banDebian系统可通过默认仓库直接安装,命令如下:
sudo apt-get updatesudo apt-get install fail2ban安装完成后服务会自动启动,无需额外配置。
二、核心配置流程创建本地配置文件为避免系统升级时配置被覆盖,需复制默认配置文件:
cd /etc/fail2bansudo cp jail.conf jail.localsudo nano jail.local全局参数设置在[DEFAULT]部分修改以下关键参数:
ignoreip:排除可信IP(如本地网络或办公IP),格式为ignoreip = 127.0.0.1/8 YOUR_IP_ADDRESS。
bantime:封禁时长,默认10分钟(600秒),可根据需求调整。
maxretry:允许的失败尝试次数,默认3次,建议保持默认值。
banaction:封禁方式,默认使用iptables-multiport。
邮件警报配置(可选)若需接收封禁通知,需配置以下参数:
destemail:接收通知的邮箱地址(如admin@example.com)。
mta:邮件传输代理,默认sendmail,也可改为mail。
action:修改为actionmw或actionmwl以启用邮件通知。
SSH服务专项配置在文件末尾的[sshd]部分覆盖默认参数:
[sshd]enabled = trueport = sshfilter = sshdlogpath = /var/log/auth.logmaxretry = 3bantime = 600logpath:需指向系统实际的SSH日志文件路径(如Ubuntu为/var/log/auth.log,CentOS为/var/log/secure)。
fail2ban通过iptables实现封禁,关键规则如下:
创建专用链
iptables -N fail2ban-<name>iptables -A fail2ban-<name> -j RETURNiptables -I INPUT -p tcp -m multiport --dports ssh -j fail2ban-<name>此规则将SSH流量导向fail2ban-sshd链处理。
封禁与解封操作
封禁IP:iptables -I fail2ban-sshd 1 -s <ip> -j DROP
解封IP:iptables -D fail2ban-sshd -s <ip> -j DROP
查看当前规则
sudo iptables -L -n | grep fail2ban输出示例:
Chain fail2ban-sshd (1 references)target prot opt source destinationDROP all -- 192.0.2.100 anywhereRETURN all -- anywhere anywhere应用配置修改后需重启服务:
sudo systemctl restart fail2ban测试封禁效果
使用另一台主机或VPS连续输入错误密码(超过maxretry次数)。
检查封禁状态:
sudo fail2ban-client status sshd输出示例:Status for the jail: sshd|- Filter| |- Currently failed: 1| `- Total failed: 5`- Action |- Currently banned: 1 `- Total banned: 1禁用密码认证修改SSH配置文件/etc/ssh/sshd_config:
PasswordAuthentication noChallengeResponseAuthentication noUsePAM no重启SSH服务生效:
sudo systemctl restart sshd使用密钥认证生成密钥对并上传公钥至服务器:
ssh-keygen -t ed25519ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip多因素认证(MFA)结合Google Authenticator或Duo Security实现双因素认证。
误封IP解封命令:
sudo fail2ban-client unban <ip>日志路径错误根据系统类型修正logpath参数:
Ubuntu/Debian:/var/log/auth.log
CentOS/RHEL:/var/log/secure
邮件发送失败检查邮件服务配置(如Postfix/Sendmail)或改用本地日志监控。
通过以上步骤,fail2ban可有效拦截99%的暴力破解攻击。但需注意,完全禁用密码认证并启用密钥认证才是最彻底的解决方案。更多高级配置可参考