OSSEC主要功能及原理+詳細配置+日誌文件分析

作者:譚丙章
E-mail:[email protected]

OSSEC主要功能及原理

OSSEC屬於基於主機和應用的入侵檢測系統,通過監視企業重要服務器和各種應用以避免企業資源被攻擊、濫用和誤用。把基於主機和基於應用的入侵檢測系統分成了兩大類,不過在實際環境中,往往會將二者結合在一起使用。黑客對主機進行侵入時,往往會同時攻擊操作系統和應用服務上的漏洞。OSSEC是一個非常典型的主機型入侵檢 測系統,我們可以通過了解它的體系結構與工作原理來了解這一類型的入侵檢測技術。
OSSEC是一款開源的多平臺的入侵檢測系統,可以運行於Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系統中。包括了日誌分析,全面檢測,rook-kit檢測。作爲一款HIDS,OSSEC應該被安裝在一臺實施監控的系統中。另外有時候不需要安裝完全版本得OSSEC,如果有多臺電腦都安裝了OSSEC,那麼就可以採用客戶端/服務器模式來運行。客戶機通過客戶端程序將數據發回到服務器端進行分析。在一臺電腦上對多個系統進行監控對於企業或者家庭用戶來說都是相當經濟實用的。主要功能有日誌分析、完整性檢查、rootkit檢測、基於時間的警報和主動響應。除了具有入侵檢測系統功能外,它還一般被用在SEM/SIM(安全事件管理(SEM: Security Event Management)/安全信息管理(SIM:SecurityInformation Management))解決方案中。因其強大的日誌分析引擎,ISP(Internet service provider)(網絡服務提供商)、大學和數據中心用其監控和分析他們的防火牆、入侵檢測系統、網頁服務和驗證等產生的日誌。OSSEC的邏輯結構如下圖。
這裏寫圖片描述

OSSEC工作原理

Administrator。是一個Unix和linux平臺下的命令行的用戶接口(GUI),主 要起管理維護作用,對OSSEC的大部分管理、配置工作都在這裏進行。它的主要作用爲建立和斷開和Manager的連接、組織和配置代理(Agent)、 創建和管理各種類型策略、管理OSSEC 用戶和用戶優先級、在需要的時候更新Manager的許可證優先級等等。 
Event Viewer。這是一個單獨的Unix、linux平臺下的圖形化用戶界面,用於查看從 Agent中獲取的各種事件數據,也就是報警的窗口。這是OSSEC比較獨特的一點。一般來說入侵檢測系統的管理配置與事件查看功能會結合在一起,用戶在看到事件查看模塊中的報警後,可以利用管理配置模塊來進行策略的調配或者採取其他行動。OSSEC這種分開的做法是出於對管理員職責劃分的考慮,在某些企業裏可能會把安全管理員分爲不同的級別,級別高的管理員可以做所有的事情,而級別低的管理員只允許進行日常的狀態與安全情況的監護,但不能實際採取操作去處理問題,他必須向上彙報情況,由上級管理員來處理。這時一個只能顯示報警而不能進行實際策略的更改的Event Viewer就比較合適了。 

Manager。是一個運行在後臺的應用軟件,Manager沒有圖形化界面,其主要功能是維護與所有註冊代理(Agent)的安全通訊維護域的主列表和把相應的策略分發到每一個代理(Agent);把有關域和策略的變化通知給相應的代理 (Agent);接收和存儲來自於代理的事件數據;作爲OSSEC Administrator、OSSEC Event Viewer和Agent之間通訊的橋樑,維護策略列表和所屬域。 

Agent(代理)。主要起如下作用:監視時間收集器;在發現攻擊時,執行相應的動作如通知用戶、發 送E-mail、通知管理員、終止會話、關閉機器等。從Manager中接受安全升級(Security Update)。建立與Manager的安全連接,同時加密數據以便數據可以在網絡中安全傳送。OSSEC代理被安裝在服務器或工作站中,這些代理可以監視該系統中的所有行爲,包括和操作系統的交互通信以及特定的應用,從而可以主動保護企業資源和業務免受非法使用和破壞。  

 其工作原理可以很形象地用如下流程描述: 
 這裏寫圖片描述
 

OSSEC linux(server) windows(agent)詳細配置

ossec官方網站:http://www.ossec.net/
ossec幫助文檔:http://ossec-docs.readthedocs.org/en/latest/manual/index.html

