天天看點

OSSEC-hids 主機入侵檢測系統概述常用的主機入侵檢測系統OSSEC

随着國家對網絡安全的重視,國内各個企業也開始在安全方面增加投入,我們公司也不例外。作為防守方,實時了解主機狀态(主機檔案是否被修改?是否有被入侵?等等)以及實時擷取告警資訊,是很重要的。及時反制入侵行為、及時修複系統,将入侵扼殺在搖籃階段。于是引入了HIDS(主機入侵檢測系統),網上關于HIDS的文章比較少、内容也不盡完善,下面是我自己在搭建HIDS時的記錄。

常用的主機入侵檢測系統

AIDE(Advanced Intrusion Detection Environment):進階入侵檢測環境,CIS

OSSEC:開源的、跨平台的主機入侵檢測系統,官網:https://www.ossec.net/

等等

OSSEC

功能

1、檔案完整性檢查即檔案篡改檢查(syscheck)

2、日志監控

3、rootkit檢測

4、主動響應:主動反制,比對到規則後主動采取措施,如:檢測到sshd日志存在多次失敗登入後,将登入的源位址加入黑名單。

5、告警:通過配置實作郵件等方式的告警

安裝

1、local:本地安裝,隻在一台裝置安裝,檢測本台裝置

2、server-agent:服務+代理模式安裝

server安裝在一台裝置,agent安裝在其他裝置,agent收集各個裝置的資訊,然後發送給server,server統一進行分析、告警、主動響應、統一管理各個agent。

# 在server和agent上安裝依賴 及 yum 遠端庫

yum install zlib-devel pcre2-devel make gcc zlib-devel pcre2-devel sqlite-devel openssl-devel libevent-devel
yum install mysql-devel
wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash
# Server
sudo yum install ossec-hids-server
# Agent
sudo yum install ossec-hids-agent
           

3、agentless:無代理

和server-agent的方式類似,但是隻有server沒有agent即不需要在裝置上安裝agent,server通過ssh去進行監控和掃描各個裝置。

本次實踐,使用server-agent方式

元件

1、server

# 各個程序
ossec-maild         # 郵件告警
ossec-execd         # 應該是執行主動響應及各種自定義的指令(猜的)
ossec-analysisd     # 日志分析服務
ossec-logcollector  # 日志收集
ossec-remoted       # server和agent通信
ossec-syscheckd     # 完整性檢測包括rootkit
ossec-monitord      # agent監控
           

2、agent

# 各個程序
ossec-logcollector    # 日志收集器
ossec-syscheckd       # 完整性檢測包括rootkit
ossec-agentd          # agent用戶端
ossec-execd           # 應該是執行主動響應及各種自定義的指令(猜的)
           

詳解

配置

首先說一下配置,在使用過程中,可能發現配置檔案好多,裡面内容也很類似。

日志監控/分析

日志監控/分析由OSSEC中 logcollector和analysisd程序來完成的。首先,日志收集器手機日志,然後分析程序分析(解碼、過濾、分離)事件。日志監控和分析時實時進行的。

重點:

1、實時監控

2、在server上進行日志分析

3、存儲時間由使用者配置

配置

在每個代理的ossec.conf或共享的agent.conf中配置。

如:

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

# 在<localfile>元素内部,可以使用下面的選項
<location>  #指定讀取的日志位置,strftime格式可用于日志檔案名。例如,file.log-2011-01-22可以使用引用名為的日志檔案file.log-%Y-%m-%d。通配符可以在非Windows系統上使用。使用通配符時,日志檔案在ossec-logcollector啟動時必須存在。它不會自動開始監視新的日志檔案。strftime和通配符不能用于同一條目。
<log_format>  #日志格式,預設是syslog。可選:snort-full、eventlog、mysql_log、apache、command等


           

日志監控之rules配置

rules 比對順序:先比對0級的,如果0級 沒有比對到,将所有規則按照level 降序的順序排列(level相同的,按照rules 加載順序排列),開始從最進階往下比對,知道比對到。

如果我們需要在已比對到的規則的基礎上,繼續比對,則可以用:<if_sid><if_sid>

日志檢測規則,測試程式:/var/ossec/bin/ossec-logtest  

先輸入要進行測試的日志内容

phase 1 、2 是解碼器解碼(将日志進行解釋、進行處理)階段,3是比對rules階段

OSSEC-hids 主機入侵檢測系統概述常用的主機入侵檢測系統OSSEC

syscheck-完整性檢測

syscheck是OSSEC中完整性檢查過程的名字。屬于OSSEC的一部分。syscheck定期運作,來檢查是否有檔案被修改。

syscheck通過關鍵檔案的 MD5/SHA1 校驗值是否改變來判斷是否完整。

