上周的文章中部署了Wazuh indexer以及Wazuh dashboard,其中Wazuh indexer作为后端存储索引,Wazuh dashboard提供友好的可视化界面展示。解决了SOC中后端存储索引以及部分可视化展示问题之后,比较关键的部分就是如何进行数据收集,把相关设备的原始日志都收集到同一平台上进行实时数据分析和处置。根据Wazuh官网文档提供的方案为使用Wazuh server分析从代理接收的数据。它通过解码器和规则进行处理,在检测到威胁或异常时触发警报。
https://documentation.wazuh.com/current/getting-started/components/wazuh-server.html
由于使用Wazuh server并不能对接受的日志进行格式字段调整(也许是因为我不清楚),所以本次不采用Wazuh server,本次采用Graylog对数据进行日志规范化以及数据分析。
Graylog作为一个通用的日志接收器,提供以下功能
提供从多种数据源设备(防火墙、防病毒、路由器、Linux服务器、Sysmon)接受日志的功能
提供索引管理,允许你自管理索引,定义保存多少个月的日志,避免因为磁盘问题影响后续日志的存储
提供日志规范化功能,将不同设备不同字段但是代表相同含义的字段映射到同一个字段上方面安全运营人员进行调查、提供
提供日志字段拓展,可以联动VirusTotal、MISP等开源情报对日志实体(IP、域名、文件、MD5)自动查询威胁情报
并且具备健康探测功能,当后端存储出现故障时不会往后端存储中写数据,先放接收到的日志放进缓存中,避免后端存储出现故障时日志丢失
初步了解Graylog之后,需要完成Graylog的部署。
根据官网了解到安装Graylog需要满足以下要求,需要注意的是Wazuh indexer使用OpenSearch 1.2.4,所以需要安装Graylog v4.3,但在官网中CENTOS INSTALLATION章节,官方安装版本为Graylog v4.2,所以在实验环境中一样安装Graylog v4.2版本,Graylog使用MongoDB用于保存配置数据,官方安装版本为mongodb-org-4.2,由于Graylog依赖java官网推荐安装jdk17,此次实验环境安装使用jdk11。
https://docs.graylog.org/docs/centos
https://docs.graylog.org/docs/installing
安装第一步:安装Graylog依赖项
sudo yum update && sudo yum upgrade
sudo yum install apt-transport-https uuid-runtime pwgen dirmngr gnupg wget
安装java-11
sudo yum install java-11-openjdk-headless.x86_64
安装第二步:安装MongoDB
https://docs.mongodb.com/master/tutorial/install-mongodb-on-red-hat
//选择版本4.2查看,默认点击链接显示最新版本
编辑repo文件
vi /etc/yum.repos.d/mongodb-org.repo
添加以下内容
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
安装MongoDB
sudo yum install -y mongodb-org
接下来启动服务并且对服务进行相关处理
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl status mongod
sudo systemctl enable mongod
安装第三步:安装Graylog
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.rpm
sudo yum install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins
由于希望Graylog将数据传输到Wazuh indexer中使用https协议传输,因此需要将CA证书添加到java的keystore中,让java信任该CA证书
mkdir /etc/graylog/server/certs
cp -a /usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/lib/security/cacerts /etc/graylog/server/certs/cacerts
cp /etc/wazuh-indexer/certs/root-ca.pem /etc/graylog/server/certs/
keytool -importcert -keystore /etc/graylog/server/certs/cacerts -storepass changeit -alias root_ca -file /etc/graylog/server/certs/root-ca.pem
成功添加到keystore之后,需要修改java默认选项,编辑该文件
vi /etc/sysconfig/graylog-server
将原有的GRAYLOG_SERVER_JAVA_OPTS字段注释掉添加该行
GRAYLOG_SERVER_JAVA_OPTS="$GRAYLOG_SERVER_JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true -Djavax.net.ssl.trustStore=/etc/graylog/server/certs/cacerts -Djavax.net.ssl.trustStorePassword=changeit"
接下来需要生成password_secret以及root_password_sha2以便启动Graylog,其中password_secret为Graylog内部使用密码,root_password_sha2用于登录Graylog的WebUI使用的密码。
通过搜索引擎搜索随机位数密码生成密码,例如生成的密码如下
wES5LGUs9eO7x5htqZvvCzBdHESP3z6bNHWQPJ0dWKYUDcygPcBwHdE6zqqQTziIyrGK3wYbhb3YYy5kbZJcEj5QZCreehlJ
修改server.conf配置文件password_secret参数值
vi /etc/graylog/server/server.conf
使用命令生成root_password_sha2
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
修改server.conf配置文件root_password_sha2参数值
vi /etc/graylog/server/server.conf
接下来配置Graylog跟Wazuh indexer的连接,先查看Wazuh indexer以及Wazuh dashboard状态
systemctl status wazuh-indexer
systemctl status wazuh-dashboard
如果相关服务未启动,参考该文章中启动wazuh-indexer以及Wazuh dashboard服务部分内容。
使用浏览器登录wazuh,创建Graylog跟Wazuh indexer的连接使用的账号密码(如果不创建账号,允许使用默认账号密码admin/admin进行连接),点击侧边栏,选择Security
选择Internal users,点击Create internal user
用户名为graylog,密码为admin,注意密码不要使用特殊字符,使用特殊字符Graylog连接Wazuh indexer会报错
修改server.conf配置文件elasticsearch_hosts参数值,取消改行的#注释,并将参数改成如图所示,如果使用域名连接显示hostname not verify,尝试使用IP地址进行连接
elasticsearch_hosts = https://graylog:[email protected]:9200
//如果使用域名连接查看报错/var/log/graylog-server/server.log发现显示hostname not verify,则尝试更换IP进行连接
elasticsearch_hosts = https://admin:[email protected]192.168.116.201:9200
完成基础配置之后启动Graylog服务
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
查看Graylog日志
tail -f /var/log/graylog-server/server.log
Graylog正常运行起来之后查看监听端口
netstat -npl
发现默认监听在127.0.0.1的9000端口,需要改修改配置文件中的绑定地址信息
http_bind_address = 0.0.0.0:9000
//取消#注释
修改完发现9000端口监听在0.0.0.0上,可以使用浏览器进行访问
使用浏览器访问
http://192.168.116.200:9000/
用户名为admin,使用刚创建的密码admin登录
欢迎订阅收看下期开源SOC实现(三)-OpenSource EDR
参考链接如下
https://docs.graylog.org/docs/operating-system-packages
https://docs.graylog.org/docs/centos
https://docs.graylog.org/docs/sec-graylog-beats
https://docs.graylog.org/docs/https