對管理員來說,日誌非常有用,但大量的日誌又很麻煩。當一些事件運行錯誤時,日誌可以對故障排除起到至關重要的作用,特別是在安全性相關問題上。但是如果攻擊者危害到你的主機,日誌將會告訴你,對於主機來說這很有用;你需要給資料中心發資訊。保護日誌非常重要,一個中央Log Service器會更容易管理、分析和尋找它們。針對這一點,我將向你展示如何把多個主機的系統日誌集中收集到一個主機上來管理,即Linux上的中央系統Log Service器。
首先,所有集中的系統Log Service器都應該建成一個安全和硬化的主機。在主機上沒有一點關於保護和集中化你們日誌方面。其次,你怎樣能從你的主機上獲得日誌呢?
讓我們開始安裝中央系統Log Service器。我將舉例說明如果使用rSyslog,實際的標準Linux系統日誌。Ubuntu和紅帽常使用它,並且通過檔案/etc/rsyslog.conf進行管理。檔案中包含許多指定的特殊系統日誌:有的是控制台方面的,有的是檔案方面或其它主機的。
首先,我們需要載入合適的TCP和UDP外掛程式以支援接收系統日誌。把下面的代碼添加到rsyslog.conf的頭部:
$modload imtcp$modload imudp$InputTCPServerRun 10514$UDPServerRun 514
載入的這兩個模組能支援監聽TCP和UDP的連接埠,並且指定哪個連接埠來接受事件,在這種情況下,使用TCP的10514連接埠和UDP的514連接埠。你需要確認一下本地防火牆在你的主機和中央系統Log Service器之間的防火牆)
下面我們需要指定一些規則來告訴rSyslog在哪放輸入事件。如果你不添加任何規則,輸入事件將按照本地的規則進行處理,並且與本地主機的事件交織在一起。我們需要在上面添加節之後和本地處理系統日誌之前來正確的指定這個規則,例如:
if $fromhost-ip isequal '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 $fromhost-ip startswith '192.168.' then /var/log/192.168.log& ~
這裡我們用192.168.*替代了以這個為開始的所有IP地址,寫入到/var/log/192.168.log檔案中。你還可以看到一些其它的過濾。
你將需要重啟這個rsyslog服務來啟用我們所做的新的配置:
$ sudo service rsyslog restart
現在,對於發送方的主機,我們還需要對檔案rsyslog.conf進行一些更改,在檔案的頭部,添加下面這行:
*.* @@192.168.0.1:10514
這是發送的所有事件,來自於所有原始碼和所有重要層級用*.*),通過TCP協議傳給IP地址為192.168.0.1的10514連接埠。你可是用你所在環境的地址來替換這個IP地址。要啟用此配置,你將需要重啟主機上的rSyslog。
你可以通過SSL/TLS更進一步地發送你的系統日誌。如果你在互連網上或其它網路間傳輸系統日誌,這也沒什麼壞處,你可能會發現這個的簡單說明。
現在,如果給你的組態管理系統如果不使用這個,你可以試一試Puppet或Cfengine工具)添加這個配置,然後,您可以用適當的系統日誌來有效地配置每台主機,以確保你的日誌將被發送到中央系統Log Service器。