基于Wazuh的Ossec安全架构方案

释放双眼,带上耳机,听听看~!

Wazuh是一个安全检测,可见性和合规性开源项目。它诞生于OSSEC HIDS的分支,后来与Elastic Stack和OpenSCAP集成,演变成更全面的解决方案。以下是这些工具及其功能的简要说明:

OSSEC HIDS

OSSEC HIDS是一种基于主机的入侵检测系统(HIDS),用于安全检测,可见性和合规性监控。它基于多平台代理,将系统数据(例如,日志消息,文件哈希值和检测到的异常)转发给中央管理器,在中央管理器中进行进一步分析和处理,从而产生安全警报。代理通过安全且经过身份验证的渠道将事件数据传送到中央管理器进行分析。

此外,OSSEC HIDS还提供集中式系统日志服务器和无代理配置监控系统,可提供对无代理设备(如防火墙,交换机,路由器,接入点,网络设备等)上的事件和更改的安全洞察。

OpenSCAP

OpenSCAP是一种OVAL(开放漏洞评估语言)和XCCDF(可扩展配置清单描述格式)解释器,用于检查系统配置和检测易受攻击的应用程序。

它是一个众所周知的工具,旨在使用行业标准的企业环境安全基准来检查系统的安全合规性和强化。

弹性堆栈

Elastic Stack是一个软件套件(Filebeat,Logstash,Elasticsearch,Kibana),用于收集,解析,索引,存储,搜索和显示日志数据。它提供了一个Web前端,提供事件的高级仪表板视图,允许对事件数据存储进行深入分析和数据挖掘。

第一步、安装Wazuh服务器

1、设置WAZUH存仓库

cat > /etc/yum.repos.d/wazuh.repo <<\EOF

[wazuh_repo]

gpgcheck=1

gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH

enabled=1

name=Wazuh repository

baseurl=https://packages.wazuh.com/3.x/yum/

protect=1

EOF

2、安装Wazuh Manager

yum install wazuh-manager

检查wazuh-manager状态

systemctl status wazuh-manager

安装Wazuh-API

1、要运行Wazuh API,需要NodeJS> = 4.6.1。添加官方NodeJS存储库

curl –silent –location https://rpm.nodesource.com/setup_8.x | bash –

2、安装 NodeJS

yum install nodejs

3、安装 Wazuh-API

yum install wazuh-api

4、完成此过程后,使用以下命令检查服务状态:

systemctl status wazuh-api

5、避免自动更新设置禁用Wazuh存储库: sed -i”s/^enabled=1/enabled=0/” /etc/yum.repos.d/wazuh.repo

6、保护Wazuh API

此步骤对接KIBANA时需要接收Agent端数据必须设置

cd /var/ossec/api/configuration/auth

node htpasswd -c user myUserName

第二步、部署elk服务器集群

1、安装Oracle Java JRE 8

curl -Lo jre-8-linux-x64.rpm –header “Cookie: oraclelicense=accept-securebackup-cookie” “https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jre-8u191-linux-x64.rpm”

yum -y install jre-8-linux-x64.rpm

2、安装Elastic存储库及其GPG密钥:

rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch

cat > /etc/yum.repos.d/elastic.repo << EOF

[elasticsearch-6.x]

name=Elasticsearch repository for 6.x packages

baseurl=https://artifacts.elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

EOF

Elasticsearch#(此处采用三台ES集群)不会elk的自己去了解

要求 数量

ES 3台

Kibana 1台

logstash 1台

wazuh 1台

Bro 1台

配置文件:

client node

cluster.name: Ossec

node.name: client-node-1

node.data: false

监听的IP地址

network.host: 本机IP地址

master node

cluster.name: Ossec

数字累加区分

node.name: master-node-1

node.master: true

node.data: true

监听的IP地址

network.host: 本机IP地址

discovery.zen.ping.unicast.hosts: [“同集群下其它ES机器地址”]

