查看原文
其他

开源入侵检测系统 OSSEC HIDS

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488



微信公众号:计算机与网络安全

ID:Computer-network

一、OSSEC HIDS 概述


OSSEC HIDS 是一个开源的基于主机的入侵检测系统,它可以用来进行日志分析、完整性检查、rootkit检测、基于时间的报警和主动响应。如果只需要监测一台系统,那么只要在这台机器上面安装 OSSEC 就可以了。而如果要监测一系列系统的话,就需要将其中一台设置为服务器,其余的作为Agent来使用,服务器就是集中的管理点


如果只需要安装一个点,那么将该点安装为local模式就可以了。如果要监测一系列系统,那么选择其中的一台以“server”的模式来安装,其余的则以agent的模式来安装。注意这时必须要先安装server然后才能够安装agent。


OSSEC 的安装十分简单。首先下载 OSSEC,检查它的完整性之后,解包并进入该软件的目录运行install.sh脚本。


[root@ossec  ~]#  wget  http://www.ossec.net/files/ossec-hids-latest.tar.gz

[root@ossec  ~]#  wget  http://www.ossec.net/files/ossec-hids-latest_sum.txt

[root@ossec  ~]#  cat  ossec-hids-latest_sum.txt

MD5  (ossec-hids-latest.tar.gz)=XXXXXXX

SHA1  (ossec-hids-latest.tar.gz)=YYYYYYYY

[root@ossec  ~]#  md5  ossec-hids-latest.tar.gz

MD5  (ossec-hids-latest.tar.gz)=XXXXXXX

[root@ossec  ~]#  sha1  ossec-hids-latest.tar.gz

SHA1  (ossec-hids-latest.tar.gz)=YYYYYYYY

[root@ossec ~]# tar -zxvf ossec-hids-*.tar.gz (or gunzip -d; tar -xvf)

[root@ossec ~]# cd ossec-hids-*

[root@ossec  ~]#  ./install.sh

..

..

对于 Server/agent 来说,由于二者之间的数据传输是以加密形式进行的,因此首先需要在二者之间配置一个密钥。这一密钥由服务器产生,然后导入给Agent。


首先需要将Agent添加给服务器。运行manage_agents命令,键入Agent的IP地址,然后给这个Agent取一个名字。


(server)#  /var/ossec/bin/manage_agents

***********************************************

* OSSEC HIDS v0.8 Agent manager.      *

* The following options are available: *

***********************************************

(A)dd  an  agent  (A).

(E)xtract  key  for  an  agent  (E).

(L)ist  already  added  agents  (L).

(R)emove  an  agent  (R).

(Q)uit.

Choose  your  actions:  A,E,R  or  Q:  a

-  Adding  a  new  agent  (use  '\q'  to  return  to  main  menu).

Please  provide  the  following:

* A name for the new agent: linux1

* The IP Address for the new agent: 192.168.2.32

* An ID for the new agent[001]:

Agent  information:

ID:001

Name:linux1

IP  Address:192.168.2.32

Confirm  adding  it?(y/n):  y

Added.


添加完 Agent之后,需要将密钥从服务器中导出来,运行 manage_agents命令,选择 E选项并提供相应Agent的ID就可以了。


(server)#  /var/ossec/bin/manage_agents

***********************************************

* OSSEC HIDS v0.8 Agent manager.      *

* The following options are available: *

***********************************************

(A)dd  an  agent  (A).

(E)xtract  key  for  an  agent  (E).

(L)ist  already  added  agents  (L).

(R)emove  an  agent  (R).

(Q)uit.

Choose  your  actions:  A,E,R  or  Q:  e

Available  agents:

ID:  001, Name:  linux1, IP:  192.168.2.32

ID:  002, Name:  obsd1, IP:  192.168.2.10

Provide  the  ID  of  the  agent  you  want  to  extract  the  key:  001

Agent  key  information  for  '001'  is:

CDAxIGxpbnX4MSAxOTIuMTY4LjAuMzIgOWM5MENlYzNXXXYYYZZZZZ==

** Press ENTER to continue

这时需要将这一密钥拷贝粘贴到Agent一边。在Agent上运行manage_agents命令:


(agent)#  /var/ossec/bin/manage_agents

***********************************************

* OSSEC HIDS v0.8 Agent manager.      *

* The following options are available: *

***********************************************

(I)mport  key  for  the  server  (I).

(Q)uit.

Choose  your  actions:  I  or  Q:  i

* Provide the Key generated from the server.

* The best approach is to cut and paste it.

*** OBS: Do not include spaces or new lines.

