Getting started with OSSEC
对于OSSEC,印象就是HIDS,官方说是将 HIDS、日志监控和安全事件管理 (SIM)/安全信息和事件管理 (SIEM)融合在一起。
OSSEC主要功能
- 文件完整性检查
- 日志监控
- Rootkit 检测
- 主动响应
OSSEC 架构
manager/Server 是 OSSEC 的核心部分,它存储了文件完整性检查数据库、日志、事件和系统审计相关的内容。所有规则、解码器和主要配置选项都集中存储在管理器中;这样即使大量agent也容易管理。
agent通过1514/udp 连接到服务器
Agent
agent是安装在要监控的系统上的一个小程序或程序集合。它将收集信息并将其转发给管理器进行分析和关联。一些信息是实时收集的,其他的是周期性的。默认情况下,它占用很小的内存和CPU,不会影响系统的使用。
安全性: 它以低权限用户(通常在安装期间创建)运行,并在与系统隔离的chroot中运行。大多数代理配置可以从管理器推送。
Agentless
对于无法安装代理的系统,无代理支持可允许执行完整性检查。无代理扫描可用于监控防火墙、路由器,甚至Unix系统。
猜测: 这应该通过ssh协议或者其他远程协议执行的检查
Virtualization/VMware
可以装在guest操作系统中,甚至可以 VMWare ESX(不一定支持所有版本)
在 VMware ESX 中安装代理后,您可以收到有关何时安装、移除、启动 VM Guest 等的警报。它还监视 ESX 服务器内部的登录、注销和错误。
此外,OSSEC还会对VMware执行互联网安全中心(CIS)检查,在启用任何不安全的配置选项或任何其他问题时发出警报。
防火墙、交换机和路由器
OSSEC可以从各种防火墙、交换机和路由器接收和分析syslog事件。它支持所有思科路由器、思科PIX、思科FWSM、思科ASA、Juniper路由器、Netscreen防火墙、Checkpoint等等。
下面这个图显示了中央管理器从代理和远程设备的系统日志接收事件。当检测到某些内容时,可以执行主动响应并通知管理员。
支持的系统
支持的系统很多
操作系统
1 | GNU/Linux (all distributions, including RHEL, Ubuntu, Slackware, Debian, etc) |
支持Syslog的设备
下面可以通过remote syslog支持:
1 | Cisco PIX, ASA and FWSM (all versions) |
agentless
使用OSSEC的无代理选项,也支持以下系统(用于日志分析和文件完整性检查):
1 | Cisco PIX, ASA and FWSM (all versions) |
安装
以Ubuntu 20.04为例
先安装依赖项
1 | apt-get update && apt-get install build-essential make zlib1g-dev libpcre2-dev libevent-dev libssl-dev libsystemd-dev |
如果需要数据库支持,则应安装 mysql-dev 或 postgresql-dev
1 | apt-get install mysql-dev postgresql-dev |
要使用 SQLite 功能,libsqlite3-dev 包是必需的。
1 | apt-get install libsqlite3-dev |
安装的话是有deb包的源的
1 | wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash |
下面尝试下载源码安装
1 | wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz |
这有两种安装,一种是执行./install.sh
,或者输入下面命令
1 | make TARGET=<server|local|agent> |
当然./install.sh可以配置一些信息,比较好,选择./install.sh
之后按需配置即可
最后显示这个就安装完了
1 | - 系统类型是 Debian (Ubuntu or derivative). |
启动服务/var/ossec/bin/ossec-control start
1 | # /var/ossec/bin/ossec-control start |
可以看到有6个模块
其实/var/ossec/etc/ossec.conf 也可以事后再配置的
检测规则在/var/ossec/rules下面,基本都是正则匹配
1 | root@ubuntu2004:/var/ossec/rules# ls |
解码器在/var/ossec/etc/decoder.xml
以下面为例,
- 第一个名为”sshd”的解码器,它匹配程序名称以”sshd”开头的日志行。这个解码器用于识别与SSH服务相关的日志。
- 第二个名为”sshd-success”的解码器,它是”sshd”解码器的子解码器。它使用”Accepted”作为前置匹配条件,表示成功登录的日志行。然后,它使用一个pcre2表达式来提取用户名和源IP地址的信息。
<order>
元素定义了解码器中提取的字段的顺序。提取的是表达式中()
中的内容;而<fts>
元素用于定义全文搜索(Full Text Search)索引。它指定了要在日志事件中进行全文搜索的字段。在示例中,<fts>name, user, location</fts>
指定了三个字段的全文搜索索引,即”name”、”user”和”location”。通过创建全文搜索索引,可以提高对这些字段的搜索效率,并支持更复杂的日志分析和报警规则。 - 第三个名为”ssh-denied”的解码器,也是”sshd”解码器的子解码器。它使用”User”作为前置匹配条件,表示登录被拒绝的日志。这个也是提取user和 srcip,不过这个没有fts,应该登录成功的更加重要,更需要关注吧。
1 | <decoder name="sshd"> |
测试
新建用户测试
1 | root@ubuntu2004:~# useradd ossec_test |
这会在/var/log/auth.log
中留下记录
1 | root@ubuntu2004:~# tail /var/log/auth.log -n 2 |
可以看到配置文件默认已经有该文件的监控了
1 | <localfile> |
检测规则也有了,在syslog_rules.xml中
1 | <!-- Adduser messages --> |
配置文件也包含了这个规则文件syslog_rules.xml
1 | <rules> |
假如假装这是我们添加的规则,就用/var/ossec/bin/ossec-logtest
来测试,输入log内容即可
1 | root@ubuntu2004:/var/ossec/etc# /var/ossec/bin/ossec-logtest |
第一阶段预解码,之后由于这个无需再对后面的信息再解码了,第二阶段没有解码器,第三阶段就通过规则过滤告警了
/var/ossec/logs/alerts/alerts.log
中是出现了下面告警log
1 |
|
server、agent模式
server的主机,安装的时候选server,之后开启远程机器syslog
1 | 3.5- 您希望接收远程机器syslog吗 (port 514 udp)? (y/n) [y]: |
之后server执行/var/ossec/bin/manage_agents
1 | 1. (A)dd an agent (A). |
重启服务
1 | /var/ossec/bin/ossec-control restart |
agent端,安装的时候选agent,之后执行/var/ossec/bin/manage_agents
选择(I)mport key from the server (I).
,之后复制上面得到的key即可
重启服务
1 | /var/ossec/bin/ossec-control restart |
搞个ossec-wui也能看到新的agent
参考
https://www.ossec.net/docs/
《企业安全建设入门》