一、简介
在前一篇博客中安装了zeek流量分析工具,并且使用zeek工作捕获了流量以日志的方式进行了展示,在本篇博客中我们将安装Graylog,将zeek流量分析结果以图形的方式展示,并结合Elasticsearch提供的搜索引擎完成日志的存储及检索。
Graylog的官方网站见https://graylog.org/,这里可以找到详细的说明,Graylog的服务由Graylog-server提供,需要用到比较高的CPU计算资源;使用Elasticsearch或者OpenSearch作为搜索引擎,需要使用多的内存资源;使用Mongodb存储元数据及配置数据,日志文件不存储在Mongodb中,因此Mongodb对资源要求不高。Graylog可以采用单节点部署,也可以采用多节点集群部署,单节点部署架构如下:
集群部署见官方网站,本文以单节点部署为例。
除了整体的架构信息以外,在整体架构中还会用到GraylogSidecar以及filebeats两个组件,几者关系如下:
Graylog sidecar是一个轻量级的配置管理器,用于对不同采集器进行管理;beats则是作为具体的采集器,因此在本架构中,sidecar用于对beat进行统一管理,在采集信息的服务器上同时部署graylog sidecar以及filebeat。
二、Graylog安装部署
(一)Graylog部署环境说明
使用graylog5.1进行安装,链接见:https://go2docs.graylog.org/5-1/downloading_and_installing_graylog/red_hat_installation.htm,Graylog5.1安装的前置条件:
1、 OpenJDK17(已经集成在Graylog,不用单独安装)
2、 OpenSearch1.x,2.x或者Elasticsearch 7.10.2
3、 MongoDB 5.x或者6.x。
另外本文将使用到sidecar对beats进行统一的管理,两者版本信息如下:
1、 sidecar 1.5.0
2、 filebeat-7.10.2
(二)安装mongodb
1、配置mongodb的YUM源
/etc/yum.repos.d/mongodb-org.repo
2、使用yum命令进行安装
[root@localhost yum.repos.d]# yum install -y mongodb-org
3、设置服务自启动,然后启动服务:
[root@localhost yum.repos.d]# systemctl daemon-reload
[root@localhost yum.repos.d]# systemctl enable mongod
[root@localhost yum.repos.d]# systemctl start mongod
4、查看mongodb状态信息以及服务启动后的端口监控信息
Mongodb安装后默认监听在本地127.0.0.1的27017端口,如果Elasticsearch与graylog-server分别部署,则需要修改其配置文件/etc/mongod.conf中的bindIP到合适的IP地址:
(三)安装ElasticSearch:
1、安装Elasticsearch GPG KEY:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2、添加Elasticsearch的YUM源
编辑elasticsearch.repo文件:
[elasticsearch-7.10.2]
name=Elasticsearch repository for 7.10.2 packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3、使用yum进行安装:
[root@localhost yum.repos.d]# yum install elasticsearch-oss -y
4、修改elasticsearch的配置文件,这里修改了集群的名称,起名为graylog,并且去掉了action.auto_create_index的注释:
[root@localhost yum.repos.d]# vi /etc/elasticsearch/elasticsearch.yml
5、启动Elasticsearch服务,并设置自启动
[root@localhost yum.repos.d]# systemctl daemon-reload
[root@localhost yum.repos.d]# systemctl enable elasticsearch
[root@localhost yum.repos.d]# systemctl start elasticsearch
(四)安装Graylog-server
1、由于下载Yum安装比较慢,我先下载Graylog-server到本地后,再进行安装,下载地址:
https://packages.graylog2.org/el/stable/5.1/x86_64
2、安装graylog-server:
[root@localhost graylog]# rpm -ivh graylog-server-5.1.8-1.x86_64.rpm
安装后根据提示启动服务。
3、开始配置graylog-server,这里需要先生成两个密钥,第一个是password_secret用于保护存储的用户密码,至少需要使用64个字符,安装再修改该密钥将使用所有用户会话及数据库中的加密信息无效。可以使用pwgen生成密钥,命令:pwgen -N 1 -s 96,也可以根据手册中的命令生成password_secret:
[root@localhost graylog]# < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
c60KVdhDr4SEsBJWAWlVaYgv0vAA1L9IBALdXi7CJYjv7FIfacQ0tzh-Wu79ioGCk6qOdcjIdh1yp2AgQvcjfu4CufATI2iS
第二个是root_password_sha2,该密钥为WEB登录时,超级管理员的密码,用户名默认为admin:
[root@localhost graylog]# echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: admin
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
说明:如果没有设置这两个密码,graylog服务将无法启动。
4、修改graylog服务监听的地址及端口,默认是9000,如下:
修改完后,注意重启服务。
5、登录graylog-server服务:
三、测试Graylog收集syslog日志
1、 在graylog-server上配置一个UDP Input,路径:System/inputs
Syslog端口设置为1514:
注意这里端口使用默认的514会报错,可以看到日志提示端口绑定失败:
查看一下UDP监听的端口,显示系统监听了UDP1514端口:
2、修改/etc/rsyslog.conf配置文件,将日志发送到graylog的1514端口,在配置文件后面添加一行:
*.* @192.168.2.102:1514
3、在graylog上面观察结果,显示收到了日志信息,说明graylog工作正常了。
四、使用Graylog收集zeek流量信息
(一)安装及配置服务器采集信息所需要的sidecar以及filebeat:
1、安装graylog-sidecar:
[root@localhost graylog]# rpm -ivh graylog-sidecar-1.5.0-1.x86_64.rpm
安装filebeat:
[root@localhost graylog]# rpm -ivh filebeat-7.10.2-x86_64.rpm
2、创建graylog-sidecar token:
3、修改sidecar配置文件/etc/graylog/sidecar/sidecar.yml:
配置graylog-server的API接口地址:
server_url: http://192.168.2.102:9000/api/
配置graylog-server的API token:
server_api_token: "104bmpb1cagvd41lbrg2btu43ojo8bg063kj3co7f792lp9tr2em"
配置节点的名称,配置后可以在system/sidecars显示:
node_name: "192.168.2.102"
如下截图:
[root@localhost graylog]# vi /etc/graylog/sidecar/sidecar.yml
完成sidecar配置后,启动sidecar:
[root@localhost graylog]# graylog-sidecar -service install
[root@localhost graylog]# graylog-sidecar -service start
启动后,可以在graylogserver上看到该节点,如下:
(二)在graylogserver上配置collector采集器:System/Sidecars-Configuration-create Configuration:
设置采集器名字,选择collector类型,然后在configuration中修改采集日志的路径(input)及输出日志的路径(output)。Input这里的路径设置为zeek流量分析日志保存路径:
(三)管理collectors采集器,为节点分配采集器:
启动采集器:
启动采集器后,可以看到filebeat已经启动,可以看到其使用的配置文件路径:
/var/lib/graylog-sidecar/generated/6546c722a3a84e5a1c8d54eb/filebeat.conf
查看一下该文件的内容:
如上所示,为前面一步配置的内容,已经通过graylog-sidecar下发到了服务器上。
(四)设置graylog-server的Input收集信息:
这里设置的端口为5044与前一步的端口保持一致,设置后可以看到系统监听了5044端口:
(五)测试
下面在服务器上面curl http://www.baidu.com,然后查看一下日志信息进行测试:
1、 curl 一个网站www.baidu.com
[root@localhost graylog]# curl http://www.baidu.com
2、在graylog上搜索www.baidu.com看到如下信息:
可以看到这里进行了DNS的解析,DNS响应的IP地址为14.119.104.189,14.119.104.254。
3、下面再使用14.119.104.189进一步搜索,可以看到更多的信息,包括HTTP连接信息。
至此,我们完成了graylog的安装部署,并可以接收到zeek的流量分析。
五、后记
目前已经结合了zeek、graylog完成了开源流量分析工具的部署,接下来就是根据自身的实际情况开展流量的分析工作了,可以结合zeek以及graylog官网上的介绍进行日志的搜索与分析,提高安全运营工作的质量。