<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: giulio Savini</title>
    <description>The latest articles on Forem by giulio Savini (@giulio_savini_).</description>
    <link>https://forem.com/giulio_savini_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3908918%2Fdd63474e-5d12-4a63-acef-c1d90ca5ad2a.png</url>
      <title>Forem: giulio Savini</title>
      <link>https://forem.com/giulio_savini_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/giulio_savini_"/>
    <language>en</language>
    <item>
      <title>Build and deploy the latest open-vm-tools from source with Ansible and Docker</title>
      <dc:creator>giulio Savini</dc:creator>
      <pubDate>Sat, 02 May 2026 11:21:51 +0000</pubDate>
      <link>https://forem.com/giulio_savini_/build-and-deploy-the-latest-open-vm-tools-from-source-with-ansible-and-docker-26af</link>
      <guid>https://forem.com/giulio_savini_/build-and-deploy-the-latest-open-vm-tools-from-source-with-ansible-and-docker-26af</guid>
      <description>&lt;h1&gt;
  
  
  Build and deploy the latest open-vm-tools from source with Ansible and Docker
&lt;/h1&gt;

&lt;p&gt;If you run Linux VMs on VMware, you've probably hit this: your distro ships an &lt;code&gt;open-vm-tools&lt;/code&gt; version that's 1-2 years behind upstream. That matters when you need guest OS compatibility fixes for newer ESXi, VMCI socket support, or CVE patches your distro hasn't backported yet.&lt;/p&gt;

&lt;p&gt;I built an Ansible role that solves this: &lt;strong&gt;&lt;a href="https://github.com/GiulioSavini/vmware-tools-builder" rel="noopener noreferrer"&gt;vmware-tools-builder&lt;/a&gt;&lt;/strong&gt; — it compiles the latest &lt;code&gt;open-vm-tools&lt;/code&gt; inside isolated Docker containers, produces clean &lt;code&gt;.deb&lt;/code&gt;/&lt;code&gt;.rpm&lt;/code&gt; packages, and deploys them across your entire fleet.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why not just use the distro package?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Distro package&lt;/th&gt;
&lt;th&gt;This role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Version&lt;/td&gt;
&lt;td&gt;Months/years behind&lt;/td&gt;
&lt;td&gt;Always latest upstream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VMCI socket support&lt;/td&gt;
&lt;td&gt;Often missing&lt;/td&gt;
&lt;td&gt;Compiled in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CVE patches&lt;/td&gt;
&lt;td&gt;Depends on distro backport&lt;/td&gt;
&lt;td&gt;Upstream fix on release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-distro&lt;/td&gt;
&lt;td&gt;One at a time&lt;/td&gt;
&lt;td&gt;Ubuntu, Debian, RHEL, Rocky, Fedora&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The build runs inside Docker containers — one per distro — so your Ansible controller stays clean. No build dependencies polluting your system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;containers

&lt;span class="c"&gt;# Build for all supported distros&lt;/span&gt;
./build-all.sh

&lt;span class="c"&gt;# Single distro&lt;/span&gt;
./build-all.sh &lt;span class="nt"&gt;--target&lt;/span&gt; rocky9

&lt;span class="c"&gt;# Pin a specific upstream version&lt;/span&gt;
./build-all.sh &lt;span class="nt"&gt;--version&lt;/span&gt; 12.5.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;code&gt;.deb&lt;/code&gt; and &lt;code&gt;.rpm&lt;/code&gt; packages in &lt;code&gt;output/&lt;/code&gt;, automatically copied to &lt;code&gt;files/&lt;/code&gt; where Ansible picks them up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deploy with Ansible
&lt;/h2&gt;

&lt;p&gt;Install from Galaxy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-galaxy &lt;span class="nb"&gt;install &lt;/span&gt;giuliosavini.vmware_tools_builder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Write your inventory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[debian]&lt;/span&gt;
&lt;span class="err"&gt;srv-web01&lt;/span&gt;  &lt;span class="py"&gt;ansible_host&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;10.0.0.1&lt;/span&gt;
&lt;span class="err"&gt;srv-web02&lt;/span&gt;  &lt;span class="py"&gt;ansible_host&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;10.0.0.2&lt;/span&gt;

&lt;span class="nn"&gt;[rhel]&lt;/span&gt;
&lt;span class="err"&gt;srv-app01&lt;/span&gt;  &lt;span class="py"&gt;ansible_host&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;10.0.0.10&lt;/span&gt;

&lt;span class="nn"&gt;[all:vars]&lt;/span&gt;
&lt;span class="py"&gt;ansible_user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;root&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the playbook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; inventory.ini playbook.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Smart deployment logic
&lt;/h2&gt;

