1. 目的

方便运维人员、系统管理员和安全人员,快速掌握 OSSEC HIDS 的部署及使用,特此编写本指导。

2. 概述

本文从 OSSEC 的部署到高级使用方面进行编写,由浅入深。

3. 功能

OSSEC 属于基于主机和应用的入侵检测系统,通过监视企业重要服务器和各种应用以避免企业资源被攻击、滥用和误用。

OSSEC 是一款开源的多平台的入侵检测系统,可以运行于 Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS 等操作系统中。包括了日志分析、全面检测、rootkit 检测。作为一款 HIDS,OSSEC 应该被安装在一台实施监控的系统中。

主要功能有日志分析、完整性检查、rootkit 检测、基于时间的警报和主动响应。OSSEC 部署方式为 C/S。

4. 逻辑结构图

+-----------+
                          | Event     |
                          | Viewer    |
                          +-----------+
                               ^ 
                               |
            +-------------------+-------------------+
            |                                       |
+-----------v----------+                  +---------v----------+
| Administrator        |                  |        Manager     |
|                      |                  |                    |
+----------------------+                  +----------+---------+
            ^                                        |
            |                                        v
            |                            +-----------+----------+
            |                            |          Agents      |
            |                            +-----------+----------+
            |                                        ^
            +----------------------------------------+

5. 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 通信是用 udp 514,1514 端口。

6. 前期准备

6.1. 环境准备

需要两台 CentOS 6.5 虚拟机或服务器

服务器端

  • IP: 192.168.142.129
  • 机器名: ossec-server

客户端

  • IP: 192.168.142.130
  • 机器名: ossec-agent

6.2. 关闭 SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
reboot

6.3. 先决条件

yum install wget make gcc mysql mysql-server mysql-devel httpd php php-mysql sendmail

启动 httpd、mysql、sendmail 服务

/etc/init.d/httpd start
/etc/init.d/mysqld start
/etc/init.d/sendmail start

7. 服务端部署

7.1. 下载 OSSEC

首先通过官网的链接下载当前的最新稳定版本 2.8.2 的服务端包,同时解压。

wget http://www.ossec.net/files/ossec-hids-2.8.2.tar.gz
tar zxf ossec-hids-2.8.2.tar.gz
cd ossec-hids-2.8.2
# ls
active-response  CONFIG   CONTRIBUTORS  etc      install.sh  README.md
BUGS

7.2. 目录说明

active-response      执行操作的sh脚本
contrib              扩展,sh、perl脚本,txt说明文档
  ossec-batch-manager.pl      #批量添加主机
  ossec_report_contrib.pl     #表格显示ossec的日志
  ossec2mysql.pl              #记录mysql的实时日志

# cd src/
# make setdb                                 #如果将事件日志写入mysql

7.3. 安装过程

为了使OSSEC支持MySQL,需要在安装前执行make setdb命令:

cd ossec-hids-2.8.2;cd src; make setdb; cd ..

看到如下的信息说明可以正常支持MySQL:

Info: Compiled with MySQL support.

下面进入安装步骤,执行install.sh脚本:

./install.sh
...省略若干...
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: cn #选择语言
 ...省略若干...
系统类型: Linux ossec 2.6.32-358.el6.x86_64
用户: root
主机: ossec
-- 按 ENTER 继续或 Ctrl-C 退出. --回车
1- 您希望哪一种安装 (server, agent, local or help)? server
2- 正在初始化安装环境.
请选择 OSSEC HIDS 的安装路径 [/var/ossec]: /opt/ossec
3- 正在配置 OSSEC HIDS.
3.1- 您希望收到e-mail告警吗? (y/n) [y]:回车 
- 请输入您的 e-mail 地址? ossec.test@gmail.com
我们找到您的 SMTP 服务器为: alt1.gmail-smtp-in.l.google.com.
您希望使用它吗? (y/n) [y]: n
请输入您的 SMTP 服务器IP或主机名 ? 127.0.0.1
3.2- 您希望运行系统完整性检测模块吗? (y/n) [y]: 回车
系统完整性检测模块将被部署.
3.3- 您希望运行 rootkit检测吗? (y/n) [y]: 回车
rootkit检测将被部署.
您希望开启联动(active response)功能吗? (y/n) [y]: 回车
您希望开启防火墙联动(firewall-drop)功能吗? (y/n) [y]: 回车
联动功能默认的白名单是:
8.8.8.8
您希望添加更多的IP到白名单吗? (y/n)? [n]: 回车
请输入IP (用空格进行分隔): 192.168.124.129
3.5- 您希望接收远程机器syslog吗 (port 514 udp)? (y/n) [y]: 回车
远程机器syslog将被接收.
要启动 OSSEC HIDS: /opt/ossec/bin/ossec-control start
要停止 OSSEC HIDS: /opt/ossec/bin/ossec-control stop
要查看或修改系统配置,请编辑 /opt/ossec/etc/ossec.conf
--- 请按 ENTER 结束安装 (下面可能有更多信息). ---

直到碰到上面内容,说明安装完成。

7.4. 添加数据库支持

/usr/local/ossec/bin/ossec-control enable help
Invalid enable option.
Enable options: database, client-syslog, agentless, debug
Usage: /usr/local/ossec/bin/ossec-control enable [database|client-syslog|agentless|debug]

/opt/ossec/bin/ossec-control enable database
mysql -uroot -p
 create database ossec;
