1. 目的
方便运维人员、系统管理员和安全人员,快速掌握 OSSEC HIDS 的部署及使用,特此编写本指导。
2. 概述
本文从 OSSEC 的部署到高级使用方面进行编写,由浅入深。
3. 功能
OSSEC 属于基于主机和应用的入侵检测系统,通过监视企业重要服务器和各种应用以避免企业资源被攻击、滥用和误用。
OSSEC 是一款开源的多平台的入侵检测系统,可以运行于 Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS 等操作系统中。包括了日志分析、全面检测、rootkit 检测。作为一款 HIDS,OSSEC 应该被安装在一台实施监控的系统中。
主要功能有日志分析、完整性检查、rootkit 检测、基于时间的警报和主动响应。OSSEC 部署方式为 C/S。
- 官网: http://ossec.github.io/
- 下载页面: http://ossec.github.io/downloads.html
- 书籍: http://www.amazon.com/OSSEC-Host-Based-Intrusion-Detection-Guide/dp/159749240X
- 帮助文档: http://ossec-docs.readthedocs.org/en/latest/manual/index.html
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开发,对服务器的要求较低。
安装步骤:
- 下载OssecWUI:
git clone https://github.com/jptosso/OssecWUI.git
- 将OssecWUI目录复制到Apache的DocumentRoot目录下,如
/var/www/html/ossecwui
- 修改
ossecwui/config.php
文件,配置OSSEC的路径和其他参数。 - 在浏览器访问
http://serverIP/ossecwui
即可使用。
9.2. OSSEC Web UI
OSSEC Web UI是一款功能更加完善的Web前端,它基于Java开发,提供了日志分析、图形化报表、报警管理等丰富功能。但它对服务器的要求也更高。
安装步骤:
- 下载OSSEC Web UI,解压到目录如:
/opt/ossec-wui
- 安装Java运行环境和MySQL数据库支持。
- 导入MySQL的初始化数据:
mysql -uroot -p ossec < /opt/ossec-wui/ossec.sql
- 修改
/opt/ossec-wui/config/ossec.xml
文件,配置OSSEC路径和MySQL连接信息。 - 启动OSSEC Web UI:
cd /opt/ossec-wui/
./ossec-wui.sh start
- 在浏览器访问
http://serverIP:8008
即可使用。
通过Web界面,我们可以方便的查看OSSEC的状态、分析日志、配置报警等,提高了OSSEC的可用性和易用性。
以上就是OSSEC的完整安装部署步骤,包括服务端、客户端的安装,MySQL数据库支持的配置,以及Web界面的使用等内容。OSSEC作为一款优秀的开源主机入侵检测系统,相信会为您的系统安全保驾护航。