&lt;p&gt;The role handles three scenarios automatically — no conditional vars needed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current state&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No open-vm-tools installed&lt;/td&gt;
&lt;td&gt;Fresh install&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distro &lt;code&gt;open-vm-tools&lt;/code&gt; present&lt;/td&gt;
&lt;td&gt;Remove it, install custom build&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Previous custom build present&lt;/td&gt;
&lt;td&gt;In-place upgrade&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For each host the role runs: preflight → deploy → post-install → diagnose → verify. If &lt;code&gt;vmtoolsd&lt;/code&gt; fails to start, it collects logs and attempts automatic recovery before reporting failure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Supported platforms
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Distro&lt;/th&gt;
&lt;th&gt;Build&lt;/th&gt;
&lt;th&gt;Deploy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu 22.04+&lt;/td&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;Ansible (apt)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debian 12+&lt;/td&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;Ansible (apt)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RHEL / Rocky / Alma 9&lt;/td&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;Ansible (yum)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RHEL / Rocky / Alma 8&lt;/td&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;Ansible (yum)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fedora&lt;/td&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;Ansible (yum)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SUSE / openSUSE&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Ansible (zypper)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Example playbook
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy custom open-vm-tools&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;all&lt;/span&gt;
  &lt;span class="na"&gt;become&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;gather_facts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;roles&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;giuliosavini.vmware_tools_builder&lt;/span&gt;
      &lt;span class="na"&gt;vmtools_remove_standard&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="na"&gt;vmtools_diagnose_on_failure&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker on the build host (just for compiling packages)&lt;/li&gt;
&lt;li&gt;Ansible 2.12+ on the controller&lt;/li&gt;
&lt;li&gt;SSH access to target machines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. No special build deps, no polluted environments.&lt;/p&gt;




&lt;p&gt;If you manage VMware infrastructure and are tired of outdated guest tools, give it a try. The role is on Ansible Galaxy and the source is on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ &lt;a href="https://github.com/GiulioSavini/vmware-tools-builder" rel="noopener noreferrer"&gt;github.com/GiulioSavini/vmware-tools-builder&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;→ &lt;a href="https://galaxy.ansible.com/giuliosavini/vmware_tools_builder" rel="noopener noreferrer"&gt;galaxy.ansible.com/giuliosavini/vmware_tools_builder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ansible</category>
      <category>vmware</category>
      <category>devops</category>
      <category>linux</category>
    </item>
    <item>
      <title>How I built a production-ready Wazuh SIEM on Docker (with custom rules for VMware, AWS and GCP)</title>
      <dc:creator>giulio Savini</dc:creator>
      <pubDate>Sat, 02 May 2026 11:21:25 +0000</pubDate>
      <link>https://forem.com/giulio_savini_/how-i-built-a-production-ready-wazuh-siem-on-docker-with-custom-rules-for-vmware-aws-and-gcp-11i3</link>
      <guid>https://forem.com/giulio_savini_/how-i-built-a-production-ready-wazuh-siem-on-docker-with-custom-rules-for-vmware-aws-and-gcp-11i3</guid>
      <description>&lt;h1&gt;
  
  
  How I built a production-ready Wazuh SIEM on Docker (with custom rules for VMware, AWS and GCP)
&lt;/h1&gt;

&lt;p&gt;Most Wazuh tutorials stop at "here's how to spin up the containers." That's fine for a demo, but getting it to actually monitor your infrastructure — with meaningful alerts, automated agent deployment, and cloud integrations — is a different story.&lt;/p&gt;

&lt;p&gt;I spent a few weeks assembling everything into a single repo: &lt;strong&gt;&lt;a href="https://github.com/GiulioSavini/wazuh-docker-monitoring-platform" rel="noopener noreferrer"&gt;wazuh-docker-monitoring-platform&lt;/a&gt;&lt;/strong&gt;. Here's what it includes and why I built each piece.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem with most Wazuh setups
&lt;/h2&gt;

&lt;p&gt;Out of the box, Wazuh gives you generic Linux alerts. Useful, but noisy. What I needed was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detection rules tuned for &lt;strong&gt;Docker container abuse&lt;/strong&gt; (privileged runs, suspicious mounts, crypto-mining)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VMware vCenter&lt;/strong&gt; monitoring — snapshot abuse, vMotion events, auth brute force&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS CloudTrail&lt;/strong&gt; and &lt;strong&gt;GCP Audit Log&lt;/strong&gt; anomalies mapped to Wazuh rules&lt;/li&gt;
&lt;li&gt;A way to &lt;strong&gt;deploy agents at scale&lt;/strong&gt; without SSHing into 30 machines one by one&lt;/li&gt;
&lt;li&gt;Something that works in both a lab (4GB RAM) and production&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What the stack looks like
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────┐
│  Wazuh Manager  :1514 / :55000  │
│  Wazuh Indexer  :9200           │
│  Wazuh Dashboard :5601          │
│  NGINX (optional reverse proxy) │
└─────────────────────────────────┘
         ↑ agents on port 1514
