ossec主要功能介紹

Ossec 主要功能

OSSEC是一個開源的入侵檢測系統,它可以執行LOG分析,完整性檢測
,windows註冊表監控,rootkit檢測,實時報警及動態響影。

完整性檢測

Syscheck是OSSEC內部完整性檢測進程的名稱。它週期性檢查是否有任何配置文件(或者windows註冊表)發生改變。
在網絡中有許多類型的攻擊和攻擊載體,說起這些攻擊,有一種攻擊是很特別的,他們留下一個跟蹤程序,並總是想盡方法改變這個系統。它們用病毒修改一些文件,並破壞系統的完整性。

完整性檢查是入侵檢測系統的一個重要組成部分。當系統的完整性被改變時它能夠通過比較文件的MD5校驗各發現。

它的工作方法是:“代理每幾個小時掃描一次系統,併發送所有的校驗和到
server端。Server端存儲這些校驗和文件並查找他們的不同。如果發現任何改變將會發送報警。

  • 多長時間運行一次
    默認每6小時運行一次,但是這個頻率可以自己設定。
  • 數據存放位置
    在server端的/var/ossec/queue/syscheck
  • CPU使用情況
    慢慢地進行掃描,以避免使用過多的CPU /內存。
  • 如何處理誤報
    文件能夠通過手工指定配置文件或使用規則到忽略不記,默認一個文件修改超過3次會自動忽略。

配置文件位於 /var/ossec/etc/ossec.conf。

使用這個選項增加或者移除被監控的目錄(目錄這間用逗號分開)所有的文件和子目錄也會被監控。沒有目錄的驅動器字母是無效的。至少“。”應包括(D:.)。
默認:/etc,/sur/bin,/usr/sbin,/bin,/sbin 

Attributes: 屬性

  • realtime: Value=yes (啓用實時、連續的監控)
  • report_changes: Value=yes (文件改變比較報告,只能用文本文件)
  • check_all: Value=yes(所有下面的check_*選項共同起作用)
  • check_sum: Value=yes (通過檢查文件的md5哈希值和SHA1安全算法來檢查文件的完整性)
  • check_sha1sum: Value=yes (通過SHA1安全算法檢查文件的完整性)
  • check_md5sum: Value=yes (通過檢查文件的md5哈希值檢查文件的完整性)
  • check_size: Value=yes (檢查文件大小)
  • check_owner: Value=yes (文件所有者檢查)
  • check_group: Value=yes (文件和目錄所屬的用戶組檢查)
  • check_perm: Value=yes (文件和目錄權限檢查)
  • restrict: Value=string (文件內容中包含文件名的字符串將限制檢查。)
  • ignore (列出的文件和目錄將不被檢查)
  • frequency (syscheck多長時間執行一次,默認是21600秒,也就是6個小時)
  • scan_time (掃描系統的時間格式)
  • scan_day (在每週的那一天執行掃描)
  • auto_ignore (指定忽略頻繁改變的文件)
  • alert_new_files (指定新文件被創建時是否報警)
  • scan_on_start (syscheck啓動後是否立即做第一次掃描。)
  • windows_registry (註冊表監控)
  • registry_ignore  (不監控列出的註冊表條目)

例子

提供一個要被監控的目錄和文件列表,check_all 選項會檢查文件的md5, sha1,owner,和權限。例如:

<syscheck> 
<directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> 
<directories check_all="yes">/root/users.txt,/bsd,/root/db.html</directories> 
</syscheck>  

如果不想監控某些文件和目錄,可以用ignore選項(或者 registry_ignore 爲windows註冊表輸入)

<syscheck> 
<ignore>/etc/random-seed</ignore>   
<ignore>/root/dir</ignore> 
<ignore type="sregex">.log$|.tmp</ignore> 
</syscheck>  

在ignore選項,這個類型屬性可以設置sregex指定一個正則表達式語法。

<syscheck> 
<ignore type="sregex">^/opt/application/log</ignore> 
</syscheck>   

一個本地規則可以更嚴格的修改你想要更改的指定文件和目錄。

