OSSEC HIDS部署

发布于 2021-10-12  2.79k 次阅读


摘要:

OSSEC是一款开源的基于主机的入侵检测系统(可以和网络入侵检测系统比较),可以简称HIDS (Host-based Intrusion Detection System 基于主机的入侵检测)它具备日志分析,文件完整性检查,策略监控,rootkit检测,实时报警以及联动响应等功能。它支持多种操作系统:Linux、Windows、MacOS、Solaris、HP-UX、AIX。属于企业安全之利器。

  详细的介绍和文档可以参考官网网站:http://www.ossec.net/

一 、前提环境准备

服务端计算机名:ossec-server
IP地址192.168.232.100
客户端计算机名:ossec-agent
IP地址192.168.232.101
####需要关闭selinux 和firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ##将selinux
sestatus -v ##如果SELinux status参数为enabled即为开启状态,若为disabled则为关闭状态。
1、临时关闭(不用重启机器):
setenforce命令:                 
##setenforce 0  设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
systemctl disable --now firewalld 关闭firewalld
systemctl status firewalld.service ###查看firewalld 状态

二、 MySQL服务安装以及配置

2.1 安装mysql 并配置

####安装mysql
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

yum -y install mysql57-community-release-el7-10.noarch.rpm
yum install -y mysql-server mysql-devel

##启动mysql,并设置mysql 开机自启动
systemctl start  mysqld&&systemctl enable  mysqld 

#####查看到初始密码是  iK&fMcasN5)s
grep "password" /var/log/mysqld.log
2021-08-30T02:00:33.127281Z 1 [Note] A temporary password is generated for root@localhost: iK&fMcasN5)s
#####使用root登录mysql
[root@ossce-server ~]# mysql -uroot -p

2.11 修改mysql root密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Query OK, 0 rows affected (0.00 sec)

2.12 配置mysql ossec 用户

mysql -uroot -p
mysql> create database ossec character set utf8;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all on ossec.* to ossec@'localhost' identified by 'Ossec@123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
mysql> quit

  首先我们安装需要用到的关联库和软件,由于我们最终是需要把日志导入到MySQL中进行分析,以及需要通过web程序对报警结果进行展示,同时需要把本机当做SMTP,所以需要在本机安装MySQL、Apache和sendmail服务。

2.2 安装php Apache和sendmail服务

yum install httpd php php-mysql sendmail

systemctl enable --now httpd

systemctl enable --now sendmail

三、安装ossec-server 服务并配置

3.2 ossec-server安装

首先通过官网的链接下载当前的最新稳定版本ossec-hids-3.6.0.tar.gz 的服务端包,同时解压。

wget https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz

安装 依赖包

yum install zlib-devel pcre2-devel libevent-devel make gcc

根据官方提示需要安装 Centos 系统需要安装

tar -zxf 3.6.0.tar.gz
cd ossec-hids-3.6.0

注意根据官网提示再2.9版本前安装需要提前编译 src make setdb使其支持MySQL,我们当前版是最新得3.6.0,每个版本安装都有细微得区别

wget https://github.com/ossec/ossec-hids/archive/refs/tags/2.8.1.tar.gz

[root@ossec-server ~]# tar -zxf 2.8.1.tar.gz
[root@ossec-server ~]# cd ossec-hids-2.8.1/
[root@ossec-server ossec-hids-2.8.1]#

 

