如何用rsyslog確保遠(yuǎn)程Linux日志安全?
在最近版本的紅帽企業(yè)級(jí)Linux(RHEL)中用到了rsyslog。雖然這個(gè)日志解決方案和傳統(tǒng)的BSD日志服務(wù)syslogd類似,但它還提供一些功能來保證日志信息到遠(yuǎn)程日志主機(jī)的可靠傳輸。本文中,你將會(huì)看到這些功能。
BSD syslog具有中央日志主機(jī)的可配置性。這在嚴(yán)肅執(zhí)行日志管理的系統(tǒng)中是個(gè)不錯(cuò)的主意。在大型環(huán)境中,如果日志文件通過多個(gè)主機(jī)傳播,它們追蹤起來非常困難。但是,傳統(tǒng)的syslog只提供通過UDP的遠(yuǎn)程記錄,它不追蹤連接和沒有保證的主機(jī)上的日志信息到達(dá)。Rsyslog解決方案在三個(gè)遠(yuǎn)程日志解決方案中提供選擇:UDP、TCP和***開發(fā)的RELP協(xié)議,RELP協(xié)議只能用于***版本的rsyslog。
當(dāng)發(fā)出數(shù)據(jù)包時(shí),UDP沒有建立連接,這意味著這些信息的發(fā)出者只能相信該信息會(huì)到達(dá)其目的地。TCP協(xié)議在數(shù)據(jù)與其它主機(jī)交換之前就建立了連接。該解決方案簡單且高效:TCP信息的接收者告知已收到,所以發(fā)信人在信息到達(dá)時(shí)會(huì)得到確認(rèn)。由于其廣泛的可用性和周密的信息管理,TCP成為更受青睞的選擇。RELP協(xié)議相對來說還很新且沒有普遍應(yīng)用,這也是現(xiàn)階段要避免使用的原因。
要啟用UDP或者TCP日志,你需要啟用一個(gè)特定模塊。Rsyslog使用輸入模塊和輸出模塊來啟用來自特定來源的日志信息接收并發(fā)送日志信息到特定輸出目的地。要確保該中央日志主機(jī)能通過TCP接收日志信息,你需要在它的etc/rsyslogd.conf中包括以下兩行:
$ModLoad imtcp
$InputTCPServerRun 514
這幾行的***行負(fù)載輸入模塊tcp,第二行告訴rsyslog聽從端口514上傳入的TCP連接。接著,告訴主機(jī)必須將信息發(fā)送到遠(yuǎn)程主機(jī)。接下來的命令告訴本地主機(jī)將所有日志信息發(fā)送到一個(gè)中央日志主機(jī),它在IP地址192.168.0.1下可用:
*.* @@192.168.0.1
在這一行中使用了syslog風(fēng)格的設(shè)施和優(yōu)先規(guī)定:設(shè)施*(發(fā)送到rsyslog程序的每一個(gè)事件)發(fā)送所有符合所有優(yōu)先權(quán)的事件到中央日志主機(jī)。指示@@清楚指出,該日志主機(jī)聽從TCP端口上接下來的信息。做為選擇,如果你必須通過UDP發(fā)送信息,你可以使用@192.168.0.1。
如果你想運(yùn)用新的RELP解決方案,你可以在中央日志主機(jī)上負(fù)載模塊,通過在其rsyslogd.conf上囊括以下命令行:
$ModLoad imrelp
$InputRELPServerRun 2514
想要通過RELP發(fā)送信息,你需要在發(fā)送主機(jī)上添加以下命令:
*.* :omrelp:192.168.0.1:2514
注意,想要將它發(fā)送到RELP目標(biāo)主機(jī),需要使用一個(gè)無特權(quán)的數(shù)字,因?yàn)闆]有為RELP協(xié)議預(yù)留專門端口。
老式的syslog后臺(tái)程序只能通過UDP發(fā)送日志信息。在新的rsyslog日志后臺(tái)中,你可以在UDP、TCP和新的RELP協(xié)議中做選擇。使用TCP或RELP更好地保證了該日志信息會(huì)到過目的地,兩者中的任一種都比以前使用方法構(gòu)建的日志環(huán)境要更為安全。
【編輯推薦】