ghaffar2208b/Linux-log-analysis-system-monitoring
GitHub: ghaffar2208b/Linux-log-analysis-system-monitoring
一个基于 Kali Linux 的 SOC 风格实战实验室,通过真实触发的系统事件训练 Linux 日志分析、事件调查与专业报告撰写能力。
Stars: 0 | Forks: 0
# Linux 日志分析与系统监控
一个完全基于 Kali Linux 虚拟机构建的、注重动手实践的 SOC(安全运营中心)风格实验室。本项目模拟了初级 SOC 分析师的日常工作:阅读 Linux 日志、调查真实生成的安全事件,并以专业的事件报告格式记录调查结果。
本仓库中的每一项发现都是真实的——通过在我自己的虚拟机上触发实际事件(暴力破解登录、CPU 负载、服务崩溃、内核/启动活动)并使用标准的 Linux 日志分析工具进行调查而生成。不包含任何捏造的日志或输出。
## 1. 项目概述
现代的入侵很少能被单个警报捕获——它们往往是被那些懂得如何解读机器历史记录的分析师发现的。本实验室使用单台 Kali Linux 虚拟机从零开始培养这项技能:
- 读取并关联来自 `journald`、`/var/log/auth.log` 和 `/var/log/syslog` 的日志
- 重构用户登录/注销活动并识别暴力破解登录模式
- 阅读内核和启动日志,以区分良性的硬件/驱动程序异常与真正的异常情况
- 监控实时系统资源(`ps`、`top`)以识别并分拣高 CPU 占用的进程
- 审计 `systemd` 服务,包括诊断被自动重启策略隐藏的故障
- 撰写专业的事件、身份验证和日志分析报告
## 2. 目标
在本项目结束时,展示了以下技能:
1. 解释 Linux 日志系统的架构(`journald` vs. `rsyslog` vs. `/var/log` 中的扁平文件)
2. 使用 `journalctl` 查询、过滤和导出日志
3. 调查身份验证事件,包括登录失败和通过 `sudo` 进行的权限提升
4. 阅读内核和启动日志以识别硬件/驱动事件,并区分良性与可疑情况
5. 使用 `last`、`who` 和 `w` 重构用户会话历史记录
6. 监控实时进程并识别异常的 CPU 使用情况,包括追踪父进程谱系
7. 审计 `systemd` 服务,并使用历史日志(而不仅仅是实时状态)诊断故障
8. 运行完整的、多源头的 SOC 调查,并将其撰写为专业的事件报告
## 3. 使用的工具
| 工具 | 用途 |
|---|---|
| Kali Linux (VirtualBox VM) | 实验环境 |
| `journalctl` | systemd journal 查询 |
| `/var/log/auth.log` | 身份验证事件日志 |
| `dmesg` | 内核环形缓冲区 / 硬件日志 |
| `last`, `who`, `w` | 用户会话历史记录 |
| `ps`, `top` | 进程监控 |
| `systemctl` | 服务管理和审计 |
| `grep`, `awk` | 日志过滤和关联 |
| Git / GitHub | 版本控制和作品集发布 |
## 4. 文件夹结构
02-Linux-Log-Analysis-System-Monitoring/
│
├── README.md
│
├── assets/
│ ├── linux_logging_architecture.png
│ ├── journald_flow.png
│ ├── login_process.png
│ └── system_monitoring.png
│
├── screenshots/
│ ├── installation/ journalctl/ auth/ syslog/ dmesg/
│ ├── last/ lastlog/ who/ w/ ps/ top/ htop/
│ ├── grep/ services/ investigation/
│
├── reports/
│ ├── log_analysis_report.md
│ ├── authentication_report.md
│ └── incident_report.md
│
├── notes/
│ ├── linux_logs.md
│ ├── command_reference.md
│ └── investigation_notes.md
│
└── exports/
├── journal_logs.txt
├── auth_logs.txt
└── system_logs.txt
## 5. 安装
1. 安装 VirtualBox 并下载 Kali Linux 虚拟机镜像。
2. 分配至少 8GB 内存和 2 个 CPU 核心。
3. 启动 Kali 并确认宿主机/内核详细信息:
```
hostnamectl
uptime
timedatectl
```
4. 启用 SSH(身份验证调查必需):
```
sudo systemctl enable --now ssh
```
5. 克隆或重新创建此仓库结构,然后使脚本具有可执行权限:
```
chmod +x scripts/collect_logs.sh scripts/health_check.sh
```
## 6. 模块
| # | 模块 | 重点 |
|---|---|---|
| 1 | Linux 日志基础 | `/var/log`、journald、rsyslog、日志轮转、系统信息 |
| 2 | 系统 Journal 分析 | `journalctl` 过滤、启动日志、内核日志、导出 |
| 3 | 身份验证调查 | auth.log、sudo 活动、失败/成功登录、SSH |
| 4 | 内核调查 | `dmesg`、硬件、驱动程序、USB、启动序列 |
| 5 | 用户活动调查 | `last`、`who`、`w` |
| 6 | 进程监控 | `ps`、`top`、CPU 使用率、进程谱系 |
| 7 | 服务监控 | `systemctl`、活动/失败的服务、重启 |
| 8 | 事件调查 | 结合模块 1–7 的完整 SOC 调查 |
完整的理论和命令分解在 `notes/linux_logs.md` 中。快速命令查询在 `notes/command_reference.md` 中。
## 7. 调查亮点
在此虚拟机上进行了四项端到端的 SOC 调查,每一项都收集、分析并记录了真实的证据(详见 `notes/investigation_notes.md` 和 `reports/`):
**1. 未经授权的登录调查** — 模拟了针对本地 `kali` 账户的 SSH 暴力破解攻击:在两次集中的爆发中发生了 7 次失败的登录尝试,随后是 3 次成功的登录,并在最后一次登录后的 9 秒内确认了通过 `sudo` 进行的权限提升。调查结果在 `/var/log/auth.log`、`journalctl -u ssh` 和 `last`/`who`/`w` 之间进行了独立交叉验证。
**2. 高 CPU 使用率调查** — 识别出三个受 CPU 限制的进程消耗了约 80% 的总 CPU,并持续了 13 分钟。追踪了父进程谱系以确认该负载是良性的(由交互式 shell 生成,标准二进制文件路径)而不是恶意的——这正是真实事件中用于排除挖矿或 DoS 恶意软件的分类排查方法。
**3. 服务失败调查** — 强制对 `ssh.service` 发送了 SIGKILL 终止信号,并发现 systemd 的 `Restart=on-failure` 策略在 1 秒内将其自动恢复——这意味着仅进行实时状态检查将完全错过此次故障。将确切的终止事件与 `/var/log/auth.log` 中的特定 `sudo` 命令相关联,将根本原因确认至秒级。
**4. 内核错误调查** — 审查了完整的内核启动序列,识别出一个反复出现的(良性)图形驱动程序兼容性警告,并确认启动时的两次 USB 注册均可归因于 VirtualBox 的虚拟硬件而非物理设备。此外,还浮现出一个时钟同步间隙(NTP 处于非活动状态),影响了本项目中其他所有调查的时间戳可靠性。
**所有四项调查的关键要点:** 日志证据很少来自单一来源。这里的每一项调查都通过交叉引用至少两个独立的日志来源(auth.log vs. journalctl,或实时状态检查 vs. 历史 journal 条目)而得到加强,然后才得出结论。
## 8. 报告
`reports/` 中包含三份已完成的报告:
- `authentication_report.md` — 暴力破解/登录调查的完整报告
- `log_analysis_report.md` — 高 CPU 调查和内核错误调查结果
- `incident_report.md` — 服务失败调查的完整事件报告
每份报告均遵循:执行摘要 → 范围 → 时间线 → 证据 → 使用的命令 → 调查结果 → 风险评估 → 建议 → 经验教训。
## 9. 掌握的技能
- Linux 日志架构和日志源关联
- 身份验证和权限提升分析
- 内核/硬件事件分拣,包括区分良性的驱动异常与真正的异常情况
- 跨独立日志来源的用户会话重构
- 实时进程监控和进程谱系追踪
- systemd 服务审计,包括诊断被自动重启掩盖的故障
- SOC 风格的事件记录和报告
- 向 GitHub 发布结构化的技术项目
## 10. 未来改进
- 启用 NTP 时间同步(本项目中发现的一个不足),以增强未来调查中时间戳的可靠性
- 添加自动化异常检测脚本(例如,标记 5 分钟内出现 >5 次失败登录的情况)
- 添加第二台虚拟机以模拟外部攻击者流量,从而获取更真实的基于网络的日志
- 添加日志完整性检查(对导出的日志进行哈希处理),以展示对证据保管链的认知
## 11. 许可证
本项目采用 MIT License 发布。欢迎随时复刻、改编并用于您自己的作品集——希望能注明出处,但不作强制要求。
*本仓库中的所有观察结果和发现均是在作者自己的虚拟机上通过刻意的、受控的测试生成的,并使用标准的 Linux 日志分析工具进行了分析。不包含任何捏造的日志或输出。*
标签:Linux运维, SOC实验室, 内存分配, 蓝军