自行撰寫syslog server建立資訊安全控管中心#2 -- 架構和作法

URL Link //n.sfs.tw/11440

2017-07-16 21:57:07 By 張○○

此文分為四個部分

自行撰寫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 count
logging userinfo
logging buffered 16384 debugging
no logging console

只記錄等級warning (含)以上的等級

logging trap warnings
logging source-interface Vlan2

將記錄丟至記錄伺服器

logging 163.17.40.30

CISCO IOS可以下 show logging指令查看記錄的狀況:

Router#sh 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下達指令:

name 163.17.40.30 log
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 ,加入這一行

*.*                        @163.17.40.30

(4) Dlink switch

Dlink 的交換器是我們單位普遍採用的交換器,其中具有網管型的交換器只需要照以下設定即可:
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 的格式會相當的整齊,在判讀上容易許多,只可惜安裝上稍微麻煩,設定上可以參考以上設定:

filter not_syslog_cron    { not (facility(syslog) or facility(cron)); };
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 ,其餘不變:

log { source(src); destination(log_serv); };

(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 即可:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winlogd\Parameters]
"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 -- 程式下載和安裝]