Wazuh and VirusTotal: Configure File Hash Lookups

Wazuh-VirusTotal Integration
Table of Contents

Last reviewed: October 2026. Applies to the Wazuh 4.14.x File Integrity Monitoring (FIM) and VirusTotal configuration documented in October 2026. A legacy dashboard image is included below, but the Wazuh version is not identified and lab logs are not preserved. The steps below have been checked against current Wazuh documentation; they have not been rerun in a Wazuh lab.

FIM notices changes in a selected directory. Wazuh can pass a file hash from a FIM alert to VirusTotal for a lookup. A hash lookup is neither a live scan of the endpoint nor automatic removal of a suspicious file.

Before you configure it

  • A Wazuh manager and connected Linux agent, with permission to change their configuration and restart services.
  • A VirusTotal API key whose terms and request limits fit your use. Keep the key out of screenshots and public repositories.
  • A small directory on the agent that is safe to monitor. The example below uses /var/tmp/wazuh-fim-lab; create it before enabling monitoring.

Consider the privacy of the monitored data: a hash of a changed file is sent to VirusTotal. A public VirusTotal key also has usage restrictions and rate limits. Review Wazuh’s VirusTotal integration guide and your VirusTotal account terms before using this in production.

Configure the manager integration

On the manager, edit /var/ossec/etc/ossec.conf. Add this block inside the existing <ossec_config> element. Replace the placeholder locally; never publish the real key.

<integration>
  <name>virustotal</name>
  <api_key>YOUR_VIRUSTOTAL_API_KEY</api_key>
  <group>syscheck</group>
  <alert_format>json</alert_format>
</integration>

The syscheck group limits this integration to FIM alerts. Restart the manager after saving the configuration:

sudo systemctl restart wazuh-manager
sudo systemctl status wazuh-manager --no-pager

If the service fails, restore the previous config and inspect /var/ossec/logs/ossec.log before continuing.

Monitor a small agent directory

On the Linux agent, create the directory and add this entry to the existing <syscheck> section of /var/ossec/etc/ossec.conf:

sudo mkdir -p /var/tmp/wazuh-fim-lab
<directories check_all="yes" realtime="yes">/var/tmp/wazuh-fim-lab</directories>

Do not add a second top-level <syscheck> block if the file already has one. Restart and check the agent:

sudo systemctl restart wazuh-agent
sudo systemctl status wazuh-agent --no-pager

Realtime monitoring is meant to send change events promptly; it does not mean every endpoint file is continuously rescanned by VirusTotal. Wazuh’s FIM settings reference covers scan and directory options.

Verify in two stages

  1. Create a harmless text file in the monitored directory: printf 'fim-check\n' | sudo tee /var/tmp/wazuh-fim-lab/check.txt. Confirm a file-addition event appears in the Wazuh FIM view or manager alerts. A VirusTotal response may say the hash is unknown; that still shows the lookup path was reached.
  2. For a known antivirus test hash, use the official EICAR test file only in an authorized lab. It contains no malware code, but local security software may block or quarantine it. Follow Wazuh’s own test procedure and clean up the fixture afterward. Do not download real malware to validate this integration.

On the manager, inspect /var/ossec/logs/integrations.log for integration activity and /var/ossec/logs/alerts/alerts.log for resulting alerts. Wazuh documents separate outcomes for invalid credentials, rate limits, hashes with no record, no positives and detections. Do not treat “no record” or “no positives” as proof that a file is safe.

Legacy Wazuh VirusTotal alert screenshot; version and test environment were not recorded

Legacy screenshot. Its version and test environment were not recorded, so use your own alerts to verify the current setup.

Failure and rollback notes

  • No FIM event: check the agent connection, monitored path, file permissions and agent log. Confirm the directory existed before the test.
  • FIM event but no integration result: check the manager integration block, syscheck group, manager log and API key.
  • Rate-limit error: narrow the monitored scope or alert filter and use an API arrangement appropriate for the workload; do not increase requests by creating extra accounts.
  • Rollback: remove only the integration and directory entries added for this lab, then restart the affected Wazuh services. Remove the lab fixture after reviewing its alerts.
Latest articles
Picture of Endri Bedini
Endri Bedini

Endri Bedini is a laureate in Mechanical Engineering with over 20 years of experience in various technology fields, including Electronics, IT, and Healthcare Equipment. Throughout his career, Endri has honed his skills and expertise, earning a reputation for his exceptional problem-solving abilities and innovative thinking. In addition to his work in technology, Endri has a deep interest in Science, Astronomy, AI, Psychology, Sociology, Nature, and Evolution. He is committed to staying up-to-date with the latest developments in these fields, and his insights are informed by his broad range of knowledge and interests.

Read also

Receive new posts and updates at your e-mail address.

Subscription Form
Scroll to Top