首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OSSEC文档阅读学习实践

OSSEC文档阅读学习实践

作者头像
用户1423082
发布2024-12-31 20:18:55
发布2024-12-31 20:18:55
18100
代码可运行
举报
文章被收录于专栏:giantbranch's bloggiantbranch's blog
运行总次数:0
代码可运行

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等等。

下面这个图显示了中央管理器从代理和远程设备的系统日志接收事件。当检测到某些内容时,可以执行主动响应并通知管理员。

支持的系统

支持的系统很多

操作系统

代码语言:javascript
代码运行次数:0
运行
复制
GNU/Linux (all distributions, including RHEL, Ubuntu, Slackware, Debian, etc)
Windows XP, 2003, Vista, 2008, 2012
VMWare ESX 3.0,3.5 (including CIS checks)
FreeBSD (all current versions)
OpenBSD (all current versions)
NetBSD (all current versions)
Solaris 2.7, 2.8, 2.9, 10 and 11.4
AIX 5.2 and 5.3
Mac OS X 10.x
HP-UX 11

支持Syslog的设备

下面可以通过remote syslog支持:

代码语言:javascript
代码运行次数:0
运行
复制
Cisco PIX, ASA and FWSM (all versions)
Cisco IOS routers (all versions)
Juniper Netscreen (all versions)
SonicWall firewall (all versions)
Checkpoint firewall (all versions)
Cisco IOS IDS/IPS module (all versions)
Sourcefire (Snort) IDS/IPS (all versions)
Dragon NIDS (all versions)
Checkpoint Smart Defense (all versions)
McAfee VirusScan Enterprise (v8 and v8.5)
Bluecoat proxy (all versions)
Cisco VPN concentrators (all versions)
VMWare ESXi 4.x

agentless

使用OSSEC的无代理选项,也支持以下系统(用于日志分析和文件完整性检查):

代码语言:javascript
代码运行次数:0
运行
复制
Cisco PIX, ASA and FWSM (all versions)
Cisco IOS routers (all versions)
Juniper Netscreen (all versions)
SonicWall firewall (all versions)
Checkpoint firewall (all versions)
All operating systems specified in the “operating systems” section

安装

以Ubuntu 20.04为例

先安装依赖项

代码语言:javascript
代码运行次数:0
运行
复制
apt-get update && apt-get install build-essential make zlib1g-dev libpcre2-dev libevent-dev libssl-dev libsystemd-dev

如果需要数据库支持,则应安装 mysql-dev 或 postgresql-dev

代码语言:javascript
代码运行次数:0
运行
复制
apt-get install mysql-dev postgresql-dev

要使用 SQLite 功能,libsqlite3-dev 包是必需的。

代码语言:javascript
代码运行次数:0
运行
复制
apt-get install libsqlite3-dev

安装的话是有deb包的源的

代码语言:javascript
代码运行次数:0
运行
复制
wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash
apt-get update
# Install OSSEC HIDS server/manager
apt-get install ossec-hids-server
# install OSSEC HIDS agent
apt-get install ossec-hids-agent

下面尝试下载源码安装

代码语言:javascript
代码运行次数:0
运行
复制
wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
tar -xvf 3.7.0.tar.gz
cd ossec-hids-3.7.0/

这有两种安装,一种是执行./install.sh,或者输入下面命令

代码语言:javascript
代码运行次数:0
运行
复制
make TARGET=<server|local|agent>
make install

当然./install.sh可以配置一些信息,比较好,选择./install.sh之后按需配置即可

最后显示这个就安装完了

代码语言:javascript
代码运行次数:0
运行
复制
- 系统类型是  Debian (Ubuntu or derivative).
- 修改启动脚本使 OSSEC HIDS 在系统启动时自动运行 

- 已正确完成系统配置.

- 要启动 OSSEC HIDS:
     /var/ossec/bin/ossec-control start

- 要停止 OSSEC HIDS:
     /var/ossec/bin/ossec-control stop