[root@ossec-server ossec-hids-3.6.0]# env DATABASE=mysql ./install.sh 
 
  ** Para instalação em português, escolha [br].
  ** 要使用中文进行安装, 请选择 [cn].
  ** Fur eine deutsche Installation wohlen Sie [de].
  ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el].
  ** For installation in English, choose [en].
  ** Para instalar en Español , eliga [es].
  ** Pour une installation en français, choisissez [fr]
  ** A Magyar nyelvű telepítéshez válassza [hu].
  ** Per l'installazione in Italiano, scegli [it].
  ** 日本語でインストールします.選択して下さい.[jp].
  ** Voor installatie in het Nederlands, kies [nl].
  ** Aby instalować w języku Polskim, wybierz [pl].
  ** Для инструкций по установке на русском ,введите [ru].
  ** Za instalaciju na srpskom, izaberi [sr].
  ** Türkçe kurulum için seçin [tr].
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: cn
###############################################
 OSSEC HIDS v3.6.0 安装脚本 - http://www.ossec.net

 您将开始 OSSEC HIDS 的安装.
 请确认在您的机器上已经正确安装了 C 编译器.

  - 系统类型: Linux ossec-server 3.10.0-1160.6.1.el7.x86_64
  - 用户: root
  - 主机: ossec-server


  -- 按 ENTER 继续或 Ctrl-C 退出. --


1- 您希望哪一种安装 (server, agent, local or help)? server

  - 选择了 Server 类型的安装.

2- 正在初始化安装环境.

 - 请选择 OSSEC HIDS 的安装路径 [/var/ossec]:

    - OSSEC HIDS 将安装在  /var/ossec .

3- 正在配置 OSSEC HIDS.

  3.1- 您希望收到e-mail告警吗? (y/n) [y]: y
   - 请输入您的 e-mail 地址? jiayongli@haier.com
   - 请输入您的 SMTP 服务器IP或主机名 ? 127.0.0.1

  3.2- 您希望运行系统完整性检测模块吗? (y/n) [y]: y

   - 系统完整性检测模块将被部署.

  3.3- 您希望运行 rootkit检测吗? (y/n) [y]: y

   - rootkit检测将被部署.

  3.4- 关联响应允许您在分析已接收事件的基础上执行一个
       已定义的命令.
       例如,你可以阻止某个IP地址的访问或禁止某个用户的访问权限.
       更多的信息,您可以访问:
       http://www.ossec.net/en/manual.html#active-response
   - 您希望开启联动(active response)功能吗? (y/n) [y]: y


     - 关联响应已开启

   - 默认情况下, 我们开启了主机拒绝和防火墙拒绝两种响应.
     第一种情况将添加一个主机到 /etc/hosts.deny.
     第二种情况将在iptables(linux)或ipfilter(Solaris,
     FreeBSD 或 NetBSD)中拒绝该主机的访问.
   - 该功能可以用以阻止 SSHD 暴力攻击, 端口扫描和其他
     一些形式的攻击. 同样你也可以将他们添加到其他地方,
     例如将他们添加为 snort 的事件.

   - 您希望开启防火墙联动(firewall-drop)功能吗? (y/n) [y]: y

     - 防火墙联动(firewall-drop)当事件级别 >= 6 时被启动

   -
      - 210.22.70.225

   - 您希望添加更多的IP到白名单吗? (y/n)? [n]: y
   - 请输入IP (用空格进行分隔): 10.203.19.105

  3.5- 您希望接收远程机器syslog吗 (port 514 udp)? (y/n) [y]: y

   - 远程机器syslog将被接收.

  3.6- 设置配置文件以分析一下日志:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog


 -如果你希望监控其他文件, 只需要在配置文件ossec.conf中
  添加新的一项.
  任何关于配置的疑问您都可以在 http://www.ossec.net 找到答案.


  --- 按 ENTER 以继续 ---

3.3 ossec-server安装配置

上面只是安装好了OSSEC服务端,下面则是为了配置服务端,使其工作正常。执行下面命令启用数据库支持:

#####启用数据库支持:
[root@ossec-server ossec-hids-3.6.0]# /var/ossec/bin/ossec-control enable database
#####后导入表结构 ossec 的数据库里中:
[root@ossec-server ossec-hids-3.6.0]# mysql -uossec -p ossec < ./src/os_dbd/mysql.schema
Enter password:

