ELK文集

ELK之logstash和filebeat的证书验证

2017-10-09  本文已影响136人  把爱放下会走更远

0x01 前言
如果服务器位于世界各地,但又需要通过filebeat传输日志到logstash分析,这时候为了保证数据的安全,在传输的时候使用加密是基本的要求。
但是我没有以上的这种需求,我只是想给filebeat使用SSL而已。在使用家里的服务器配置测试后,一切都很正常。
0x02 数字证书
首先需要使用openssl生成自签发的数字证书,在这里你需要准备一个域名而不能使用IP地址。签发的过程与以下文章中“数字证书”的部分类似:
�为zabbix服务配置数字证书加密通道

我们需要先生成ca证书,然后通过ca证书签发服务器证书与客户端证书。先建立一个文件夹以便存放所有证书文件:

新建文件夹

[root@web ~]# mkdir filebeat_crt

进入文件夹

[root@web ~]# cd filebeat_crt

然后使用以下命令建立所需要的证书文件。其中CN部分可以修改为服务器的域名或IP,在实际应用中推荐修改为服务器的域名:

生成ca私钥

openssl genrsa 2048 > ca.key

使用ca私钥建立ca证书

openssl req -new -x509 -nodes -days 1000 -key ca.key -subj /CN=elkCA\ CA/OU=Development\ group/O=HomeIT\ SIA/DC=elk/DC=com > ca.crt

生成服务器csr证书请求文件

openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server.key -subj /CN=server.t.com/OU=Development\ group/O=Home\ SIA/DC=elk/DC=com > server.csr

使用ca证书与私钥签发服务器证书

openssl x509 -req -in server.csr -days 1000 -CA ca.crt -CAkey ca.key -set_serial 01 > server.crt

生成客户端csr证书请求文件

openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client.key -subj /CN=client.t.com/OU=Development\ group/O=Home\ SIA/DC=elk/DC=com > client.csr

使用ca证书与私钥签发客户端证书

openssl x509 -req -in client.csr -days 1000 -CA ca.crt -CAkey ca.key -set_serial 01 > client.crt

请将命令中的两个域名按实际情况进行修改,这里需要使用域名,不然会报错 it doesn't contain any IP SANs,如果没有域名,可以在/etc/hosts中配置一下:
server.t.com 服务器域名,配置在logstash的input字段中;
client.t.com 客户端域名,配置在filebeat.yml文件中。

完成后,该目录下一共有8个文件:

[root@web filebeat_crt]# ll
总用量 32
-rw-r--r-- 1 root root 1350 1月 8 21:20 ca.crt
-rw-r--r-- 1 root root 1679 1月 8 21:20 ca.key
-rw-r--r-- 1 root root 1216 1月 8 21:20 client.crt
-rw-r--r-- 1 root root 1013 1月 8 21:20 client.csr
-rw-r--r-- 1 root root 1704 1月 8 21:20 client.key
-rw-r--r-- 1 root root 1216 1月 8 21:20 server.crt
-rw-r--r-- 1 root root 1013 1月 8 21:20 server.csr
-rw-r--r-- 1 root root 1704 1月 8 21:20 server.key

将文件分别复制到logstash目录与filebeat目录中:

复制到logstash目录中

[root@web filebeat_ssl]# cp -r /root/filebeat_ssl/ /etc/logstash/

复制到filebeat目录中

[root@web filebeat_ssl]# cp -r /root/filebeat_ssl/ /etc/filebeat/

0x03 logstash
然后配置logstash的input配置:

打开文件

[root@web ~]# vim /etc/logstash/conf.d/01-logstash-listen-5045.conf

input配置文件如下

input {
beats {
port => 5045
ssl => true
ssl_certificate_authorities => ["/etc/logstash/conf.d/filebeat_ssl/ca.crt"]
ssl_certificate => "/etc/logstash/conf.d/filebeat_ssl/server.crt"
ssl_key => "/etc/logstash/conf.d/filebeat_ssl/server.key"
ssl_verify_mode => "force_peer"
}
}

然后重启logstash:

1

[root@web ~]# systemctl restart logstash

0x04 filebeat
然后修改filebeat的配置文件:

打开文件

[root@web ~]# vim /etc/filebeat/filebeat.yml

output.logstash:
hosts: ["server.t.com:5045"]
ssl.certificate_authorities: ["/etc/filebeat/filebeat_ssl/ca.crt"]
ssl.certificate: "/etc/filebeat/filebeat_ssl/client.crt"
ssl.key: "/etc/filebeat/filebeat_ssl/client.key"

保存后重启filebeat:

[root@web ~]# systemctl restart filebeat

0x05 结语
在网络不好的情况下,在logstash的日志中可能会存在很多握手失败的日志。

上一篇下一篇

猜你喜欢

热点阅读