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认证, 免杀技术, 子域名枚举, 安全运营中心, 密码喷洒, 攻击检测, 日志解析, 暴力破解检测, 系统安全, 网络安全, 网络映射, 证书伪造, 隐私保护