| name | implementing-syslog-centralization-with-rsyslog |
| description | 配置 rsyslog 实现集中式日志收集,支持 TLS 加密、自定义模板和日志轮转。 生成服务端和客户端配置文件,包含 GnuTLS 流驱动、x509 证书认证、 按主机隔离日志存储以及高可用 syslog 基础设施的可靠队列设置。 |
| domain | cybersecurity |
| subdomain | security-operations |
| tags | ["implementing","syslog","centralization","with"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用说明
- 安装依赖:
pip install jinja2 paramiko
- 使用 OpenSSL 为 rsyslog 服务端和客户端生成 TLS 证书。
- 运行 Agent 生成 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="-1")