OSSEC(一)

OSSEC(一)

0.前言

  这篇文章主要是进行OSSEC的了解以及相关安装和搭建,这里分为了一个主机win和一个centos7的agent安装,以及centos7的server安装,参考链接为

1
https://zhuanlan.zhihu.com/p/53516534

  虽然是参考,但是自己对整体步骤进行了更加详细的描述;也对过程进行了更加精致的阐述,也对会出现的问题进行了解决,希望能够给到一定的帮助

  

1.OSSEC兴起

  在谈起Ossec前首先清楚EDR(端点威胁检测与响应)是一种安全技术,旨在监控和保护计算机终端设备免受恶意活动的影响。该技术被广泛应用于威胁检测、攻击溯源以及响应处理努力、终端控制等多种安全场景,帮助组织及时发现和应对恶意活动,并提供有关安全事件的详细信息和分析报告。

  而Ossec是一款开源的跨平台的准EDR入侵检测响应系统,能够很好的实商业版本EDR的大部分功能

2.OSSEC产品定位

  • 安全事件监控:

  OSSEC 可以监控各种系统和应用程序生成的日志,并实时分析这些日志以检测潜在的安全事件。它可以帮助组织及时发现异常活动、潜在的入侵行为或其他安全威胁

  • 文件完整性检查

  OSSEC 可以监控关键系统文件和目录的完整性,通过比较文件的哈希值来检测是否有未经授权的更改。这有助于发现潜在的恶意软件、未经授权的访问或其他对系统完整性的威胁

  • 入侵检测系统功能:

  OSSEC 提供了入侵检测系统的功能,可以识别和报告可能的入侵行为。它使用规则和模式匹配技术来检测已知的攻击模式或异常行为,并生成警报以通知安全团队

  • 实时警报和响应:

  OSSEC 可以生成实时警报,通知安全团队有关潜在的安全事件。它还提供了响应机制,可以触发自动化响应或通知相关人员进行进一步的调查和处理

  • 可扩展性和定制化:

  OSSEC 是一个开源项目,具有高度可扩展性和定制化能力。用户可以根据自己的需求添加自定义规则、插件和报警方式,以适应不同的环境和安全要求

3.Ossec_server安装

  • 初始基础搭建

  首先我们需要进行数据库的基本环境搭建,由于之前已经在该环境上搭建了mysql类型数据库,这里直接进行相关的初始化和有关库的安装即可

1
2
3
4
5
6
#初始化环境
yum -y install make gcc
#安装编译库
yum -y install mysql-devel postgresql-devel
#安装数据库支持库
yum -y install sqlite-devel
  • 安装包操作

  剩下那我们在github中抓取相应的压缩包,进行解压与重命名操作:

1
2
3
4
5
6
7
8
#下载压缩包
wget https://github.com/ossec/ossec-hids/archive/3.1.0.tar.gz
#重命名
mv 3.1.0.tar.gz ossec-hids-3.1.0.tar.gz
#解压
tar xf ossec-hids-3.1.0.tar.gz
#进入目录
cd ossec-hids-3.1.0
  • 启动安装脚本

  执行启动安装脚本

1
./install.sh

  启动脚本后,会进行相关问题的安装配置询问,安装是需求进行安装即可

  选项说明:

