简介
在本次实验中,你将学习如何使用 Graylog(一个用于网络安全监控的开源日志管理平台)来分析日志。你将通过实际练习,练习使用 Docker Compose 搭建 Graylog、配置日志输入并进行日志分析。
本实验将指导你部署 Graylog 以及 MongoDB 和 Elasticsearch,然后使用其 Web 界面收集和查询日志数据。这些实践任务将帮助你掌握集中式日志管理和安全监控的基本技能。
在本次实验中,你将学习如何使用 Graylog(一个用于网络安全监控的开源日志管理平台)来分析日志。你将通过实际练习,练习使用 Docker Compose 搭建 Graylog、配置日志输入并进行日志分析。
本实验将指导你部署 Graylog 以及 MongoDB 和 Elasticsearch,然后使用其 Web 界面收集和查询日志数据。这些实践任务将帮助你掌握集中式日志管理和安全监控的基本技能。
在这一步中,你将在你的 LabEx 虚拟机环境中安装 Graylog,这是一个强大的开源日志管理平台。Graylog 通过从各种来源收集日志,并提供搜索和可视化功能,帮助集中管理和分析日志数据,以进行安全监控和故障排除。
由于我们使用 Docker 容器,我们将使用 Docker Compose 来部署 Graylog,以便于设置。Docker Compose 允许我们使用单个配置文件定义和运行多容器应用程序。这种方法简化了安装过程,并确保所有必需的组件能够正常协同工作。请仔细按照以下步骤操作:
project
目录是我们组织 Graylog 安装文件的地方:cd ~/project
mkdir graylog && cd graylog
docker-compose.yml
文件。此文件定义了 Graylog 运行所需的所有服务:nano docker-compose.yml
version: "3"
services:
mongodb:
image: mongo:4.2
volumes:
- mongo_data:/data/db
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
volumes:
- es_data:/usr/share/elasticsearch/data
environment:
- "discovery.type=single-node"
- "bootstrap.memory_lock=true"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
graylog:
image: graylog/graylog:4.3
volumes:
- graylog_data:/usr/share/graylog/data
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
depends_on:
- mongodb
- elasticsearch
ports:
- "9000:9000"
- "1514:1514"
- "1514:1514/udp"
- "12201:12201"
- "12201:12201/udp"
volumes:
mongo_data:
es_data:
graylog_data:
-d
标志表示在后台运行容器:docker-compose up -d
docker-compose
文件中定义的所有服务的状态:docker-compose ps
你应该看到三个服务(mongodb、elasticsearch 和 graylog)的状态为 "Up"。Graylog Web 界面将在 http://127.0.0.1:9000
上可用(用户名:admin
,密码:admin
)。至此,Graylog 的基本安装完成,我们现在可以在接下来的步骤中配置日志输入了。
在这一步中,你将在 Graylog 中配置一个日志输入,以接收系统日志(syslog)消息。你可以将其视为创建一个“监听端口”,Graylog 可以通过这个端口从各种设备和应用程序收集日志数据。这对于安全监控至关重要,因为日志包含了有关系统活动和潜在威胁的宝贵信息。
cd ~/project/graylog
docker-compose ps
打开浏览器,访问 http://127.0.0.1:9000
,进入 Graylog 的 Web 界面。使用以下凭证登录:
admin
admin
在 Graylog 的 Web 界面中,我们将创建一个新的输入源:
现在,使用以下特定设置配置输入:
0.0.0.0
(表示监听所有网络接口)。1514
(标准系统日志端口的替代端口)。保存后,验证输入是否正常工作:
让我们通过发送一条示例日志消息来测试新输入。在终端中运行以下命令:
echo "<14>$(date +'%b %d %H:%M:%S') localhost labex: Test syslog message" | nc -w1 -u 127.0.0.1 1514
此命令创建一条优先级为 14(信息级别)的测试日志消息,并使用 netcat(nc)将其发送到 Graylog。消息中包含当前的日期和时间,并将源标识为“localhost”。
现在,你已经成功设置了 Graylog 以接收系统日志消息。在接下来的步骤中,我们将探索如何发送更复杂的日志,并通过搜索这些日志来查找重要的安全信息。
在这一步中,你将通过之前配置的系统日志(syslog)输入,生成并向 Graylog 发送示例日志消息。这个实践练习有助于在分析实际数据之前,验证你的日志记录管道是否正常工作。我们将创建模拟不同严重级别和应用程序类型的测试日志,这对于理解 Graylog 如何处理和分类日志条目至关重要。
cd ~/project/graylog
docker-compose ps
nano ~/project/generate_logs.sh
nc
命令通过 UDP 将日志发送到端口 1514#!/bin/bash
for i in {1..10}; do
severity=$(((RANDOM % 8)))
timestamp=$(date +'%b %d %H:%M:%S')
echo "<$((severity + 8))>$timestamp localhost sample_app[$i]: Sample log message $i with severity $severity" | nc -w1 -u 127.0.0.1 1514
sleep 1
done
chmod
命令用于更改文件权限:chmod +x ~/project/generate_logs.sh
~/project/generate_logs.sh
现在,让我们验证日志是否已到达 Graylog。在 Web 界面中按照以下步骤操作:
http://127.0.0.1:9000
(可选)为了进行更全面的测试,你可以发送额外的日志消息,模拟常见的服务器应用程序。以下示例展示了 Graylog 可以处理的不同日志格式:
## Apache 风格的 Web 服务器日志
echo '<13>$(date +"%b %d %H:%M:%S") localhost apache: 127.0.0.1 - - [$(date +"%d/%b/%Y:%H:%M:%S %z")] "GET / HTTP/1.1" 200 45' | nc -w1 -u 127.0.0.1 1514
## SSH 登录尝试(常见的安全事件)
echo '<12>$(date +"%b %d %H:%M:%S") localhost sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2' | nc -w1 -u 127.0.0.1 1514
在这一步中,我们将探索如何使用 Graylog 的查询语言在其中搜索和分析日志数据。Graylog 的搜索功能可帮助你在大量数据中快速找到相关日志。我们将使用你之前发送的示例日志来练习这些技巧。
首先,访问 http://127.0.0.1:9000
进入 Graylog 的 Web 界面(用户名:admin
,密码:admin
)。这里是在 Graylog 中进行所有日志分析的地方。
基本搜索操作:
source:localhost
,查看来自我们测试源的所有日志。这展示了如何按日志的源字段进行过滤。message:"Sample log message" ## 查找包含确切短语的日志
severity:3 ## 按严重级别 3 过滤
source:localhost AND severity:[2 TO 4] ## 组合条件
时间范围过滤:
字段分析:
source
、severity
等。这些是 Graylog 处理日志时创建的。保存搜索:
创建搜索查询快捷方式:
severity:[4 TO 7]
。(可选)尝试以下高级查询,探索更复杂的搜索模式:
_exists_:severity AND severity:>3 ## 具有严重级别字段且值大于 3 的日志
message:/(sample|test)/i ## 正则表达式搜索(不区分大小写)
NOT severity:5 ## 排除严重级别为 5 的日志
在最后这一步,你将创建一个 Graylog 仪表盘,以可视化并分析你收集到的日志数据。仪表盘是强大的工具,能帮助安全分析师一眼了解系统活动、识别模式,并快速发现潜在的安全问题。
让我们先访问 Graylog 的 Web 界面,在那里创建我们的仪表盘:
访问 http://127.0.0.1:9000
进入 Graylog 的 Web 界面(用户名:admin
,密码:admin
)。
创建一个新的仪表盘:
向仪表盘添加小部件(widget)。小部件是显示特定数据可视化效果的独立组件:
a. 消息计数图表(显示一段时间内传入的日志数量):
b. 快速值(显示字段中最常见的值):
c. 字段统计(汇总数值数据):
调整仪表盘布局以实现最佳可视性:
保存你的仪表盘:
(可选)为方便起见,将其设为默认仪表盘:
在本次实验中,你学习了如何使用 Docker Compose 部署 Graylog,配置了 MongoDB 和 Elasticsearch 等重要服务,并设置了持久化存储。你成功启动了整个服务栈,访问了 Web 界面,并验证了容器的功能,从而搭建起一个集中式日志平台。
本实验还引导你完成了日志输入的配置,使用示例数据进行了测试,并利用 Graylog 的查询功能进行日志分析。你还创建了一个可定制的仪表盘,以可视化日志洞察,展示了 Graylog 在监控和故障排除方面的实际应用。