[PHP]網站安全的監控平台—PHPIDS

有關網頁及相關語法的討論
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

[PHP]網站安全的監控平台—PHPIDS

文章 tim »

原始文章連結: http://newsletter.ascc.sinica.edu.tw/ne ... p?nid=1324

網站安全的監控平台—PHPIDS

張智翔

前言

 資訊安全的軟硬體發展,逐漸趨向多元化,除了有元老級的防毒軟體(Antivirus)與防火牆(Firewall)防護主機外,其他還有入侵偵測系統(IDS)、誘捕入侵偵測系統(Honeypot)、流量分析系統、log檔分析系統等方式,以抵禦或偵測各種可能的資訊安全事件(如病毒、木馬程式、DOS攻擊);而目前最常使用的偵測防禦系統非IDS莫屬。

 IDS為一種對網路流量進行即時檢測的系統,當發現可疑的傳輸(例如:DOS攻擊),IDS會立即發出警報或主動防禦;但由於近幾年的攻擊型態已經慢慢轉變在應用層上發生,如XSS與SQL Injection等Web端的攻擊手法,傳統的IDS已無法有效偵測。

 今(2007)年6月網路上釋出了一套免費的Web IDS系統,取名為『PHPIDS』,是一套供 PHP 開發環境使用的入侵偵測系統,它是利用事先定義的規則檔,逐項比對使用者的輸入資料,來達到預防入侵的效果。以下筆者將說明安裝方式與試用的結果。

 請至「PHPIDS下載頁面」下載最新版本(目前最新的版本為0.4.2),解壓縮之後共有三個資料夾:docs、lib、tests。其中,「lib」資料夾存放其核心的程式碼,包括自訂規則檔與log暫存檔;「docs」資料夾則存放說明文件,其中也包括範例檔案。使用方法只要將lib資料夾複製到網頁伺服器的目錄底下,再將「docs/examples」內的example.php檔案放在與lib資料夾同一個目錄下,使用者即可對example.php更改檔案名稱。接著,請開啟example.php找到如下程式碼:

set_include_path(
get_include_path()
. PATH_SEPARATOR
. 'lib/'
);

 將第四行的程式碼改成與lib資料夾相對的位置(因為筆者是將lib與example.php放置在同個目錄之下,所以將其設成'lib/'),最後只要將網站內的所有php的檔案引用example.php,即可使用本監控平台。例如在index.php這個檔案的第一行加入:

include("example.php");

 以下筆者利用XSS與SQL Injection兩種不同的攻擊型態來對PHPIDS監控平台進行實驗。XSS是駭客利用網站上允許使用者輸入字元或字串的欄位插入HTML與Script語言,以達成其他正常使用者在觀看網頁的同時,瀏覽器會主動下載並執行部份惡意的程式碼,或被暗地裡導入到惡意的網站,而受到某種型態的影響;而SQL Injection所攻擊的目標並不是利用資料庫本身的問題,也不是針對作業系統或是網站的漏洞,而是利用驗證設計上的疏失進行攻擊。

 在程式設計師撰寫Web應用程式時,如果沒有對使用者的輸入做妥善的過濾與處理,那麼,程式便將使用者輸入的內容組合成查詢的指令,傳送給資料庫server執行;若使用者輸入之資料中含有某些對資料庫系統有特殊意義的符號或命令時,便可能讓使用者有機會對資料庫系統下達指令,因而造成入侵行為。與XSS相同的是,使用者都是利用Web的輸入欄位來執行;不同的是,SQL Injection會造成資料庫的損失或者遭竊取資料。
 
 攻擊的方式只要在有加入example.php的檔案之網址後方加上攻擊的字串,例如XSS攻擊:

index.php?<IFRAME
src="javascript:document.location.href='http://tw.yahoo.com';"></IFRAME>

 在網頁內則會出現如【圖1】偵測結果;若攻擊型態變更成SQL Injection,則會出現如【圖2】的結果。


圖1 偵測XSS攻擊結果


圖2 偵測SQL Injection攻擊結果

 首先,系統會自動統計受到影響的規則條件共有多少個;其次,是列出偵測出哪些類別的攻擊型態(如xss表示偵測出Cross Site Scripting攻擊、csrf表示偵測出Cross-site request forgery、sqli表示偵測出SQL指令等),最後是條列式細部的偵測結果。另外,當系統偵測出具有攻擊性語言的字串時,會自動儲存至lib/IDS/tmp的phpids_log.txt紀錄,以方便系統管理者進行監控。


圖3 XSS之規則檔

 PHPIDS之規則檔放置於「/lib/IDS/default_filter.xml」,如【圖3】所示其中之一的規則,利用正規表示式(Regular Expression)描述,並將所有描述存成XML檔案格式;官方網站會不定時地更新規則檔,可有效防禦新一波的Web攻擊。另一方面,如果不想使用 PHPIDS,此處所提供的規則,也許可供開發人員的過濾程式參考。

結語

 PHPIDS提供一個免費的程式碼,供Web開發人員參考,並可有效地杜絕Web的攻擊手法,同時也提供即時監控的平台,供網站管理者查閱是否受到駭客攻擊。但目前最大的缺點在於,網站下所有的php程式檔都需要加入example.php,才能將攻擊隔絕於外,且每個程式檔加入之後是否會對網站效能有所影響,也是開發人員必須考量的,有興趣的讀者,不妨下載安裝藉以加強Web的安全性。
多多留言, 整理文章, 把經驗累積下來.....
回覆文章