1
2
3
4
5
6
7
8
9
1)server - 安装服务器端
2) /var/ossec - 选择安装目录,默认选项
3) y - 是否启用邮件告警,默认启用
4) y - 是否启用系统完整性检测模块Syscheck功能,默认启用
5)y - 是否启用后门检测模块Rootcheck功能,默认启用
6) y - 是否启用主动响应模块active-response功能,默认启用
7n - 是否启用防火墙联动功能,默认启用,此处为关闭
8n - 是否添加联动功能白名单,默认启用,此处为关闭
9) y - 是否接受远程主机发送的syslog日志,默认启用

  配置完安装脚本之后,按回车键就开始进行编译安装,如果需要改变OSSEC的配置,可以等安装完成后,编辑ossec.conf配置文件进行修改,并重启ossec进程使其生效

  这里遇到了一个问题,由于系统中安装了两个版本的openssl(老毛病了,之前就因为这个导致自己的zabbix一直存在问题,这里也是冲突导致了ossec安装一直不成功

1
2
which openssl
rpm –qa|grep openssl

  由于多个版本拿到openssl库,导致了编译过程中的冲突,猜测这里执行删除报的命令进行解决,使得ossec能够正确地链接到合适的OpenSSL库

1
yum remove openssl-devel

 直接删除开发包,确实是行得通的,最后也是成功的进行了编译安装

4.Ossec_agent安装

  • 初始基础搭建

  初始化环境安装,安装编译库

1
# yum -y install make gcc
  • 安装包操作
1
2
3
4
5
6
7
8
#下载压缩包
wget https://github.com/ossec/ossec-hids/archive/3.1.0.tar.gz
#重命名
mv 3.1.0.tar.gz ossec-hids-3.1.0.tar.gz
#解压
tar xf ossec-hids-3.1.0.tar.gz
#进入目录
cd ossec-hids-3.1.0
  • 启动安装脚本

  执行启动安装脚本

1
./install.sh

  启动脚本后,会进行相关问题的安装配置询问,安装是需求进行安装即可

  选项说明:

1
2
3
4
5
6
1)agent - 安装客户端
2/var/ossec - 选择安装目录,默认选项
3192.168.70.233 - 输入服务器端IP地址
4) y - 是否启用系统完整性检测模块Syscheck功能,默认启用
5) y - 是否启用后门检测模块Rootcheck功能,默认启用
6) y - 是否启用主动响应模块active-response功能,默认启用
  • win_agent的安装

  首先下载win_agent版本安装程序

1
https://updates.atomicorp.com/channels/atomic/windows/

  输入OSSEC-Server IP地址和通信密钥

  密钥的生成会在下一个小节进行阐述

5.Server与Agent通信

  通过以上步骤,我们完成了对Ossec客户端和服务端的相关安装,接下来就是进行两者的通信连接,server与agent之间的建立通信需要通过认证,server需要为agent端生成腾讯密钥并导入agent后才能完成信任关系,并且server需要开放udp 1514腾讯端口,用以接收agent上报的信息

  • Agent配置Server ip

  首先需要配置agent配置文件内容指向server IP,由于前面在安装的时候,我们就直接输入了server的ip地址,这里就不用修改

1
vim /var/ossec/etc/ossec.conf
1
2
3
4
5
<ossec_config>
<client>
<server-ip>192.168.70.237</server-ip>
<config-profile></config-profile>
</client>
  • Server生成通信密钥
1
/var/ossec/bin/manage_agents

  选项说明:

1
2
3
4
5
6
1)A - 新增Agent
2) agent01 - 设置Agent名称
310.40.27.121 - 输入Agent IP地址
4) y - 是否确认新增Agent
5) E - 为Agent生成通讯Key
6001 - 输入新增Agent的ID,显示Key值
  • Agent通信密钥导入
1
/var/ossec/bin/manage_agents

  选项说明:

1
2
3
1) I - 新增Agent
2) MDAxIGFnZW50MDEgM=... - 输入通信key
3) y - 输入Agent IP地址
  • Server开放通信端口
1
2
3
4
# 添加UDP端口规则,将端口1514添加到防火墙配置中,并且该规则将在系统重启后保持有效
firewall-cmd --add-port=1514/udp --permanent
# 重新加载防火墙配置,以使新的规则生效
firewall-cmd --reload

  检查Agent是否可以通信

1
/var/ossec/bin/list_agents -c

  明显是出了问题,这里一开始我以为是我再配置的过程中有问题,所以重新配置了一个006给agent,取名为centos7_1

  很明显,客户端这边是能收到信息的,因此排除是在设置通信的过程问题,所以进行排错处理,参考链接:

1
https://blog.csdn.net/zhang35/article/details/105503227

  该链接包含了OSSEC Agent和Server无法连接的常用检查流程,有比较大的参考性,按照检查流程,首先确保网络联通

1
ping 192.168.70.233

  网络连接没问题,接下来重启server和agent

1
/var/ossec/bin/ossec-control restart

  agent:

  server:

  最后再次执行list_agents –c的相关指令

  成功导入,window则按照前面的流程再走一遍即可

  首先点击save进行保存

  保存成功后会显示我们在server上所注册的内容,这与刚才的实例centos7_1的反馈一致,接下来点击右上角的manage标题,点击start ossec按钮,进行开启操作

  最后查看server执行list_agents –c进行查看

