博客

安全动态
投稿至邮箱: 在线投稿

使用RSYSLOG中继和转发日志

作者:农药九死君 公布时间:2017-06-06 阅读次数:9334

需求背景

公司运维团队已经完成了针对分布在各个分支机构的交换机、路由器和防火墙的 syslog 日志的收集。安全基于 ISO27001和等级保护建设的需求,也希望收集此类设备的日志进行安全审计。

虽然主流的网络和安全设备都支持同时向多个syslog 目标服务器发送日志——双发或多发;但是,为降低链路带宽占用,安全和运维就日志收集方式进行了技术讨论。最终决定放弃双发方式,而是对运维收到的日志进行转发。该方案的优点是:运维团队不需要对1000多台既有设备做任何配置变更;同时,链路上只存在一路日志收集,带宽能够得到保障。运维的日志还可以转发给多个目标,如安全、监控中心等。

据了解,目前运维使用了 RSYSLOG 作为日志收集和存储的服务端。幸运的是RSYSLOG 支持日志中继转发这一高级功能。

日志流转示意图

下图展现的就是本次日志收集和转发的逻辑:1.png
关键是运维同事需要如何配置RSYSLOG才能实现转发日志给安全团队,让我们来了解下原理。

技术原理
”RSYSLOG is the rocket-fast system for log processing“,有什么问题请访问网站:http://www.rsyslog.com/ 。

按照 rsyslog.com 的说法:RSYSLOG提供高性能,极好的安全功能和模块化设计。 RSYSLOG已然从一个常规的系统日志发展成了瑞士军刀,能够接受来自各种来源的输入,也能转换和输出到各种目标系统。

在特定处理场景下,RSYSLOG可以每秒向本地目标设备发送超过一百万条消息(基于2013年12月的第7版)。 即使发送到远程目标系统并加以更精细的处理,其性能通常被认为是“令人惊叹”的。

来看看支持多线程、UDP、TCP、SSL、TLS、RELP、过滤器、配置输出等特点的企业级日志中继服务器 RSYSLOG 吧!

2.png
配置实现

要实现文章首节提出的日志转发需求,通过以下步骤可以实现。

首先,配置/etc/rsyslog.conf文件,加载 UDP/TCP 的syslog接收模块,并设置监听端口。

3.png

注意,如果你要需要 rsyslog 监听UDP 514端口,还需要设置 SELinux,否则该端口无法使用。

第二步,配置日志中继转发的目标。此处举例,将日志以 syslog 方式转发到安全团队的 Logstash 日志收集代理服务器192.168.21.2。

4.png
最后,执行命令service rsyslog restart重启 rsyslog 服务,静待日志从远程设备发到 rsyslog 再中继转发到安全日志收集代理!

高级参数
下面将介绍RSYSLOG的一些高级参数,你将看到高级参数数如何满足定制化需求的。

日志分类存储
以下配置参数,可实现不同交换机设备IP 的日志转储到不同的日志文件。这是目前运维团队正在使用的配置。
5.png

根据日志类型和优先级设定发送目标
除此之外,针对特定日志类型,我们还希望能转发安全日志收集代理,请参看如下配置:
6.png

对日志字段或内容进行过滤判断
对本机日志进行过滤
7.png
8.png

更多日志发送目标
日志转发到 Kafka
9.png
日志转发到 MySQL
10.png

其它
不对特定的日志做处理。
11.png

参考资料
RSYSLOG 的条件过滤

请参考:http://www.rsyslog.com/doc/v8-stable/configuration/filters.html

基于传统的severity 和 facility的过滤

基于属性值的过滤器

基于表达式的过滤器

BSD-style风格过滤器(不向上兼容) 

RSYSLOG配置过程中可用的变量或属性参数:

http://www.rsyslog.com/doc/v8-stable/configuration/properties.html

rawmsg

msg

hostname

source

fromhost

fromhost-ip

syslogtag

programname

syslogfacility

syslogfacility-text

syslogseverity-text

syslogseverity

timestamp

一定要参考的一篇文章

《日志收集之rsyslog to kafka》