data node

cluster.name: Ossec

数字累加区分

node.name: data-node-1

node.data: true

监听的IP地址

network.host: 本机IP

discovery.zen.ping.unicast.hosts: [“同集群下的另外两台IP”]

1、安装Elasticsearch包:

yum install elasticsearch-6.5.4

2、启用并启动Elasticsearch服务:

systemctl start elasticsearch.service

3、为Elasticsearch加载Wazuh模板:

curl https://raw.githubusercontent.com/wazuh/wazuh/3.7/extensions/elasticsearch/wazuh-elastic6-template-alerts.json | curl -X PUT “http://localhost:9200/_template/wazuh” -H ‘Content-Type: application/json’ -d @-

Logstash

1、安装Logstash包:

yum install logstash-6.5.4

2、下载Logstash的Wazuh配置文件:

单主机架构请查阅https://documentation.wazuh.com/current/installation-guide/installing- elastic-stack/elasticserverrpm.html

由于Logstash用户需要读取alerts.json文件,请运行以下命令将其添加到OSSEC组:

usermod -a -G OSSEC logstash

分布式架构

curl -so /etc/logstash/conf.d/01-wazuh.conf https://raw.githubusercontent.com/wazuh/wazuh/3.7/extensions/logstash/01-wazuh-remote.conf

systemctl start logstash.service

Kibana

1、安装Kibana包:

yum install kibana-6.5.4

2、为Kibana安装Wazuh应用程序插件:

sudo -u kibana NODE_OPTIONS=”–max-old-space-size=3072″ /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.7.2_6.5.4.zip

3、编辑/etc/kibana/kibana.yml 修改为server.host : “0.0.0.0”

4、启用并启动Kibana服务:

systemctl start kibana.service

5、避免自更新 sed -i “s/^enabled=1/enabled=0/” /etc/yum.repos.d/elastic.repo

第三部、安装Agent端Wazuh代理

Wazuh代理程序在您要监视的主机上运行。它是多平台的,并提供以下功能: 日志和数据收集, 文件完整性监控, rootkit和恶意软件检测,以及安全政策监测。

1、安装Agent

yum install wazuh-agent

最后是一个Agent端的问题,安装上去后我们还要进行代理API的设置 我们需要在Agent端运行如下Shell脚本

 /**#/bin/bash**/

Shell script for registering agents automatically with the API

Copyright (C) 2017 Wazuh, Inc. All rights reserved.

Wazuh.com

This program is a free software; you can redistribute it

and/or modify it under the terms of the GNU General Public

License (version 2) as published by the FSF – Free Software

Foundation.

 Connection variables

 API_IP=”10.0.0.1″ /**此处修改为Wazuh服务器的实际IP地址**/

 API_PORT=”55000″

 PROTOCOL=”http”

 USER=”foo”        /**此处需根据实际部署环境进行修改**/

 PASSWORD=”bar”    /**此处需根据实际部署环境进行修改**/

display_help() {

cat <<HELP_USAGE

$0  [-h] [-f|–force] [-q|–quiet] [agent]

 -h             Show this message.

 -f|–force     Force agent removal (if already registered)

              The agent will be re-regitered with a new ID

 -s|–silent    Surpress the output while removing the agent

 agent          Agent name (if missing we will use the output

              of the hostname command) 

HELP_USAGE

}