介紹

SSEC是一款開源的多平臺的入侵檢測系統,可以運行於Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系統中。包括了日誌分析,全面檢測,root-kit檢測,政策監控,實時報警和積極響應。

現在已經有新版本Latest Stable Release (2.8.3)
下載地址:http://ossec.github.io/downloads.html

部署

Ossec部署方式爲C/S,以下server:192.168.1.16
agent:192.168.1.19
linux系統爲最新版centos7
windows系統爲windows8.1

服務器安裝及配置

服務器ip:192.168.1.16

由於centos7自帶的SElinux會攔截,阻止太多的東西,避免麻煩,這裏 我們把SElinux關閉!
geidt /etc/selinux/config
編輯/etc/selinux/config,找到SELINUX 行修改成爲:SELINUX=disabled
然後重新啓動。

我們需要開啓80端口,CentOS 7.0默認使用的是firewall作爲防火牆,這裏我們把centos7的防火牆換成iptables
關閉firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
安裝iptables防火牆
yum install iptables-services #安裝
gedit /etc/sysconfig/iptables #編輯防火牆配置文件
原文件清空,複製粘貼保存:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 514 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 1514 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
因爲ossec通信是用udp 514,1514端口(可以用命令:# netstat -unlp|grep ossec 查看)所以加了下面這兩句
-A INPUT -m state –state NEW -m udp -p udp –dport 514 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 1514 -j ACCEPT

好了,iptables配置好了,現在,我們開啓iptables:
systemctl restart iptables.service #最後重啓防火牆使配置生效
systemctl enable iptables.service #設置防火牆開機啓動

防火牆開啓成功,我們來接着安裝一些必要的工具:
yum install gcc gcc-c++ vim wget lrzsz ntpdate sysstat dstat wget unzip -y
安裝mysql數據庫,appach,php:
yum install mysql mysql-server mysql-devel httpd php php-mysql –y
我們把從官網下載下來的ossec-hids-2.8.3.tar.gz解壓:
tar -xzf ossec-hids-2.8.3.tar.gz
cd ossec-hids-2.8
cd src/
make setdb #使其支持mysql數據庫
接下來提示:
Error: PostgreSQL client libraries notinstalled.
Info: Compiled with MySQL support. #ossec支持mysql數據庫
cd ../
./install.sh
下面是安裝過程:
cn #選擇語言
Enter #繼續
Server #安裝爲server
/var/ossec #安裝目錄
- Do you want e-mail notification? (y/n)[y]: y
- What’s your e-mail address? [email protected]
- What’s your SMTP server ip/host? 127.0.0.1
Enter # Running syscheck (integrity check daemon)
Enter # Running rootcheck (rootkit detection)
Enter #Active response enabled
Enter # firewall-drop enabled (local) for levels >= 6
Do you want to add more IPs to the whitelist? (y/n)? [n]: y #設置ip白名單
-IPs (space separated):#把客戶端和服務端的ip都加上去
3.5- Do you want to enable remote syslog(port 514 udp)? (y/n) [y]:Enter
Enter #開始安裝

安裝完畢,下面我們來配置
使oosec支持mysql,並建立mysql表:
/var/ossec/bin/ossec-control enable database
service mysqld start
/usr/bin/mysql_secure_installation
mysql -uroot -p
mysql> create database ossec;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on ossec.* to ossec@localhost identified by 'ossec';
mysql> flush privileges;
mysql> \q

mysql -uossec -p ossec < src/os_dbd/mysql.schema 

Enter password:
gedit /usr/local/ossec/etc/ossec.conf #在最後添加
<ossec_config>
<database_output>
<hostname>localhost</hostname>
<username>ossec</username>
<password>ossec</password>
<database>ossec</database>
<type>mysql</type>
</database_output>
</ossec_config>
保存,退出。
添加128行內容,允許此網段的日誌,如果有其他ip需要設置白名單,依次添加即可
<remote>
<connection>syslog</connection>
<allowed-ips>192.168.1.0/24</allowed-ips> #128行
</remote>

/var/ossec/bin/ossec-control restart

此時,郵箱已經收到郵件了。

添加agent客戶端

/var/ossec/bin/manage_agents
下面依次:
A #add
Please provide the following:
*A name for the new agent: agent1
*The IP Address of the new agent: 192.168.1.19 #agent端的ip地址
*An ID for the new agent[001]: 001
Agent information:
ID:001
Name:agent1
IPAddress:192.168.1.19
Confirm adding it?(y/n): y
Agent added.

然後Enter後 又繼續:
Choose your action: A,E,L,R or Q: E
Available agents:
ID: 001, Name: agent1, IP: 192.168.1.19
Provide the ID of the agent to extract thekey (or ‘\q’ to quit): 001
Agent key information for ‘001’ is: #複製這個祕鑰,客戶端需要

然後Enter後輸入Q退出

客戶端配置

這裏我們配置的客戶端是在windows上的:
下載客戶端exe: https://bintray.com/artifact/download/ossec/ossec-hids/ossec-agent-win32-2.8.3.exe
然後默認安裝
注意:運行時要以管理員權限運行,即以Administrator運行
首先到安裝目錄下運行manage_agents.exe
輸入你的服務器IP,我這裏是:192.168.1.16
然後粘貼你複製下來的祕鑰

再運行win32ui.exe


點擊View config
<ossec_config>下面增加你的server ip ,上面有格式。保存關閉後
然後再在

中輸入你的Server ip和 key(複製下來的祕鑰),然後Save,運行。

安裝web界面

ossec-wui界面

cd /var/www
unzip ossec-wui-master.zip
mv ossec-wui-master html/ossec
cd html/ossec/
./setup.sh
Setting up ossec ui…

Username: ossec
New password:
Re-type new password:
Adding password for user ossec
Enter your web server user name (e.g.apache, www, nobody, www-data, …)
apache
Enter your OSSEC install directory path(e.g. /var/ossec)
/var/ossec
You must restart your web server after thissetup is done.

Setup completed successfuly.
gedit /etc/httpd/conf.d/ossec.conf

Alias /ossec/ "/var/www/html/ossec/"  

<Directory /var/www/html/ossec>  
Order deny,allow  
Deny from all  
Allow from 192.168.1.0/24  

Options FollowSymLinks  #外網訪問配置,把上面註釋或刪除
AllowOverride None      #外網訪問配置
Order deny,allow        #外網訪問配置
allow from all          #外網訪問配置

Options -MultiViews
AuthName "OSSEC AUTH"
AuthType Basic
AuthUserFile /var/www/html/ossec/.htpasswd
Require valid-user
</Directory>  

保存退出。
chown apache:apache *
service httpd restart

analogi界面

cd /var/www/html
wget https://github.com/ECSC/analogi/archive/master.zip
unzip master.zip
mv analogi-master ossec/analogi
chown apache.apache -R ossec
cd ossec/analogi
cp db_ossec.php.new db_ossec.php

gedit db_ossec.php

define ('DB_USER_O', 'ossec');
define ('DB_PASSWORD_O', 'ossec');
define ('DB_HOST_O', 'localhost');
define ('DB_NAME_O', 'ossec');  

gedit /etc/httpd/conf.d/analogi.conf

Alias /analogi/ "/var/www/html/ossec/analogi/" 

<Directory /var/www/html/ossec/analogi>
Order deny,allow
Deny from all
Allow from 192.168.1.0/24

Options FollowSymLinks   #外網訪問配置,把上面註釋或刪除
AllowOverride None       #外網訪問配置
Order deny,allow         #外網訪問配置
allow from all           #外網訪問配置

</Directory>

service httpd restart

查看狀態信息

/var/ossec/bin/agent_control -lc
OSSEC HIDS agent_control. List of availableagents:
ID: 000, Name: localhost.localdomain (server), IP: 127.0.0.1,Active/Local
ID: 001, Name: agent1, IP: 192.168.22.241, Active
/var/ossec/bin/list_agents -a
agent1-192.168.1.19 is available.
/var/ossec/bin/ossec-control status
ossec-monitord is running…
ossec-logcollector is running…
ossec-remoted is running…
ossec-syscheckd is running…
ossec-analysisd is running…
ossec-maild is running…
ossec-execd is running…
ossec-dbd is running…

OSSEC的圖形界面

analogi圖形界面

OSSEC收集的日誌文件分析

這裏以windows8.1爲客戶端爲例。centos7爲服務端
ossec日誌文件目錄:/var/ossec/logs/alerts/alerts.log
windows安全日誌文件:%systemroot%/system32/config/SecEvent.EVT
windows系統日誌文件:%systemroot%/system32/config/SysEvent.EVT
windows應用程序日誌文件:%systemroot%/system32/config/AppEvent.EVT

那麼,分析OSSEC收集的日誌文件前,先來分析Windows的日誌文件

windows日誌文件分析

先看一個例子:

- System 

- Provider 

[ Name]  Microsoft-Windows-Security-Auditing 
[ Guid]  {54849625-5478-4994-A5BA-3E3B0328C30D} 

EventID 4672 

Version 0 

Level 0 

Task 12548 

Opcode 0 

Keywords 0x8020000000000000 

- TimeCreated 

[ SystemTime]  2016-07-29T13:13:37.042176800Z 

EventRecordID 46680 

Correlation 

- Execution 

[ ProcessID]  736 
[ ThreadID]  20656 

Channel Security 

Computer lenovo-pc 

Security 


- EventData 

SubjectUserSid S-1-5-18 
SubjectUserName SYSTEM 
SubjectDomainName NT AUTHORITY 
SubjectLogonId 0x3e7 
PrivilegeList SeAssignPrimaryTokenPrivilege  
SeTcbPrivilege SeSecurityPrivilege 
SeTakeOwnershipPrivilege SeLoadDriverPrivilege 
SeBackupPrivilege SeRestorePrivilege SeDebugPrivilege
SeAuditPrivilege SeSystemEnvironmentPrivilege
SeImpersonatePrivilege 

字段分析:
System(日誌名稱)
Provider:來源
EventID:事件ID
Version:版本
Level:級別
Task:任務類別
Keywords:關鍵字
TimeCreated:創建時間
SystemTime:系統時間
EventRecordID:
Correlation:
Execution:
Channel:
Computer:電腦
Security:安全
UserID:用戶ID
EventData:事件描述。
SubjectUserSid:賬戶ID
SubjectUserName:賬戶名
SubjectDomainName:賬戶域
SubjectLogonId:登錄 ID
PrivilegeList:特權

具體的可以通過windows的事件查看器查看,將詳細信息複製爲文本可得到中文版日誌。

OSSEC的alerts.log日誌文件分析

同樣,先看一個例子:

** Alert 1469594165.3684: - windows,
2016 Jul 27 12:36:05 (agent2) 192.168.1.0->WinEvtLog
Rule: 18149 (level 3) -> 'Windows User Logoff.'
User: lenovo
2016 Jul 26 21:57:29 WinEvtLog: Security:  
AUDIT_SUCCESS(4647): Microsoft-Windows-Security-  
Auditing: lenovo: lenovo-pc: lenovo-pc: User initiated  
logoff: Subject:  Security ID:   
S-1-5-21-253721302-2314373899-4153707874-1001  Account  
Name:  lenovo  Account Domain:  lenovo-pc  Logon ID:   
0xa0522ec  This event is generated when a logoff is  
initiated but the token reference count is not zero 
and the logon session cannot be destroyed.  No further
user-initiated activity can occur.  This event can be 
interpreted as a logoff event.

日誌格式爲:

**Alert xxxxxxxxxx.xxxx: - windows(來源)
事件產生的時間  事件產生的位置
Rule(規則):xxxxx(level x)[事件等級]->事件概述  
User(用戶):xxx  
日誌記錄時間        安全事件(事件ID):
事件來源:用戶:計算機:事件描述  
使用者:
安全ID:           賬戶名: 
賬戶域:              登陸ID:
事件描述:  

對比上面可知,OSSEC收集了來自windows客戶端日誌的:
TimeCreated(創建時間)
Provider(來源)
EventRecordID(事件ID)
Channel
EventData(事件描述)
Computer(計算機)
SubjectUserName(賬戶名)
SubjectDomainName(賬戶域)
SubjectLogonId(登錄 ID)

如何辨別是客戶端產生的日誌還是服務器本地產生的日誌?

例子:

** Alert 1469594242.9608: mail  - syslog,errors
2016 Jul 27 12:37:22 localhost->/var/log/messages 

上面是截取的前兩段,通過分析前兩段可知是服務器產生的日誌還是客戶端產生的日誌。
一是看** Alert 1469594242.9608: mail - syslog,errors 數字:後面的這部分,如果客戶端有windows,日誌是客戶端產生的,那麼後面將會出現windows的字眼;
二是看第二排時間後面的那部分,localhost(或者127.0.0.1)代表是服務器本地產生的日誌,如果是客戶端產生的日誌,那麼這裏是客戶端的IP。

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