我想找出一种在不受信任的网络环境中使用伐木工人输入分别运行 logstash-forwarder 的安全方法。
据我了解,SSL 证书确保客户端和服务器之间的加密连接并为客户端验证服务器(如“好的,我知道这台服务器是真正的日志服务器”)。如何验证服务器的客户端(如“好的,我知道这个试图向我发送事件的客户端是我的一台机器,而不是其他人”)?
我想找出一种在不受信任的网络环境中使用伐木工人输入分别运行 logstash-forwarder 的安全方法。
据我了解,SSL 证书确保客户端和服务器之间的加密连接并为客户端验证服务器(如“好的,我知道这台服务器是真正的日志服务器”)。如何验证服务器的客户端(如“好的,我知道这个试图向我发送事件的客户端是我的一台机器,而不是其他人”)?
SSL 证书可以双向工作。它们可以用来验证服务器(“好的,这个服务器是真正的日志服务器”),也可以反过来(“好的,我知道这个客户端是我的一台机器”)。对于第二种情况,您需要使用客户端证书。
虽然 Logstash Forwarder 允许配置客户端证书,但 Logstash 的伐木工人输入不支持客户端证书。有一个关于此功能的开放 github 问题。
为了克服这个困境,您可以使用替代日志客户端和支持客户端证书的 logstash 的TCP 输入。输入将如下所示:
input {
tcp {
port => 9999
ssl_cert => "/path/to/server.crt"
ssl_key => "/path/to/server.key"
ssl_cacert => "/path/to/ca.crt"
ssl_enable => true
ssl_verify => true
}
}
在客户端,您可以使用多种工具。我个人用NXLog做这个。正确的 NXLog 输出配置如下所示:
<Output logstash>
Module om_ssl
Host yourhost
Port 9999
CAFile %CERTDIR%/ca.crt
CertFile %CERTDIR%/client.crt
CertKeyFile %CERTDIR%/client.key
</Output>
不幸的是,这只是另一种软件的解决方法,但恐怕没有本地伐木工人解决方案。