對管理員來說,日志非常有用,但大量的日志又很麻煩。當一些事件運行錯誤時,日志可以對故障排除起到至關重要的作用,特別是在安全性相關問題上。但是如果攻擊者危害到你的主機,日志將會告訴你,對於主機來說這很有用;你需要給數據中心發信息。保護日志非常重要,一個中央日志服務器會更容易管理、分析和查找它們。針對這一點,我將向你展示如何把多個主機的系統日志集中收集到一個主機上來管理,即Linux上的中央系統日志服務器。
首先,所有集中的系統日志服務器都應該建成一個安全和硬化的主機。在主機上沒有一點關於保護和集中化你們日志方面。其次,你怎樣能從你的主機上獲得日志呢?
讓我們開始安裝中央系統日志服務器。我將舉例說明如果使用rSyslog,實際的標准Linux系統日志。Ubuntu和紅帽常使用它,並且通過文件/etc/rsyslog.conf進行管理。文件中包含許多指定的特殊系統日志:有的是控制台方面的,有的是文件方面或其它主機的。
首先,我們需要載入合適的TCP和UDP插件以支持接收系統日志。把下面的代碼添加到rsyslog.conf的頭部:
$modloadimtcp
$modloadimudp
$In put TCP Server Run 10514
$UDP Server Run 514
載入的這兩個模塊能支持監聽TCP和UDP的端口,並且指定哪個端口來接受事件,在這種情況下,使用TCP的10514端口和UDP的514端口。你需要確認一下本地防火牆(在你的主機和中央系統日志服務器之間的防火牆)
下面我們需要指定一些規則來告訴rSyslog在哪放輸入事件。如果你不添加任何規則,輸入事件將按照本地的規則進行處理,並且與本地主機的事件交織在一起。我們需要在上面添加節之後和本地處理系統日志之前來正確的指定這個規則,例如:
if$from host-ipisequal '192.168.0.2 'then/var/log/192.168.0.2.log
&~
這裡我們說的每一個來自於192.168.0.2的系統日志都應該保存在/var/log/192.168.0.2.log文件中。&~這個符號是非常重要的,因為它告訴rSyslog將停止處理消息。如果你把它忘寫了,消息將越過下一個規則,並且繼續處理。在這一規則中還有其他的變量。例如:
if$from host-ipstart swith 192.168.'then/var/log/192.168.log
&~
這裡我們用192.168.*替代了以這個為開始的所有IP地址,寫入到/var/log/192.168.log文件中。你還可以看到一些其它的過濾。
你將需要重啟這個rsyslog服務來激活我們所做的新的配置:
$sudo servicer syslogre start
現在,對於發送方的主機,我們還需要對文件rsyslog.conf進行一些更改,在文件的頭部,添加下面這行:
*.*@@192.168.0.1:10514
這是發送的所有事件,來自於所有源代碼和所有重要級別(用*.*),通過TCP協議傳給IP地址為192.168.0.1的10514端口。你可是用你所在環境的地址來替換這個IP地址。要啟用此配置,你將需要重啟主機上的rSyslog。
你可以通過SSL/TLS更進一步地發送你的系統日志。如果你在互聯網上或其它網絡間傳輸系統日志,這也沒什麼壞處,你可能會發現這個的簡單說明。
現在,如果給你的配置管理系統(如果不使用這個,你可以試一試Puppet或Cfengine工具)添加這個配置,然後,您可以用適當的系統日志來有效地配置每台主機,以確保你的日志將被發送到中央系統日志服務器。