- 要查看或修改系统配置,请编辑  /var/ossec/etc/ossec.conf



   感谢使用 OSSEC HIDS.
   如果您有任何疑问,建议或您找到任何bug,
   请通过 contact@ossec.net 或邮件列表 ossec-list@ossec.net 联系我们.    
   ( http://www.ossec.net/en/mailing_lists.html ).

   您可以在 http://www.ossec.net 获得更多信息

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

启动服务/var/ossec/bin/ossec-control start

代码语言:javascript
代码运行次数:0
运行
复制
# /var/ossec/bin/ossec-control start
Starting OSSEC HIDS v3.7.0...
Started ossec-maild...
Started ossec-execd...
Started ossec-analysisd...
Started ossec-logcollector...
Started ossec-syscheckd...
Started ossec-monitord...
Completed.

可以看到有6个模块

其实/var/ossec/etc/ossec.conf 也可以事后再配置的

检测规则在/var/ossec/rules下面,基本都是正则匹配

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu2004:/var/ossec/rules# ls
apache_rules.xml     ids_rules.xml               ms_ipsec_rules.xml       postfix_rules.xml      symantec-ws_rules.xml
apparmor_rules.xml   imapd_rules.xml             ms_powershell_rules.xml  postgresql_rules.xml   syslog_rules.xml
arpwatch_rules.xml   kesl_rules.xml              ms-se_rules.xml          proftpd_rules.xml      sysmon_rules.xml
asterisk_rules.xml   last_rootlogin_rules.xml    mysql_rules.xml          proxmox-ve_rules.xml   systemd_rules.xml
attack_rules.xml     lighttpd_rules.xml          named_rules.xml          psad_rules.xml         telnetd_rules.xml
cimserver_rules.xml  linux_usbdetect_rules.xml   netscreenfw_rules.xml    pure-ftpd_rules.xml    topleveldomain_rules.xml
cisco-ios_rules.xml  local_rules.xml             nginx_rules.xml          racoon_rules.xml       trend-osce_rules.xml
clam_av_rules.xml    mailscanner_rules.xml       nsd_rules.xml            roundcube_rules.xml    unbound_rules.xml
courier_rules.xml    mcafee_av_rules.xml         openbsd-dhcpd_rules.xml  rules_config.xml       vmpop3d_rules.xml
dnsmasq_rules.xml    mhn_cowrie_rules.xml        openbsd_rules.xml        sendmail_rules.xml     vmware_rules.xml
dovecot_rules.xml    mhn_dionaea_rules.xml       opensmtpd_rules.xml      smbd_rules.xml         vpn_concentrator_rules.xml
dropbear_rules.xml   ms1016_usbdetect_rules.xml  ossec_rules.xml          solaris_bsm_rules.xml  vpopmail_rules.xml
exim_rules.xml       msauth_rules.xml            owncloud_rules.xml       sonicwall_rules.xml    vsftpd_rules.xml
firewalld_rules.xml  ms_dhcp_rules.xml           pam_rules.xml            spamd_rules.xml        web_appsec_rules.xml
firewall_rules.xml   ms-exchange_rules.xml       php_rules.xml            squid_rules.xml        web_rules.xml
ftpd_rules.xml       ms_firewall_rules.xml       pix_rules.xml            sshd_rules.xml         wordpress_rules.xml
hordeimp_rules.xml   ms_ftpd_rules.xml           policy_rules.xml         symantec-av_rules.xml  zeus_rules.xml

解码器在/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,应该登录成功的更加重要,更需要关注吧。
代码语言:javascript
代码运行次数:0
运行
复制
<decoder name="sshd">
  <program_name_pcre2>^sshd</program_name_pcre2>
</decoder>

<decoder name="sshd-success">
  <parent>sshd</parent>
  <prematch_pcre2>^Accepted</prematch_pcre2>
  <pcre2 offset="after_prematch">^ \S+ for (\S+) from (\S+) port </pcre2>
  <order>user, srcip</order>
  <fts>name, user, location</fts>
</decoder>

<decoder name="ssh-denied">
  <parent>sshd</parent>
  <prematch_pcre2>^User \S+ from </prematch_pcre2>
  <pcre2 offset="after_parent">^User (\S+) from (\S+) </pcre2>
  <order>user, srcip</order>
</decoder>

测试

新建用户测试

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu2004:~# useradd ossec_test

这会在/var/log/auth.log中留下记录

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu2004:~# tail /var/log/auth.log -n 2
Nov 19 07:43:48 ubuntu2004 useradd[61590]: new group: name=ossec_test, GID=1001
Nov 19 07:43:48 ubuntu2004 useradd[61590]: new user: name=ossec_test, UID=1001, GID=1001, home=/home/ossec_test, shell=/bin/sh, from=/dev/pts/3

可以看到配置文件默认已经有该文件的监控了

代码语言:javascript
代码运行次数:0
运行
复制
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/auth.log</location>
</localfile>

检测规则也有了,在syslog_rules.xml中

代码语言:javascript
代码运行次数:0
运行
复制
<!-- Adduser messages -->
<group name="syslog,adduser">
  <rule id="5901" level="8">
    <pcre2>^new group</pcre2>
    <description>New group added to the system</description>
  </rule>

  <rule id="5902" level="8">
    <description>New group added to the system</description>
  </rule>

  <rule id="5902" level="8">
    <pcre2>^new user|^new account added</pcre2>
    <description>New user added to the system</description>
  </rule>

  <rule id="5903" level="2">
    <pcre2>^delete user|^account deleted|^remove group</pcre2>
    <description>Group (or user) deleted from the system</description>
  </rule>

  <rule id="5904" level="8">
    <pcre2>^changed user</pcre2>
    <description>Information from the user was changed</description>
  </rule>

  <rule id="5905" level="0">
    <program_name_pcre2>useradd</program_name_pcre2>
    <pcre2>failed adding user </pcre2>
    <description>useradd failed.</description>
  </rule>

</group> <!-- SYSLOG,ADDUSER -->

配置文件也包含了这个规则文件syslog_rules.xml

代码语言:javascript
代码运行次数:0
运行
复制
<rules>
   <include>rules_config.xml</include>
   <include>pam_rules.xml</include>
   <include>sshd_rules.xml</include>
   <include>telnetd_rules.xml</include>
   <include>syslog_rules.xml</include>

假如假装这是我们添加的规则,就用/var/ossec/bin/ossec-logtest来测试,输入log内容即可

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu2004:/var/ossec/etc# /var/ossec/bin/ossec-logtest 
2023/11/19 15:52:20 ossec-testrule: INFO: Reading local decoder file.
2023/11/19 15:52:21 ossec-testrule: INFO: Started (pid: 62481).
ossec-testrule: Type one log per line.

Nov 19 07:43:48 ubuntu2004 useradd[61590]: new group: name=ossec_test, GID=1001


**Phase 1: Completed pre-decoding.
       full event: 'Nov 19 07:43:48 ubuntu2004 useradd[61590]: new group: name=ossec_test, GID=1001'
       hostname: 'ubuntu2004'
       program_name: 'useradd'
       log: 'new group: name=ossec_test, GID=1001'

**Phase 2: Completed decoding.
       No decoder matched.

**Phase 3: Completed filtering (rules).
       Rule id: '5901'
       Level: '8'
       Description: 'New group added to the system'
**Alert to be generated.


Nov 19 07:43:48 ubuntu2004 useradd[61590]: new user: name=ossec_test, UID=1001, GID=1001, home=/home/ossec_test, shell=/bin/sh, from=/dev/pts/3


**Phase 1: Completed pre-decoding.
       full event: 'Nov 19 07:43:48 ubuntu2004 useradd[61590]: new user: name=ossec_test, UID=1001, GID=1001, home=/home/ossec_test, shell=/bin/sh, from=/dev/pts/3'
       hostname: 'ubuntu2004'
       program_name: 'useradd'
       log: 'new user: name=ossec_test, UID=1001, GID=1001, home=/home/ossec_test, shell=/bin/sh, from=/dev/pts/3'

**Phase 2: Completed decoding.
       No decoder matched.

**Phase 3: Completed filtering (rules).
       Rule id: '5902'
       Level: '8'
       Description: 'New user added to the system'
**Alert to be generated.

第一阶段预解码,之后由于这个无需再对后面的信息再解码了,第二阶段没有解码器,第三阶段就通过规则过滤告警了

/var/ossec/logs/alerts/alerts.log中是出现了下面告警log

代码语言:javascript
代码运行次数:0
运行
复制

** Alert 1700379830.1283224: mail  - syslog,adduser
2023 Nov 19 15:43:50 ubuntu2004->/var/log/auth.log
Rule: 5901 (level 8) -> 'New group added to the system'
Nov 19 07:43:48 ubuntu2004 useradd[61590]: new group: name=ossec_test, GID=1001

** Alert 1700379830.1283464: mail  - syslog,adduser
2023 Nov 19 15:43:50 ubuntu2004->/var/log/auth.log
Rule: 5902 (level 8) -> 'New user added to the system'
Nov 19 07:43:48 ubuntu2004 useradd[61590]: new user: name=ossec_test, UID=1001, GID=1001, home=/home/ossec_test, shell=/bin/sh, from=/dev/pts/3

server、agent模式

server的主机,安装的时候选server,之后开启远程机器syslog

代码语言:javascript
代码运行次数:0
运行
复制
3.5- 您希望接收远程机器syslog吗 (port 514 udp)? (y/n) [y]: 

 - 远程机器syslog将被接收.

之后server执行/var/ossec/bin/manage_agents

代码语言:javascript
代码运行次数:0
运行
复制
1. (A)dd an agent (A).
2. 之后选择(E)xtract key for an agent (E)

重启服务

代码语言:javascript
代码运行次数:0
运行
复制
/var/ossec/bin/ossec-control restart

agent端,安装的时候选agent,之后执行/var/ossec/bin/manage_agents

选择(I)mport key from the server (I).,之后复制上面得到的key即可

重启服务

代码语言:javascript
代码运行次数:0
运行
复制
/var/ossec/bin/ossec-control restart

搞个ossec-wui也能看到新的agent

参考

https://www.ossec.net/docs/ 《企业安全建设入门》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Getting started with OSSEC
  • OSSEC 架构
  • 支持的系统
  • 安装
  • 测试
  • server、agent模式
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档