Paste  it  here:  CDAxIGxpbnX4MSAxOTIuMTY4LjAuMzIgOWM5MENlYzNXXXYYYZZZZZ==

Agent  information:

ID:001

Name:linux1

IP  Address:192.168.2.32

Confirm  adding  it?(y/n):  y

Added.

** Press ENTER to continue.

***********************************************

* OSSEC HIDS v0.8 Agent manager.*

* The following options are available: *

***********************************************

(I)mport  key  for  the  server  (I).

(Q)uit.

Choose  your  actions:  I  or  Q:  q

manage_agents:  Exiting  ..


这样就完成了一个Agent的安装,重复这一步骤以完成各个Agent的安装。安装完成后,就可以在服务器和客户端上面启动OSSEC。在安装完成之后,记住要把服务器的UDP 1514端口从防火墙上打开。


[root@ossec  ~]#  /var/ossec/bin/ossec-control  start


二、配置选项


OSSEC HIDS的配置选项主要在 ossec.conf文件中。缺省是/var/ossec/etc/ossec.conf。这一文件必须以ossec_config项开始,然后其他可选的Section如表1所示。

表1  可选的Section

这些选项中,有一部分只应当被agent使用,有一部分只被server模式或者local模式使用。下面列出了各种安装模式相对应的选项:


server:  global, rules, syscheck, rootcheck, alerts, localfile, remote,command  and  active-response.


local: global,rules,syscheck,rootcheck,alerts,localfile,command and active-response.


agent:  client, syscheck, rootcheck  and  localfile.


表2~表9分别列出了各选项的详细描述。


1、Global选项(“server”以及“local”安装)

表2  Global选项

2、Rules选项(“server” 以及“local”安装)

表3  Rules选项

3、Syscheck选项(“server”、“local”以及“agent”安装)

表4  Syscheck选项

4、Rootcheck选项(“server”、“local”以及“agent”安装)

表5  Rootcheck选项

5、Alerts选项(“server” 以及“local”安装)

表6  Alerts选项

6、Localfile选项(“server”、“local”以及“agent”安装)

表7  Localfile选项

7、Remote选项(仅限“server”安装)

表8  Remote选项

8、Client选项(仅限“agent”安装)

表9  Client选项

三、日志分析、入侵检测和关联


分析规则在一个 XML 文件中配置,可以通过修改这个文件以动态地配置关联。缺省情况下,OSSEC HIDS有一大批规则,管理员的工作大部分是简化这些规则。当然,管理员也可以定制自己的联动规则,常见的联动规则大致可以分为如下几类。


首先,可以关联新的事件和旧的事件,例如:


<rule  id="1608"  level="13"  timeframe="120">

<regex>^sshd[\d+]:    fatal:    Local:    crc32    compensation attack</regex>

<if_matched_regex>^sshd[\d+]:   \.+Corrupted   check   by bytes  on</if_matched_regex>

<comment>SSH  CRC-32  Compensation  attack</comment>

<info>http://www.securityfocus.com/bid/2347/info/</info>

</rule>


在产生“crc32 compensation attack”之后120秒,如果产生了“Corrupted check by bytes”日志,这一事件才会被触发。


也可以使用组来扩展上面的关联配置。例如,只有在规则组 attack中的某个规则触发后且规则组 adduser触发 5分钟后规则 1701 才会被触发。这一规则可能是为了检查在系统被入侵后,攻击者又加了一个账号。


可以创建基于严重性程度(severities)、用户名、入侵检测系统(snort)、源IP地址等等的规则。


可以设置某个规则在报警前发生的次数。例如,只有在5分钟内发生5次错误的登录的时候才报警。对于Web来说,可以指定只有在2分钟内同一IP地址发生X次404错误之后再报警。


在配置自己的规则中,可以使用的关键字如表10所示。

表10  关联可以使用的关键字

四、主动响应


主动响应使得在某一特定规则或某组特定规则触发后可以自动执行某些命令。OSSEC HIDS具有非常灵活的主动响应性能,可以在Agent或者是Server上执行命令。


主动响应的利弊都很明显,它的优点是:


发生攻击的时候能够进行快速响应。


能够有效地防止端口扫描、暴力破解以及其他信息搜集性攻击。


风险:


误警可能会阻止合法用户的使用。


攻击者可能会利用主动响应配置来进行拒绝服务性攻击。


可以使用如下技术进行风险控制:


可以制定白名单。


可以进行比较细的力度控制,这样可以只在低误警率的规则触发时进行主动响应。


允许制定超时值,即使有人因为误警被封,那么只要若干分钟之后就可以恢复正常使用了。


1、主动响应配置


