gpt4 book ai didi

windows - 使用 nxlog 使用 om_ssl 从 Windows 将日志发送到 logstash

转载 作者:可可西里 更新时间:2023-11-01 10:05:46 29 4
gpt4 key购买 nike

我一直在寻找从 Windows 发送日志的选项,我已经设置了 logstash,目前我使用 logstash-forwarder 和 ssl 加密将日志从 Linux (CentOS) 服务器发送到我的 ELK 堆栈。

出于合规原因,加密在此环境中非常重要。

我也希望在 Windows 中使用 logstash-forwarder,但是在用 Go 编译后我遇到了事件日志的问题,我发现有人说这是不可能的,因为文件锁定问题,这是人们似乎正在开发 logstash-forwarder,但我真的等不及了。

无论如何,最终我发现 nxlog 似乎能够使用 ssl 以加密格式传送日志,我找到了一个 few posts about similar topics虽然我已经了解了很多关于如何传送日志以及如何设置 nxlog 的知识,但我仍然不知道如何设置 logstash 来接受日志以便我可以处理它们。

我已经在#nxlog 和#logstash irc channel 中询问过,并在#nxlog 中得到了一些确认这是可能的,没有关于如何配置它的更多信息。

无论如何,我已经使用了为我的 logstash-forwarder 使用而创建的 crt 文件(如果需要,我会创建一个新文件,当我很高兴它能工作时)并用 pem 扩展名重命名它,我相信它应该工作因为它可以 ASCII 格式读取。我已经为 %CERTDIR% 创建了环境变量并将我的文件放在那里,我已经从我读过的其他文章中为 nxlog 编写了以下配置文件,我认为这是正确的,但我不是 100% 确定:

## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html

## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

# Enable json extension
<Extension json>
Module xm_json
</Extension>

# Nxlog internal logs
<Input internal>
Module im_internal
Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>

# Windows Event Log
<Input eventlog>
# Uncomment im_msvistalog for Windows Vista/2008 and later
Module im_msvistalog
# Uncomment im_mseventlog for Windows XP/2000/2003
# Module im_mseventlog
Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>

<Output sslout>
Module om_ssl
Host lumberjack.domain.com
Port 5000
CertFile %CERTDIR%/logstash-forwarder.crt
AllowUntrusted TRUE
OutputType Binary
</Output>

<Route 1>
Path eventlog, internal => sslout
</Route>

我想知道在 logstash 中使用什么输入格式 我已经尝试使用以下配置将日志传送到 lumberjack 输入类型(使用与我的 logstash-forwarders 使用相同的配置) :

input {
lumberjack {
port => 5000
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

但是当服务启动时,我在 nxlog 日志文件中得到以下内容:

2014-11-06 21:16:20 INFO connecting to lumberjack.domain.com:5000
2014-11-06 21:16:20 INFO nxlog-ce-2.8.1248 started
2014-11-06 21:16:21 INFO successfully connected to lumberjack.domain.com:5000
2014-11-06 21:16:22 INFO remote closed SSL socket
2014-11-06 21:16:22 INFO reconnecting in 1 seconds
2014-11-06 21:16:23 INFO connecting to lumberjack.domain.com:5000
2014-11-06 21:16:24 INFO reconnecting in 2 seconds
2014-11-06 21:16:24 ERROR couldn't connect to ssl socket on lumberjack.antmarketing.com:5000; No connection could be made because the target machine actively refused it.

当我将日志记录设置为 DEBUG 时,我看到大量日志飞速通过,但我认为关键部分是:

2014-11-06 21:20:18 ERROR Exception was caused by "rv" at om_ssl.c:532/io_err_handler(); [om_ssl.c:532/io_err_handler()] -; [om_ssl.c:501/om_ssl_connect()] couldn't connect to ssl socket on lumberjack.domain.com:5000; No connection could be made because the target machine actively refused it.

我假设这表明我在 logstash 上使用了错误的输入法,但我想这也可能是我的 ssl 证书或其配置方式的问题。当我从我的 Windows 机器建立连接时,我似乎没有在正在生成的 logstash 服务器上获取任何日志。

最佳答案

感谢 b0ti 的帮助,出现了很多问题,我的 logstash 配置导致服务崩溃,但我的 nxlog 设置以及我的 ssl 证书以正确的方式设置也有问题。

我找到了 this关于创建 ssl 证书的帖子,其中涵盖了它们的设置方式,非常适合用作 Web 服务的自签名证书。

nxlog 的主要错误是 b0ti 指出我试图以二进制形式发送,而这仅在发送到 nxlog 服务器时有效。我还在文档中注意到 AllowUntrusted 的默认值是 false,所以我只需要在 ssl 正常工作时删除它。

<Output sslout>
Module om_ssl
Host lumberjack.domain.com
Port 5001
CAFile %CERTDIR%\nxlog-ca.crt
OutputType LineBased
</Output>

创建 CA key 并保护它,因为这需要保密(cd 到/etc/pki/tls):

certtool --generate-privkey --bits 2048 --outfile private/nxlog-ca.key
chown logstash:logstash private/nxlog-ca.key
chmod 600 private/nxlog-ca.key

然后需要将自签名 CA 证书传输给您的客户:

certtool --generate-self-signed --load-privkey private/nxlog-ca.key --bits 2048 --template nxlog-ca-rules.cnf --outfile certs/nxlog-ca.crt

cnf文件是标准的,只有修改了这个选项:

# Whether this is a CA certificate or not
ca

logstash输入法:

input {
tcp {
port => 5001
type => "nxlogs"
ssl_cacert => "/etc/pki/tls/certs/nxlog-ca.crt"
ssl_cert => "/etc/pki/tls/certs/nxlog.crt"
ssl_key => "/etc/pki/tls/private/nxlog.key"
ssl_enable => true
format => 'json'
}
}

生成私钥:

certtool --generate-privkey --bits 2048 --outfile private/nxlog.key
chown logstash:logstash private private/nxlog.key
chmod 600 private/nxlog.key

生成 CSR(证书签名请求):

certtool --generate-request --bits 2048 --load-privkey private/nxlog.key --outfile private/nxlog.csr

使用 CA 私钥签署证书

certtool --generate-certificate --bits 2048 --load-request private/nxlog.csr --outfile certs/nxlog.crt --load-ca-certificate certs/nxlog-ca.crt --load-ca-privkey private/nxlog-ca.key --template nxlog-rules.cnf

同样,对于 cnf 文件,唯一重要的标准输入部分是:

# Whether this certificate will be used to encrypt data (needed
# in TLS RSA ciphersuites). Note that it is preferred to use different
# keys for encryption and signing.
encryption_key

# Whether this certificate will be used for a TLS client
tls_www_client

我已经测试过了,效果很好,我现在只需要设置过滤器

关于windows - 使用 nxlog 使用 om_ssl 从 Windows 将日志发送到 logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26789903/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com