
Wazuh 源码构建完全指南Server / UNIX Agent / Windows Agent 的编译、定制与清理【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh本指南以 docs/dev/build-sources.md 为骨架系统讲解如何从源码构建 Wazuh 安全平台的核心组件Server 管理端、UNIX 系 Agent、Windows Agent涵盖依赖下载、Makefile 构建选项、CMake 底层原理、构建产物位置与多种清理策略。读者完成阅读后将能够独立搭建 Wazuh 的编译环境、按需定制构建参数并对构建失败进行快速定位与修复。环境准备工具链是成功构建的前提在开始任何构建之前需要先完成开发环境的搭建。推荐平台为Ubuntu 24.04最低工具链要求如下详见 docs/dev/setup.md依赖最低版本 / 说明GNU C/C CompilerGCC 13GNU Make构建驱动工具CMake3.18SELinux Policy Core Utilspolicycoreutils提供checkmodule、semodule_packageprocps进程管理工具curl下载外部依赖CMocka仅运行单元测试时需要libcmocka-devUbuntu 24.04 安装命令apt install gcc g make cmake curl procps policycoreutils apt install libcmocka-devRocky Linux 9 需要额外启用 GCC 工具集dnf install make cmake gcc-toolset-13-gcc-c gcc-toolset-13-gcc procps policycoreutils scl enable gcc-toolset-13 bash dnf install dnf-plugins-core dnf config-manager --enable crb dnf install libcmocka-devel版本提示当前仓库 VERSION.json 标识的版本为5.1.0stagealpha0。构建过程中src/CMakeLists.txt 会解析该文件并注入VERSION/REVISION宏到编译单元中因此版本号与源码保持一致。Windows Agent 构建的特殊要求构建 Windows 版 Agentwinagent需要三样东西MinGW 交叉编译器、Wine用于在 Linux 上运行 Windows 测试二进制和CMocka必须用 MinGW 从源码交叉编译。Ubuntu 24.04 安装 MinGW 与 Wineapt install gcc-mingw-w64-i686 g-mingw-w64-i686 wine32CMocka 交叉编译stable-1.1 分支关闭共享库git clone -b stable-1.1 https://git.cryptomilk.org/projects/cmocka.git sed -Ei s/(BUILD_SHARED_LIBS .) ON/\1 OFF/ cmocka/DefineOptions.cmake mkdir cmocka/build cd cmocka/build cmake -DCMAKE_C_COMPILERi686-w64-mingw32-gcc \ -DCMAKE_C_LINK_EXECUTABLEi686-w64-mingw32-ld \ -DCMAKE_INSTALL_PREFIX/usr/i686-w64-mingw32/ \ -DCMAKE_SYSTEM_NAMEWindows \ -DCMAKE_BUILD_TYPERelease .. make make install cd ../.. rm -r cmocka理解构建系统Makefile 驱动CMake 落地Wazuh 的构建入口位于 src/Makefile它承担两层职责依赖管理deps目标按目标平台TARGET挑选所需的外部库清单cJSON、OpenSSL、zlib、sqlite、libyaml、curl、libpcre2、flatbuffers 等从packages.wazuh.com/deps/预编译库或源码包下载并解压到src/external/见 src/Makefile 的RESOURCES_URL与DEPS_VERSION定义。CMake 工程调用最终通过build_wazuh_cmake目标在src/build/目录执行cmake .. -DTARGET${TARGET} ...并调用make完成真正的编译见 src/Makefile。编译单元的组织方式也随TARGET不同而分化见 src/CMakeLists.txtAgentagent/winagent编译active-response、addagent、client-agent、logcollector、os_execd、rootcheck、syscheckd等组件winagent还会追加win32子目录Servermanager编译engine、monitord、os_auth、remoted、wazuh_db以及content_manager、indexer_connector、keystore、router等共享模块。值得注意的是TARGETserver与TARGETmanager是等价的——src/Makefile 中显式将server重写为manager。如果不指定TARGETMake 会输出提示并要求你显式选择manager、agent或winagent见failtarget目标src/Makefile。构建 Wazuh Server管理端Server 组件manager的构建分为两步先安装依赖再编译make -C src TARGETserver deps make -C src TARGETserver-C src表示在src/目录下执行 Makedeps目标会依据TARGETserver拉取 Server 专属依赖例如 CPython内嵌 Python 解释器、jemalloc、rocksdb、simdjson、abseil-cpp、spdlog、yaml-cpp、protobuf 等见 src/Makefile 的 Server-only 依赖清单。若仓库根目录存在external/cpython源码Server 构建还会触发build_python将 CPython 与 Wazuh 内部库链接并安装到INSTALLDIR/framework/python见 src/Makefile 与 src/Makefile。Server 构建选项make -C src TARGETserver DEBUG1 # 带调试符号构建-g关闭优化 make -C src TARGETserver TEST1 # 测试模式构建开启 UNIT_TEST make -C src TARGETserver -j4 # 4 个并行编译任务 make -C src TARGETserver INSTALLDIR/custom # 安装到自定义目录DEBUG1在 src/Makefile 中映射为CMAKE_BUILD_TYPEDebug对应编译标志-g见 src/CMakeLists.txt。TEST1映射为-DUNIT_TESTON见 src/Makefile此时 CMake 会为各目标附加--coverage覆盖率编译与 gcov 链接选项见 src/CMakeLists.txt。-jNGNU Make 的并行任务数多核机器上可显著缩短编译时间。INSTALLDIR/custom指定安装前缀。当使用PYTHON_SOURCE从源码编译 Python 解释器时该参数为必填未定义会直接报错见 src/Makefile。此外src/Makefile 的help目标还列出了更多可选开关例如选项说明Vyes显示完整编译输出默认安静模式USE_INOTIFYyes启用 inotify 支持Linux 下默认自动启用USE_BIG_ENDIANyes大端序平台支持USE_SELINUXyes生成 SELinux 策略模块仅 AgentUSE_AUDITyes审计服务支持Linux Agent 默认启用DISABLE_JEMALLOCyes不构建 jemalloc 内存分配库OPTIMIZE_CPYTHONyes构建 Python 解释器时启用优化PYTHON_SOURCEyes与deps配合下载 CPython 源码用于本地编译IMAGE_TRUST_CHECKS0/1/2DLL/EXE 签名校验0 禁用1 仅告警2 强制默认 1CA_NAME...签名校验所用 CA 名称默认DigiCert Assured ID Root CAWAZUH_USER/WAZUH_GROUP覆盖默认运行用户/组Server 为wazuh-managerAgent 为wazuh构建 UNIX 系 AgentUNIX 系Linux、macOS、BSD 等Agent 的构建流程与 Server 完全对称make -C src TARGETagent deps make -C src TARGETagentAgent 构建选项make -C src TARGETagent DEBUG1 # 带调试符号构建 make -C src TARGETagent TEST1 # 测试模式构建 make -C src TARGETagent -j4 # 4 并行任务 make -C src TARGETagent INSTALLDIR/custom # 安装到自定义目录与 Server 相比Agent 的依赖集更精简Linux Agent 额外引入libdb、popt、lua、rpm、dbus、libbpf-bootstrap用于 eBPF 系统调用监控macOS Agent 则引入libplist见 src/Makefile。Linux 平台下 Agent 还会自动启用 auditENABLE_AUDITON以支撑 FIM/whodata 实时监控而 Server 不需要该代码路径见 src/Makefile。构建 Windows Agent交叉编译Windows Agent 是典型的 Linux 主机上的交叉编译流程。同样先装依赖再编译make -C src TARGETwinagent deps make -C src TARGETwinagent构建过程中 src/Makefile 会使用i686-w64-mingw32-g-posix定位并拷贝运行时 DLLlibstdc-6.dll、libgcc_s_dw2-1.dll到src/build/lib/通过unix2dos.pl将ossec.conf、internal_options.conf、LICENSE、VERSION.json等转换为 Windows 换行符版本输出到src/win32/见 src/Makefile在 src/CMakeLists.txt 中设置CMAKE_SYSTEM_NAMEWindows、MinGW 编译器与EVENTCHANNEL_SUPPORTON并将 Wine 配置为单元测试的交叉运行模拟器。交叉编译器必须可用否则 Make 会直接报错No windows cross-compiler found!见 src/Makefile 的编译器探测逻辑依次探测amd64-mingw32msvc-、i686-pc-mingw32-、i686-w64-mingw32-前缀。构建完成后将src/win32/下所有文件拷贝到 Windows 机器即可进一步用 WiX Toolset 生成 MSI 安装包参见 docs/dev/run-sources.md 的 Windows Agent 章节安装包构建脚本为wazuh-installer-build-msi.bat相关工程文件见 src/win32/wazuh-installer.wxs。构建产物位置构建成功后二进制产物位于目标产物目录Server / UNIX Agentsrc/目录实际中间产物在src/build/链接后的可执行文件与库位于src/build/bin与src/build/libWindows Agentsrc/win32/目录后续的安装、运行与配置步骤./install.sh、wazuh-manager-control/wazuh-control、日志路径等请参阅 docs/dev/run-sources.md构建完成后如何执行单元测试与集成测试请参阅 docs/dev/test-execution.md。清理构建产物四种清理目标构建系统提供了分级清理目标按需选择make -C src clean # 清理全部编译产物含外部依赖 make -C src clean-deps # 仅清理外部依赖 make -C src clean-internals # 清理编译产物保留外部依赖 make -C src clean-windows # 清理 Windows 资源文件各目标语义依据 src/Makefile 的实现clean完整清理依次调用clean-test覆盖率报告与.gcno/.gcda文件、clean-internals、clean-external、clean-windows、clean-framework与clean-config../etc/wazuh.mc、Config.OS。适合需要彻底重来的场景。clean-deps仅清除src/external/下除CMakeLists.txt与.gitignore之外的下载依赖含shared_modules/http-request与 WCS flat 文件保留已编译的二进制方便重新拉取依赖。clean-internals删除build目录、单元测试构建目录、flatbuffers 生成头文件syscollector、vulnerability_scanner的*_generated.h、SELinux 模块wazuh.mod、wazuh.pp但保留外部依赖——适合快速增量重编译。clean-windows仅删除src/win32/下由unix2dos.pl生成的 Windows 资源文件LICENSE.txt、help_win.txt、internal_options.conf、default-ossec.conf、VERSION.json等。常见问题排查依赖缺失导致编译失败如果编译报错指向缺少的头文件或库最可能的原因是跳过了deps阶段。务必先执行make -C src deps该目标会下载当前TARGET所需的全部外部依赖cJSON、OpenSSL、zlib、sqlite、libyaml、curl、libpcre2、nlohmann、flatbuffers、bzip2、googletest、benchmark 等通用依赖以及各目标专属依赖若网络受限可组合EXTERNAL_SRC_ONLYyes仅拉取源码。编译速度过慢使用并行构建make -C src TARGETserver -j4-j值建议不超过 CPU 物理核心数。注意deps阶段通常耗时集中在下载与解压也可以预先执行make -C src TARGETserver deps后再并行编译。调试与验证构建配置使用Vyes查看完整编译器命令行便于定位具体编译单元的错误使用make -C src TARGETserver settings查看当前生效的构建设置TARGET、DEBUG、INSTALLDIR、USE_* 开关、编译器变量等见 src/Makefile使用make -s print-EXTERNAL_RES TARGETagent打印当前目标解析后的依赖清单该接口同时被 packages/externals 工具链复用见 src/Makefile。结语从源码构建 Wazuh 的整体脉络可以概括为选对 TARGET → 拉齐依赖deps→ 按需定制选项 → 并行编译 → 检查产物 → 分级清理。理解 src/Makefile 与 src/CMakeLists.txt 的分工是灵活驾驭 Server、UNIX Agent 与 Windows Agent 三种构建路径的关键。结合 docs/dev/setup.md 的工具链准备、docs/dev/run-sources.md 的运行部署以及 docs/dev/test-execution.md 的测试执行即可完成从源码到可运行安全平台的完整闭环。【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考