当前位置: 首页 > news >正文

如何使用Fail2Ban阻止SSH暴力破解

Fail2Ban 是一个强大的开源入侵防御工具,它通过监控日志文件(如 /var/log/auth.log/var/log/secure),能够检测恶意行为(如 SSH 暴力破解)并采取临时封禁措施(如通过 iptables 阻止攻击者 IP)。以下将详细说明如何安装、配置和优化 Fail2Ban 来阻止 SSH 暴力破解。


1. 安装 Fail2Ban

Fail2Ban 通常可以通过包管理器直接安装。

1.1 在 Debian/Ubuntu 上安装

bash

复制

sudo apt update
sudo apt install fail2ban -y

1.2 在 CentOS/RHEL 上安装

bash

复制

sudo yum install epel-release -y
sudo yum install fail2ban -y

1.3 启动和设置开机自启

bash

复制

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

2. 配置 Fail2Ban 以防止 SSH 暴力破解

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

2.1 配置默认设置

默认配置文件为 /etc/fail2ban/jail.conf,但官方建议不要直接修改该文件,而是在 /etc/fail2ban/jail.local 中进行覆盖配置。

创建或编辑 jail.local 文件:

bash

复制

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
配置 [DEFAULT] 部分:

[DEFAULT] 部分设置全局参数,例如封禁时间、失败尝试次数等:

ini

复制

[DEFAULT]
# 封禁时间(秒),-1 表示永久封禁
bantime = 600# 尝试失败的时间窗口(秒)
findtime = 600# 在时间窗口内允许的最大失败次数
maxretry = 5# 封禁 IP 的操作,使用 iptables 禁止访问
banaction = iptables-multiport# 是否忽略本地 IP
ignoreip = 127.0.0.1/8

2.2 启用 SSH 保护

jail.local 文件中找到或添加 [sshd] 配置块:

ini

复制

[sshd]
enabled = true
port    = ssh
logpath = /var/log/auth.log    # 对于 Debian/Ubuntu
# logpath = /var/log/secure    # 对于 CentOS/RHEL
maxretry = 5                   # 最大失败尝试次数
findtime = 600                 # 检测时间窗口(秒)
bantime = 600                  # 封禁时间(秒),可以调整

2.3 测试 SSH 配置

检查 Fail2Ban 是否正确监控 SSH 日志:

运行以下命令检查 SSH 的规则是否生效:

bash

复制

sudo fail2ban-client status sshd

输出示例:

复制

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 5
|  `- File list: /var/log/auth.log
`- Actions|- Currently banned: 0|- Total banned: 2`- Banned IP list:

3. 模拟和测试 SSH 暴力破解防护

3.1 模拟 SSH 登录失败

尝试多次使用错误的用户名或密码登录服务器:

bash

复制

ssh wronguser@your_server_ip

3.2 检查是否封禁攻击 IP

在多次尝试错误登录后,检查 Fail2Ban 是否封禁了 IP:

bash

复制

sudo fail2ban-client status sshd

如果攻击 IP 已被封禁,将在 Banned IP list 中显示。


4. 管理 Fail2Ban

4.1 查看 Fail2Ban 状态

bash

复制

sudo fail2ban-client status

4.2 查看某个 Jail 的详细信息

bash

复制

sudo fail2ban-client status sshd

4.3 手动解封 IP

如果误封了某个 IP,可以手动解封:

bash

复制

sudo fail2ban-client unban IP地址

4.4 手动封禁 IP

如果需要手动封禁某个 IP,可以执行:

bash

复制

sudo fail2ban-client set sshd banip IP地址

5. 优化 Fail2Ban 配置

5.1 添加可信 IP

将可信 IP(如公司网络 IP)加入白名单,避免被误封:

ini

复制

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24

5.2 调整封禁策略

根据实际需求调整封禁时间与失败尝试次数:

  • 永久封禁:将 bantime = -1
  • 宽松策略:增加 maxretry 或减少 bantime

5.3 邮件通知

配置 Fail2Ban 在封禁时发送邮件通知:

  • [DEFAULT] 中配置邮件相关设置:

    ini

    复制

    destemail = your-email@example.com
    sender = fail2ban@example.com
    action = %(action_mwl)s
    
  • 确保服务器安装了邮件发送服务(如 sendmailpostfix)。


6. 日常监控和维护

6.1 检查日志

定期查看 Fail2Ban 的日志文件,了解被封禁的 IP 和原因:

bash

复制

sudo tail -f /var/log/fail2ban.log

6.2 清理规则

Fail2Ban 会自动清理过期的封禁规则,但如需手动清理,可以重启服务:

bash

复制

sudo systemctl restart fail2ban

7. 总结

Fail2Ban 是防止 SSH 暴力破解的简单、有效工具。通过监控 SSH 日志和自动封禁恶意 IP,可以大幅提升服务器的安全性。以下是关键步骤的总结:

  1. 安装 Fail2Ban 并启动服务;
  2. 配置 jail.local 文件并启用 SSH 保护;
  3. 根据需求调整封禁策略(如封禁时间、尝试次数);
  4. 测试防护效果,确保规则生效;
  5. 定期检查 Fail2Ban 的状态和日志。

通过合理配置和定期维护,Fail2Ban 可以为您的服务器提供强大的安全防护,有效阻止 SSH 暴力破解攻击。

http://www.lryc.cn/news/585561.html

相关文章:

  • vue3+express联调接口时报“\“username\“ is required“问题
  • 获取华为开源3D引擎 (OpenHarmony),把引擎嵌入VUE中
  • Spring Boot中请求参数读取方式
  • AIC8800M40低功耗wifi在ARM-LINUX开发板上做OTA的调试经验
  • (六)复习(OutBox Message)
  • ParaCAD 笔记 png 图纸标注数据集
  • 设计模式(结构型)-适配器模式
  • jenkins部署springboot+Docker项目
  • 力扣网编程134题:加油站(双指针)
  • [实战]调频三角波和锯齿波信号生成(完整C代码)
  • leetcode-hot100(283.移动零)
  • 力扣面试150(29/100)
  • OA系统中的搜索功能方案:简单搜索vs高级搜索
  • SpringDataRedis入门
  • c++——浅拷贝和深拷贝、浅赋值和深赋值
  • Django快速入门搭建网站
  • 经典同步问题详解
  • 液冷智算数据中心崛起,AI算力联动PC Farm与云智算开拓新蓝海(二)
  • Apache Cloudberry 向量化实践(三)重塑表达式构建路径:Gandiva 优化实战
  • 2D下的几何变换(C#实现,持续更新)
  • SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名
  • SpringCloud之Ribbon
  • BootstrapBlazor与JS互调
  • Semi-Supervised Single-View 3D Reconstruction via Prototype Shape Priors
  • 小智AI模型接入MCP
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • SQL Server通过CLR连接InfluxDB实现异构数据关联查询技术指南
  • SpringBoot JWT
  • Rust与UE5高效集成实战
  • uniapp制作一个个人页面