资讯动态

Wazuh企业安全哨兵:从零部署到核心功能配置实战指南

发布时间:2026/8/3 21:21:51 来源:尧图企业网站定制
1. 项目概述为什么我们需要一个“企业安全哨兵”最近在帮一个朋友的公司做安全基线加固他们之前的安全事件响应基本靠“人肉”排查日志效率低不说还容易遗漏关键告警。我第一时间就想到了Wazuh——这个集成了主机入侵检测HIDS、日志管理和安全信息与事件管理SIEM能力的开源平台。它就像一个7x24小时在线的企业安全哨兵能自动分析系统日志、监控文件完整性、检测漏洞和异常行为。网上虽然有不少安装教程但要么版本老旧要么步骤跳跃对于刚接触安全运维或者想快速搭建一个可用的生产环境的朋友来说踩坑成本太高。所以我决定结合最近在Ubuntu 22.04 LTS上的实战经验写一份从零开始、手把手式的超详细安装指南。这份指南的目标是让你即便没有深厚的Linux或安全背景也能跟着步骤成功部署一个功能完整的Wazuh单节点服务器All-in-One并理解每一个操作背后的意图。2. 环境准备与规划打好地基是关键在动手安装之前清晰的规划和合适的环境是成功的一半。Wazuh的架构通常分为管理端Wazuh Server、索引端Elastic Stack和前端Wazuh Dashboard对于中小型环境或测试学习我们采用All-in-One部署将所有组件安装在同一台服务器上。2.1 服务器规格与系统要求我选择的测试环境是一台运行Ubuntu 22.04 LTS的云服务器配置为4核CPU、8GB内存、100GB SSD硬盘。这是运行Wazuh All-in-One的最低推荐配置。内存是关键因为ElasticsearchWazuh的索引和搜索引擎比较吃内存4GB是底线8GB才能保证在接入少量代理后仍流畅运行Dashboard。注意如果你计划在生产环境监控超过50台主机强烈建议将Elasticsearch集群与Wazuh管理端分离部署并相应增加资源。首先确保系统是最新的sudo apt update sudo apt upgrade -y更新完成后建议重启一次。2.2 关键依赖安装构建运行环境Wazuh的运行依赖于一些基础软件我们需要提前安装好。安装curl和gnupg用于下载软件包和验证签名。sudo apt install curl gnupg lsb-release -y安装Docker和Docker Compose推荐方式从Wazuh 4.3版本开始官方强烈推荐使用Docker Compose进行部署这能极大简化安装和管理流程避免复杂的依赖冲突。# 安装Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 设置Docker仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # 验证安装 sudo docker run hello-world如果看到“Hello from Docker!”的输出说明Docker安装成功。配置非root用户运行Docker可选但推荐为了避免每次都要用sudo执行docker命令可以将当前用户加入docker组。sudo usermod -aG docker $USER操作后需要退出当前终端会话并重新登录这个改动才会生效。2.3 下载Wazuh安装包与配置文件我们将使用官方提供的Docker Compose文件这是目前最简洁、最不易出错的方式。创建一个专用的目录来存放所有Wazuh相关文件mkdir ~/wazuh-docker cd ~/wazuh-docker下载官方的最新版Docker Compose配置文件和环境变量文件curl -sO https://packages.wazuh.com/4.7/docker/docker-compose.yml curl -sO https://packages.wazuh.com/4.7/docker/config.env这里的4.7是当前最新的稳定版本号你可以随时在 Wazuh官方文档 查看最新版本并替换URL中的版本号。下载下来的docker-compose.yml文件定义了Elasticsearch、Wazuh管理端、Wazuh索引器、Wazuh Dashboard等多个服务及其关联关系。config.env文件则包含了一些重要的配置参数如默认密码。3. 核心部署流程一键启动安全中枢有了Docker Compose文件部署过程变得异常简单。但简单不代表不需要理解我们一步步来。3.1 修改默认密码安全第一步在启动前我们必须修改默认密码。用文本编辑器打开config.env文件nano config.env你会看到类似下面的内容找到以WAZUH_ADMIN_PASSWORD、ELASTIC_PASSWORD等开头的行# Set the Wazuh API and Dashboard credentials WAZUH_API_USERNAMEwazuh-wui WAZUH_API_PASSWORDMyS3cr37P450r.*- WAZUH_ADMIN_USERNAMEadmin WAZUH_ADMIN_PASSWORDSecretPassword # Set the Elasticsearch credentials ELASTIC_USERNAMEelastic ELASTIC_PASSWORDSecretPassword KIBANA_USERNAMEkibana KIBANA_PASSWORDSecretPassword LOGSTASH_USERNAMElogstash LOGSTASH_PASSWORDSecretPassword强烈建议你将所有SecretPassword和MyS3cr37P450r.*-修改为你自己设定的、高强度的复杂密码并妥善保存。修改后保存并退出编辑器。3.2 启动Wazuh全家桶在~/wazuh-docker目录下运行以下命令启动所有服务sudo docker compose up -d这个-d参数代表“detached”让服务在后台运行。执行后Docker会开始从仓库拉取Download所有必要的镜像包括Elasticsearch, Wazuh Server, Wazuh Indexer, Dashboard等这个过程根据你的网络速度可能需要10-30分钟。拉取完成后会自动创建并启动容器。你可以通过以下命令查看容器启动状态和日志# 查看所有容器状态 sudo docker compose ps # 查看某个容器的实时日志例如查看wazuh.manager的启动情况按CtrlC退出 sudo docker compose logs -f wazuh.manager当所有容器的状态STATE都显示为“Up”健康时说明部署成功。3.3 验证安装与首次登录检查服务端口Wazuh Dashboard默认运行在443端口HTTPS。确保服务器的安全组或防火墙放行了443端口以及后续代理通信需要的1514,1515,55000等端口。sudo ss -tulpn | grep :443访问Dashboard打开浏览器输入https://你的服务器IP地址。例如https://192.168.1.100。重要由于我们使用的是自签名证书浏览器会提示“连接不安全”或“您的连接不是私密连接”。这是正常现象在测试环境中点击“高级”-“继续前往不安全”。在登录界面使用你在config.env文件中设置的WAZUH_ADMIN_USERNAME默认admin和修改后的WAZUH_ADMIN_PASSWORD进行登录。探索界面登录成功后你会看到Wazuh Dashboard的主界面。左侧是导航菜单中间是安全事件、代理状态、漏洞检测等模块的仪表盘。如果能看到数据即使初始数据很少说明核心服务运行正常。4. 部署第一个代理Agent将哨兵派往主机Wazuh服务器Manager是大脑而代理Agent是安装在被监控主机如Web服务器、数据库服务器、员工电脑上的“眼睛”和“耳朵”。没有代理大脑就接收不到任何信息。4.1 在Linux主机上安装代理假设我们有一台需要被监控的、IP为192.168.1.50的Ubuntu服务器。在Wazuh服务器上生成代理安装包这是为了确保代理能安全地连接到指定的管理端。在Wazuh服务器即我们刚才部署All-in-One的机器上执行cd ~/wazuh-docker sudo docker compose exec wazuh.manager bash这个命令会进入wazuh.manager容器的bash shell。在容器内生成代理安装包/var/ossec/bin/agent_groups -a -g default -q /var/ossec/bin/manage_agents -a 192.168.1.50 -n My-Ubuntu-Web-Server第一条命令确保存在一个名为default的默认代理组。第二条命令为IP是192.168.1.50、名字是My-Ubuntu-Web-Server的代理生成一个认证密钥Auth Key。命令执行后会输出一串长长的密钥形如MDAxIE15LVVidW50...复制并保存好这串密钥在代理安装的最后一步需要它。输入exit退出容器。在被监控主机上安装代理登录到192.168.1.50这台Ubuntu服务器。添加Wazuh仓库并安装curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring /usr/share/keyrings/wazuh.gpg --import echo deb [signed-by/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main | sudo tee /etc/apt/sources.list.d/wazuh.list sudo apt update sudo apt install wazuh-agent配置代理编辑代理配置文件将其指向Wazuh管理服务器的IP地址。sudo nano /var/ossec/etc/ossec.conf找到address标签将其内容修改为你的Wazuh服务器的IP地址ossec_config client server addressWAZUH_SERVER_IP/address !-- 替换为你的服务器IP -- port1514/port protocoltcp/protocol /server ... /client /ossec_config启动代理并设置开机自启sudo systemctl daemon-reload sudo systemctl enable wazuh-agent sudo systemctl start wazuh-agent导入认证密钥这是将代理与管理端绑定的关键一步。使用之前在管理端生成的那串密钥。sudo /var/ossec/bin/manage_agents -i PASTE_YOUR_KEY_HERE将PASTE_YOUR_KEY_HERE替换为你复制的密钥。成功后重启代理服务sudo systemctl restart wazuh-agent4.2 在Dashboard中验证代理状态回到Wazuh Dashboard的Web界面。点击左侧导航栏的管理-代理。你应该能看到一个名为My-Ubuntu-Web-Server的代理其状态会从Pending等待连接逐渐变为Active活跃。这可能需要一两分钟。点击该代理的ID可以查看其详细状态、收集的日志、执行的根检Rootcheck结果等。至此一个最基本的Wazuh监控系统就搭建并运行起来了。管理端在持续接收和分析来自代理的安全数据。5. 核心功能配置与调优让哨兵真正发挥作用安装成功只是第一步默认配置可能无法满足你的特定监控需求。Wazuh的强大之处在于其高度可配置性。5.1 文件完整性监控FIM配置FIM是Wazuh的杀手锏功能之一它能监控重要文件和目录是否被篡改、删除或创建。例如监控Web服务器的网页目录或系统的关键配置文件。在代理端配置监控路径编辑被监控主机如我们的Ubuntu Web服务器上的代理配置文件。sudo nano /var/ossec/etc/ossec.conf在ossec_config块内找到或添加syscheck系统检查部分。添加你想要监控的目录syscheck disabledno/disabled frequency43200/frequency !-- 每12小时进行一次完整性扫描 -- scan_on_startyes/scan_on-start directories check_allyes realtimeyes/var/www/html/directories !-- 监控网站根目录启用实时监控 -- directories check_allyes realtimeyes/etc/nginx/directories !-- 监控Nginx配置目录 -- ignore/var/www/html/cache/ignore !-- 忽略缓存目录减少噪音 -- /syscheckrealtimeyes启用实时监控任何改动会立刻告警。check_allyes检查文件的权限、所有者、内容MD5/SHA1哈希值等所有属性。ignore忽略不需要监控的子目录这对像cache、tmp这类频繁变动的目录非常有用能极大减少无效告警。保存配置后重启代理服务sudo systemctl restart wazuh-agent在Dashboard查看FIM告警当被监控目录下的文件发生变更时在Dashboard的安全事件模块中你会看到来自该代理的、规则ID为550文件添加、553文件删除或554文件修改的告警。5.2 日志收集与解码规则Wazuh能解析和分析各种系统、应用日志。例如监控SSH登录失败尝试。确保代理收集系统日志默认情况下代理已经配置了收集系统日志如/var/log/auth.log。你可以在代理的ossec.conf中查看localfile部分来确认。理解解码器和规则Wazuh通过“解码器”将原始日志文本解析成结构化的字段再通过“规则”匹配这些字段来生成安全事件。SSH失败登录的规则是预定义的。当你尝试用错误密码SSH登录被监控主机后Wazuh Dashboard很快就会产生一条规则ID为5710SSH登录失败的告警并显示尝试的源IP、用户名等信息。自定义规则进阶如果你想监控一个特定应用的日志比如自定义的Web应用日志你需要编写自己的解码器和规则。这涉及到在Wazuh管理端创建/var/ossec/etc/decoders/local_decoder.xml和/var/ossec/etc/rules/local_rules.xml文件。这是一个相对高级的话题但官方文档提供了丰富的示例。5.3 漏洞检测与系统审计Wazuh集成了漏洞检测功能能定期扫描代理主机上已安装的软件包并与CVE公共漏洞暴露数据库进行比对。启用漏洞检测在代理的ossec.conf中确保以下部分未被禁用vulnerability-detector enabledyes/enabled interval5m/interval !-- 检查频率 -- ignore_time6h/ignore_time !-- 忽略已发现漏洞的时间 -- run_on_startyes/run_on-start provider namecanonical enabledyes/enabled ostrusty/os !-- 根据你的系统调整如ubuntu, debian, rhel等 -- /provider /vulnerability-detector查看漏洞报告在Dashboard的安全事件模块中过滤规则ID为87101、87102等的事件可以看到发现的漏洞详情。更直观的方式是进入漏洞检测模块这里会以表格形式清晰列出所有代理上发现的漏洞、严重等级和对应的CVE编号。6. 日常运维与问题排查实录即使安装顺利在日常使用中也可能遇到各种问题。下面是我在维护Wazuh集群时遇到的一些典型情况及解决方法。6.1 常见问题速查表问题现象可能原因排查步骤与解决方案Dashboard无法访问连接被拒绝/超时1. 容器未成功启动。2. 防火墙/安全组未开放443端口。3. NginxDashboard前端服务异常。1.sudo docker compose ps检查所有容器状态是否为Up。2.sudo ufw status(如果使用UFW) 或检查云平台安全组规则确保443端口入站开放。3.sudo docker compose logs wazuh.dashboard查看Dashboard容器日志寻找错误信息。代理状态始终为Pending或Disconnected1. 网络不通。2. 代理配置的管理端IP/端口错误。3. 认证密钥未导入或错误。4. 管理端1514端口未监听。1. 从代理端telnet WAZUH_SERVER_IP 1514测试连通性。2. 核对代理ossec.conf中address和port。3. 在代理端重新执行manage_agents -i导入密钥或在管理端容器内用manage_agents -l列出已认证代理确认。4. 在Wazuh服务器sudo ss -tulpn | grep :1514确认端口监听。Dashboard登录后无数据显示“No results found”1. Elasticsearch索引未创建或异常。2. 代理未发送数据。3. Wazuh索引器服务异常。1. 访问https://WAZUH_SERVER_IP:9200(用ELASTIC_USERNAME和密码)检查是否有wazuh-alerts-*等索引。2. 检查代理状态是否为Active并查看代理日志sudo tail -f /var/ossec/logs/ossec.log。3.sudo docker compose logs wazuh.indexer查看索引器日志。磁盘空间占用增长过快Elasticsearch默认保存所有数据未设置索引生命周期管理(ILM)。这是生产环境必做操作。需要在Elasticsearch中配置ILM策略自动删除或归档旧数据。例如只保留最近30天的热数据。具体命令需进入Elasticsearch容器执行。收到大量重复或无意义的告警噪音监控策略过于宽松或监控了不必要的变化如日志文件。1. 在代理配置中合理使用ignore标签排除频繁变化的目录。2. 在Wazuh管理端可以调整或禁用某些规则的级别level或编写例外rule_exclude。3. 在Dashboard的管理-规则中可以查看和筛选规则理解其触发条件。6.2 性能调优与备份心得给Elasticsearch“喂饱”内存如果服务器内存充足比如16GB以上可以专门为Elasticsearch容器分配更多堆内存。修改docker-compose.yml中elasticsearch服务的环境变量environment: - node.namewazuh-elasticsearch - cluster.namewazuh-cluster - discovery.typesingle-node - bootstrap.memory_locktrue - ES_JAVA_OPTS-Xms4g -Xmx4g # 将堆内存初始和最大值设为4GB根据总内存调整通常不超过物理内存的50% - xpack.security.enabledtrue修改后需要重启服务sudo docker compose down sudo docker compose up -d。定期备份关键配置你的所有自定义规则、解码器、代理分组信息等都存储在Wazuh管理端容器内。定期备份/var/ossec/etc目录是很好的习惯。你可以使用docker cp命令将容器内目录复制到宿主机。监控Wazuh自身别忘了Wazuh服务器本身也是一台需要被监控的主机。你可以在Wazuh服务器本机也安装一个Wazuh代理指向localhost这样就能在Dashboard里监控到Wazuh服务自身的健康状况、资源使用情况和日志形成一个自我监控的闭环。部署Wazuh就像为企业配备了一位不知疲倦的安全分析师。从安装到配置每一步的深入理解都能让你在后续的运维和排错中更加从容。这份指南覆盖了从零到一的核心路径但Wazuh的深度远不止于此比如与外部威胁情报TI集成、编写复杂的自定义规则以实现自动化响应XDR都是值得探索的方向。最重要的是开始用它看着安全事件从无到有、从杂乱到有序你会对“可见性”这个词在安全领域的分量有全新的认识。如果在配置中遇到了上面没提到的问题多查查官方文档和社区论坛那里有全球运维者积累的宝贵经验。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价