alexojocyber/SSH-BruteForce-Detection-Lab

GitHub: alexojocyber/SSH-BruteForce-Detection-Lab

一个模拟 SSH 暴力破解攻击与日志检测的教学实验环境,聚焦 SOC 实战分析流程。

Stars: 1 | Forks: 0

# 🔐 SSH 暴力破解检测实验 ## 📌 项目概述 本项目模拟了对 Linux 系统进行 SSH 暴力破解攻击的过程,并展示了如何分析认证日志以检测可疑的登录行为。 目标是模拟攻击者行为,生成失败的登录尝试,并像 SOC(安全运营中心)分析师一样调查认证日志。 ## 🛠️ 实验环境 | 组件 | 说明 | |------|------| | 操作系统 | Ubuntu Linux | | 使用服务 | OpenSSH 服务器 | | 日志来源 | `/var/log/auth.log` | | 攻击模拟 | 失败的 SSH 登录尝试 | ## ⚙️ 系统配置 使用以下命令安装并启用 SSH 服务: ``` sudo apt install openssh-server -y sudo systemctl start ssh sudo systemctl enable ssh sudo systemctl status ssh ``` 防火墙配置: ``` sudo ufw allow ssh sudo ufw enable sudo ufw status ``` ## 👤 攻击者模拟 创建一个测试用户以模拟攻击者登录尝试: ``` sudo adduser attackeruser ``` 使用错误密码执行 SSH 登录尝试: ``` ssh attackeruser@192.168.0.168 ``` 输入多个错误密码以生成失败的认证日志。 ## 🔎 日志调查 使用以下方法识别失败的登录尝试: ``` grep "Failed password" /var/log/auth.log ``` 失败登录尝试总数: ``` grep "Failed password" /var/log/auth.log | wc -l ``` 首次失败登录: ``` grep "Failed password" /var/log/auth.log | head -n 1 ``` 最后一次失败登录: ``` grep "Failed password" /var/log/auth.log | tail -n 1 ``` ## 📊 攻击时间线 | 字段 | 说明 | |------|------| | 攻击类型 | SSH 暴力破解 | | 目标用户名 | attackeruser | | 源 IP 地址 | 192.168.0.168 | | 失败尝试总数 | 5 | | 首次失败登录 | Mar 29 13:44:45 — Failed password for attackeruser from 192.168.0.168 | | 最后一次失败登录 | Mar 29 13:46:35 — Failed password for attackeruser from 192.168.0.168 | # 🎯 MITRE ATT&CK 映射 观察到的攻击活动与以下 MITRE ATT&CK 技术相对应: | 战术 | 技术 | ID | 描述 | |------|------|----|------| | 凭据访问 | 暴力破解 | T1110 | 使用重复的密码尝试猜测有效凭据。 | | 初始访问 | 有效账户 | T1078 | 如果凭据被成功破坏,攻击者可能使用有效账户登录。 | | 持久化 | 账户访问 | T1098 | 攻击者可能在成功认证后尝试维持访问权限。 | ## 🔍 映射说明 在本次调查中,观察到针对 attackeruser 账户的多重失败登录尝试。 这些重复的登录失败是以下特征: T1110 — 暴力破解 该技术涉及自动尝试猜测密码,直到找到有效凭据为止。 如果成功,攻击者可能获得: - 未授权的系统访问 - 持久的账户控制 - 通过 SSH 的远程系统访问 理解 MITRE ATT&CK 映射有助于分析师识别攻击者行为模式并实施适当的防御控制。 ## ⚠️ 风险影响 重复的 SSH 登录失败尝试表明存在暴力破解攻击企图。如果成功,攻击者可能获得未授权的系统访问权限,导致数据泄露、权限提升或系统滥用。 ## 🚨 事件响应措施 在识别出重复的 SSH 登录失败尝试后,采取了以下响应措施: 1. 审查认证日志以识别可疑的登录模式。 2. 确认目标用户名(attackeruser)。 3. 统计失败登录尝试次数以确定攻击强度。 4. 安装 Fail2Ban 以自动封禁重复攻击者。 5. 启用 SSH 监控以跟踪持续的登录活动。 这些措施帮助遏制了攻击并防止进一步的未授权访问尝试。 ## 🛡️ 建议措施 - 强制实施强密码策略 - 在多次登录失败后实施账户锁定 - 限制 SSH 访问仅限受信任的 IP 地址 - 启用 Fail2Ban 以封禁重复攻击者 - 定期监控认证日志 ## 📸 截图 在调查过程中捕获了以下截图: 1. SSH 服务状态 ssh-service-running 2. 攻击者用户创建 attacker-user-created 3. 失败的 SSH 登录尝试 failed-ssh-login-attempt 4. 认证日志分析 failed-password-logs 5. 攻击时间线提取 failed-attempt-count first-attack last-attack ## 🎯 展示技能 - Linux 系统管理 - SSH 配置 - 日志分析 - 事件调查 - 威胁检测 - 网络安全基础 ## 🛡️ 防御实现 — Fail2Ban 在检测到重复的 SSH 登录失败尝试后,安装 Fail2Ban 以在多次登录失败后自动封禁攻击者。 ### 📦 安装 Fail2Ban ``` sudo apt update sudo apt install fail2ban -y ``` 启动并启用 Fail2Ban 服务: ``` sudo systemctl start fail2ban sudo systemctl enable fail2ban sudo systemctl status fail2ban ``` ### ⚙️ SSH 保护配置 创建 Fail2Ban 规则以监控 SSH 登录失败。 配置文件: ``` sudo nano /etc/fail2ban/jail.local ``` 使用的配置: ``` [sshd] enabled = true port = ssh maxretry = 3 bantime = 600 findtime = 300 ``` 此配置在 **5 分钟**内检测到 **3 次失败登录尝试**后,将封禁攻击者 **10 分钟**。 ### 🚫 攻击预防测试 再次生成多次失败的 SSH 登录尝试以触发 Fail2Ban 保护。 使用以下命令检查 Fail2Ban 状态: ``` sudo fail2ban-client status sshd ``` 结果: ``` Currently banned: 1 ``` 这确认攻击者 IP 已成功被封禁。 ### 📸 Fail2Ban 截图 以下截图展示了防御实现的执行情况: - Fail2Ban 服务运行 fail2ban-running - SSH 监狱状态 fail2ban-ssh-status - 攻击者被封禁 attacker-banned ## 🔗 连接 **作者:** Alex Ojo 网络安全学生 | SOC 分析师实习生 [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue)](https://www.linkedin.com/in/alex-ojo9252185?) [![GitHub](https://img.shields.io/badge/GitHub-Follow-black)](https://github.com/alexojocyber)
标签:AMSI绕过, auth.log, grep 日志, IP 分析, IP 溯源, Linux 日志分析, OpenSSH, PB级数据处理, SSH 密钥认证, SSH 暴力破解, UFW 防火墙, 失败登录, 威胁检测, 安全演练, 安全运维, 安全运营中心, 应用安全, 攻击模拟, 日志取证, 日志检索, 登录失败, 网络映射, 认证日志, 防火墙阻断, 驱动签名利用