首页 > 解决方案 > 如何通过 TLS 通信 graylog 和 rsyslog

问题描述

新手来了 我一直在寻找有关如何通过 TLS 通信 rsyslog 客户端和 graylog 的信息,但无论我做什么或读什么,我都做不到。非常令人沮丧 :sleepy: ... 我的问题是我无法从远程应用程序获取日志以使用 TLS 登录到 Graylog 输入。在我尝试使用自签名证书启用 TLS 之前,远程服务器已正确记录到配置输入。首先,在另一台服务器中,我按照以下步骤创建了一些自签名证书:

openssl genrsa -out CA.key 2048
openssl req -x509 -new -nodes -key CA.key -sha256 -days 3650 -out rootCA.crt
openssl genrsa -out graylog-server.key 2048
openssl req -new -key graylog-server.key -out graylog-server.csr
openssl x509 -req -in graylog-server.csr -CA rootCA.crt -CAkey CA.key -CAcreateserial -out graylog-server.crt -days 3640 -sha256

之后,我通过以下步骤对每个服务器(graylog 和客户端)执行相同的操作:

openssl genrsa -out myIpAddress.key 2048
openssl req -new -key myIpAddress.key -out myIpAddress.csr

我将 IP 作为通用名称放在最后一行的位置。

然后,我执行以下操作:

`openssl x509 -req -in myIpAddress.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out myIpAddress.crt -days 500 -sha256`

所以,完成后我得到了这些文件:

rsyslog-server.crt  rsyslog-server.csr  rsyslog-server.key  
graylog-server.crt  graylog-server.csr  graylog-server.key  
rootCA.crt  rootCA.key  rootCA.srl

我通过以下方式配置了 rsyslog.conf:

$DefaultNetstreamDriver gtls

$DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/rootCA.crt
$DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/rsyslog-server.crt
$DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/rsyslog-server.key
$ActionSendStreamDriverAuthMode anon
$ActionSendStreamDriverMode 1
# run driver in TLS-only mode
#$ActionSendStreamDriverPermittedPeer graylog.name.com

*.* @@graylogIPaddress:5140;RSYSLOG_SyslogProtocol23Format

在 graylog 我配置 server.conf 文件:

# The X.509 certificate chain file in PEM format to use for securing the HTTP interface.
http_tls_cert_file = /etc/ssl/graylog/graylog-server.csr # I tried with rootCA.crt file too

# The PKCS#8 private key file in PEM format to use for securing the HTTP interface.
http_tls_key_file = /etc/ssl/graylog/graylog-server.key

# The password to unlock the private key used for securing the HTTP interface.
http_tls_key_password = pass of certificate

并启用所有 tls 选项。

我已经创建了一个 cacert.jks 文件,就像文档说的那样。

在 /etc/default/graylog-server 我添加 -Djavax.net.ssl.trustStore=/etc/ssl/graylog/cacerts.jks 在 GRAYLOG_SERVER_JAVA_OPTS 行。

我的证书文件夹有这个文件: cacerts.jks graylog-server.crt graylog-server.csr graylog-server.key rooCA.crt

我的意见:

* allow_override_date: true
* bind_address: 0.0.0.0
* expand_structured_data: false
* force_rdns: false
* max_message_size: 2097152
* number_worker_threads: 2
* port: 5140
* tcp_keepalive: false
* tls_cert_file: /etc/ssl/graylog/rootCA.crt
* tls_client_auth: optional
* tls_client_auth_cert_file: /etc/ssl/graylog/
* tls_enable: true
* tls_key_file: /etc/ssl/graylog/graylog-server.key
* tls_key_password: ********
* use_null_delimiter: false

谁能告诉我我应该如何处理这些文件?

我已经阅读了这些文章,但没有运气:

https://docs.graylog.org/en/3.0/pages/secure/sec_graylog_beats.html

我还查看了这些链接以在 rsyslog 上为客户端启用 TLS。我没有将服务器配置应用于 rsyslog 配置文件,因为我没想到需要它(如果我错了,请更正):

`https://www.rsyslog.com/doc/v8-stable/tutorials/tls.html`

任何帮助或建议表示赞赏。谢谢。

标签: ssltls1.2rsysloggrayloggraylog3

解决方案


推荐阅读