以開源碼實作即時登入監測系統

2011-04-05
身為部門網路管理者,最怕的就是簽收紅色卷宗的公文,因為公文裡面往往是所管轄的主機系統因對外攻擊而遭到檢舉,而且大部分的情況都是該系統已遭到入侵。有此可見,將駭客隔絕於系統之外是何等之重要。
前一陣子,筆者公司一台內部管轄的主機因持續地對外發動暴力猜測密碼攻擊而被人檢舉,在經過抽絲剝繭後,發現是因為該台主機內一個使用者的帳號和密碼遭到破解而被放置一個暴力猜測密碼的程式,持續地對外進行暴力猜測密碼的攻擊。  

檢視整個事件,本部門對於資安工作算是相當的重視,不但在系統最外層部署防火牆,第二層還部署IPS/IDS(入侵偵測系統),甚至還部署時下最夯的WAF(應用網頁防火牆)避免因網頁設計不當所造成的資安漏洞,可是還是發生系統入侵的事件。  

這不僅讓人省思,傳統的資安設備還是有先天性的限制。以此次資安事件為例,起因是使用者的帳號密碼被破解,或許是他的密碼設定不夠強固而遭到破解,或者被社交工程騙走密碼,而這些漏洞都不是部署傳統資安設備可以解決的,因為傳統的資安設備並不會區分登入使用者是取得帳號密碼的駭客,或是正常的使用者。  

既然不能正常地辨別,那就必須記錄相關的登入資訊,以便事後追查,甚至更積極的是,當系統有人登入時,能夠在當下即時地以訊息通知管理者,以便即時進行確認。  

由於筆者所掌管的主機均為Linux系統,因此本解決方案僅適於Linux主機上。此解決方案希望能達到下列兩項功能:  

1. 當有人登入時,能將登入的相關資訊即時儲存至遠端的資料庫系統,以供備查。
2. 當有人登入時,能即時發出聲響提醒管理者,並以E-mail通知管理者。  

系統架構介紹 

在說明整個的系統流程之前,先行定義下列相關名詞:  

被監控主機 
在本主機上部署Logfmon、alert.pl、sqlinsert程式及email程式。其中,Logfmon為監控登入資訊的相關檔案,一旦發現有人登入,將在儲存登入資訊的檔案上產生一筆登入資訊,這在Fedroa系統上是置於「/var/log/secure」檔案內。當Logfmon發現有相關資訊便會呼叫sqlinsert桯式,將該筆紀錄儲存至資料庫主機上,並利用email程式發出E-mail通知管理者。最後,再利用alert.pl程式觸發告警訊息,讓告警主機發出三個嗶聲提醒管理者。  

告警主機 
此台主機主要功能在於發出三個嗶聲通知管理者,當被監控主機有人登入,管理者能便能即時進行確認。但在實務上,伺服器主機通常都位於機房內,如果由伺服器主機發出警告聲,將無法發揮提醒管理者注意,但伺服器主機與管理者若相距不遠,則可以直接由伺服器主機發出警告聲響,而不需要告警主機。  

資料庫主機 
儲存登入相關資訊的資料庫系統,管理者可自行撰寫管理程式來管理相關資訊。  

▲圖1 監控流程。

整個監控流程可參考圖1,進行步驟如下所述:  

1.遠端登入者利用SSH服務登入至被監控主機上。
2.登入的相關資訊會被記錄在「/var/log/secure」檔案。
3.Logfmon即時監控「/var/log/secure」檔案,並利用正規化表示法來比對新增的檔案內容是否符合使用者定義的規則樣式。若符合規則樣式,即將該筆紀錄相關的資料如來源IP和登入帳號,以sqlinsert(自行撰寫的程式)將登入相關的資訊寫入遠端的資料庫主機,以供管理者備查。
4.比對到符合的樣式後,除了將資料寫入遠端的資料庫主機外,還可利用alert.pl(自行撰寫的程式,其利用Expec t技術,Expec t是一種互動式的程式)觸發遠端主機上的alert程式,在此為觸發電腦三個嗶聲以提醒目前有人登入。最後,再將相關的登入資訊以E-mail通知管理者。(更多精彩文章詳見網管人第63期﹚


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!