<rule id="100345" level="12"> 
<if_matched_group>syscheck</if_matched_group>   
<match>/var/www/htdocs</match> 
<description>Changes to /var/www/htdocs - Critical file!</description>
</rule>  

在上邊的例子中,當htdocs directory目錄中的文件有改變時將會產生一個高嚴重級別的報警。
實時監控:
在linux 和windows中OSSEC支持實時監控文件完整性檢查(linux內核2.6.13以上板本支持)
配置很簡單,在directories選項那裏你可以指定要監控那些文件和目錄,增加realtime=”yes”到啓用。

<syscheck> 
<directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>     
<directories check_all="yes">/bin,/sbin</directories> 
</syscheck>  

在這個例子中,目錄/etc, /usr/bin and /usr/sbin會被實時監控,同樣的方法也實用與windows。
提示:實時監控並不會立即開始。首先ossec-syscheckd需要掃描文件系統並添加每一個了目錄到實時隊列。要完成這些工作需要30分鐘時間。
等待log文件出現如下信息:
“ossec-syscheckd: INFO: Starting real time file monitoring”

註解:實時監控僅對目錄有效,所以你可以監控 /etc 或者c:\program files 目錄,但不能是個別的文件,像/etc/file.txt。

比較不同並生成報告:
在linux 和unix系統比較所後的改變生成一個文本文件,OSSEC支持發送比較報告, 
配置syscheck顯示文件比較的不同很簡單,添加report_changes=”yse”到directories選項。

<syscheck> 
<directories report_changes="yes" check_all="yes">/etc</directories>     
<directories check_all="yes">/bin,/sbin</directories> 
</syscheck>  

