使用 Rsyslog 实现 Syslog 集中化
适用场景
- 在环境中部署或配置 rsyslog 集中化 syslog 相关能力时
- 建立与合规要求对齐的安全控制时
- 构建或改进本领域的安全架构时
- 执行需要该实现的 安全评估时
前置条件
- 熟悉安全运营相关概念与工具
- 拥有用于安全执行的测试或实验环境
- 已安装 Python 3.8+ 及所需依赖
- 具备任何测试活动所需的相应授权
操作步骤
- 安装依赖:
pip install jinja2 paramiko
- 使用 OpenSSL 为 rsyslog 服务器和客户端生成 TLS 证书。
- 运行代理程序以生成 rsyslog 服务器和客户端配置:
- 服务器:6514 端口的 TLS 监听器、每个主机独立目录输出、JSON 格式模板
- 客户端:使用磁盘辅助队列实现可靠转发的 TLS 转发
- 通过 SSH(paramiko)将配置部署到服务器。
- 验证 TLS 连接与日志投递。
python scripts/agent.py --server-ip 10.0.0.1 --clients 10.0.0.10,10.0.0.11 --ca-cert ca.pem --output syslog_report.json
示例
服务器配置(TLS)
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1"
StreamDriver.Authmode="x509/name")
input(type="imtcp" port="6514")
template(name="PerHostLog" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* ?PerHostLog
客户端配置(可靠转发)
action(type="omfwd" target="10.0.0.1" port="6514" protocol="tcp"
StreamDriver="gtls" StreamDriverMode="1"
StreamDriverAuthMode="x509/name"
queue.type="LinkedList" queue.filename="fwdRule1"
queue.maxdiskspace="1g" queue.saveonshutdown="on"
action.resumeRetryCount=…