#1 - 2019-7-1 09:42
bangumi大西王 (天生万物以养人,人无一物以报天)
现在手头三台服务器,其中一台跑了elk,另外两台跑了Nginx,要再运行一个filebeat来收集日志传到elk里面去。之前一直是filebeat直接提交到es里面去,然后前两天看到logstash还有一些其他的功能,就想要试试。所以设置了完整的elk。
因为logstash的端口被我直接暴露在公网上了,所以需要设置ssl证书的加密。
但是ssl证书这块的知识实在是薄弱,所以请教一下有经验的大佬。

按照文档,我需要生成一个ca证书,然后给服务端签一个证书。如果要进行客户端认证的话还要给每个客户端都签一个证书。

我的理解是这样的:

因为logstash只有单纯的收集日志的功能,所以logstash本身作为服务端的ssl证书可以确保我的客户端的确在跟我设置的logstash通讯,但不能保证我的logstash接收到的数据都是我自己的filebeat提交的。为了保证这一点,我需要给每个filebeat(也就是客户端)签一张证书,来保证所有给logstash提交日志的客户端的确是我设置的。

不知道这样的理解有没有问题(bgm38)

但是给每个客户端签一张证书实在是太麻烦了(主要是管理起来太麻烦),有没有能像类似es套Nginx通过https和HTTP basic auth来快捷的安全传输?

我看filebeat支持socks5代理,理论上说不暴露logstash的端口然后走socks5代理通讯也可以,但是似乎也没有好用的直接使用用户名和密码提供socks5代理的服务端
#2 - 2019-7-1 10:03
(意识形态的水很深 你把握不住)
不懂,我就想问一下:那种用UUID提供代理的socks5效果和用户名密码是否一样呢?
#2-1 - 2019-7-1 20:02
bangumi大西王
那种大概是用UUID当作用户名或者密码吧
#3 - 2019-7-1 20:03
(天生万物以养人,人无一物以报天)
找到解决办法了,filebeat和logstash之间可以加一个消息中间件,不把logstash暴露到公网,用带密码的Redis作为消息中间件就不用考虑filebeat和logstash之间的加密问题了。
#4 - 2019-7-1 20:21
(宅男会虚构虚构老婆倒贴给虚构自己这件事究竟有什么错)
如果有域名的话用 let‘s encrypt 客户端管理证书就行。纯 ip 的话一般还得回到自签发证书那一步,不过也需要在 logstash 主机上添加信任证书了。

但按你这描述还不如走 ssh 的公私钥认证,用带密码认证的 redis 做中间件也是一种办法。
#4-1 - 2019-7-1 20:31
bangumi大西王
原来le的证书也可以吗,我倒是签了一堆le的泛域名证书.

我的机器之间是通过内网通讯的,logstash收到请求的地址跟dns里面的解析结果应该是不同的.在filebeat这边修改hosts,把对应的内网ip写到hosts文件里应该就能进行服务器认证了,但客户端认证的过程里客户端域名是如何确定的?

是logstash收到证书之后,根据ip反向进行解析,比如hosts里面192.168.1.4对应domain1,domain2,domain3,然后判断解析出来的域名是否存在跟filebeat使用的证书匹配的域名吗?
#4-2 - 2019-7-1 21:14
lhb5883-吹冈王♛⑩
自己搭的话可以自己生成证书
#4-3 - 2019-7-1 21:15
bangumi大西王
lhb5883-污🐱王VIP⑩ 说: 自己搭的话可以自己生成证书
我就是不想自己生成证书........
#4-4 - 2019-7-1 22:37
板砖加身
Trim21 说: 原来le的证书也可以吗,我倒是签了一堆le的泛域名证书.

我的机器之间是通过内网通讯的,logstash收到请求的地址跟dns里面的解析结果应该是不同的.在filebeat这边修改hosts,把对应...
http://rk700.github.io/2016/12/1 ... tion-authorization/
我觉得你肯定找到过这篇,再配合防火墙规则足矣。

至于证书那部分,绕圈子去反解析 ip 没有必要,仅考虑验证身份的部分的话,这一步在交换密钥的时候就完成了。
https://luan.ma/post/https-introduction/
这篇文章可以初步解释 HTTPS 整个验证过程。
#4-5 - 2019-7-1 22:41
bangumi大西王
板砖加身 说: http://rk700.github.io/2016/12/1 ... tion-authorization/
我觉得你肯定找到过这篇,再配合防火墙规则足矣。

至于证书那部分,绕圈子去反解析 ip...
emmm(
logstash跟filebeat之间的通讯不是http协议,所以设置了ssl加密之后也不是https

https的认证过程我是清楚的,也就是服务端验证这部分,不太明白的是客户端认证.
#4-6 - 2019-7-1 22:50
板砖加身
Trim21 说: emmm(
logstash跟filebeat之间的通讯不是http协议,所以设置了ssl加密之后也不是https

https的认证过程我是清楚的,也就是服务端验证这部分,不太明白的是客户端认证.
拿 VPN 做加密管道不就好了。客户端认证就是反过来的服务端认证,没有什么区别啊。