######ossec_config中添加MySQL配置
[root@ossec-server ossec-hids-3.6.0]# vi /var/ossec/etc/ossec.conf


    <database_output>
        <hostname>127.0.0.1</hostname>
        <username>ossec</username>
        <password>Ossec@123</password>
        <database>ossec</database>
        <type>mysql</type>
    </database_output>
###########ossec.conf文件中的syslog部分进行配置,修改ossec.conf文件
  <remote>
    <connection>syslog</connection>
    <allowed-ips>0/0</allowed-ips>
  </remote>

3.4 在服务端添加ossec客户端并导出Key

[root@ossec-server ossec-hids-3.6.0]# /var/ossec/bin/manage_agents


****************************************
* OSSEC HIDS v3.6.0 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

- Adding a new agent (use '\q' to return to the main menu).
  Please provide the following:
   * A name for the new agent: ossec-agent-106
   * The IP Address of the new agent: 10.203.19.106
   * An ID for the new agent[001]: 001
Agent information:
   ID:001
   Name:ossec-agent-106
   IP Address:10.203.19.106

Confirm adding it?(y/n): y
Agent added with ID 001.


****************************************
* OSSEC HIDS v3.6.0 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

Available agents:
   ID: 001, Name: ossec-agent-106, IP: 10.203.19.106
Provide the ID of the agent to extract the key (or '\q' to quit): 001

Agent key information for '001' is:
MDAxIG9zc2VjLWFnZW50LTEwNiAxMC4yMDMuMTkuMTA2IDlhMzliYzQ4NzcyNzZjMTFlNTBiYWE5OTEwMDY1NmU0ZjkwNjUxZjQ1M2M4MTgyNGYwMzZjNGJhOGQ0ZTMxZjQ=

** Press ENTER to return to the main menu.

保存好key 需要在客户端导入:[root@ossec-server ossec-hids-3.6.0]# /var/ossec/bin/ossec-control start

四 、客户端 ossec-agent 安装以及配置

ossec的服务端和客户端是同一个安装包,我们需要客户端上下载安装包并配置

4.1 ossec-agent 安装

####在安装  ossec-agent 安装依赖包
yum install zlib-devel pcre2-devel  libevent-devel systemd-devel
wget https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz
[root@ossec-agent ossec-hids-3.6.0]# ./install.sh

  ** Para instalação em português, escolha [br].
  ** 要使用中文进行安装, 请选择 [cn].
  ** Fur eine deutsche Installation wohlen Sie [de].
  ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el].
  ** For installation in English, choose [en].
  ** Para instalar en Español , eliga [es].
  ** Pour une installation en français, choisissez [fr]
  ** A Magyar nyelvű telepítéshez válassza [hu].
  ** Per l'installazione in Italiano, scegli [it].
  ** 日本語でインストールします.選択して下さい.[jp].
  ** Voor installatie in het Nederlands, kies [nl].
  ** Aby instalować w języku Polskim, wybierz [pl].
  ** Для инструкций по установке на русском ,введите [ru].
  ** Za instalaciju na srpskom, izaberi [sr].
  ** Türkçe kurulum için seçin [tr].
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]:cn
OSSEC HIDS v3.6.0 安装脚本 - http://www.ossec.net

 您将开始 OSSEC HIDS 的安装.
 请确认在您的机器上已经正确安装了 C 编译器.

  - 系统类型: Linux ossec-agent 3.10.0-1160.6.1.el7.x86_64
  - 用户: root
  - 主机: ossec-agent


  -- 按 ENTER 继续或 Ctrl-C 退出. --


1- 您希望哪一种安装 (server, agent, local or help)? agent

  - 选择了 Agent(client) 类型的安装.

2- 正在初始化安装环境.

 - 请选择 OSSEC HIDS 的安装路径 [/var/ossec]:

    - OSSEC HIDS 将安装在  /var/ossec .

