使用 nxlog 使用 om_ssl 将日志从 Windows 发送到 Logstash

2023-12-06

我一直在寻找从 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 频道中询问过,并在 #nxlog 中得到了一些确认,认为这是可能的,但没有关于如何配置它的进一步信息。

无论如何,我已经获取了为与我的logstash转发器一起使用而创建的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中使用什么输入格式我尝试使用以下配置将日志发送到伐木工输入类型(使用与我的logstash转发器使用的相同的配置):

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.

当我将日志记录设置为“调试”时,我看到大量日志飞过,但我认为关键部分是:

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 证书也出现了问题。

I found 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 密钥并保护它,因为需要保密(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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 nxlog 使用 om_ssl 将日志从 Windows 发送到 Logstash 的相关文章

  • NodeJS Express Windows 最大连接数设置

    在哪里设置nodejs的最大连接数 用于使用express get 在 Windows 10 中 与linux中的最大文件 描述符 设置有关吗 有该设置的 Windows 版本吗 最好是在nodejs中进行设置 以便在迁移到unix时兼容
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • MSDeploy自动加密连接字符串,在字典中找不到密钥

    Since 网络部署 3 5 https blogs iis net msdeploy archive 2013 07 09 webdeploy 3 5 rtw aspx使用以下标志支持连接字符串的自动加密 EnableRule Encry
  • Windows C++ 中的键盘钩子还是什么?

    我希望构建自己的应用程序 它可以将键盘命令 消息 发送到 Windows 操作系统 例如 当我按下组合键 ctrl shift n 时 我希望启动 notepad exe 我怎样才能做到这一点 您对所使用的概念有什么建议吗 我读过 何时使用
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 在哪里可以找到 Windows 7 UX 指南中推荐的图标/动画?

    Windows 7 UX 指南有很好的插图和图标示例 但我在 SDK 中确实找不到它们 他们藏在某个地方 还是找不到 如果您谈论的是常见的 UI 图标 那么您应该以编程方式获取它们 例如 您可以使用 var errIcon HICON be
  • 卸载以前的版本安装新版本的安装项目

    我创建了一个安装项目并安装在Windows系统中 在安装安装项目之前 我将其设置为 DetectNewInstallerVersion true and RemovePreviousVersion True 我也每次都换版本 但是 如果我重
  • 关闭有效句柄时,AppVerifier 报告“无效句柄 - 代码 c0000008”

    我有一个简单的测试程序 在运行时会失败并出现异常AppVerifier 程序重复STD INPUT HANDLE然后尝试使用关闭它CloseHandle 该程序运行良好 无需AppVerifier返回TRUE for CloseHandle
  • 在 Win7 登录屏幕上运行应用程序[重复]

    这个问题在这里已经有答案了 我想通过服务在 Windows 7 的登录屏幕上运行应用程序 我对此进行了长期研究并尝试了不同的方法 但不幸的是到目前为止还没有完全成功 我设法在当前登录用户的锁定屏幕上运行该应用程序 起初我认为这就是我基本上试
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 为什么 Windows 命令 DIR 在搜索 *.tif 文件时也会输出 *.tiff 文件?

    我想使用 Windows 命令DIR为了找到唯一TIF文件 即具有扩展名的文件 tif 因此我使用以下小批处理文件 for f delims a IN dir b a d s C wolter testversion input tif d
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 供所有 Win32 程序员在 Windows Aero Glass(DWM、GDI、GDI+)上绘图的文档和 API 示例

    我正在寻找良好的资源来学习使用 Win32 GDI API 或任何替代它的内容 以便使用 Win32 API 直接在玻璃窗体上进行绘制和绘制 当我使用 Delphi 时 我将其标记为 Delphi 或 Visual C 您能找到的任何代码示
  • Apache Spark:Yarn 日志分析

    我有一个 Spark streaming 应用程序 我想使用 Elasticsearch Kibana 分析作业的日志 我的工作在纱线集群上运行 因此日志将按照我的设置写入 HDFSyarn log aggregation enable为真
  • Windows:更改与文件类型关联的应用程序的名称/图标

    我想将 Windows 中的文件类型与特定应用程序相关联 但我需要这样做 以便当用户打开 打开方式 菜单时 列表中应用程序的名称和图标是针对该文件类型自定义的 即 不仅仅是可执行文件的名称和图标 这是因为该二进制文件是一个通用二进制文件 可
  • 经典 asp 中的 WinHttp TLS 连接

    我正在尝试将付款数据发送到 SagePay 由于他们关闭了 SSL 因此需要使用 TLS 发送数据 我的代码如下 set httpRequest Server CreateObject WinHttp WinHttprequest 5 1
  • Windows 上最快的屏幕捕获方法

    我想为Windows平台编写一个截屏程序 但不确定如何捕获屏幕 我知道的唯一方法是使用 GDI 但我很好奇是否还有其他方法可以实现此目的 如果有的话 哪种方法产生的开销最小 速度是首要任务 截屏程序将用于录制游戏镜头 不过 如果这确实缩小了
  • 使用 luasocket smtp 和 ssl 发送电子邮件

    我一直在尝试使用帖子中描述的代码发送电子邮件 lua使用gmail账户发送邮件 https stackoverflow com questions 11070623 lua send mail with gmail account 代码由米
  • 无法访问127.0.0.1

    我不知道这种情况何时开始发生 但结果是 127 0 0 1 无法在任何地方的任何端口上工作 例如 浏览器显示无法连接 以下是我的研究结果 localhost COMPUTER NAME 和实际 IP 地址都工作正常 我的主机文件中没有什么特

随机推荐

  • Django 中查询集中与多行记录相关的字段的串联

    我必须建立一对多关系的模型 我试图用它来区分记录的类型 假设第一个模型专用于书籍信息 第二个模型是某些类型 例如 A B C 并且类型表与书籍之间存在间接关系 因此每本书可以是 A B 或 C 或任何可能的组合类型 我想使用串联 或注释中的
  • 有没有办法将 twilio 中的 mulaw 音频流保存在文件中

    我正在使用 Twilio 语音流功能 但我不想使用 Twilio 录音功能 当 Twilio 开始向我的服务器发送语音流时 我想将其作为音频文件实时存储到磁盘中 我今天遇到了同样的问题 并找到了一种为 mu law 标头生成 WAVE 标头
  • 读取行时,awk $line 带有多个分隔符

    我正在尝试一个小的变化this 除了我告诉 awk 要根据第 5 个字段分割的文件的分隔符可以是冒号 或制表符 t 我做的是awk F t 单独来看 它确实打印了正确的 5 字段 但是 当我尝试将其合并到更大的命令中时 它返回以下错误 pr
  • Bash shell 十进制到二进制以 2 为基数的转换

    我正在 Bash 中寻找一种将十进制数转换为二进制数的简单方法 我有需要转换的变量 ip1 ip2 ip3 ip4 有没有一种简单的方法可以做到这一点 而无需查看每个单独的数字 我宁愿不必编写大量代码 您可以使用bc as echo oba
  • 连接来自位于不同服务器上的多个 SQL Server 数据库的表

    连接位于不同服务器上的数据库上的 SQL Server 数据库表的推荐方法是什么 所有数据库都将位于同一网络上 链接服务器可以工作 但有一些问题让我试图避免它们 随着时间的推移 它们会让从高层管理您的环境变成一场噩梦 服务器来来去去 升级等
  • 如何测试列表是否按升序排序

    这是练习的问题 编写一个函数来检查列表是否按升序排序 def ascending lst for k in range 0 len lst if lst k lt lst k 1 print Ok else print NOk the nu
  • Flask SocketIO 不会向特定房间发送数据

    我正在创建一个程序 该程序从 Flask 应用程序获取数据 并且可以将数据发送到 Flask 应用程序 并且我正在使用 Socket IO 来执行此操作 socketio emit receive data data 当发送到此时 这最终会
  • 表情符号替换 - PHP

    我需要将文本表情符号替换为 html 图像标签 我整理了以下数据 private smile array gt o 3 c gt 8 private laugh array gt D D D 8 D x D X D D D 3 8 priv
  • AutoMapper - 类型的条件映射

    我想做类似以下的事情 我想知道是否有人知道该怎么做 Mapper CreateMap
  • 在phonegap中将base64字符串转换为pdf

    在我的应用程序中 我收到了代表 PDF 的 Base64 字符串 我希望用户能够将 base64 作为 pdf 保存到他的手机上 我一直在寻找科尔多瓦文件传输插件 但需要一个可以下载文件的 服务器 路径 而不是转换 base64 字符串 有
  • swagger.json 路径和定义为空。规范中没有定义操作

    我正在开发一个 net core Web 应用程序 我正在使用 swagger 并且我已经做了所有必要的调整 不幸的是它不起作用 我只是看到No operations defined in spec 在 swagger 输出页面中 swag
  • 如何使手势识别器在动画 UIImage 视图中工作

    我在图像视图中有 5 个动画图像 并且希望允许用户根据默认 ID 点击它们并将其推送到另一个视图 我尝试添加手势点击 但图像视图未检测到 有人可以给我一些建议吗 编辑 最终我没有使用它 而是设置了一个 UIButton 谢谢 viewDid
  • Excel 2013 VBA 清除所有筛选器宏

    看来旧的宏不起作用 我有适当的安全设置来运行 VBA 宏 但是当我尝试了几种清除工作表上所有过滤器的方法时 我收到编译错误 这是我尝试过的 Sub AutoFilter Remove This macro removes any filte
  • React Native 导航:重置堆栈导航器

    我正在使用 React Navigation 5 在顶部有一个抽屉导航器 带有以下屏幕
  • 使用 Python 操作其他程序的 GUI?

    我这里有一个程序 有一个输入框和一个按钮 我希望 python 在输入框中输入一个字符串 然后按下按钮 解决这个问题的最佳方法是什么 顺便说一句 这是针对 Windows 7 的 pyWinAuto 可以很好地解决这个问题 使用它 您可以根
  • 从 x86 应用程序获取 x64 进程主模块位置?

    我正在尝试获取操作系统上正在运行的进程的所有文件路径Process GetProcesses 方法 它在 x64 NET 应用程序下工作得很好 但是如果我尝试从 x86 NET 应用程序迭代进程列表 情况就会发生变化 因为Process M
  • C++ 结构体有默认构造函数吗?

    我写了以下代码片段 void foo struct bar int a bar cout lt lt Value of a is lt lt bar a 并用 g 4 2 1 Mac 编译它 输出是 a 的值为 0 c 中结构体的数据成员总
  • 使用 Java 和 JBoss 进行长轮询

    我正在寻找一个例子 如何在java中实现长轮询机制 我很想使用无状态 EJB 我知道类似的东西会起作用 WebService serviceName mywebservice Stateless public class MyWebServ
  • 在 Java 中连接 2 个三元运算符的结果时,字符串连接无法正常工作

    尊敬的Java大师们 请您解释一下 为什么在 Java 中连接 2 个三元运算符的结果时 字符串连接不能正常工作 Example String str null String x str null A B str null C D Syst
  • 使用 nxlog 使用 om_ssl 将日志从 Windows 发送到 Logstash

    我一直在寻找从 Windows 发送日志的选项 我已经设置了 Logstash 并且目前我使用 Logstash forwarder 和 ssl 加密将日志从 Linux CentOS 服务器发送到我的 ELK 堆栈 出于合规性原因 加密在