agent每幾個小時(使用者自己配置)掃描一次系統并且将校驗值發送給server。server存儲校驗值并且對比校驗值,如果校驗值發生改變則發出告警。

資料存儲位置:/var/ossec/queue/syscheck

ossec-syscheckd 提供了幾乎實時地檢查檔案完整性。linux 上需要安裝 inotify-tools

配置

所有的配置都可以在agent的etc/ossec.conf中進行配置,除了auto_ignore和alert_new_file,它們适用于管理器和本地安裝。ignore如果在管理器上指定,則适用于所有的agent。

<directories></directories> 監控目錄,目錄中的檔案和子目錄也将監控

# 預設
<directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
# 屬性
realtime=yes   #這樣啟用在Linux(使用inotify系統調用)和windows上的實時/連續監控,實時監測隻适用于目錄
report_changes=yes # 報告檔案更改的差異,僅限于文本檔案,隻适用于類unix系統
check_all=yes  #除了顯式指明為no的屬性,其他 check_* 的屬性都是yes
check_sum=yes   #檢查檔案的md5 和 sha1 哈希值  等價于 check_sha1sum ="yes"和check_md5sum ="yes"
check_sha1sum=yes  #僅檢查sha1哈希值
check_md5sum=yes #僅檢查md5哈希值
check_size=yes  #檢查檔案的大小
check_owner=yes  #檢查檔案所有者
check_group=yes  #檢查檔案所屬組
check_perm=yes  #檢查檔案或目錄的權限
restrict=string  #限制檢查檔案或目錄名包含該字元串的檔案
no_recurse=no    #不要遞歸到定義的目錄
           

server和agent通信

預設server和agent之間以安全模式在端口 1514/udp上進行。還可以使用系統自帶的syslog服務(514/udp)進行通信。

通信由 ossec-remoted實作

通信配置:

vim etc/ossec.conf

<ossec_config>
    <remote>
        <conection>secure</connection>  # 指定連接配接類型:secure:1514端口通信,syslog:514端口通信
        <allowed-ips>10.251.1.0/24</allowed-ips>  # 設定允許連接配接server的ip。其他配置參考:https://www.ossec.net/docs/docs/syntax/head_ossec_config.remote.html
    </remote>
</ossec_config>
           

集中管理agent配置

在server建立agent配置

vim etc/shared/agent.conf

server緩存了共享的agent.conf每幾個小時會重新讀取。是以修改了共享檔案後,如果要立即生效,則需要重新開機server

如果agent同步了server共享的agent.conf,則會在Client version 字段中 表明配置檔案的md5值

OSSEC-hids 主機入侵檢測系統概述常用的主機入侵檢測系統OSSEC

給特定agent進行特殊配置

<agent_config name="agent1">
    <localfile>
        <location>/var/log/my.log</location>
        <log_format>syslog</log_format>
    </localfile>
</agent_config>
# 可以通過指明agent name的方法對agent1進行獨特的配置,此配置隻在agent1 生效,當然還有其他辦法,可以檢視官方文檔
           

告警配置

郵箱告警

預設情況下,ossec的郵箱配置是關閉的。郵件告警由 ossec-maild 這個程序實作的,隻有配置了郵件告警,啟動ossec-server時才會啟動這個程序

vim etc/ossec.conf

郵件告警隻需要在server端進行設定即可。

由于ossec-server設定郵件告警的smtp伺服器時,沒有提供設定使用者名和密碼的地方,是以使用的smtp必須是不需要認證的smtp伺服器,一般直接使用centos自帶的postfix即可

<ossec_config>
   <global>
     <email_notification>yes</email_notification>   # 開啟郵件告警
     <smtp_server>localhost</smtp_server>   # 設定smtp伺服器,由于ossec未提供使用者名和密碼配置,是以隻能使用沒有認證的smtp,是以隻能用自定義的smtp,一般使用主機自帶的
     <email_to>[email protected]</email_to>  # 設定收件人
     <email_from>[email protected]</email_from>  #設定發件郵箱,沒有實質用處,隻是在收件人郵箱中展示發件人資訊
  </global>
  <alerts>
     <log_alert_level>1</log_alert_level>   # 設定往alert.log 中記錄的告警最低等級
    <email_alert_level>1</email_alert_level>   #設定郵件告警的最低告警級别
 </alerts>
           

 上面設定了将告警郵件發送到[email protected]  這個本機的郵箱,如果我們想發送到外網郵箱:

vim /etc/aliases

ossecm: [email protected]     # 設定smtp 将發送到ossecm的郵件,轉發到 [email protected]  需要重新開機smtp即postfix
           

 當然還有其他很多告警方式,如:将告警資料存到資料庫,為自定義的告警程式提供資料

将告警資料存到資料庫

#安裝依賴
yum install -y mysql-devel
#啟用資料庫
bin/ossec-control enable database
           

繼續閱讀