Quickstart
Wazuh is a security platform that provides unified XDR and SIEM protection for endpoints and cloud workloads. The solution is composed of a single universal agent and three central components: the Wazuh manager, the Wazuh indexer, and the Wazuh dashboard. For more information, check the Getting started documentation.
Wazuh is a free and open source platform. Its components abide by the GNU General Public License, version 2, and the GNU Affero General Public License version 3 (AGPLv3).
This quickstart installs the Wazuh manager, the Wazuh indexer, and the Wazuh dashboard on one host with the installation assistant, a script that downloads, installs, and configures them. For other installation options, see the Installation guide.
Requirements
Hardware
Hardware requirements highly depend on the number of protected endpoints and cloud workloads. This number can help estimate how much data will be analyzed and how many security alerts will be stored and indexed.
Following this quickstart implies deploying the Wazuh manager, the Wazuh indexer, and the Wazuh dashboard on the same endpoint. This is usually enough for monitoring up to 100 endpoints and for 90 days of queryable/indexed alert data. The table below shows the recommended hardware for a quickstart deployment:
Agents |
CPU |
RAM |
Storage (90 days) |
|---|---|---|---|
1-25 |
4 vCPU |
8 GB |
50 GB |
26-50 |
8 vCPU |
16 GB |
100 GB |
51-100 |
8 vCPU |
16 GB |
200 GB |
For larger environments, we recommend a distributed deployment. Multi-node cluster configuration is available for the Wazuh manager and for the Wazuh indexer, providing high availability and load balancing.
Operating system
The Wazuh central components require a 64-bit Intel, AMD, or ARM Linux processor (x86_64/AMD64 or AARCH64/ARM64 architecture). Wazuh recommends the following operating system versions:
Amazon Linux 2023
Ubuntu 24.04, 26.04
Red Hat Enterprise Linux 9, 10
Installing Wazuh
You need a host that meets the requirements above, internet access, and a user with sudo privileges. The installation takes about 5 to 10 minutes.
Download and run the installation assistant to deploy the Wazuh central components and generate the credentials required to access the Wazuh dashboard. In the command,
-ainstalls all the central components on this host,-idinstalls missing operating system dependencies without asking, and-d pre-releasedownloads the release candidate packages.If agents or Wazuh manager API clients will reach this server through another address, such as its public IP address, a DNS name, or a load balancer, see Connecting through another address before you install.
Run the following command. The assistant adds this server's hostname and IP addresses to the certificate that agents check.
$ wget https://packages-staging.xdrsiem.wazuh.info/pre-release/5.x/installation-assistant/wazuh-install-5.0.0-rc2.sh && sudo bash ./wazuh-install-5.0.0-rc2.sh -a -id -d pre-release
Note
If firewalld or UFW is active, the assistant warns about it and lists the ports to open, for example,
WARNING: The system has UFW enabled. Please ensure that traffic is allowed on these ports: 1515, 1517, 1514, 443.Allow incoming traffic on the following ports. This lets Wazuh agents and users reach the Wazuh central components:1517/TCP: Wazuh 5.x agent enrollment and connection.
443/TCP: Wazuh dashboard web interface.
1514/TCP and 1515/TCP: only needed if Wazuh 4.x agents connect to this deployment. A Wazuh 4.x agent that enrolls for the first time also needs this server's enrollment password. Read it with
sudo cat /etc/wazuh-manager/authd.passand pass it asWAZUH_REGISTRATION_PASSWORDwhen you install the agent, or write it to/var/ossec/etc/authd.passon the agent and restart it.
For example, with firewalld, run
sudo firewall-cmd --permanent --add-port=443/tcp --add-port=1517/tcp && sudo firewall-cmd --reload. With UFW, runsudo ufw allow 443/tcp && sudo ufw allow 1517/tcp.If you use another firewall or a cloud security group, allow these ports there too. See required ports for the full list of default ports.
When the installation finishes, the assistant prints a summary. It shows one Wazuh dashboard URL for each IP address of the host, the username, and the password. It also shows the command to read the password again and how to enroll agents:
INFO: Wazuh dashboard web application initialized. INFO: --- Summary --- INFO: You can access the web interface https://<WAZUH_DASHBOARD_ADDRESS>:443 INFO: User: admin (Wazuh dashboard login and Wazuh indexer administrator) INFO: Password: <ADMIN_PASSWORD> INFO: To read the password again, run: INFO: sudo grep '^WAZUH_INDEXER_ADMIN_PASSWORD=' /etc/wazuh-indexer/export/credentials.env | cut -d= -f2- INFO: The passwords of the other users are in /etc/wazuh-indexer/export/credentials.env and /etc/wazuh-manager/export/credentials.env. INFO: --- Next steps --- INFO: To enroll agents, use Deploy new agent in the Wazuh dashboard, or create an enrollment token on this server: INFO: sudo /var/wazuh-manager/bin/wazuh-manager-authd --create-enrollment-token --address <WAZUH_MANAGER_ADDRESS> INFO: For more information, see https://documentation.wazuh.com/5.0/installation-guide/wazuh-agent/index.html INFO: Installation finished.
The summary shows the password only when the assistant runs in an interactive terminal. If you redirect its output, for example to a file or a cloud-init log, the summary shows only the command to read it. The assistant never writes the password to
/var/log/wazuh-install.log. To show theadminpassword again, run:$ sudo grep '^WAZUH_INDEXER_ADMIN_PASSWORD=' /etc/wazuh-indexer/export/credentials.env | cut -d= -f2-
Open the Wazuh dashboard at
https://<WAZUH_DASHBOARD_ADDRESS>in a browser. Replace<WAZUH_DASHBOARD_ADDRESS>with an address of this host that your browser can reach, such as one of the URLs the assistant printed. On a cloud instance, the assistant might print only the instance's private address. Use its public IP address or DNS name instead. Log in with the following credentials:Username:
adminPassword: the
adminpassword from step 2
The browser warns that the certificate wasn't issued by a trusted authority, because Wazuh creates its own certificate authority. Add an exception in the browser, or, for better security, import the Wazuh dashboard CA,
/etc/wazuh-dashboard/export/ca.pem, into the browser's certificate manager. Onlyrootcan read it. Runsudo cat /etc/wazuh-dashboard/export/ca.pemon this host, and save the output asca.pemon the computer that runs the browser. You can also configure a certificate from a trusted authority.
The Wazuh packages create the certificate authorities, certificates, and Wazuh user passwords during installation. Store the passwords in a safe place. Keep the /etc/wazuh-indexer/export/credentials.env and /etc/wazuh-manager/export/credentials.env files, readable by root only. In /etc/wazuh-manager/export/credentials.env, WAZUH_MANAGER_API_PASSWORD is the password of the wazuh user of the Wazuh manager API, and WAZUH_MANAGER_WUI_PASSWORD is the password of wazuh-internal-client, the user of the Wazuh dashboard. The Wazuh components take their passwords from their keystores. At every start, they check these files and refuse to start if one has the wrong owner or permissions. The command in step 2 reads the admin password from /etc/wazuh-indexer/export/credentials.env. To change a password, see Password management.
Each package keeps its certificate authority and the private key of that authority in its ca/ directory: /etc/wazuh-indexer/ca, /etc/wazuh-manager/ca, and /etc/wazuh-dashboard/ca. Back up these three directories in a safe place. You need them to renew certificates.
To remove the Wazuh central components and all their data, run the Wazuh installation assistant using the option -u or --uninstall. See Uninstalling the Wazuh central components for details.
Connecting through another address
The assistant adds this server's hostname and IP addresses to the certificates that Wazuh agents and Wazuh manager API clients check. If they reach this server through another address, such as its public IP address, a NAT address, a DNS name, or a load balancer, add that address to the certificates. Otherwise, creating an enrollment token for that address fails with ERROR 9025: Enrollment token refused: address not in certificate SAN. The address you use to open the Wazuh dashboard in a browser doesn't affect this choice.
Adding the address during the installation
Run one of the following commands instead of the default installation command:
Alternative address: If agents connect through an address this server can't detect, such as a public IP address, a NAT address, a DNS name, or a load balancer, add it with
-as|--agent-san <ALTERNATE_ADDRESS>. Repeat-asfor each address, for example,-as 203.0.113.10 -as wazuh.example.com.$ wget https://packages-staging.xdrsiem.wazuh.info/pre-release/5.x/installation-assistant/wazuh-install-5.0.0-rc2.sh && sudo bash ./wazuh-install-5.0.0-rc2.sh -a -id -d pre-release -as <ALTERNATE_ADDRESS>
Manager API access: If scripts or a Wazuh dashboard on other hosts will call the Wazuh manager API through an address this server can't detect, such as a public IP address or DNS name, add
-ap|--api-san <MANAGER_API_ADDRESS>. Replace<MANAGER_API_ADDRESS>with that address. With-ap, the assistant leaves the API listening on all network interfaces and adds this address to its certificate. Without-ap, the API listens only on this host, as Opening the Wazuh manager API to other hosts describes. Repeat-apfor each address, for example,-ap 203.0.113.20 -ap api.example.com. You can combine-asand-ap.$ wget https://packages-staging.xdrsiem.wazuh.info/pre-release/5.x/installation-assistant/wazuh-install-5.0.0-rc2.sh && sudo bash ./wazuh-install-5.0.0-rc2.sh -a -id -d pre-release -ap <MANAGER_API_ADDRESS>
Adding the address after the installation
The Wazuh manager reissues the certificates from its own certificate authority, so agents enrolled before the change keep trusting it. Run the following steps on this server:
Stop the Wazuh manager and check that none of its processes are still running:
$ sudo systemctl stop wazuh-manager $ sudo /var/wazuh-manager/bin/wazuh-manager-control status
If any line ends in
is running..., runsudo /var/wazuh-manager/bin/wazuh-manager-control stop.List the current addresses of the agent listener certificate. For a Wazuh manager API address, use
/etc/wazuh-manager/certs/apid.peminstead:$ sudo openssl x509 -in /etc/wazuh-manager/certs/remoted.pem -noout -ext subjectAltName
Create
/etc/wazuh-manager/local.envwith the following line, or change the line if the file already has it. Replace<HOSTNAME>and<SERVER_IP_ADDRESS>with the addresses from the previous step, and<NEW_ADDRESS>with the new address:WAZUH_MANAGER_REMOTED_CERT_SANS=DNS:<HOSTNAME>,IP:<SERVER_IP_ADDRESS>,IP:<NEW_ADDRESS>
List every address from the previous step except
localhost,127.0.0.1, and::1, which are always added. The list replaces the addresses the Wazuh manager finds on its own. WriteIP Address:entries asIP:, useDNS:for a name, and separate the entries with commas. For a Wazuh manager API address, setWAZUH_MANAGER_APID_CERT_SANSthe same way. Then restrict the file to root:$ sudo chown root:root /etc/wazuh-manager/local.env $ sudo chmod 600 /etc/wazuh-manager/local.env
Move the agent listener certificate pair to a backup directory. A pair left in place keeps its old addresses:
$ sudo mkdir -p /root/wazuh-certs-backup $ sudo mv /etc/wazuh-manager/certs/remoted.pem /etc/wazuh-manager/certs/remoted-key.pem /root/wazuh-certs-backup/
For a Wazuh manager API address, move
/etc/wazuh-manager/certs/apid.pemand/etc/wazuh-manager/certs/apid-key.pemtoo.Issue the new certificates and publish the certificate authority bundle to the agents:
$ sudo /var/wazuh-manager/bin/wazuh-manager-resolve-credentials --install $ sudo /var/wazuh-manager/bin/wazuh-manager-certs stamp
The output includes a line that starts with
resolve-credentials: /etc/wazuh-manager/certs/remoted.pem: issued;and lists the new address. If that line is missing, the certificate wasn't issued. Move the files in/root/wazuh-certs-backup/back to/etc/wazuh-manager/certs/and start the Wazuh manager.Start the Wazuh manager and create an enrollment token for the new address to confirm the change:
$ sudo systemctl start wazuh-manager $ sudo /var/wazuh-manager/bin/wazuh-manager-authd --create-enrollment-token --address <NEW_ADDRESS>
Agents enrolled before the change keep connecting to their old address. To point them to the new one, follow Move enrolled agents to the new address in the Virtual machine (VM) documentation. For a Wazuh manager API address, also follow Opening the Wazuh manager API to other hosts.
Opening the Wazuh manager API to other hosts
By default, the assistant makes the Wazuh manager API listen only on this host (127.0.0.1 and ::1). With the -ap option, the assistant already makes it listen on all network interfaces. Otherwise, if scripts or a Wazuh dashboard on other hosts need to access the Wazuh manager API, set host: ['0.0.0.0', '::'] in /var/wazuh-manager/api/configuration/api.yaml to allow external connections. Then run the following command to restart the Wazuh manager:
$ sudo systemctl restart wazuh-manager
The Wazuh manager API clients must then use this host's name or IP address, or an address you added to the Wazuh manager API certificate.
Next steps
Next, deploy Wazuh agents. Each agent enrolls with a token that you create on this server for the address agents connect to. The assistant printed the command that creates it, under Next steps in its summary. Create the token first, as described in Generate the enrollment token. Then follow the instructions for your operating system below. You can also go to Agents management > Summary > Deploy new agent in the Wazuh dashboard. Its wizard generates the token too. The Wazuh manager doesn't monitor the server it runs on. To monitor this server too, deploy a Wazuh agent on it with a token for this server's own address.