Syslog-ng 仅转发原始日志
Syslog-ng forward raw log only
我一直在尝试使用 syslog-ng 将日志从防火墙转发到 SIEM,但问题是我只想转发原始原始日志,而不添加由 [= 添加的 headers 48=]。我有以下 syslog-ng 配置文件。
@version: 5.2
#Default configuration file for syslog-ng.
#
# For a description of syslog-ng configuration file directives, please read
# the syslog-ng Administrator's guide at:
#
# http://www.balabit.com/sites/default/files/documents/syslog-ng-pe-5.2- guides/en/syslog-ng-pe-v5.2-guide-admin/html-single/index.html
#
@include "scl.conf"
options {
};
######
# sources
source s_local {
# message generated by Syslog-NG
internal();
};
source s_udp {
udp(ip(X.X.X.X)
flags(no-parse)
port(514));
};
######
#templates
template no_header {
template($MSG); template_escape(no);
};
######
#destinations
destination d_siem {x
syslog("X.X.X.X" port(514) template(no_header));
};
log { source(s_udp); destination(d_siem);};
根据以上内容,我已经设法删除了大部分 syslog-ng 的 headers,但我无法删除以下粗体部分
**531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -** <189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
Syslog-ng 的文档指出:
($MSGHDR$MSG
部分写在一起,因为 $MSGHDR
宏包含尾随空格。)
如果在我的 conf 中将模板从 $MSG
更改为 $MSGHDR
,我在 SIEM 中收到的唯一内容如下:
531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -
但是如果我再次使用 $MSG
或 $MSGONLY
或 $MESSAGE
我会得到:
**531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -** <189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
我只想syslog-ng转发的是这个:
<189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
我已经用尽了选项,例如:
options {
#keep-hostname(yes);
#chain-hostnames(no);
#use_fqdn(no);
#create_dirs(no);
#long_hostnames(off);
#flush_lines(0);
#use-dns(no);
#keep_timestamp(yes);
#flags(store-legacy-msghdr);
};
上面的 None 有所不同。
我在另一个论坛上读到可以使用重写和设置将锁定的(不可更改的)变量的值放入其他变量,然后
使用 PCRE 等编辑新变量的值,以仅包含所需的数据,但我不确定如何实现。
有人可以帮忙解决上面的问题吗?
您应该使用 tcp()
目的地而不是 syslog()
:
destination d_siem {
tcp("X.X.X.X" port(514) template(no_header));
};
syslog()
用于 RFC5424 系统日志,tcp 用于旧版。
no_header
对我不起作用
配置
syslog-ng 3.7
Centos 6.4
以下为我工作,我使用
tcp("*.*.*.*" port(5140) template("$MSG"));
我一直在尝试使用 syslog-ng 将日志从防火墙转发到 SIEM,但问题是我只想转发原始原始日志,而不添加由 [= 添加的 headers 48=]。我有以下 syslog-ng 配置文件。
@version: 5.2
#Default configuration file for syslog-ng.
#
# For a description of syslog-ng configuration file directives, please read
# the syslog-ng Administrator's guide at:
#
# http://www.balabit.com/sites/default/files/documents/syslog-ng-pe-5.2- guides/en/syslog-ng-pe-v5.2-guide-admin/html-single/index.html
#
@include "scl.conf"
options {
};
######
# sources
source s_local {
# message generated by Syslog-NG
internal();
};
source s_udp {
udp(ip(X.X.X.X)
flags(no-parse)
port(514));
};
######
#templates
template no_header {
template($MSG); template_escape(no);
};
######
#destinations
destination d_siem {x
syslog("X.X.X.X" port(514) template(no_header));
};
log { source(s_udp); destination(d_siem);};
根据以上内容,我已经设法删除了大部分 syslog-ng 的 headers,但我无法删除以下粗体部分
**531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -** <189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
Syslog-ng 的文档指出:
($MSGHDR$MSG
部分写在一起,因为 $MSGHDR
宏包含尾随空格。)
如果在我的 conf 中将模板从 $MSG
更改为 $MSGHDR
,我在 SIEM 中收到的唯一内容如下:
531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -
但是如果我再次使用 $MSG
或 $MSGONLY
或 $MESSAGE
我会得到:
**531 <13>1 2015-03-03T17:35:12+04:00 X.X.X.X - - - -** <189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
我只想syslog-ng转发的是这个:
<189>date=2015-03-03 time=05:27:43 devname=XXX-X-X device_id=XXXX log_id=XXXX type=XXX subtype=XXX pri=notice vd= src=X.X.X.X src_port=X src_int="XXX" dst=X.X.X.X dst_port=XXX dst_int="XXX" SN=XXXXX status=XXX policyid=X dst_country="XXXX" src_country="XXXX" dir_disp=XXX tran_disp=XXX tran_sip=X.X.X.X tran_sport=XXX service=XXX proto=X duration=XXX sent=XXX rcvd=XXX sent_pkt=XXX rcvd_pkt=XXX
我已经用尽了选项,例如:
options {
#keep-hostname(yes);
#chain-hostnames(no);
#use_fqdn(no);
#create_dirs(no);
#long_hostnames(off);
#flush_lines(0);
#use-dns(no);
#keep_timestamp(yes);
#flags(store-legacy-msghdr);
};
上面的 None 有所不同。
我在另一个论坛上读到可以使用重写和设置将锁定的(不可更改的)变量的值放入其他变量,然后 使用 PCRE 等编辑新变量的值,以仅包含所需的数据,但我不确定如何实现。
有人可以帮忙解决上面的问题吗?
您应该使用 tcp()
目的地而不是 syslog()
:
destination d_siem {
tcp("X.X.X.X" port(514) template(no_header));
};
syslog()
用于 RFC5424 系统日志,tcp 用于旧版。
no_header
对我不起作用
配置
syslog-ng 3.7
Centos 6.4
以下为我工作,我使用
tcp("*.*.*.*" port(5140) template("$MSG"));