fail2ban提供多種網路服務的惡意樣式,當所監控的Log檔案內出現了預先定義的惡意樣式,就立即執行預先設定過的動作,以達到自動發現惡意行為並自動處理的功能。
對於系統管理者而言,主機上的Log檔案是了解系統狀況的最佳管道,其內容之豐富可說道盡了系統所有的情況,但也因其過於豐富煩雜的特性,相信沒有一個系統管理者能夠完全掌握其中的內容,因此常需要自動化工具的幫忙,利用樣式比對的方式,在定義好相關的樣式後能即時監控相關的Log檔案。
在本文中,樣式指的是惡意來源IP攻擊網路服務時所產生的Log樣式,簡稱為惡意樣式。
一旦所監控的Log檔案中發現有預先定義的惡意樣式出現(例如通知管理者或封鎖該來源IP等動作),就執行相關動作來幫助系統管理者;而在有潛在的危機出現時,例如有人正對自身系統進行暴力攻擊等行為,即能自動啟動相關動作的處理。
本文所介紹的fail2ban(官方網址為www.fail2ban.org)就是類似的軟體,提供多種網路服務的惡意樣式,當所監控的Log檔案發現了預先定義的惡意樣式,就立即自動執行預先所設定的動作,以期達到自動發現惡意的行為並自動進行處理的功能。
簡介fail2ban
fail2ban是一種利用Python語言所撰寫而成的主機型入侵偵測系統(HIDS),它利用即時監控主機系統上Log檔案的方式,根據所設定的惡意樣式來比對所監控的主機Log檔案內容是否有符合所設定的惡意樣式。
如果在一定的時間區間內(例如5分鐘內),同樣的一個來源IP符合所設定的惡意樣式超過所設定的門檻值(例如3次),即判定該來源IP為一惡意的IP,並且自動觸發相關的動作(Action),例如可呼叫iptables來暫時封鎖該來源IP或者寄發電子郵件通知管理者。
fail2ban的主要功能如下所述:
·支援大量的網路服務:fail2ban可偵測包括sshd、apache、qmail、proftpd等常見的網路服務所提供的Log檔案。
·支援多樣化的動作:提供iptables(知名的防火牆軟體)、shorewall(iptables第三方工具)、電子郵件通知。
安裝fail2ban
安裝fail2ban之前,系統必須先安裝Gamin軟體(一種自動監控檔案內容變化的工具),使用指令「yum install gamin*」安裝即可。
接下來,至fail2ban官方網址下載原始碼(在此使用的版本是0.8.14)。解壓縮後,利用指令「setup.py install」即可自動安裝。
成功安裝fail2ban之後,便會產生如下的主執行檔(主要利用fail2ban-client來控制fail2ban的運作):
·fail2ban-client:客戶端軟體,使用者可利用此執行檔,啟動或關閉fail2ban服務。也可以利用「-h」參數來取得更詳盡的執行參數。
·fail2ban-server:fail2ban主要服務的執行檔。
值得注意的是,fail2ban會將組態檔預設存放在「/etc/fail2ban/」目錄下,其中有兩個子目錄需要留意。「/etc/fail2ban/filter.d/」目錄下放的是各種網路服務所定義的惡意樣式資訊。
若讀取該目錄下的各檔案內容,會發現都是相關的正規表示法資訊。而「/etc/fail2ban/action.d/」目錄下存放的是當偵測到惡意攻擊時所要採取的行動,如果讀取該目錄下的各檔案內容,將發現都是相關的指令執行資訊。
fail2ban主要的組態檔有兩個,以下詳細加以說明。
fail2ban.conf
fail2ban.conf是主要的組態檔,主要是用來設定fail2ban執行時的一些預設組態,fail2ban.conf的結構如下所述(#之後為注解),而其相關組態說明如表1所示。
表1 fail2ban.conf相關組態