asql是一種文字型的解析工具,可以協助管理員從Apache網站伺服器內龐雜的Log記錄堆中找出有用的資訊,例如可以揪出不請自來的惡意攻擊,提早做出防範或補救措施。
網站管理者的職責,除了維護網站伺服器順暢外,另一個相當重要的日常工作就是定時地查看網站伺服器的Log記錄。從Log記錄中可以得知網站更多詳盡的資訊(甚至可從中看出是否曾遭遇惡意的攻擊),但相信大部分的網站管理者都不會想要去查看網站的Log記錄,原因是隱藏在檔案中的Log記錄,如果沒有一套適當方法解析,是很難從中看出端倪的。
對此,這裡將介紹一套文字型的解析工具asql(官方網址為http://www.steve.org.uk/Software/asql/),可允許使用者以資料庫的方法利用SQL指令來解析Apache網站伺服器所產生的Log記錄。
什麼是asql
asql是一套以Perl語言所寫成的工具,可讓使用者以SQL指令解析Apache所產生的網站Log。在安裝asql軟體之前,必須先行安裝所需要的套件,以下示範所需的執行步驟,這裡以Centos 7為例。
首先安裝SQLite相關軟體。asql會將Log記錄暫存於Berkeley DB中,Berkeley DB是一種資料庫軟體:
然後安裝Readline套件,提供使用者在asql的環境中可利用方向鍵來重現之前所執行命令的功能:
緊接著執行如下的指令,下載Perl版本的Readline套件:
隨即解壓縮,然後執行組態、編譯以及安裝程序:
在安裝好所需的套件後,可至asql官方網站(http://www.steve.org.uk/Software/asql/)下載最新版本的asql(本文所使用的版本為1.7)。在解壓縮後,直接執行如下指令:
在編譯成功後,即會產生名稱為「asql」的主要執行檔。
在此要特別說明的一點是,asql官方網站上的文件說明了1.7版所能夠解析的Apache Log記錄為common格式的記錄(Log),但經過筆者實際測試,結果卻發現其程式碼所能解析的格式應為combined格式。可以檢查httpd.conf,確認所記錄的格式為combined或common格式,如圖1所示。
|
▲圖1 確認自身所記錄的格式是combined或common格式。 |
一般Apache所預設的記錄Log格式為common格式,如果未曾手動更改記錄格式,即應為common格式。如果想要解析common格式的記錄時,可直接更改asql的程式碼,如圖2所示,更改$parse_combined的正規表示法(Regular Expression),使其符合common格式。
|
▲圖2 修改asql的程式碼。 |
在測試過程中,筆者也發現,此版本的asql無法解析到Log記錄中的HTTP存取方法(Method),可以更改程式碼來取得方法的資訊,修改資訊如圖3所示(新增$method)。
|
▲圖3 更改程式碼來取得方法的資訊。 |
接著,繼續找到如圖4的程式碼,將$protocol改為$method。
|
▲圖4 將$protocol改為$method。 |
在完成修改後,執行「asql」即可進入asql的工作環境,可利用「help」指令來顯示所支援的指令(圖5)。