当前位置: 首页 > 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.dtcms.com/a/273927.html

相关文章:

  • ICCV2025接收论文速览(1)
  • 导出word并且插入图片
  • 【C++ 深入解析 C++ 模板中的「依赖类型」】
  • 「Linux命令基础」Shell命令基础
  • PC网站和uniapp安卓APP、H5接入支付宝支付
  • 基于ASP.NET+SQL Server实现(Web)企业进销存管理系统
  • 《探索电脑麦克风声音采集多窗口实时可视化技术》
  • 【Springboot】Bean解释
  • Jenkins 自动触发执行的配置
  • Ntfs!NtfsCheckpointVolume函数中的Ntfs!LfsFlushLfcb函数对Lfcb->LogHeadBuffer进行了赋值--重要
  • 冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)
  • 模型训练的常用方法及llama-factory支持的数据训练格式
  • [论文阅读] 人工智能 + 软件工程 | LLM辅助软件开发:需求如何转化为代码?
  • GPT和MBR分区
  • SLICEGPT: COMPRESS LARGE LANGUAGE MODELSBY DELETING ROWS AND COLUMNS
  • 匿名函数作递归函数引用
  • Immutable
  • MetaMask 连接其他网络,连接本地的 Anvil 区块链节点
  • 在Windows非Docker环境安装Redis的几种方法
  • pytest+yaml+allure接口自动化测试框架
  • 在 Postman 中高效生成随机环境变量的完整指南
  • 鸿蒙app 开发中的Record<string,string>的用法和含义
  • 深入探索Kafka Streams:企业级实时数据处理实践指南
  • 关闭 GitLab 升级提示的详细方法
  • AI产品经理面试宝典第8天:核心算法面试题-下
  • 蓝光三维扫描技术在汽车钣金件复杂型面测量中的应用案例
  • 重振索尼复古微型电脑——计划以OrangePi CM5 作为主板升级
  • php 如何通过mysqli操作数据库?
  • springboot生成pdf方案之dot/html/图片转pdf三种方式
  • 【实用IP查询工具】IP数据云-IP地址查询离线库使用方案