怎樣使syscheck立即開始掃描系統?
運行代理控制工具使其立即開始完整性掃描(-a 選項使所有代理開始運行,-u選項可以指定某個代理ID。

# /var/ossec/bin/agent_control -r -a 
# /var/ossec/bin/agent_control -r -u <agent_id>   

代理控制參數選項:

-h              顯示幫助消息 
-l              列出所有可能的代理  
-lc             列出活動的代理 
-i <agent_id>   獲取代理的相關信息 agent_id 
-r              運行代理中的integrity/rootcheck檢查,要和-u或-a 一起使用。 
-a              對所有代理起做用 
-u <agent_id>   <agent_id>預先指定代理ID號  

當啓動ossec時,告訴syscheck不要對系統進行掃描:
在ossec.conf中指定 選項爲“no”。

怎麼從syscheck中排除一個頻繁更改的文件?
在選項設定要排除的目錄文件,或者創建一個簡單的本地規則。

下面的這個例子將從mswin1和ubuntu-dns代理中排除etc/a , /etc/b 和一個目錄 /etc/dir。

<rule id="100345" level="0" >     
<if_group>syscheck</if_group> 
<description>Changes ignored.</description>     
<match>/etc/a|/etc/b|/etc/dir</match>     
<hostname>mswin1|ubuntu-dns</hostname>
</rule>  

在檢測到數據據改變後怎麼獲取詳細的報告?
Syscheck_control工具
Syscheck_control提供了一個管理和查看數據庫的接口。
Syscheck_control參數選項 

-h             顯示幫助消息 
-l             列出可用的代理 
-lc            列出當前活動的代理 
-u <agent_id>  更新(清除)指定代理的數據庫, 
-u all         更新(清除)所有代理的數據庫, 
-i <agent_id>  列出指定代理的數據庫 
-r –i          列出windows代理 中註冊表改變的數據 
-f <file>      用 –i 參數, 列印一個關與修改文件的信息。 
-z      
-d             用 –f 參數,忽略該文件 
-s             輸出到CVS

Rootcheck

OSSEC HIDS會在每個安裝了代理的系統運行rootkit檢測。Rootkit發現引擎每過120分鐘會去探測任何可能已經安裝的rootkit.. 和log分析及安全性檢測一起使用,OSSEC HIDS將是一個強有力的監控解決方案。

讀這個rootkit_files.txt文件,其中包含了常被它們使的用文件和rootkits的基本數據。它將統計每一個指定的文件。我們使用所有這些系統調用中,有一些kernel_level級別的rootkits從系統調用隱藏了一些文件。我們償試更多的系統調用到更好的發現。這種方法更像需要不斷更新的返病毒規則。誤報的機會是非常的小,但是可以通過修改rootkits生成假的否定。

讀這個rootkit_trojans.tst文件,內含了一個用特洛伊文件簽名的基本數據。這種用特洛伊板本
修改二進制的技術過去常常被流行的tootkits使用。

掃描/dev目錄查找異常。這個目錄應該只有設備文件和makedev 腳本。很多rootkits使用這個目錄隱藏文件,這和技術能發現非公有的rootkits。

掃描整個系統文件查找不正常的文件和權限問題。Root用戶擁有文件的寫權限,給其它人是非常危險的。Rootkit發現會查找它們,隱藏的文件和目錄出會被檢查。

查找存在的隱藏進程,我們使用獲取SID並殺死SID檢查,是否有任何PID被使用。如果PID被使用,但PS不能看到它,說明它是kernel-level級別的rootkit或者是特洛伊板本的PS.我們也會驗證獲取的SID和kill輸出的是否相同。

查找隱藏的端口。我們使用綁定端口的方式檢查在系統中的每一個TCP、UDP端口。如果我們不能綁定這個端口,但是netstat不能顯示它,很可能系統中裝了roottkit。

掃描在系統中的所有接口,找出啓用雜亂模式的接口,如果IFCONFIG輸出不能顯示它, 很可能系統中裝了roottkit。

配置選項

這些配置選項可以在每個代理的ossec.conf文件中指定。除去server端的選項
auto_ignore 和alert_new_file,如果ignore是在sever端設置,所有代理將會使用相同的設置。
Base_directory 這個基本目錄將會增加下面的選項。

  •  rootkit_files
  •  rootkit_trojans
  •  windows_malware
  •  windows_audit
  •  windows_apps
  •  systems_audit

允許:默認目錄路徑:/var/ossec

Rootkit_files (這個選項可以更改tootkit數據庫文件的位置。)
Allowed: 帶有rootkit文件簽名的一個文件
Default:/etc/shared/rootkit_files.txt
Rootkit_trojans (這個選項可以更改tootkit trojans數據庫文件的位置。)
Allowed: 帶有TROJANS簽名的一個文件
Default:/etc/shared/rootkit_trojans.txt
scanall (告訴 rootcheck 掃描整個系統 (可能會誤報)。)
Default: no
Allowed: yes/no
frequency (多長時間運行一次)
Defaults: 36000 (10 hours)
Allowed: Time (in seconds)
disabled (禁用rootcheck執行)
Default: no
Allowed: yes/no

日誌監控、分析

在OSSEC內部有log收集和log分析進程,日誌分析過程中,首先要收集log,然後對日誌進行分析(解碼,過慮,分類)。
一有事件寫入OSSEC立即會處理它們。OSSEC能讀內部日誌文件,windows日誌事件,和直接通過遠程系統接收的日誌。
程序監控
系統LOG是個好東西,在OSSEC中,我們把需要監控的目標當成一個日誌來看,並用適當的規則分析它。然而,有一些信息在日誌文件中沒有,但是我們還是想監控它。要解決這個缺陷,我們需要在OSSEC中增加監控命令輸出的功能,並且處理這些命令輸出的。 它們像log文件一樣。
配置實例:
監控磁盤空間利用率的一個例子
如果想要監控磁盤空間利用率,你需要設置一個crom任務,使命令df –h 的輸出保存到一個log文件(/var/log/df.log)並且配置OSSEC查看它。
至OSSEC 2.3版本起,你可以在OSSEC中直接監控命令。配置如下:

<localfile> 
<log_format>command</log_format>     
<command>df -h</command> 
</localfile>

在OSSEC中我們已經有了一個規則樣本(爲處理df –h 輸出),當任何分區達到100%你將能看到下面的輸出。

** Alert 1257451341.28290: mail - ossec,low_diskspace,    
2009 Nov 05 16:02:21 (home-ubuntu) 192.168.0.0->df -h  

Rule: 531 (level 7) -> "Partition usage reached 100% (disk space monitor)."  
Src IP: (none) 
User: (none)   
ossec: output: "df -h": /dev/sdb1 24G 12G 11G 100% /var/backup

C中我們已經有了一個規則樣本(爲處理df –h 輸出),當任何分區達到100%你將能看到下面的輸出。

監控平均負載的一個例子。
如果你想要監控系統的平均負載,你可以配置OSSEC監控“update”命令,並當值高於2時報警。

<localfile> 
<log_format>command</log_format>     
<command>uptime</command> 
</localfile>  

增加一個規則

<rule id="100101" level="7" ignore="7200">     
<if_sid>530</if_sid> 
<match>ossec: output: "uptime": </match>     
<regex>load averages: 2.</regex> 
<description>Load average reached 2..</description> 
</rule>  

當一個命令的輸出改變時報警 
如果你想要在一個命令的輸出發生改變時報警,在OSSEC規則中查看(check_diff)選項。 用一個例子來說明:當我們的server在監聽模式有一個新的端口被打開,創建一個規則使其報警。 
首先,在ossec.conf文件中,我們配置OSSEC運行netstat -tan |grep LISTEN命令。

<localfile> 
<log_format>full_command</log_format> 
<command>netstat -tan |grep LISTEN|grep -v 127.0.0.1</command> 
</localfile>  

而後,增加一個規則,當輸出改變的時候報警。

<rule id="140123" level="7">     
<if_sid>530</if_sid> 
<match>ossec: output: 'netstat -tan |grep LISTEN</match>     
<check_diff /> 
<description>Listened ports have changed.</description> 
</rule>  

注意我們使用的check_diff選項,第一次收到信息將存儲在內部數據庫。每次收到相同的數據,都和先前存儲的數據進行比較,如果輸出改變生成報警信息。

在這個例子中,我們用netcat工具連接23456端口,我們能得到如下報警信息。

OSSEC HIDS Notification. 
2010 Mar 11 19:56:30  

Received From: XYZ->netstat -tan |grep LISTEN|grep -v 127.0.0.1 
Rule: 140123 fired (level 7) -> "Listened ports have changed." 
Portion of the log(s):  

ossec: output: 'netstat -tan |grep LISTEN|grep -v 127.0.0.1': 
tcp4       0      0 *.23456           *.*               LISTEN 
tcp4       0      0 *.3306            *.*               LISTEN 
tcp4       0      0 *.25              *.*               LISTEN 
Previous output: 
ossec: output: 'netstat -tan |grep LISTEN|grep -v 127.0.0.1': 
tcp4       0      0 *.3306            *.*               LISTEN 
tcp4       0      0 *.25              *.*               LISTEN  

文件監控

OSSEC有一個名爲OSSEC- logcollector的監控新的事件日誌文件的進程,並將其轉發給其他進程進行分析。 OSSEC- logcollector的配置是在/ var / ossec/ etc/ossec.conf。 配置實例 
配置要監視的日誌文件很簡單。只要提供要監視的文件的名稱和格式: 
配置要監控的日誌文件很簡單。僅需要提供要監控的文件的名稱和格式:

<localfile> 
<location>/var/log/messages</location>     
<log_format>syslog</log_format> 
</localfile>  

監控windows 事件日誌的例子
要監控Windows事件日誌,您需要提供的格式爲“eventlog”並且位置是事件日誌的名稱。示例:

<localfile> 
<location>Security</location>     
<log_format>eventlog</log_format> 
</localfile>  

監控多個文件的例子
要檢查多個文件,OSSEC支持POSIX正則表達式。
例如,要分析/var/ log目錄下以a.log結尾的文件,使用以下配置:

<localfile>
<location>/var/log/*.log</location>     
<log_format>syslog</log_format> 
</localfile>   

監控以日期命名的日誌文件
對於日誌文件,根據日期改變,你也可以指定strftime的格式,以取代日,月,年等。例如監控日誌C:\ WINDOWS\ APP\ LOG-08-12 -15日誌,其中08是年,12是月份,15是天(並且日期每天更新)

<localfile> 
<location>C:\Windows\app\log-%y-%m-%d.log</location>     
<log_format>syslog</log_format>
</localfile>  

ossec主要功能暫且介紹這麼多,更多請參照:http://www.ossec.net/doc/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章