此文分為四個部分
自行撰寫syslog server建立資訊安全控管中心 #1 -- 前言及syslog介紹
自行撰寫syslog server建立資訊安全控管中心 #2 -- 架構和作法
自行撰寫syslog server建立資訊安全控管中心 #3 -- 程式下載和安裝
自行撰寫syslog server建立資訊安全控管中心 #4 -- 過濾條件設定
3. log server的架構和作法
3.1 程式要達成的功能
程式應具備有以下的功能:
(1) 能對syslog 進行字串的分析並存入資料庫:這是程式要達到的最低需求。
(2) 要能分析並自動判斷封包來源:對於未記錄到的syslog 欄位,程式要能自動針對 syslog 來源進行解析。
(3) 能同時監聽多個 UDP 埠:由於各個網路設備或伺服器能送往的目的 UDP 埠都有其限制,所以程式必須同時能同時監聽多個 UDP 埠。
(4) 能過濾篩選送來的 syslog:程式必須要能依管理者的需求過濾掉不必儲存的 syslog,這個功能必須要能夠隨主機不同而調整,而非一體適用。
(5) 要能統計篩選掉及未篩選的 syslog 的流量:針對功能(4),程式要能統計並記錄已篩選或未被篩選的 syslog 的流量。
(6) 要能針對特定條件進行報警的功能:特定條件例如五分鐘時間內,發生了10次的error等級錯誤等,會將訊息以Email通知管理者。
(7) 能依伺服器及等級進行製表:程式要能依伺服器或等級分類來製表。
(8) 要能支援 Windows EventLog :要能正確分析並取得 windows 的eventlog,將windows機器整併進來,並且要能解決中文編碼的問題。
(9) 要能提供網頁的管理畫面:最低需求是要有網頁的顯示畫面。
3.2 系統架構
記錄伺服器能將收錄進來的syslog進行過濾,濾掉不重要的訊息後將記錄存至資料庫,此外,並繪製圖表及將異常的記錄內容通知管理者,其功能性架構圖如下:
3.3 設備的設定
各個設備上只要能支援 syslog 的匯出,則可將syslog藉由網路送至log server,以下是各個設備的設定。
(1) CISCO 6509
中心的CISCO 的 ISO版本12.2(33)SXH4, RELEASE SOFTWARE (fc1)
記錄有關的參數
logging userinfo
logging buffered 16384 debugging
no logging console
只記錄等級warning (含)以上的等級
logging source-interface Vlan2
將記錄丟至記錄伺服器
CISCO IOS可以下 show logging指令查看記錄的狀況:
Syslog logging: enabled (0 messages dropped, 2045 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering disabled)
Console logging: disabled
Monitor logging: level debugging, 0 messages logged, xml disabled,
filtering disabled
Buffer logging: level debugging, 855698 messages logged, xml disabled,
filtering disabled
Exception Logging: size (4096 bytes)
Count and timestamp logging messages: enabled
Trap logging: level warnings, 779473 message lines logged
Logging to 163.17.40.30, 779473 message lines logged, xml disabled,
filtering disabled
.... 以下略 .....
(2) CISCO PIX
CISCO PIX 可以由IOS下達指令:
logging enable
logging timestamp
logging trap errors
logging history warnings
logging asdm alerts
logging facility 23
logging host dmz1 log 17/5144
最後一行是設定到log server,17代表是udp,由於PIX的網頁介面只接受大於1024<10000 的埠號,所以我們設定5144是目的port,為避免出錯,我們採用網頁介面管理方式設定。
(3) LINUX 及 FREEBSD 的syslog
在 LINUX 及 FREEBSD 原生的 syslogd 上的設定非常的簡單,操作上只需要花數十秒就完成了。
修改 /etc/syslog.conf ,加入這一行
(4) Dlink switch
enable syslog
config system_severity log information
config system_severity trap information
create syslog host 1 severity all facility local2 udp_port 51444 ipaddress 163.17.40.30 state enable
上面可以看到他指定的 udp_port 為51444,因為他設定時不允許目的埠號低於10000,不過還好我們撰寫的 log server 可以設定同時聆聽任意port 號。
(5) Syslog-ng
伺服器上若有安裝 syslog-ng client,則送出的syslog 的格式會相當的整齊,在判讀上容易許多,只可惜安裝上稍微麻煩,設定上可以參考以上設定:
destination log_serv { udp("163.17.40.30" port(5144)); };
log { source(s_sys); filter(not_syslog_cron); destination(log_serv); };
上方可以看到在 client 的部分設了一個filter,這是syslog-ng 的功能,我們可以拿掉這些過濾,直接交由log server處理就好。
在freebsd 上的 source 只要將 s_sys 改為 src ,其餘不變:
(6) Windows Server 2003
在第2章第4小節,我們有提到兩個將event log 轉換為 syslog 的程式:evesys - Eventlog to Syslog Utility, winlogd - Windows EventLog to Syslog Service,這兩個程式對於中文語系的Windows event log 會產生亂碼。還好兩個都有提供原始碼,所以我們決定採用 winlogd,並著手修改原始碼使他送出的 syslog 可以看到正常的中文字,以下是修改完畢後由我們撰寫的 syslog server上收錄到的 windows 記錄,可以看到中文字已經不再是亂碼:
<155>Dec 14 16:00:35 spade TermServDevices[1111]: 無法辨識印表機 HP Color LaserJet 5500 PCL6 所需的驅動程式 HP Color LaserJet 5500 PCL6。在您重新登入前,請連絡系統管理員來安裝驅動程式。
winlogd 中文化程式下載按這裡。
安裝方法不會太困難,只要在 console(dos)下執行 winlogd -i 即可,設定只要修改 windows registry 即可:
"Facility"="local3" /* Facility to send logs as */
"Port"=dword:00000202 /* The UDP port to send to, 514 being the syslog default */
"Server"="163.17.40.30" /* Change to match your configuration */
啟動後在服務中即可看到 winlogd 這個服務
下一單元 [#3 -- 程式下載和安裝]