我想弄清楚在不受信任的网络环境中使用lumberjack-input运行logstash-forwarder和logstash的安全方法。
据我所知,SSL证书可确保客户端和服务器之间的加密连接,并为客户端验证服务器的身份验证(例如,"好吧,我知道这个服务器是真正的日志记录服务器" )。如何验证服务器的客户端(如"好吧,我知道这个客户端试图向我发送事件是我的机器之一,而不是其他人")?
答案 0 :(得分:1)
SSL证书可以双向工作。它们可用于验证服务器(“好,这个服务器是真正的日志服务器”)以及的另一种方式(“好吧,我知道这个客户端是我的一个机“)。对于第二种情况,您需要使用客户端证书。
虽然Logstash Forwarder允许configure a client certificate,但logstash的伐木工人输入does not support client certs。关于此功能有一个open github issue。
要克服这种困境,您可以使用备用日志客户端和支持客户端证书的logstash TCP input。输入将如下所示:
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>
不幸的是,这只是另一种软件的解决方法,但我担心没有本地伐木工人的解决方案。