Wazuh
Integrate Wazuh to retrieve your agents, their software, vulnerabilities, alerts and compliance results
The Wazuh connector retrieves into OverView the endpoints monitored by your Wazuh agents: their operating system, hardware (processor, memory, serial number) and network interfaces, their installed software (packages, Windows updates, services, browser extensions), open ports and local user accounts, the vulnerabilities detected on them (CVE, severity, CVSS score), the security alerts they raised and, optionally, the results of their SCA compliance scans (CIS benchmarks). The Wazuh console accounts and their roles are imported as well.
A Wazuh deployment exposes two APIs and the connector reads both: the Wazuh server API holds the agent registry, groups and compliance results, while the Wazuh indexer holds the endpoint inventory, vulnerabilities and alerts. Each one has its own URL and its own account.
Prerequisites
- Wazuh 4.13 or later, the first version that stores the endpoint inventory in the Wazuh indexer
- An administrator account on the Wazuh dashboard, to create the two read-only accounts below
- Network access from OverView to:
- the Wazuh server API (HTTPS, port 55000 by default)
- the Wazuh indexer (HTTPS, port 9200 by default)
On a single-node (all-in-one) installation, the Wazuh indexer usually listens on 127.0.0.1 only, so it refuses connections from outside the server even when the firewall allows port 9200. The listening address is the network.host setting in /etc/wazuh-indexer/opensearch.yml: set it to an address OverView can reach, then restart the wazuh-indexer service.
Information to provide in OverView
| Field | Description |
|---|---|
| Server API URL* | URL of the Wazuh server API, with its port (e.g., https://wazuh.example.com:55000) |
| Server API Username* | Username of the Wazuh server API user created for OverView |
| Server API Password* | Password of that user |
| Indexer URL* | URL of the Wazuh indexer, with its port (e.g., https://wazuh.example.com:9200). On a single-node installation, it is the same host as the server API, on a different port. |
| Indexer Username* | Username of the Wazuh indexer internal user created for OverView |
| Indexer Password* | Password of that user |
Parameters
These parameters are optional. Leave them at their default value unless you have a specific reason to change them.
| Parameter | Description | Default |
|---|---|---|
| Verify SSL Certificate | Verifies the TLS certificates presented by the Wazuh server API and indexer. Disable it only if they still use the self-signed certificates Wazuh ships with. | Enabled |
| Agent Group | Imports only the agents of this Wazuh group. Leave empty to import every agent. | Empty |
| Agent Status | Imports only the agents in the selected states: Active, Disconnected, Pending, Never connected. Leave empty to import every agent. Disconnected agents are the ones that reveal endpoints no longer reporting. | Empty |
| Include Alerts | Imports the Wazuh security alerts of each agent. | Enabled |
| Alert Retrieval Days | Number of days of alerts retrieved at each import. | 7 |
| Minimum Alert Level | Imports only the alerts whose Wazuh rule level (0 to 15) is at least this value. Levels 12 and above are the high importance levels. Lowering it can import millions of alerts on a busy deployment. | 12 |
| Include Compliance | Imports the SCA compliance results (CIS benchmarks) with their individual checks. They are retrieved agent by agent, which significantly lengthens the import on large deployments. | Disabled |
A deployment whose rules produce a high volume of false positives at levels 12 and above can return hundreds of thousands of alerts a week. Raising Minimum Alert Level reduces that volume; disabling Include Alerts leaves the inventory and vulnerabilities unaffected.
Procedure
The procedure creates two read-only accounts: a Wazuh server API user and a Wazuh indexer internal user. They are separate accounts, stored in two separate user databases; they can share the same username and password.
Create the policy and role for the server API
The built-in readonly role covers agents, groups, compliance and inventory, but not the Wazuh console accounts. A dedicated role adds that read access.
- On the Wazuh dashboard, open the menu (☰) and go to Server management > Security.
- On the Policies tab, click Create policy and fill in:
- Policy name:
overview-security-read - Action:
security:read - Resource:
user:id,role:idandpolicy:id, each with the resource identifier* - Select an effect:
Allow
- Policy name:
- Click Create policy.
- On the Roles tab, click Create Role, enter the Role name
overview-security-read, select theoverview-security-readpolicy in Policies, then click Create role.
Create the server API user
- In Server management > Security, create a user (e.g.,
overview-connector) with a password. - Assign it two roles: readonly and overview-security-read.
Copy the username and password into Server API Username and Server API Password in OverView.
Create the indexer user
- Open the menu (☰) and go to Indexer management > Security > Internal users.
- Click Create internal user, enter a username (e.g.,
overview-connector) and a password, then click Create. - Go to Indexer management > Security > Roles and click Create role:
- Name:
overview-read - Cluster permissions:
cluster_composite_ops_ro - Index:
* - Index permissions:
read
- Name:
- Click Create.
- On the Mapped users tab of the new role, click Manage mapping, add the internal user created in step 2, then click Map.
Without step 5, the user authenticates but cannot read any index: the import then fails on the vulnerabilities and inventory.
Copy the username and password into Indexer Username and Indexer Password in OverView.
Configure the Connector in OverView
- In OverView, go to Data Sources Settings > Sources.
- Select Wazuh and click Configure.
- Fill in the two URLs and the two accounts, adjust the parameters if needed, then click Save Configuration.
Required Permissions
The connector only reads data; it never modifies the Wazuh configuration, agents or rules.
| Data retrieved | API | Requirement |
|---|---|---|
| Agents and manager information | Server API, GET /agents, GET /manager/info | agent:read, manager:read (readonly role) |
| Agent groups | Server API, GET /groups | group:read (readonly role) |
| Compliance results (optional) | Server API, GET /sca/{agent_id} | sca:read (readonly role) |
| Wazuh console accounts and roles | Server API, GET /security/users, /roles, /policies | security:read (overview-security-read role) |
| Vulnerabilities | Indexer, wazuh-states-vulnerabilities-* | read on the index |
| Endpoint inventory | Indexer, wazuh-states-inventory-* | read on the index |
| Alerts (optional) | Indexer, wazuh-alerts-* | read on the index |
| Paginated reads | Indexer | cluster_composite_ops_ro |
Without security:read, the Wazuh server API does not refuse the request: it returns an empty list. The import then succeeds without any Wazuh console account.
Verify the access
From a machine that can reach the Wazuh server, run:
# Server API: returns a token, then the agents visible to the user
TOKEN=$(curl -sk -u "SERVER_USER:SERVER_PASSWORD" -X POST \
"https://wazuh.example.com:55000/security/user/authenticate?raw=true")
curl -sk -H "Authorization: Bearer $TOKEN" \
"https://wazuh.example.com:55000/agents?limit=1"
# Indexer: number of vulnerabilities readable by the user
curl -sk -u "INDEXER_USER:INDEXER_PASSWORD" \
"https://wazuh.example.com:9200/wazuh-states-vulnerabilities-*/_count"
Both calls must return data. A 401 means a wrong username or password; a 403 on the indexer means the role is not mapped to the user.
Security Best Practices
- Use dedicated accounts for the OverView integration rather than the
adminorwazuhaccounts - Keep both accounts read-only: the roles above grant no write action
- The indexer role can be restricted to the
wazuh-states-vulnerabilities-*,wazuh-states-inventory-*andwazuh-alerts-*index patterns instead of* - Rotate the passwords regularly according to your organization's security policy
Alternative: file import through DropPoint
The API access described above is the recommended method for this connector. Where it is not available (a segregated network, a version or licence without API, an export you already produce), OverView accepts file exports, to be uploaded to the bucket dedicated to Wazuh.
Bucket : s3://wazuh/
Example : s3://wazuh/export.csv
The procedure is described in the OverView DropPoint guide: generating credentials, configuring the client, then sending files from the OverView web interface, the AWS CLI or an SDK. Its examples come pre-filled with this bucket when you follow this link.