2015-03-03 54 views
1

我一直在試圖使用syslog-ng將日誌從防火牆轉發到SIEM,但問題是我只想轉發原始原始日誌而沒有添加由syslog-ng添加的頭文件。我有以下syslog-ng conf文件。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的的頭,但我不能刪除以下大膽

**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); 
}; 

以上都沒有影響。

我讀過另一個論壇,可以使用重寫和設置將鎖定(不可更改)變量的值放入其他變量中,然後用PCRE等編輯新變量的值包含所需的數據,但我不完全確定我可以如何實現這一目標。

有人可以幫助與上述?

回答

2

您應該使用tcp()目的地,而不是syslog()

destination d_siem { 
tcp("X.X.X.X" port(514) template(no_header)); 
}; 

syslog()是RFC5424系統日誌,TCP是傳統。

+0

您好,感謝您的回答。使用tcp時,它從開始的時候就忽略了一些信息,但它與udp完美配合!這可能是因爲防火牆使用udp發送日誌。非常感謝你幫助了很多。 – Chameleon 2015-03-04 06:50:18

+1

實際上'tcp()'現在已經被'network()'所青睞。 參見: https:// www。balabit.com/sites/default/files/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/reference-source-tcpudp.html – 2016-02-19 00:17:19

0

no_header沒有工作對我來說

配置

syslog-ng 3.7 
Centos 6.4 

我繼工作,我用

tcp("*.*.*.*" port(5140) template("$MSG"));