Linux servers · Windows servers · Docker hosts · vCenter
         ↑ log forwarding
AWS CloudTrail (S3) · GCP Pub/Sub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything runs via &lt;code&gt;docker compose&lt;/code&gt;. There's also a &lt;code&gt;docker-compose.lab.yml&lt;/code&gt; overlay that cuts resource usage for testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Custom detection rules
&lt;/h2&gt;

&lt;p&gt;This is the part I'm most proud of. The &lt;code&gt;rules/&lt;/code&gt; directory has rules for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; (&lt;code&gt;rules/docker/&lt;/code&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container exec events&lt;/li&gt;
&lt;li&gt;Privileged container creation&lt;/li&gt;
&lt;li&gt;Host namespace abuse (&lt;code&gt;--pid=host&lt;/code&gt;, &lt;code&gt;--network=host&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Suspicious bind mounts (&lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/var/run/docker.sock&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Crypto-mining signatures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;VMware&lt;/strong&gt; (&lt;code&gt;rules/vmware/&lt;/code&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM power state changes&lt;/li&gt;
&lt;li&gt;Snapshot creation/deletion (ransomware indicator)&lt;/li&gt;
&lt;li&gt;Host disconnect events&lt;/li&gt;
&lt;li&gt;vCenter login brute force&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt; (&lt;code&gt;rules/aws/&lt;/code&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAM policy changes&lt;/li&gt;
&lt;li&gt;Security group opened to 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;Console login without MFA&lt;/li&gt;
&lt;li&gt;CloudTrail disabled or deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GCP&lt;/strong&gt; (&lt;code&gt;rules/gcp/&lt;/code&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public bucket created&lt;/li&gt;
&lt;li&gt;Firewall rule opened to 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;IAM policy changes&lt;/li&gt;
&lt;li&gt;Compute instance created outside allowed regions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ansible agent deployment
&lt;/h2&gt;

&lt;p&gt;Instead of deploying agents manually, the repo includes Ansible playbooks that handle everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Deploy to all Linux hosts in inventory&lt;/span&gt;
ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; inventories/production playbooks/deploy-linux-agent.yml

&lt;span class="c"&gt;# Windows too (via WinRM)&lt;/span&gt;
ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; inventories/production playbooks/deploy-windows-agent.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also a &lt;strong&gt;network discovery script&lt;/strong&gt; that scans a subnet, generates an Ansible inventory, and feeds it straight into the deployment pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;make onboard &lt;span class="nv"&gt;SUBNET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10.0.0.0/24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command: scan → discover → deploy agents → verify.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/GiulioSavini/wazuh-docker-monitoring-platform.git
&lt;span class="nb"&gt;cd &lt;/span&gt;wazuh-docker-monitoring-platform

make preflight        &lt;span class="c"&gt;# validate Docker, kernel params, disk, ports&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env  &lt;span class="c"&gt;# set your passwords&lt;/span&gt;
make init             &lt;span class="c"&gt;# generate TLS certs&lt;/span&gt;
make deploy           &lt;span class="c"&gt;# bring up the stack&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dashboard is at &lt;code&gt;https://localhost:5601&lt;/code&gt; in a few minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lab vs production mode
&lt;/h2&gt;

&lt;p&gt;Running this on a homelab with limited RAM? Use the lab overlay:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.yml &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.lab.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It reduces the Wazuh Indexer heap and manager memory limits to fit on a 8GB machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The repo roadmap includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wazuh cluster mode (multi-node manager)&lt;/li&gt;
&lt;li&gt;Kubernetes Helm chart&lt;/li&gt;
&lt;li&gt;SOAR integration (Shuffle / TheHive)&lt;/li&gt;
&lt;li&gt;Sigma rule auto-import&lt;/li&gt;
&lt;li&gt;Automated compliance dashboards (PCI-DSS, CIS)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you're running VMware, Docker, or any cloud infrastructure and want proper security visibility without paying for a commercial SIEM, give it a try. PRs and rule contributions welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ &lt;a href="https://github.com/GiulioSavini/wazuh-docker-monitoring-platform" rel="noopener noreferrer"&gt;github.com/GiulioSavini/wazuh-docker-monitoring-platform&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>docker</category>
      <category>ansible</category>
    </item>
  </channel>
</rss>
