顯示具有 SYSLOG 標籤的文章。 顯示所有文章
顯示具有 SYSLOG 標籤的文章。 顯示所有文章

用 Tftpd32 接收 LINUX 送來的 SYSLOG

為了驗證機器可以送 System log 訊息到指定的 EMS server,只好先在自己的電腦上跑個 Syslog server 來收,這裡稟持本人愛用綠色軟體的習慣,推薦大家可以使用上一篇所介紹的 Tftpd32 來作為 Syslog server,有興趣可以去參觀一下(首頁在此)。而今天要驗證的 Agent 機器 OS 是 RHEL ES5.2,裡面就有 syslog Daemon 的 (service 的名稱就是 syslog 不是 syslogd 喔,待會兒要重啟服務時會用到) 所以不用另外安裝 Agent 程式。

待會兒要編輯 /etc/syslog.conf 這個主要的檔案,所以我們先列一下裡面的主要格式:
在 /etc/syslog.conf 裡的每一行都有兩個部分組成,一個是 "SELECTOR",另一個是 "ACTION"。整行組合起來就是指:當符合 "SELECTOR" 事件發生時,就採取 "ACTION" 所指定的方式來記錄這個事件。

而 "SELECTOR" 是由 facility.priority 組合而成的,其中 priority 是指事件的優先等級,分成八個不同的等級,依優先順序由低至高分別為:
debug --> info --> notice --> warn (=warning) --> err (=error) --> crit --> alert --> emerg --> panic (=emerg)。
至於 Facility 則是 syslog.conf 中用來描素事件產生子系統的關鍵字。這些在 syslog.conf 的 說明中都有提到,可以用 "man syslog.conf" 去看看詳細的說明。UNIX 系統中內定的 facility 基本上包括 auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、 security(same as auth)、syslog、user、uucp、local0 ~ local7 等。這些 facility 所代表的程式,隨著 UNIX 系統種類的不同,會有些差異,但大同小異啦。下面是 facility 的意義:
* auth, authpriv:與認證有關的系統,例如 login, su 等需驗證的服務
* uucp: UUCP系統
* daemon:與各個 daemon 有關的系統
* kern :核心(kernel)系統
* lpr:列印相關的系統
* mail:與郵件有關的系統
* news:與新聞群組有關的系統
* syslog:與 syslogd本身相關的系統
* user:一般使用者的系統
* local0 ~ local7:保留, 做為特別設定使用的
所以我們接著編輯 /etc/syslog.conf 檔案,在這裡我們只新增一行新的如下來做個測試:
[root@KHCDNSS01 named]# vi /etc/syslog.conf
kern.*;daemon.warn;auth,authpriv.notice;cron.err @10.19.0.194
這裡我準備將系統 kernel 的所有訊息以及各個 Daemon 在 Warning 等級以上,認證部分的訊息在 Notice 以上還有 Cron job 在 Error 等級以上的訊息都送出來,其中 @10.19.0.194 代表將前面所定義的訊息傳送到遠端的 syslog server (IP address: 10.19.0.194),也就是跑著 Tftpd32 的電腦囉~

P.S. 另外的應用啦:如果選端收 syslog 的機器安裝的 OS 也是 LINUX server 的話,那遠端機器上要多加一個動作:
編輯 vi /etc/sysconfig/syslog 檔案,將 SYSLOGD_OPTIONS="-m 0" 變更為 SYSLOGD_OPTIONS="-m 0 -r" (增加 -r remote) 參數 ,存檔,重啟 syslog service.
[root@KHCDNSS01 named]# vi /etc/syslog.conf
kern.*;daemon.warn;auth,authpriv.notice;cron.err @10.19.0.194
[root@KHCDNSS01 named]# service syslog restart
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
[root@KHCDNSS01 named]# service syslog status
syslogd (pid 15144) is running...
klogd (pid 15147) is running...
所以我們可以在 Syslog server (跑 Tftpd32 的那台機器啦) 上收到來自剛剛測試機器上 restart syslog daemon 的 kernel syslog 送過來如下圖所示:

讓我們再試一次關於 kernel 的 syslog,這次我們拿兩張網卡中的其中一張,將它重起看看會發生什麼事?(P.S. 這裡兩張網卡有做 channel bonding 所以我可以隨便把其中一張網卡 down 下來,如果你的環境不是這樣,就不要隨便拿網卡來玩喔,免得連不進去囉)
[root@KHCDNSS01 named]# ifconfig eth1 down; ifconfig eth1 up;
一樣到 Syslog server 上收到來自剛剛測試機器上 eth1 down 以及 up 後 kernel infomation 的 syslog 送過來如下圖所示:

接著,我們再做個小測試,在測試機器上面搞個 daemon 的 warning syslog 來玩玩,這裡我們拿 snmpd 來做範例:
[root@KHCDNSS01 named]# service dhcpd restart
Stopping dhcpd: [ OK ]
Starting dhcpd: [ OK ]
再回到 Syslog server 上收到來自剛剛測試機器上 restart dhcpd daemon 後在帶起 dhcpd daemon warning 的 syslog 送過來如下圖所示:

接著我們測試一下關於系統登入認證的 syslog,首先我們先測試 auth,authpriv.notice; 的這種設定方式,接著我們到另一台嘗試登入測試機器,並故意第一次敲錯密碼然後第二次敲正確的密碼登入再以 exit 登出測試機器,接著我們可以在 Syslog server 上發現只收到來自剛剛測試機器上 auth,authpri notice 關於有某個 user 從某一台機器嘗試登入失敗的 syslog 送過來,至於正確敲入密碼登入及登出的部分就沒有 syslog 送出了,如下圖所示:

[root@KHCBKPS01 ~]# ssh 10.15.25.13
root@10.15.25.13's password:
Permission denied, please try again.
root@10.15.25.13's password:
Last login: Thu Jun 4 18:54:37 2009 from 10.15.25.51
[root@KHCDNSS01 named]# exit
logout

Connection to 10.15.25.13 closed.
[root@KHCBKPS01 ~]#
再來我們再測試一下 auth,authpriv.info; 的這種設定方式,接著我們到另一台嘗試登入測試機器,重複剛才的測試步驟,接著我們就可以在 Syslog server 上收到來自剛剛測試機器上 auth,authpri information 關於有某個 user 從某一台機器嘗試登入失敗,然後正確登入以及登出的 syslog 送過來如下圖所示:

[root@KHCBKPS01 ~]# ssh 10.15.25.13
root@10.15.25.13's password:
Permission denied, please try again.
root@10.15.25.13's password:
Last login: Thu Jun 4 18:56:44 2009 from 10.15.25.51
[root@KHCDNSS01 named]# exit
logout

Connection to 10.15.25.13 closed.
[root@KHCBKPS01 ~]#
以上只是一些簡單的使用範例,至於實際組合,就看個人的需求自行變更囉~
(詳全文...)