3- 正在配置 OSSEC HIDS.

  3.1- 请输入 OSSEC HIDS 服务器的IP地址或主机名: 10.203.19.105

   - 添加服务器IP  10.203.19.105

  3.2- 您希望运行系统完整性检测模块吗? (y/n) [y]: y

   - 系统完整性检测模块将被部署.

  3.3- 您希望运行 rootkit检测吗? (y/n) [y]: y

   - rootkit检测将被部署.

  3.4 - 您希望开启联动(active response)功能吗? (y/n) [y]: y


  3.5- 设置配置文件以分析一下日志:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog
    -- /var/log/httpd/error_log (apache log)
    -- /var/log/httpd/access_log (apache log)


 -如果你希望监控其他文件, 只需要在配置文件ossec.conf中
  添加新的一项.
  任何关于配置的疑问您都可以在 http://www.ossec.net 找到答案.


  --- 按 ENTER 以继续 ---

补充说明 当时

4.2 ossec-agent配置

将服务端生成的key,在客户端中导入

为了避免安装时候报错:
manage_agents: ERROR: Cannot unlink /queue/rids/sender: No such file or directory

需要在rids下创建sender 文件

touch /var/ossec/queue/rids/sender

[root@ossec-agent ossec-hids-3.6.0]#  /var/ossec/bin/manage_agents


****************************************
* OSSEC HIDS v3.6.0 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: I

* Provide the Key generated by the server.
* The best approach is to cut and paste it.
*** OBS: Do not include spaces or new lines.

Paste it here (or '\q' to quit): MDAxIG9zc2VjLWFnZW50IDEwLjIwMy4xOS4xMDYgOGNiMWYzNjk4MjE3OGVlZDJkOGYzMmI4Nzk0OTYyYmQzZjUzODgyYmYzOWExYWI1ZTFjYWU2YTM1OGJhMTI2NA==

Agent information:
   ID:001
   Name:ossec-agent
   IP Address:10.203.19.106

Confirm adding it?(y/n): y
Added.
** Press ENTER to return to the main menu.

简写方式:
/var/ossec/bin/manage_agents -i "MDAxIG9zc2VjLWFnZW50IDEwLjIwMy4xOS4xMDYgOGNiMWYzNjk4MjE3OGVlZDJkOGYzMmI4Nzk0OTYyYmQzZjUzODgyYmYzOWExYWI1ZTFjYWU2YTM1OGJhMTI2NA=="

最后启动ossec-agent客户端

[root@ossec-agent ossec-hids-3.6.0]# /var/ossec/bin/ossec-control start

五 、ossec-server安装第三方的web界面

可是目前这个环境如果我们要分析ossec的报警信息就太麻烦了,所以我们安装第三方的 web界面用来显示报警信息

analog第三方web 说明,analog 这个项目是早期做osse web警告流量展示的应有目前测试适配2.9以前的oss 版本

目前ossec 最新的版是3.6.0,有很多企业都将ossec 接入到efk 里使用kibana 来展示web 界面,由于需求问题,这边我使用的是ossec 下的wui 来做web 展示,警告信息罗列。

ossec -wui 安装
从github上搜索ossec 项目可以看到一个wui的项目,这个就ossec 的一个web工具。

现在地址为:
https://github.com/ossec/ossec-wui/archive/refs/tags/0.9.tar.gz

将下载的0.9.tar.gz 保存至httpd 的web目录下
/var/www/html/
tar -zxvf 0.9.tar.gz
mv ossec-wui-0.9 ossec-wui
./setup.sh 

ossec-wui 做ossec web界面,可以很好的展示ossec 的警告信息,可以更好维护系统。

六、ossec-agent 批量安装shang

由于 ossec-agent 安装很麻烦,连接时候需要在server 上做认证。

6.1 在ossec server 批量生成客户端信息

我做的批量的安装思路是:整理一份限时主机名 和ip 的列表

cat ip_hostname.txt

