开源入侵检测系统OSSEC介绍
一、OSSEC入侵检测介绍
OSSEC是一款开源的多平台基于主机的入侵检测系统,可以简称为HIDS。它具备日志分析,文件完整性检查,策略监控,rootkit检测,实时报警以及联动响应等功能。它支持多种操作系统:Linux、Windows、MacOS、Solaris、HP-UX、AIX(具体的请参考官方文档说明:https://www.ossec.net/docs/docs/manual/supported-systems.html#supported-systems)。可以采用C/S模式来运行。客户机通过客户端程序将数据发回到服务器端进行分析。OSSEC默认具有一个ossec-logtest工具用于测试OSSEC的泛化及告警规则。该工具一般默认安装于目录 /var/ossec 中。
OSSEC官方主页:http://www.ossec.net
1.1 主要功能
主要功能有日志分析、完整性检查、rootkit检测、基于时间的警报和主动响应。除了具有入侵检测系统功能外,它还一般被用在SEM/SIM(安全事件管理(SEM: Security Event Management)/安全信息管理(SIM:SecurityInformation Management))解决方案中。因其强大的日志分析引擎,ISP(Internet service provider)(网络服务提供商)、大学和数据中心用其监控和分析他们的防火墙、入侵检测系统、网页服务和验证等产生的日志。OSSEC的逻辑结构如下图:
OSSEC属于基于主机和应用的入侵检测系统,通过监视企业重要服务器和各种应用以避免企业资源被攻击、滥用和误用。把基于主机和基于应用的入侵检测系统分成了两大类,不过在实际环境中,往往会将二者结合在一起使用。黑客对主机进行侵入时,往往会同时攻击操作系统和应用服务上的漏洞。OSSEC是一个非常典型的主机型入侵检测系统,我们可以通过了解它的体系结构与工作原理来了解这一类型的入侵检测技术。
(1)完整性检测
Syscheck是OSSEC内部完整性检测进程的名称。它周期性检查是否有任何配置文件(或者windows注册表)发生改变。在网络中有许多类型的攻击和攻击载体,说起这些攻击,有一种攻击是很特别的,他们留下一个跟踪程序,并总是想尽方法改变这个系统。它们用病毒修改一些文件,并破坏系统的完整性。完整性检查是入侵检测系统的一个重要组成部分。当系统的完整性被改变时它能够通过比较文件的MD5校验各发现。它的工作方法是:“代理每几个小时扫描一次系统,并发送所有的校验和到server端。Server端存储这些校验和文件并查找他们的不同。如果发现任何改变将会发送报警。
◆ 多长时间运行一次
默认每6小时运行一次,但是这个频率可以自己设定。
◆ 数据存放位置
在server端的/var/ossec/queue/syscheck
◆ CPU使用情况
慢慢地进行扫描,以避免使用过多的CPU /内存。
◆ 如何处理误报
文件能够通过手工指定配置文件或使用规则到忽略不记,默认一个文件修改超过3次会自动忽略。
(2)Rootcheck
OSSEC HIDS会在每个安装了代理的系统运行rootkit检测。Rootkit发现引擎每过120分钟会去探测任何可能已经安装的rootkit. 和log分析及安全性检测一起使用,OSSEC HIDS将是一个强有力的监控解决方案。
(3)日志监控、分析
在OSSEC内部有log收集和log分析进程,日志分析过程中,首先要收集log,然后对日志进行分析(解码,过滤,分类)。一有事件写入OSSEC立即会处理它们。OSSEC能读内部日志文件,windows日志事件,和直接通过远程系统接收的日志。
(4)文件监控
OSSEC有一个名为OSSEC-logcollector的监控新的事件日志文件的进程,并将其转发给其他进程进行分析。 OSSEC-logcollector的配置是在/var/ossec/etc/ossec.conf。
1.2 工作原理
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入侵检测部署
官网安装教程:https://www.ossec.net/docs/docs/manual/installation/index.html
2.1 数据库安装和OSSEC数据库配置
(1)创建MySQL数据库
[root@10-27-0-224 ~]# docker run -itd -p 3306:3306 --restart=always --name=mysql5.5 \ -v /data/mysqldata/cnf:/etc/mysql \ -v /data/mysqldata/data:/var/lib/mysql \ --privileged=true -e MYSQL_ROOT_PASSWORD=ucloud.cn mysql:5.5
(2)创建ossec的数据库及授权
[root@10-27-0-224 ~]# mysql -uroot -P3306 -h10.27.0.224 -pucloud.cn MySQL [(none)]> create database ossec; Query OK, 1 row affected (0.00 sec) MySQL [(none)]> grant all on ossec.* to ossec@"%"; Query OK, 0 rows affected (0.00 sec) MySQL [(none)]> set password for ossec@'%'=password('ossec'); Query OK, 0 rows affected (0.01 sec) MySQL [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
(3)添加ossec数据库表结构
下载ossec二进制文件,主要使用其中mysql.schema文件,ossec-hids ossec官网下载地址:https://github.com/ossec/ossec-hids/archive/3.0.0.tar.gz
[root@10-27-0-224 ~]# wget https://github.com/ossec/ossec-hids/archive/3.0.0.tar.gz [root@10-27-0-224 ~]# tar zxf 3.0.0.tar.gz [root@10-27-0-224 ~]# cd ossec-hids-3.0.0/ [root@10-27-0-224 ossec-hids-3.0.0]# mysql -h10.27.0.224 -P3306 -uossec -possec ossec < ./src/os_dbd/mysql.schema
2.2 ossec-server服务端安装
(1)运行ossec-server容器
[root@10-27-0-224 ~]# docker run --name ossec-server -d -p 1514:1514/udp -p 1515:1515 \ -e SYSLOG_FORWADING_ENABLED=true -e SYSLOG_FORWARDING_SERVER_IP=172.17.0.2 \ -v /var/ossec/data:/var/ossec/data xetusoss/ossec-server #UCloud UHub加速地址 docker pull uhub.service.ucloud.cn/starcto/ossec-server:2.8.3-4trusty
(2)配置ossec-server服务端
[root@10-27-0-224 ~]# docker exec -it ossec-server bash root@6f87f20daf55:/# /var/ossec/bin/ossec-control enable database # 添加ossec对数据库的支持 root@6f87f20daf55:/# chmod u+w /var/ossec/etc/ossec.conf # 给ossec.conf文件授权 # 编辑ossec.conf文件 root@6f87f20daf55:/# vim /var/ossec/data/etc/ossec.conf # 在ossec.conf添加MySQL配置 <database_output> <hostname>172.17.0.2</hostname> <username>ossec</username> <password>ossec</password> <database>ossec</database> <type>mysql</type> </database_output> ## 在ossec.conf添加ip网段配置 <remote> <connection>syslog</connection> <allowed-ips>172.17.0.0/16</allowed-ips> </remote>
(3)在服务端添加代理端主机
# 在ossec-server的docker环境里执行 root@6f87f20daf55:/# /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.8.3 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 action: A,E,L,R or Q: A # 在出现的选择中选A,添加agent - Adding a new agent (use '\q' to return to the main menu). Please provide the following: * A name for the new agent: ossec-agent-1 # 自定义名字 * The IP Address of the new agent: 10.27.0.224 # agent服务器的IP * An ID for the new agent[002]: # 自定义ID Agent information: ID:002 Name:ossec-agent-1 IP Address:10.27.0.224 Confirm adding it?(y/n): y Agent added.
(4)在服务端获取代理端的KEY
# 在ossec-server的docker环境里执行 root@6f87f20daf55:/# /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.8.3 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 action: A,E,L,R or Q: E # 选择E Available agents: ID: 001, Name: DEFAULT_LOCAL_AGENT, IP: 127.0.0.1 ID: 002, Name: ossec-agent-1, IP: 10.27.0.224 Provide the ID of the agent to extract the key (or '\q' to quit): 002 # 输入ID 002 Agent key information for '002' is: MDAyIG9zc2VjLWFnZW50LTEgMTAuMjcuMC4yMjQgMmMxMDc5YzA2ZGI0NDBkOWNiYWI1MTM2ZDMyMWI0YWU0YTBkMzgyMmQ0MTM0ZWM0Nzc0NTYwM2U5ZjZlZTRiNw== ** Press ENTER to return to the main menu.
(5)启动ossec服务端
root@6f87f20daf55:/# /var/ossec/bin/ossec-control start Starting OSSEC HIDS v2.8.3 (by Trend Micro Inc.)... Started ossec-dbd... ossec-csyslogd already running... 2021/09/15 14:32:53 ossec-maild: INFO: E-Mail notification disabled. Clean Exit. Started ossec-maild... Started ossec-execd... ossec-analysisd already running... ossec-logcollector already running... ossec-remoted already running... ossec-syscheckd already running... ossec-monitord already running... Completed.
2.3 ossec-agent客户端安装
(1)安装ossec-agent客户端
[root@10-27-0-224 ~]# wget -q -O - https://updates.atomicorp.com/installers/atomic |sh [root@10-27-0-224 ~]# yum install ossec-hids ossec-hids-client -y
(2)修改ossec-agent配置
配置ossec-agent的配置文件,我们需要删除ossec-agent.conf的配置信息,因为这与ossec-server服务器上的配置重复了,不处理会在启动出现报错。
[root@10-27-0-224 ~]# vim /var/ossec/etc/ossec-agent.conf # 将ossec-agent.conf文件里的内容删减到只剩: <!-- OSSEC example config --> <ossec_config> <client> <server-ip>10.27.0.224</server-ip> </client> </ossec_config>
(3)agent添加key
[root@10-27-0-224 ~]# /var/ossec/bin/manage_agents # 输入I,将ID022的agent机器的KEY加入
(4)启动ossec-agent客户端
[root@10-27-0-224 ~]# /var/ossec/bin/ossec-control start
2.4 ossec的server和agent连接查看
# 在ossec-server的docker环境里 [root@10-27-0-224 ~]# docker exec -it ossec-server bash root@6f87f20daf55:/# /var/ossec/bin/agent_control -l OSSEC HIDS agent_control. List of available agents: ID: 000, Name: cacee8d64533 (server), IP: 127.0.0.1, Active/Local ID: 001, Name: DEFAULT_LOCAL_AGENT, IP: 127.0.0.1, Never connected ID: 022, Name: ossec-agent22, IP: 172.16.30.22, Active # 显示ID:022的活动状态为Active,即为连接成功在活动中
作者:UStarGao
链接:https://www.starcto.com/safetool/235.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-07-22MySQL主从同步延迟-大事务缺少索引
- 2021-11-19Linux本地SSD磁盘IO性能压测教程-fio
- 2021-02-17搭建图形化容器镜像仓库-harbor
- 2021-07-13开源文档管理系统Wizard容器化部署教程
- 2022-06-18MongoDB事务开发之写操作事务writeConcern