sajjan-adhikari/linux-cli-log-parser

GitHub: sajjan-adhikari/linux-cli-log-parser

一个演示使用Linux命令行工具分析SSH暴力破解日志的项目,解决了在没有SIEM时进行日志调查的难题。

Stars: 0 | Forks: 0

# 🔍 Linux命令行日志解析器 — SSH暴力破解调查 ## 📋 项目概述 本项目演示了安全运营中心(SOC)分析师如何直接在Linux终端调查SSH身份验证日志——无需任何SIEM平台或第三方工具。仅使用Linux内置命令,即可识别可疑登录活动、提取攻击者IP地址,并发现密码喷洒攻击模式。 这模拟了一个**原始事件响应场景**,分析师必须直接在系统上工作,仅使用Linux提供的工具。 ## 🛠️ 使用工具 | 工具 | 用途 | |------|------| | `grep` | 在日志文件中搜索特定模式 | | `awk` | 从日志行中提取特定列/字段 | | `sort` | 按字母顺序或数字顺序排序输出 | | `uniq -c` | 计数并去重重复条目 | | `>` | 将结果导出到文件 | **操作系统:** Kali Linux **分析日志文件:** `/var/log/auth.log` ## 📁 项目结构 ``` linux-cli-log-parser/ │ ├── README.md ├── Incident-Report.pdf ├── results.txt └── screenshots/ ├── command1-failed-logins.png ├── command2-ip-count.png ├── command3-usernames.png ├── command4-results.png ├── command5-spraying.png └── command6-final.png ``` ## 🔎 调查步骤详解 ### 命令1 — 查找所有失败登录尝试 ``` grep "Failed password" /var/log/auth.log ``` **功能说明:** 搜索整个auth.log文件,仅返回登录失败的行。 **发现:** 日志中识别出10次失败的密码尝试。 📸 *截图:`screenshots/command1-failed-logins.png`* ### 命令2 — 识别攻击源IP地址 ``` grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr ``` **功能说明:** - `awk '{print $(NF-3)}'` — 提取IP地址字段 - `sort | uniq -c` — 将相同IP分组并计数 - `sort -nr` — 按计数从高到低排序 **发现:** IP地址`::1`(本地主机,用于模拟)进行了所有10次失败尝试。 📸 *截图:`screenshots/command2-ip-count.png`* ### 命令3 — 提取目标用户名 ``` grep "Invalid user" /var/log/auth.log | awk '{print $6}' | sort | uniq -c | sort -nr ``` **功能说明:** 提取出所有被尝试但系统上不存在的用户名。 **发现:** 5个不同的用户名被攻击——这是密码喷洒的明显迹象。 📸 *截图:`screenshots/command3-usernames.png`* ### 命令4 — 将结果导出到文件 ``` grep "Failed password" /var/log/auth.log > ~/Desktop/results.txt && echo "Done" ``` **功能说明:** 将所有失败的登录行保存到`results.txt`中以保存证据。 **发现:** 所有10次失败尝试条目均成功保存。 📸 *截图:`screenshots/command4-results.png`* ### 命令5 — 确认密码喷洒模式 ``` grep "Invalid user" /var/log/auth.log | awk '{print $6}' | sort | uniq -c | sort -nr ``` **结果:** ``` 6 invalid 1 admin 1 guest 1 test 1 administrator ``` **发现:** 多个常见用户名被攻击——这是旨在规避账户锁定策略的典型密码喷洒行为。 📸 *截图:`screenshots/command5-spraying.png`* ### 命令6 — 最终用户名 + 尝试次数 ``` grep "Failed password" /var/log/auth.log | awk '{print $9}' | sort | uniq -c | sort -nr ``` **结果:** ``` 5 invalid 1 admin 1 guest 1 test 1 administrator ``` 📸 *截图:`screenshots/command6-final.png`* ## 🚨 攻击摘要 | 目标用户名 | 失败尝试次数 | 风险等级 | |------------|--------------|----------| | invalid | 5 | 中等 | | admin | 1 | 高危 | | guest | 1 | 中等 | | test | 1 | 中等 | | administrator | 1 | 高危 | **失败尝试总计:** 10次 **攻击类型:** 暴力破解 + 密码喷洒 **源IP地址:** ::1 (本地主机 — 模拟攻击者) ## 🧠 关键要点 - **grep + awk + sort + uniq** 可以替代SIEM进行快速分流调查 - **密码喷洒** 针对多个用户名使用一个密码以避免锁定——日志分析是主要检测方法 - **管道运算符 `|`** 将命令链接成强大的单行调查工具 - **输出重定向 `>`** 为报告和共享保存证据 - SOC分析师在真实的事件响应中日常使用这些确切命令 ## 🛡️ 建议措施 1. 使用`iptables`或`fail2ban`阻止攻击IP 2. 禁用常见用户名(`admin`, `guest`, `test`)的SSH登录 3. 部署`fail2ban`在多次失败后自动阻止IP 4. 将SSH从密码认证切换为SSH密钥对认证 5. 设置实时警报,针对超过阈值的SSH失败尝试 ## 💼 展示技能 - 原生Linux命令行日志分析(无需SIEM) - grep, awk, sort, uniq 命令链接 - 暴力破解和密码喷洒检测 - 证据提取与保存 - SOC风格的事件文档记录 - 从原始日志数据中识别威胁模式 ## 📌 关于本项目 这是我SOC分析师作品集中的第三个项目,前两个项目分别是Splunk SIEM调查和Wireshark网络流量分析。本项目的目标是证明有效的威胁检测并不总是需要企业工具——有时你只需要一个终端和Linux知识。 | 项目 | 工具 | 重点 | |------|------|------| | 项目1 | Splunk | SIEM日志分析 + 仪表板 | | 项目2 | Wireshark | 网络数据包捕获分析 | | 项目3 | Linux CLI | 无工具的原始日志解析 |
标签:IP提取, Linux命令行, PFX证书, SOC分析, SSH认证, 免杀技术, 子域名枚举, 安全运营中心, 密码喷洒, 攻击检测, 日志解析, 暴力破解检测, 系统安全, 网络安全, 网络映射, 证书伪造, 隐私保护