register_agent() {

/**# Adding agent and getting Id from manager**/

echo “”

echo “Adding agent:”

echo “curl -s -u $USER:**** -k -X POST -d ‘name=$AGENT_NAME’ $PROTOCOL://$API_IP:$API_PORT/agents”

API_RESULT=$(curl -s -u $USER:”$PASSWORD” -k -X POST -d ‘name=’$AGENT_NAME $PROTOCOL://$API_IP:$API_PORT/agents)

echo -e $API_RESULT | grep -q “\”error\”:0″ 2>&1

if [ “$?” != “0” ]; then

  echo -e $API_RESULT | sed -rn ‘s/.*”message”:”(.+)”.*/\1/p’

  exit 1

fi

/**# Get agent id and agent key **/

AGENT_ID=$(echo $API_RESULT | cut -d’:’ -f 4 | cut -d ‘,’ -f 1)

AGENT_KEY=$(echo $API_RESULT | cut -d’:’ -f 5 | cut -d ‘}’ -f 1)

echo “Agent ‘$AGENT_NAME’ with ID ‘$AGENT_ID’ added.”

echo “Key for agent ‘$AGENT_ID’ received.”

/**# Importing key**/

echo “”

echo “Importing authentication key:”

echo “y” | /var/ossec/bin/manage_agents -i $AGENT_KEY

/**# Restarting agent**/

echo “”

echo “Restarting:”

echo “”

/var/ossec/bin/ossec-control restart

exit 0

}

remove_agent() {

  echo “Found: $AGENT_ID”

  echo “Removing previous registration for ‘$AGENT_NAME’ using ID: $AGENT_ID …”

/**# curl -u foo:bar -k -X DELETE “https://127.0.0.1:55000/agents/001**/

REMOVE_AGENT=$(curl -s -u $USER:”$PASSWORD” -k -X DELETE $PROTOCOL://$API_IP:$API_PORT/agents/$AGENT_ID)

echo -e $REMOVE_AGENT

}

get_agent_id() {

echo “”

echo “Checking for Agent ID…”

AGENT_ID=$(curl -s -u $USER:”$PASSWORD” -k -X GET $PROTOCOL://$API_IP:$API_PORT/agents/name/$AGENT_NAME | rev | cut -d: -f1 | rev | grep -o ‘”.*”‘ | tr -d ‘”‘)

}

           /**# MAIN**/

           /**# ENTRY POINT**/

while getopts ‘:hfs’ OPTION; do

 case “$OPTION” in

   h)

    display_help

    exit 0

    ;;

   f|–force)

    FORCE=true

    ;;

   s|–silent)

    SILENT=true

    ;;

 esac

done

 /**# reset $1, $2 …. as normal argument after the flag**/

shift $(($OPTIND – 1))

/**# if no arguments are passed in after the flags, we assign the hostname value to the AGENT_NAME**/ 

 AGENT_NAME=${1:-$(hostname)}

 get_agent_id

/**# check the return value. If we get an integer back then the agent is already registered. Anything else -> agent is not registered **/

if ! [ “$AGENT_ID” -eq “$AGENT_ID” ] 2> /dev/null ; then

 echo “Starting registration process …”

  :

 elif [[ “$FORCE” = true && “$SILENT” = “true” ]] ; then

  remove_agent > /dev/null 2>&1

   else

      if [[ “$FORCE” = true ]] ; then

    remove_agent

  fi

 fi

/**# Default action -> try to register the agent**/

register_agent

另一需要修改的是 /var/ossec/etc/ossec.conf

将第四行<address>127.0.0.1</address>的IP修改为本机IP

效果如下

#由于对接Bro的篇幅较长,对接Bro的文章留待下一篇发布

公众号发布内容可能错版或其他原因导致部署方案的命令显示错误,下载原文稿件,公众号回复 ossec 即可免费领取。

________________________________________

声明:本文章来自团队成员tErminat0rt投稿,仅供安全爱好者研究学习,对于用于非法途径的行为,作者不承担任何责任。

如果有想投稿的可以在公众号联系我,有技术含量的文章如果通过可获得稿费及加入我们的核心团队,成员大部分为各大公司安全负责人和安全行业专家,0day多多内部资料多多,欢迎来撩。

人已赞赏
安全工具

售前工程师应该如何讲解PPT?

2019-10-11 17:02:20

安全工具

zico靶机实战过程

2019-10-11 17:02:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索