2021-04-24 10:56:34
Fail2ban通过监控日志、匹配恶意行为模式并调用防火墙规则,可有效阻止针对SSH、Nginx等服务的暴力破解攻击。以下为具体案例及操作流程:
一、SSH暴力破解防护案例场景描述:攻击者通过自动化工具对SSH服务(端口22)进行高频密码尝试,试图获取服务器访问权限。
Fail2ban防护机制:
调用iptables规则屏蔽该IP(动作定义在action.d/iptables-multiport.conf)。
可选发送邮件通知管理员(需配置邮件服务器)。
配置示例:
# /etc/fail2ban/jail.conf 片段[sshd]enabled = trueport = sshfilter = sshdlogpath = /var/log/securemaxretry = 3 # 失败3次即触发findtime = 300 # 统计周期为300秒bantime = 86400 # 屏蔽24小时action = iptables-multiport[name=SSH, port=ssh, protocol=tcp]效果验证:
场景描述:攻击者针对Nginx的Web登录页面(如WordPress、Drupal后台)进行密码爆破,或扫描敏感路径(如/wp-admin)。
Fail2ban防护机制:
配置步骤:
创建自定义过滤规则:
# /etc/fail2ban/filter.d/nginx-botsearch.conf[Definition]failregex = ^<HOST> -.* "(GET|POST).*/wp-login.php.*HTTP/1." 404 ^<HOST> -.* "(GET|POST).*/admin.php.*HTTP/1." 401ignoreregex =在jail.conf中启用Nginx防护:
[nginx-botsearch]enabled = trueport = http,httpsfilter = nginx-botsearchlogpath = /var/log/nginx/error.logmaxretry = 5bantime = 43200 # 屏蔽12小时重启Fail2ban生效:
systemctl restart fail2ban效果验证:
通过合理配置Fail2ban,可显著降低服务器被暴力破解的风险,同时减少人工干预成本。建议根据实际流量模式调整参数,并定期审查被屏蔽IP列表以避免误封。