AIDE(Advanced Intrusion Detection Environment,高級入侵檢測環境)是個入侵檢測工具,主要用途是檢查文檔的完整性。
基本介紹
- 中文名:aide
- 外文名:Advanced Intrusion Detection Environment
- 別名:高級入侵檢測環境
- 用途:檢查文檔的完整性
介紹,快速安裝,配置編譯選項,配置,組定義,宏,例子,使用,
介紹
AIDE能夠構造一個指定文檔的資料庫,他使用aide.conf作為其配置文檔。AIDE資料庫能夠保存文檔的各種屬性,包括:許可權(permission)、索引節點序號(inode number)、所屬用戶(user)、所屬用戶組(group)、文檔大小、最後修改時間(mtime)、創建時間(ctime)、最後訪問時間(atime)、增加的大小連同連線數。AIDE還能夠使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每個文檔的校驗碼或散列號。
在系統安裝完畢,要連線到網路上之前,系統管理員應該建立新系統的AIDE資料庫。這第一個AIDE資料庫是系統的一個快照和以後系統升級的準繩。資料庫應該包含這些信息:關鍵的系統二進制可執行程式、動態連線庫、頭文檔連同其他總是保持不變的文檔。這個資料庫不應該保存那些經常變動的文檔信息,例如:日誌文檔、郵件、/proc文檔系統、用戶起始目錄連同臨時目錄。
一旦發現系統被侵入,系統管理員可能會使用ls、ps、netstat連同who等系統工具對系統進行檢查,但是任何這些工具都可能被特洛伊木馬程式代替了。能夠想像被修改的ls程式將不會顯示任何有關入侵的文檔信息,ps也不會顯示任何入侵進程的信息。即使系統管理員已把關鍵的系統文檔的日期、大小等信息都列印到了紙上,恐怕也無法通過比較知道他們是否被修改過了,因為文檔日期、大小等信息是很容易改變的,一些比較好的rootkit能夠很輕鬆地對這些信息進行假冒。
雖然文檔的日期、大小等信息可能被假冒,但是假冒某個文檔的一個加密校驗碼(例如:md5)就很困難了,更不要說假冒任何AIDE支持的校驗碼了。在系統被侵入後,系統管理員只要重新運行AIDE,就能夠很快識別出哪些關鍵文檔被攻擊者修改過了。
但是,要注意這也不是絕對的,因為AIDE可執行程式的二進制文檔本身可能被修改了或資料庫也被修改了。因此,應該把AIDE的資料庫放到安全的地方,而且進行檢查時要使用確保沒有被修改過的程式。
編譯
快速安裝
假如您已安裝了任何所需的軟體,只要輸入以下命令,就能夠安裝好AIDE了。
#tar zxvf aide-版本號.tar.gz
#cd aide-版本號
#./configure
#make
#make install
獲取所需的軟體
在編譯安裝AIDE之前,應該首先獲取以下軟體:
ANSI C編譯器(例如:GCC)。
GNU Flex
GNU Bison
GNU Make
Aide原始碼
假如您想要mhash支持需要安裝mhash庫。
假如您想使用PostgreSql保存AIDE資料庫,需要安裝PostgreSql研發庫
然後,就能夠解壓aide原始碼包,準備安裝了
tar zxvf aide-版本號.tar.gz
配置編譯選項
下面,您就能夠使用configure腳本對各種編譯選項進行配置了。能夠輸入./configure --help命令獲得幫助信息。其中的大部分選項,您不必關心。一般只需要配置以下選項:
--with-mhash
使用這個選項加入mhash的支持。
--with-gnu-regexp
使用GNU正則表達式庫
--prefix=
改變默認的安裝路徑
--with-psql
加入對PostgreSQL的支持
編譯安裝
輸入make命令進行安裝,然後輸入make install命令將aide安裝到指定的目錄。
配置
接下來,您需要建立一個配置文檔。aide的配置文檔是aide.conf,其語法和Tripwire的配置文檔極為相似,Tripwire的配置文檔tw.conf能夠很輕鬆轉換為aide.conf。
aide.conf文檔中的內容是大小寫敏感的,而且開頭和結尾的空格都被忽略。
aide.conf文檔中有三種類型的語句:
配置選項
配置配置參數連同定義/取消定義變數。
選擇選項
選擇加入資料庫的文檔。
宏
這些選項中,只有選擇選項是必須的。以#開頭的行是注釋行,他們將被忽略。
配置選項
配置選項的一般格式是參數=值。
database
aide要讀的資料庫。只能有一個,假如定義多個,aide就會使用第一個,默認值是./aide.db。
database_out
要輸出的新資料庫。只能有一個,假如定義了多個,aide就會使用第一個,默認值是./aide.db.new。
verbose
輸出信息的級別。值能夠在0-255之間。這個參數只能被定義一次。假如運行aide時,使用了--verbose或-V命令行,aide就會使用這個參數定義的值。默認是5。在執行--check或--update操作時,假如這個值是20,aide就會輸出額外的報告信息。
report_url
報告信息從哪個URL輸出。這個參數能夠定義多個事例。aide會把輸出送到任何定義的URL。默認值是標準輸出(stdout)。
gzip_dbout
是否對輸出的資料庫進行壓縮。有效的值有yes、true、no、false。默認值是no。只有編譯時連線了zlib庫,這個選項才會生效。
組定義
假如參數不是上面的任何參數,AIDE就認為這是個組的定義。值就被認作是個表達式。表達式是如下格式:
|+ |-
請參考DEFAULT GROUPS關於默認預定義組的解釋。
有一個特別的組叫作ignore_list。這個預定義組列出不在最後的報告中顯示的組。
選擇選項
選擇選項有三種類型:regular、negative、equals。以/開始就是正則(regular)選擇選項;以!開頭就是否定(negative)選擇選項;以=打頭就是等於(equals)選擇選項。AIDE將把這些符號之後的字元串看作對文檔名(包括目錄)進行匹配的正則表達式。要獲得更深入的解釋,請參考配置選項。
宏
@@define VAR var
把變數VAR的值定義為var。
@@undef VAR
取消VAR變數的定義。
@@ifdef VAR,@@ifndef VAR
@@ifdef是個if狀態的開始,一個if狀態必須以@@endif宏結束。@@ifdef和@@endif之間的選項取決於變數VAR是否被定義。假如在@@ifdef和@@endif之間使用了@@else宏,就表示假如VAR變數已定義就使用@@ifdef和@@else之間的選項;否則就使用@@else和@@endif之間的選項。@@ifndef在邏輯上和@@ifdef相反的,用法差不多。
@@{VAR}
使用VAR變數的值代替@@{VAR}。假如變數VAR沒有定義就使用一個空字元串。
@@ifhost hostname,@@ifnhost hostname
用法和@@ifdef類似。檢查hostname是否等於運行AIDE的主機名。hostname是主機名,不包括域名。
@@else
if狀態else部分的開始
@@endif
if狀態的結束
URL
AIDE當前支持的URL如下。注意:輸入的URL不能和輸出的URL相同,反之亦然。
stdout,stderr
輸出到標準輸出設備或標準錯誤輸出設備
stdin
從標準輸入設備輸入
file://filename
從文檔filename輸入,或輸出到文檔filename。
fd:number
從文檔描述符number輸入或輸出。
aide的後續版本將會支持更多的URL,例如:email報告,syslog等。
DEFAULT GROUPS
AIDE默認的組有以下這些:
p 許可權
inode 索引節點
n 連線數量
u 用戶
g 用戶組
s 大小
m 最後一次修改時間
a 最後一次訪問時間
c 創建時間
S 檢查增加的大小
md5 md5校驗
sha1 sha1校驗
rmd160 校驗
tiger tiger校驗
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E 空組
> 增長的日誌文檔p+u+g+i+n+S
假如在編譯時,加入了mhash庫的支持,還能夠使用如下的組:
crc32 crc32校驗
haval haval校驗
gost gost校驗
例子
/ R
將機器上的任何文檔都加入資料庫。使用md5對文檔的許可權、索引節點、連線數量、用戶、用戶組、大小、最後修改時間連同創建時間進行校驗。
!/dev
忽略/dev目錄
=/tmp$
只把/tmp目錄加入到資料庫,不包括其子目錄。
ALL=p+i+n+u+g+s+m+c+a+md5+sha1+tiger+rmd160
定義了一個新的組。包括任何的屬性和任何的md校驗功能。
通常,進行配置時,要儘量忽略經常8變動的目錄和文檔,例如:臨時目錄、郵件spool目錄、日誌目錄、porc文檔系統、用戶起始目錄、WEB正文目錄連同其他經常變動的目錄和文檔。此外,要儘量包含任何的系統二進制文檔、庫文檔、包含文檔、系統源文檔。其他一些您不經常注意的文檔和目錄,例如:/dev、usr/man/*、/usr/包含在內。
注意:假如您只想包含單個文檔,就應該在表達式的結尾加$。例如:=/tmp$,表示只把tmp目錄加入,而不包括其子目錄。
使用
使用AIDE的第一件事當然是建立一個資料庫,以便將來檢查。這項工作要在系統或套用程式安裝完畢以後,要連線到網路上之前進行。能夠使用以下參數啟動AIDE完成這項工作:
aide --init
資料庫產生後一定要放到一個安全的地方。
aide有兩種參數:命令參數和選項參數,以下是aide的命令參數:
--check
檢查資料庫的一致性。需要一個初始化的AIDE資料庫。也是AIDE的默認命令選項。
--init
初始化一個資料庫
--update
檢查資料庫,並且以非互動的方式升級資料庫。輸入的資料庫和輸出的資料庫必須是不同的。
選項參數:
--config=configfile
指定configfile文檔作為配置文檔,不使用默認的./aide.conf。假如使用-,aide就從標準輸入中讀取。
--before=configparameters
在讀取配置文檔之前,首先處理configparameters指定的配置選項。
--after=configparameters
處理完配置文檔配置的配置選項以後,再處理configparameters配置的配置選項。
--verbose=verbosity_level,-V verbosity_level
控制aide信息顯示的冗餘程度。值在0到255之間。
--report=reporter,-r
指定報告輸出的URL。
--version,-v