ip1:servername1
ip2:servername2
# *************************************************
# Author        : Erice Jia
# Email         : erice_jia@163.com
# Last modified : 2021-09-03
# Filename      : sendkey.sh
# Description   :
# *************************************************
#!/bin/bash
for i in $(cat ./ip_hostname.txt )
do
    #取出ip和hostname
    ip=$(echo "${i}" |awk -F":" '{print $1}')
    name=$(echo "${i}" |awk -F":" '{print $2}')
    /var/ossec/bin/manage_agents -a $ip -n $name
    agent_id=$(/var/ossec/bin/manage_agents -l|grep "$ip"|grep "ID:"|awk -F" " '{print $2}'|awk -F"," '{print $1}')
    agent_key=$(/var/ossec/bin/manage_agents -e $agent_id -j|awk -F":" '{print $3}'|awk -F"\"" '{print $2}')
    echo "$ip:$agent_key" >> ./ip_key.txt 
done

我们通过上面在 ossec 主机上执行上面的脚本可以 ,得到一个ip_key.txt 的 文件

cat ip_key.txt
ip1:MDAyIHRjb3Ntby1oZGMtY2VtZ3QwMSAxMC4yMDYuMTQxLjEgYzk5NDNlNWM4ZTFmZjM3OWNiMDFhNmVlMjJjNGViMTc0NWM1MTExMmIzOTRhYzYyMTQwZjNiYjMxMzYyOGU5OA==
ip2:MDAzIHRjb3Ntby1oZGMtY2VubzAxIDEwLjIwNi4xNDIuMSA2YTVjZDVhYTdiMmU3NGRiZTkyNTU5MGZiMzc3OWVlNzNlYzA1N2UyNDRjMDU5NmEwY2QzMzZjOTIzYmY2MzJh

6.2 在ossec agent批量连接ossec agent

这使用ansible 来批量安装之前,需要10.203.19.154 安装nginx 并添加autoindex

####在nginx.conf server 里添加
location ~ ^/download/.* {
         autoindex on;
         autoindex_exact_size off;
         autoindex_localtime on;
         add_header Cache-Control no-store;
    }

将ip_key.txt,3.6.0.tar.gz ossec_conf.tar preloaded-vars.conf 拷贝到对应的下载目录

#####ossec_conf.tar和
#####preloaded-vars.conf 为 10.203.19.106 上/root/ossec-hids-3.6.0/etc/preloaded-vars.conf 
#####ossec_conf.tar 为 10.203.19.106 上/var/ossec/etc/ossec.conf  打包后文件
# *************************************************
# Author        : Erice Jia
# Email         : erice_jia@163.com
# Last modified : 2021-08-03
# Filename      : install_ossec.sh
# Description   :
# *************************************************
yum -y install openssl-devel zlib-devel pcre2-devel libevent-devel make gcc wget
cd /root/
wget http://10.203.19.154/download/2021/ossce-agent/ip_key.txt
wget http://10.203.19.154/download/2021/ossce-agent/3.6.0.tar.gz
tar -zxf 3.6.0.tar.gz
cd ./ossec-hids-3.6.0
wget -P /root/ossec-hids-3.6.0/etc http://10.203.19.154/download/2021/ossce-agent/preloaded-vars.conf
./install.sh
mv /var/ossec/etc/ossec.conf /var/ossec/etc/ossec-agent.conf.bak2021
cd /var/ossec/etc
wget http://10.203.19.154/download/2021/ossce-agent/ossec_conf.tar
tar -xf ossec_conf.tar
#取出本机ip
touch /var/ossec/queue/rids/sender
#ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')
ip=$(/sbin/ifconfig eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')
echo $ip
##取本机ip对应得key
agent_key=$(grep "$ip:" /root/ip_key.txt|awk -F":" '{print $2}')
echo $agent_key
/var/ossec/bin/manage_agents -i "$agent_key" << EOF
Y

EOF
/var/ossec/bin/ossec-control start
rm -rf /root/ip_key.txt

###该脚本存在一个问题就是 某些主机没有eth0的问题,如果在了解业务的情况可以使用 if 判断对ip 如 eth0值为空是获取 eth3的(假设eth3 该主机的网卡)