narendra2602-NET/graylog-lab
GitHub: narendra2602-NET/graylog-lab
基于 Docker 部署的 Graylog SIEM 实验环境,使用 NXLog 收集 Windows 事件日志进行集中安全监控与分析。
Stars: 0 | Forks: 0
# Graylog SIEM 实验环境
## 项目概述
本项目演示了如何在 Docker 化的 Ubuntu 环境中使用 Graylog 部署和配置集中式安全信息与事件管理(SIEM)平台。该实验的目的是使用 NXLog 代理收集、处理、存储和分析来自终端系统的 Windows 事件日志,并通过 Graylog 仪表板可视化安全事件。
该实验模拟了一个基本的 SOC(安全运营中心)环境,将来自 Windows 系统的日志进行集中化处理,以用于监控、调查和故障排除。
## 实验架构图
```
+------------------+
| Windows 11 Host |
| NXLog Agent |
+---------+--------+
|
| GELF TCP/UDP
|
v
+------------------+
| Graylog Server |
| Docker Container |
+---------+--------+
|
|
v
+------------------+
| OpenSearch |
| Log Storage |
+------------------+
|
v
+------------------+
| Graylog Web UI |
| Dashboards |
+------------------+
```
## 前置条件
### 硬件要求
* 最低 8 GB 内存 (RAM)
* 2 个 CPU 核心
* 50 GB 存储空间
### 软件要求
* Ubuntu Server 22.04 LTS
* Docker Engine
* Docker Compose
* Graylog
* OpenSearch
* MongoDB
* NXLog Community Edition
* Windows 11 客户端
### 网络要求
* Windows 终端与 Graylog 服务器之间的连接
* 防火墙中开放所需端口
| 端口 | 服务 |
| ----- | -------------------- |
| 9000 | Graylog Web 界面 |
| 12201 | GELF 输入 |
| 9200 | OpenSearch |
| 27017 | MongoDB |
## Docker 部署
### 更新 Ubuntu
```
sudo apt update && sudo apt upgrade -y
```
### 安装 Docker
```
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
```
### 验证 Docker 安装
```
docker --version
docker ps
```
### 部署 Graylog 技术栈
```
docker compose up -d
```
### 验证运行中的容器
```
docker ps
```
预期容器:
* Graylog
* OpenSearch
* MongoDB
### 访问 Graylog
```
http://:9000
```
## Graylog 配置
### 初始登录
1. 访问 Graylog Web 界面。
2. 使用管理员账户登录。
3. 配置时区和用户偏好。
### 创建 Input
导航至:
```
System → Inputs
```
已配置的 Input:
* GELF TCP
* GELF UDP
### Input 配置
| 设置 | 值 |
| ------------------- | -------- |
| 绑定地址 | 0.0.0.0 |
| 端口 | 12201 |
| 接收缓冲区大小 | 默认 |
| TLS | 已禁用 |
### 验证消息接收
导航至:
```
Search → Messages
```
确认正在接收来自 Windows 终端的日志。
## NXLog 配置
### 安装 NXLog
在 Windows 终端上安装 NXLog Community Edition。
### 配置日志收集
已收集的事件日志:
* Security
* System
* Application
* PowerShell Operational
* Windows Defender
### 配置 Output 模块
示例:
```
```
### 重启 NXLog 服务
```
Restart-Service nxlog
```
### 验证代理状态
```
Get-Service nxlog
```
## 日志来源
以下 Windows 日志来源已集成到 Graylog 中:
### 安全日志
示例:
* 成功登录 (4624)
* 失败登录 (4625)
* 账户锁定
* 权限提升事件
### 系统日志
示例:
* 服务启动/停止事件
* 驱动程序事件
* 系统关机
* 系统重启
### 应用程序日志
示例:
* 应用程序崩溃
* 软件错误
* 服务故障
### PowerShell 日志
示例:
* 脚本执行
* 命令历史记录
* 管理员活动
### Windows Defender 日志
示例:
* 恶意软件检测
* 威胁清除
* 扫描结果
## 日志示例
### 成功登录事件
```
{
"EventID": 4624,
"Level": "Information",
"Source": "Microsoft-Windows-Security-Auditing"
}
```
### 失败登录事件
```
{
"EventID": 4625,
"Level": "Warning",
"Source": "Microsoft-Windows-Security-Auditing"
}
```
### PowerShell 执行事件
```
{
"EventID": 4104,
"Channel": "PowerShell"
}
```
## 仪表板
Graylog 仪表板已配置为可视化安全事件和系统活动。
### 仪表板小组件
* 消息总数
* 消息速率
* 热门事件 ID
* 日志来源
* 失败登录尝试
* PowerShell 活动
* Windows Defender 事件
### 仪表板的优点
* 实时监控
* 安全事件可见性
* 集中式日志分析
* 更快的事件调查
## 安全用例
### 用户身份验证监控
监控所有终端上的成功和失败登录尝试。
### 特权活动监控
追踪管理员和提权账户活动。
### PowerShell 监控
识别可疑的脚本执行和命令活动。
### 恶意软件检测
监控 Windows Defender 事件以获取威胁和补救措施。
### 终端健康监控
追踪系统崩溃、服务故障和操作系统问题。
### 事件调查
搜索历史日志以进行取证分析和故障排除。
## 故障排除
### 容器未运行
```
docker ps -a
```
### 检查容器日志
```
docker logs graylog
docker logs opensearch
docker logs mongodb
```
### 重启容器
```
docker compose restart
```
### 验证 Input 端口
```
sudo netstat -tulnp | grep 12201
```
### 验证 NXLog 状态
```
Get-Service nxlog
```
### 验证日志传输
在 Windows 上生成一个测试事件,并验证其是否出现在 Graylog 搜索结果中。
## 经验总结
通过本项目,学习了以下概念:
* SIEM 架构与设计
* 集中式日志管理
* Docker 容器部署
* Graylog 管理
* Windows 事件日志记录
* NXLog 配置
* 安全监控工作流
* 仪表板创建与可视化
* 日志搜索与调查技术
* 基础 SOC 操作
## 未来改进
该实验环境计划的改进包括:
* 电子邮件告警
* 事件关联规则
* Graylog pipeline
* 威胁情报集成
* Linux 日志收集
* Syslog 设备集成
* SSL/TLS 安全 Input
* Active Directory 集成
* 自定义安全仪表板
* 自动化事件响应工作流
## 作者
Narendra Tiwari
网络安全 • SIEM • SOC 运营 • 日志管理
标签:Docker, Graylog, 子域名变形, 安全运营中心, 安全防御评估, 版权保护, 网络映射, 请求拦截