syslog是一款很通用的系统log记录软件。一些linux的发行版本中,就是用syslog记录log的。
公司在IDC有一台Fortinet的防火墙产品——Fortigate 300A,但是日志成了问题,默认情况下,log可以记在防火墙的内存里,但只是很小一部分,查看log是只能显示128条,部分log只能记10条。我们参考的信息十分有限。Fortinet的解决方案是让我们花钱买他们的FortiAnalyzer分析器,这是个硬件分析产品,当然买了它,对我们的log分析工作会有很大的帮助,但是费用是更大的问题(大公司就可以昂首挺胸地说“费用不是问题……”)。于是我们选择的这种办法,也是Fortinet留给我们这种穷公司的唯一一条办法——syslog。
首先在linux上配置,syslog已经随系统安装好了,而且已经有很多服务在使用syslog记着log。我要做的有三个地方:
-- Save Fortigate messages to linux
local6.* /var/log/fortilog
使得来自local6(这里local6只是一个名字,没有什么意义,只是为了和防火墙一端对应上)这个设备的任何级别log记到文件/var/log/fortilog文件里
SYSLOGD_OPTIONS="-rxm 60"
-r选项是说允许syslog接收来自外部的log,-x选项是禁用接受log时无用的dns查询,-m 60的意思是每隔60分钟在目标文件中打一个“MARK”以便让我们知道syslog没有偷懒,一直在听着。
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
使得防火墙能够通过访问本机的UDP 514端口的通讯。
#service restart iptables
#service restart syslogd
至此,linux这端基本已经ready了,syslog听着来自UDP 514端口local6设备的所有级别log
接下来要配置Fortigate这端了,这端非常简单
这时,再回来检查linux上的/var/log/fortilog文件,已经有log了,成功!