corelight/zeek-log-writer-nats
GitHub: corelight/zeek-log-writer-nats
将 Zeek 网络安全监控日志实时写入 NATS JetStream 的输出插件,便于构建流式日志处理管道。
Stars: 1 | Forks: 0
# Zeek Log Writer NATS
为 [NATS.io Connective Technology](https://nats.io/) 提供一个 Zeek log writer 实现。
[JetStream](https://docs.nats.io/nats-concepts/jetstream) 持久化系统。
## 需求与安装
此插件有一个构建依赖项,即 [nats.c](https://github.com/nats-io/nats.c) 客户端库。
构建系统会自动检测该库是通过 apt 还是 vcpkg 安装的,
两者产生的构建结果完全相同。
**使用 apt (Debian/Ubuntu):**
```
$ apt-get update && apt-get install libnats-dev
$ ./configure && make
$ sudo make install
```
**使用 vcpkg:**
```
$ vcpkg install cnats
$ ./configure && make
$ sudo make install
```
构建过程将首先寻找系统的 `libnats-dev` 库。如果未找到,则会回退
使用 vcpkg 的 `cnats` 包。
```
$ vcpkg install cnats
$ ./configure && make
$ sudo make install
```
构建过程将首先寻找系统的 `libnats-dev` 库。如果未找到,则会回退
使用 vcpkg 的 `cnats` 包。
## 测试
在编译并安装该插件后,请验证 Zeek 是否能够加载该插件:
```
$ zeek -NN Zeek::Log_Writer_NATS
Zeek::Log_Writer_NATS - Log writer sending to NATS (dynamic, version 0.0.6)
[Writer] NATS (Log::WRITER_NATS)
```
可以按照以下步骤针对本地运行的 NATS 服务器进行测试:
在一个终端中启动 NATS 服务器,默认情况下它将监听端口 4222,这也
是该插件默认使用的端口。
```
$ nats-server -js
```
将 Zeek 的 `Log::default_writer` 更改为 `Log::WRITER_NATS` 并监听一个接口:
```
$ zeek -C -i lo Log::default_writer=Log::WRITER_NATS
```
在另一个终端中,使用 `nats` CLI 订阅该插件使用的默认 subject。
这将显示 Zeek 实例生成的所有日志。
```
$ nats subscribe 'sensor.logs.*'
17:51:56 Subscribing on sensor.logs.*
[#1] Received on "sensor.logs.conn" with reply "_INBOX.9X1BKP55Y367UVU5Q31QM4.32"
{"ts":1708620711.443446,"uid":"Cbsjg31hoFHw6fkJch","id.orig_h":"172.17.0.2","id.orig_p":47476,"id.resp_h":"192.0.78.212","id.resp_p":443,"proto":"tcp","service":"ssl","duration":2.2717180252075195,"orig_bytes":758,"resp_bytes":86930,"conn_state":"SF","local_orig":true,"local_resp":false,"missed_bytes":0,"history":"ShADadFf","orig_pkts":48,"orig_ip_bytes":2698,"resp_pkts":48,"resp_ip_bytes":88862}
```
标签:Bro, C++, DNS解析, JetStream, libnats, NATS, Rootkit, Zeek, 中间件, 内核模式, 实时数据, 开源项目, 数据持久化, 数据擦除, 数据管道, 日志 Writer, 日志传输, 日志集成, 消息队列, 网络安全, 软件工程, 隐私保护