6.Server MySQL存储事件

  在server的配置当中,其所支持的数据库目前有三种,Mysql、Postgresql以及Sqllite,我们可以选择吧日志告警等相关信息都存入到我们所选择的数据库中,这里进行数据库的安装内容

  • 建立数据库

  首先我们登录Mysql后首先创建数据库对应的ossec用户,密码设置为了ossec

1
2
CREATE USER 'ossec'@'localhost' IDENTIFIED BY 'ossec';
select user from mysql.user;

  之后建立ossec数据库。配置权限用户为ossec,并且设置相应的权限

1
2
3
4
create database ossec;
show databases;
grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on ossec.* to ossec@localhost;
flush privileges;
  • 导入表结构

  导入OSSEC数据库表结构 schema 文件保存在源码目录,首先查看是否有相关的mysql.schema文件

1
2
cd /home/lfs/ossec-hids-3.1.0/src/os_dbd
ll

  接下来进行导入并查看是否导入成功

1
2
3
4
mysql -u root -proot ossec < mysql.schema;
mysql -u root -proot;
use ossec;
show tables;
  • 编译并激活Mysql存储
1
2
3
4
5
6
cd /home/lfs/ossec-hids-3.1.0/src
make TARGET=server DATABASE=mysql install
make clean
cd ..
DATABASE=mysql ./install.sh
/var/ossec/bin/ossec-control enable database

  到这里就编译并激活了Mysql存储了,这里需要注意,由于mysql的一些版本问题,存在编译安装后,启动存在报错的情况,比如:

  这就导致我们无法启动ossec服务,会告诉我们配置有问题,因此这里我是重新新建一个新的虚拟机环境进行了新的数据库mysql的安装,才最终达到成功的效果:

1
2
3
4
5
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y install mysql-server
systemctl start mysqld
systemctl enable mysqld

  最后重新搭建mysql环境后达到成功的效果,果然是之前mysql编译安装的问题

  • 添加MySQL数据库配置

  在完成了需更换编译后,我们就需要在主配置文件ossec.conf的最后增加Mysql数据库的配置即可,也就是添加ip地址、数据库名称、数据用户名称以及密码等内容:

1
2
3
4
5
6
7
8
9
<ossec_config>
<database_output>
<hostname>127.0.0.1</hostname>
<username>ossec</username>
<password>ossec</password>
<database>ossec</database>
<type>mysql</type>
</database_output>
</ossec_config>
  • 进行日志查错
1
2
/var/ossec/bin/ossec-control enable database
service ossec restart

  最后成功运行,但是这并不代表是完全成功,我们需要查看日志内容

1
cat /var/ossec/logs/ossec.log

  查看到两个问题:

  第一个问题是自己的问题,ossec的数据用户密码设置的时候打错了,重新修改了回来,这里也是立马就完善了

  查看到ossec-dbd: Connected to database ‘ossec’ at ‘127.0.0.1’.则代表我们连接成功,接下来我们查看第二个问题:

  这个显示是ossec-remoted组件遇到了一个关于syslog访问列表的问题。错误消息指出在syslog的访问列表中没有允许的IP地址或网络,为来解决这个问题,我们需要修改配置文件,找到syslog区域,添加allowed-ips标签即可

1
2
3
vim /var/ossec/etc/ossec.conf

<allowed-ips>192.168.0.0/16</allowed-ips>

  最后修改效果:

  • Server3.1版本!启动!

  排除所有错误,接下来就是进行启动:

1
2
/var/ossec/bin/ossec-control restart
/var/ossec/bin/list_agents -c

  最后查看数据库的报警信息:

1
2
3
4
5
6
7
8
# 进入数据库执行行
mysql -u ossec –possec
# 使用指定数据库
use ossec
# 查询最近发生的10条告警
SELECT id,server_id,rule_id,level,timestamp,location_id,src_ip,dst_ip,src_port,dst_port,alertid,user FROM alert limit 10;
# 关联的事件分类
SELECT rule_id, cat_name from category, signature_category_mapping WHERE rule_id = 1002 AND signature_category_mapping.cat_id = category.cat_id;

OSSEC(一)
https://one-null-pointer.github.io/2023/08/09/Linux运维——Ossec安装/
Author
liaoyue
Posted on
August 9, 2023
传送口