主动响应配置可以分为两个部分。第一部分指定要运行的命令,而第二部分则用来指定和它绑定的规则。


(1)命令配置


在命令配置中,可以创建新的可运行的命令。例如:


<command>

<name>The  name  (A-Za-Z0-9)</name>

<executable>The  command  to  execute  (A-Za-z0-9.-)</executable>

<expect>Comma separated list of arguments (A-Za-z0-9)</expect>

<timeout_allowed>yes/no</timeout_allowed>

</command>


其中:


name: 用来表示这个命令的名字。


executable: 必须是在/var/ossec/active-response/bin目录下的一个可执行文件,不必是完整路径。


expect: 命令执行时需要的参数(可选有srcip和username)。


timeout_allowed: 指定该命令是否支持timeout。


(2)响应配置


在主动响应配置中,必须将命令和规则绑定。可以同时绑定多个命令。例如:


<active-response>

<disabled>Completely  disables  active  response  if  "yes"</disabled>

<command>The  name  of  any  command  already  created</command>

<location>Location  to  execute  the  command</location>

<agent_id>ID  of  an  agent  (when  using  a  defined  agent) </agent_id>

<level>The  lower  level  to  execute  it  (0-9)</level>

<rules_id>Comma  separated  list  of  rules  id  (0-9)</rules_id>

<rules_group>Comma  separated  list  of  groups  (A-Za-z0-9)</rules_group>

<timeout>Time  to  block</timeout>

</active-response>


其中:


disabled:如果设置为yes则禁止主动响应。

command:某个命令的名字(必须和命令配置中相同)

location:这一命令执行的地点,可选项有:

local:在产生此事件的Agent上;

analysis-server:在分析服务器上;

efined-agent:在某个特定的Agent上,由agent_id指定;

all:所有。

agent_id:执行命令的Agent的ID(当使用defined-agent模式时)。

level:当事件的级别等于或高于此级别时,命令就会被执行。

timeout:多长时间后相反的命令被执行(例如,解封IP)。

rules_id:一个规则ID的列表,用逗号分开。

rules_group:多长时间后相反的命令被执行(例如,解封IP)。


2、主动响应工具


缺省情况下,OSSEC有如下预部署的主动响应工具。


host-deny.sh – 添加一个IP地址到/etc/hosts.deny 文件。

firewall-drop.sh (iptables) – 添加一个IP地址到iptables的被禁列表中

firewall-drop.sh (ipfilter) – 使用ipfilter封掉此IP(FreeBSD、NetBSD and Solaris)。

firewall-drop.sh (ipfw) – 使用ipfw封掉此IP (FreeBSD)。

firewall-drop.sh (ipsec) – 使用ipsec 封掉此IP(AIX)。

firewall-drop.sh (pf) – 使用pf 封掉此IP (OpenBSD and FreeBSD)。


五、Windows Agent


从版本0.8开始,OSSEC开始支持Windows系统下的Agent。它将监测Event log以及其他的日志信息(如 IIS日志)。每当事件产生时,这些事件都会被发给server以进行关联分析。此外,ossec agent也进行文件的完整性检查。


Windows上 Agen 的安装很简单,只要执行自动安装工具就可以了。安装过程中需要输入来自服务器的认证密钥以及服务器的IP地址。这些完成后,点击控制面板、管理工具、服务并启动OSSEC Hids服务,建议把它设置为自动启动。


对于 IIS 来说,目前只支持 NCSA 格式的 IIS 日志。缺省情况下只监测第一个日志(W3SVC1),因此如果需要监测其他文件的话,必须为每个文件添加一个新的条目。以下是一个配置的例子:


<localfile>

<location>%WinDir%\System32\LogFiles\W3SVC2\nc%y%m%d.log</location>

<log_format>iis</log_format>

</localfile>


注意:%y表示当前年;%m 表示当前月;而%d表示当前日。


六、和其他工具联动


OSSEC可以和Nmap联合,这样Ossec可以读nmap的输出文件。首先,需要在ossec.conf中添加一个nmap的输出文件


<ossec_config>

<localfile>

<log_format>nmapg</log_format>

<location>/var/log/nmap-out.log</location>

</localfile>

</ossec_config>


然后,重新启动OSSEC(注意如果nmap的输出文件还不存在的话,需要先生成一个空的):


ossec-test#  touch  /var/log/nmap-out.log

ossec-test#  /var/ossec/bin/ossec-control  restart


这时就可以运行nmap扫描了。


ossec-test#  nmap  --append_output  -sU  -sT  -oG /var/log/nmap-out.log 192.168.2.0-255

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存