GRANT ALL PRIVILEGES ON ossec.* TO 'ossec '@'localhost' IDENTIFIED BY 'ossec';
GRANT ALL PRIVILEGES ON ossec.* TO 'ossec '@'%' IDENTIFIED BY 'ossec';
 flush privileges;
 exit

数据库主要提供日志存储,analogi图形化展示结果

7.5. 配置OSSEC

导入MySQL表结构到MySQL中:

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

修改部分配置文件的权限,否则会启动服务失败:

chmod u+w /opt/ossec/etc/ossec.conf

然后我们编辑ossec.conf文件,在ossec_config中添加MySQL配置:

<ossec_config>
<database_output>
<hostname>localhost</hostname>
<username>ossec</username>
<password>ossec</password>
<database>ossec</database>
<type>mysql</type>
</database_output>
</ossec_config>

由于我们在前面的安装过程中支持接受远程机器的syslog,所以我们还需要对ossec.conf文件中的syslog部分进行配置,修改ossec.conf文件,按照下面的内容进行修改,把我们网段可以全添加进去:

<remote>
<connection>syslog</connection>
<allowed-ips>192.168.142.0/24</allowed-ips>
</remote>

在实际的实验过程中启动ossec服务端必须先添加一个客户端,否则直接启动服务端是会失败的,通过如下命令查看日志会发现如下错误:

[root@ossec-server logs]# cat /opt/ossec/logs/ossec.log

2013/09/23 23:43:15 ossec-analysisd(1210): ERROR: Queue '/queue/alerts/ar' not accessible: 'Connection refused'.
2013/09/23 23:43:15 ossec-analysisd(1301): ERROR: Unable to connect to active response queue

8. 客户端部署

8.1. 下载客户端

wget  http://www.ossec.net/files/ossec-hids-2.8.2.tar.gz

8.2. 安装过程

tar zxf ossec-hids-2.8.2.tar.gz && cd ossec-hids-2.8.2
./install.sh 
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: cn
  - 系统类型: Linux ossec-agent 2.6.32-431.el6.x86_64
  - 用户: root
  - 主机: ossec-agent
  -- 按 ENTER 继续或 Ctrl-C 退出. --
1- 您希望哪一种安装 (server, agent, local or help)? agent
2- 正在初始化安装环境.
3- 信息收集完成.
   正在配置OSSEC HIDS.
3.2- 添加服务器IP地址 (or 'ADDR/MASK'). 
   The IP can be 192.168.1.230 or 192.168.1.230/24): 192.168.142.129
3.3- 请输入服务器IP地址 [192.168.142.129]: 回车

   -- 按 ENTER 结束安装 (下面可能有更多信息). ---

- 启动 OSSEC HIDS: /var/ossec/bin/ossec-control start
- 停止 OSSEC HIDS: /var/ossec/bin/ossec-control stop

在客户端成功安装后,我们可以在服务端查看连接的客户端:

```bash
/opt/ossec/bin/manage_agents

它会列出所有连接的客户端:

Available agents: 
  ID: 001, Name: ossec-agent, IP: 192.168.142.130
Manage agent (m)/quit (q)? q

到此,OSSEC服务端和客户端就安装完成了。

8.3. 客户端配置

有时需要对客户端进行一些特殊配置,比如只监控某些日志文件,或者设置一些特殊的告警级别等。这些都需要修改客户端的ossec.conf配置文件。

以监控Apache的access日志为例,编辑/var/ossec/etc/ossec.conf文件,在localfile部分添加:

<localfile>
  <log_format>apache</log_format>
  <location>/var/log/httpd/access_log</location>
</localfile>

然后重启客户端:

/var/ossec/bin/ossec-control restart

服务端就会开始接收并分析客户端Apache的access日志了。

9. OSSEC Web界面

OSSEC有一些基于Web的前端界面供用户使用,提供了方便的可视化操作和状态查看。下面介绍两种Web前端。

9.1. OssecWUI

OssecWUI是一款轻量级的基于Web的OSSEC前端,提供了基本的状态查看和配置功能。它使用PHP开发,对服务器的要求较低。

安装步骤:

  1. 下载OssecWUI:
git clone https://github.com/jptosso/OssecWUI.git
  1. 将OssecWUI目录复制到Apache的DocumentRoot目录下,如/var/www/html/ossecwui
  2. 修改ossecwui/config.php文件,配置OSSEC的路径和其他参数。
  3. 在浏览器访问 http://serverIP/ossecwui 即可使用。

9.2. OSSEC Web UI

OSSEC Web UI是一款功能更加完善的Web前端,它基于Java开发,提供了日志分析、图形化报表、报警管理等丰富功能。但它对服务器的要求也更高。

安装步骤:

  1. 下载OSSEC Web UI,解压到目录如:/opt/ossec-wui
  2. 安装Java运行环境和MySQL数据库支持。
  3. 导入MySQL的初始化数据:
mysql -uroot -p ossec < /opt/ossec-wui/ossec.sql
  1. 修改/opt/ossec-wui/config/ossec.xml文件,配置OSSEC路径和MySQL连接信息。
  2. 启动OSSEC Web UI:
cd /opt/ossec-wui/
./ossec-wui.sh start
  1. 在浏览器访问http://serverIP:8008即可使用。

通过Web界面,我们可以方便的查看OSSEC的状态、分析日志、配置报警等,提高了OSSEC的可用性和易用性。

以上就是OSSEC的完整安装部署步骤,包括服务端、客户端的安装,MySQL数据库支持的配置,以及Web界面的使用等内容。OSSEC作为一款优秀的开源主机入侵检测系统,相信会为您的系统安全保驾护航。