Wauzh学习笔记(二、Wazuh开发环境)

1.Wazuh开发环境搭建

之前安装Wazuh直接从deb包里安装,都是编译过的软件,无法进行修改。为了对Wazuh进行二次开发,因此需要搭建Wazuh的编译环境。以下为Ubuntu18.04下编译环境搭建过程:

1.安装必要的编译软件

apt-get install gcc-mingw-w64
apt-get install nsis
apt-get install make

2.安装cmake

sudo apt install build-essential libssl-dev
wget https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5.tar.gz
tar -zxvf cmake-3.16.5.tar.gz
cd cmake-3.16.5
./bootstrap
make 
sudo make install 

3.下载源码

git clone https://github.com/wazuh/wazuh.git

4.编译测试

cd wazuh/src
make deps TARGET=agent #下载依赖包,比较缓慢,建议不要轻易执行make clean
make TARGET=agent

5.编译完成后,将libwazuhext.so添加到lib目录即可运行程序

cp libwazuhext.so /usr/lib/

2.wazuh项目结构

wazuh项目的整体结构如下:

├── add_localfiles.sh   #更新的时候用到的一个脚本
├── api #api目录
├── BUGS #告诉你如何提交BUG
├── CHANGELOG.md #项目版本迭代的修改记录
├── CONFIG #没啥用,就告诉你根据install.sh来配置项目
├── CONTRIBUTORS #项目参与人名单
├── etc #wazuh的配置文件
├── extensions #用到的其它软件(elasticsearch、filebeat等)的配置文件
├── framework #这里面保存着Wazuh集群相关的代码,具体可以参考https://documentation.wazuh.com/current/development/wazuh-cluster.html?highlight=framework#code-structure
├── gen_ossec.sh #一个可以生成配置文件的脚本
├── INSTALL #wauzh从源码安装的简易说明
├── install.sh #安装脚本,可以从源码安装server和client
├── integrations #主要是wazuh调用外部API的脚本,比如调用virustotal判断新增文件是否是病毒。可以参考https://documentation.wazuh.com/current/user-manual/capabilities/virustotal-scan/integration.html来配置
├── LICENSE 
├── README.md
├── ruleset  #rules和decoders
├── src  #agent和server的源码
├── tools #一些不知道干啥的小脚本
├── upgrade.sh #wauzh更新脚本
└── wodles  #对于集群、容器的相关监控py脚本,例如docker容器的监控可以参考https://documentation.wazuh.com/current/docker-monitor/monitoring_containers_activity.html?highlight=docker%20wodle

其中,src目录下保存着wazuh的agent和server端的源代码。该项目使用makefile来管理编译信息,该Makefile长度达到了2000多行,内容较多。

3.制作安装包

3.1 deb包制作

wazuh项目给提供了非常方便的安装包制作脚本。脚本保存于wazuh-packages项目中,使用也比较简单,这个项目中使用的是docker进行编译,需要提前在系统中安装docker环境。但是这个项目似乎对于本地的源码编译有BUG,经过测试无法编译使用。但是可以参考Dockerfile中的编译方法来进行打包。

1.克隆wazuh-packages

cd /home/ubuntu
git clone https://github.com/wazuh/wazuh-packages

2.安装依赖

apt-get install devscripts equivs

3.拷贝所需文件

cp -r /home/ubuntu/wazuh-packages/debs/SPECS/4.2.0/wazuh-agent/debian/ /home/ubuntu/wazuh/
cp /home/ubuntu/wazuh-packages/debs/gen_permissions.sh /home/ubuntu/wazuh/

4.修改rules文件

sed -i s:RELEASE:1:g ./debian/changelog
sed -i 's:export JOBS=.*:export JOBS=2:g' ./debian/rules
sed -i 's:export DEBUG_ENABLED=.*:export DEBUG_ENABLED=no:g' ./debian/rules
sed -i 's#export PATH=.*#export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin#g' ./debian/rules
sed -i 's:export INSTALLATION_DIR=.*:export INSTALLATION_DIR=/var/ossec:g' ./debian/rules
sed -i 's:DIR="/var/ossec":DIR="/var/ossec":g' ./debian/preinst ./debian/postinst ./debian/prerm ./debian/postrm
sed -i 's#export LD_LIBRARY_PATH=.*#export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7.5.0:#g' ./debian/rules

5.构建环境并编译

mk-build-deps -ir -t 'apt-get -o Debug::pkgProblemResolver=yes -y'
debuild --rootcmd=sudo -b -uc -us

完成后在/home/ubuntu目录下就会生成一个deb包。