美文网首页ELK文集
ELK之logstash和filebeat的证书验证

ELK之logstash和filebeat的证书验证

作者: 把爱放下会走更远 | 来源:发表于2017-10-09 11:00 被阅读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的日志中可能会存在很多握手失败的日志。

    相关文章

      网友评论

        本文标题:ELK之logstash和filebeat的证书验证

        本文链接:https://www.haomeiwen.com/subject/bjbuyxtx.html