#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提交日志的客户端的确是我设置的。
不知道这样的理解有没有问题
但是给每个客户端签一张证书实在是太麻烦了(主要是管理起来太麻烦),有没有能像类似es套Nginx通过https和HTTP basic auth来快捷的安全传输?
我看filebeat支持socks5代理,理论上说不暴露logstash的端口然后走socks5代理通讯也可以,但是似乎也没有好用的直接使用用户名和密码提供socks5代理的服务端
因为logstash的端口被我直接暴露在公网上了,所以需要设置ssl证书的加密。
但是ssl证书这块的知识实在是薄弱,所以请教一下有经验的大佬。
按照文档,我需要生成一个ca证书,然后给服务端签一个证书。如果要进行客户端认证的话还要给每个客户端都签一个证书。
我的理解是这样的:
因为logstash只有单纯的收集日志的功能,所以logstash本身作为服务端的ssl证书可以确保我的客户端的确在跟我设置的logstash通讯,但不能保证我的logstash接收到的数据都是我自己的filebeat提交的。为了保证这一点,我需要给每个filebeat(也就是客户端)签一张证书,来保证所有给logstash提交日志的客户端的确是我设置的。
不知道这样的理解有没有问题
但是给每个客户端签一张证书实在是太麻烦了(主要是管理起来太麻烦),有没有能像类似es套Nginx通过https和HTTP basic auth来快捷的安全传输?
我看filebeat支持socks5代理,理论上说不暴露logstash的端口然后走socks5代理通讯也可以,但是似乎也没有好用的直接使用用户名和密码提供socks5代理的服务端
我的机器之间是通过内网通讯的,logstash收到请求的地址跟dns里面的解析结果应该是不同的.在filebeat这边修改hosts,把对应的内网ip写到hosts文件里应该就能进行服务器认证了,但客户端认证的过程里客户端域名是如何确定的?
是logstash收到证书之后,根据ip反向进行解析,比如hosts里面192.168.1.4对应domain1,domain2,domain3,然后判断解析出来的域名是否存在跟filebeat使用的证书匹配的域名吗?
我觉得你肯定找到过这篇,再配合防火墙规则足矣。
至于证书那部分,绕圈子去反解析 ip 没有必要,仅考虑验证身份的部分的话,这一步在交换密钥的时候就完成了。
https://luan.ma/post/https-introduction/
这篇文章可以初步解释 HTTPS 整个验证过程。
logstash跟filebeat之间的通讯不是http协议,所以设置了ssl加密之后也不是https
https的认证过程我是清楚的,也就是服务端验证这部分,不太明白的是客户端认证.