<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/feeds/rss-style.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Emilio Ovalles</title>
        <link>https://emilio-ovalles.com/</link>
        <description>Portfolio and blog of Emilio Ovalles — cloud and AI engineering</description>
        <lastBuildDate>Tue, 18 Aug 2026 00:05:44 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Astro Chiri Feed Generator</generator>
        <language>en-US</language>
        <copyright>Copyright © 2026 Emilio Ovalles</copyright>
        <atom:link href="https://emilio-ovalles.com/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Setting up a SIEM in my homelab]]></title>
            <link>https://emilio-ovalles.com/wazuh-siem-setup</link>
            <guid isPermaLink="false">https://emilio-ovalles.com/wazuh-siem-setup</guid>
            <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[My motivation for setting up a Security and Information Event Management (SIEM) platform in my home lab is twofold. On the genuinely useful side of things, I have two old MacBooks that run on Ubuntu’s...]]></description>
            <content:encoded><![CDATA[<p>My motivation for setting up a Security and Information Event Management (SIEM) platform in my home lab is twofold. On the genuinely useful side of things, I have two old MacBooks that run on Ubuntu’s server and both of them run self-hosted services, among them Jellyfin and a simple todo list. I also have a Raspberry Pi 4 that runs Home Assistant OS, which I’ve been using to explore IoT and home automation for things like smart lighting, adjusting thermostat, and creating reminders/announcements on the smart speakers scattered throughout my home.</p>
<p>On the more experimental side, I will soon have a Dell Optiplex Micro with Proxmox installed that I plan to use for a cyber security sandbox environment. I want to be able to collect information, monitor all of these machines, and ensure that I am experimenting in a secure and responsible way.</p>
<h1>Prerequisites</h1>
<p>Before starting, you must have an <code>.iso</code> file for Ubuntu Server or whatever OS you decide to use. You can download Ubuntu Server OS here: (<a href="https://ubuntu.com/download/server">https://ubuntu.com/download/server</a>).</p>
<p>My Macbook has an M2 chip, which requires an ISO that is ARM64. Download here: (<a href="https://cdimage.ubuntu.com/ubuntu/releases/24.04/release/">https://cdimage.ubuntu.com/ubuntu/releases/24.04/release/</a>) Then select <code>ubuntu-24.04.4-live-server-arm64.iso</code></p>
<ol>
<li><em><code>.iso</code> file</em></li>
<li>Virtualization software - I’m using UTM. I hear it plays well on MacOS devices and I’ve already tried VirtualBox in the past and found the UX to be janky. Download UTM here: (<a href="https://mac.getutm.app/">https://mac.getutm.app/</a>)</li>
<li>8GB RAM, 50GB Storage, 4vCPU (Official Wazuh recommendation for 1-25 agents and 90 days of storage)</li>
</ol>
<h1>Setting up your first Virtual Machine in UTM</h1>
<ol>
<li>Create new virtual machine</li>
<li>Virtualize</li>
<li>Linux</li>
<li>Hardware:
Memory: 8192 MiB
CPU Cores: 4
Enable display output: Checked
Enable hardware OpenGL acceleration: Unchecked</li>
<li>Linux:
Use Apple Virtualization: Unchecked
Boot Image Type: Boot form ISO image
Browse -&gt; Select .iso</li>
<li>Storage: 50 GiB</li>
<li>Shared Directory: Don’t select anything -&gt; Continue</li>
<li>Summary: Select a name for the VM -&gt; Save</li>
</ol>
<p>Start up the VM and go through the initial Ubuntu installation process, selecting defaults until the Network Configuration step.</p>
<h1>Network Configuration</h1>
<p>On the Network Configuration step, use the default IP address range. This is UTMs shared network, which create its own private NAT subnet that exists only inside this Macbook. VM traffic goes out through the Mac, so the home network never sees the VM directly.</p>
<p>You can switch to bridged mode so that the VM gets a 10.0.x.x address from the home DHCP server. This would allow me to put the VM in a VLAN and get metrics, logs, etc. from devices other than my Macbook this VM is running on.</p>
<p>For now, I am going to continue with the installation and setting up Wazuh before I move into Bridged mode. One thing at a time.</p>
<p>Use the default configurations for the following steps, then enter the Profile Configuration. This is where you create your first user, assign a password to it, and create your server name.</p>
<h1>SSH Configuration</h1>
<p>Check the “Install OpenSSH server” option. This will allow you to connect to the VM from the Mac terminal instead of working in the UTM window. Skip importing an SSH key. Password authentication is fine for now and adding the SSH key later and disabling password authentication is a good hardening exercise to document.</p>
<p>Skip adding additional packages on the following screen.</p>
<p>When the installation completes, select the “Reboot Now” option.</p>
<h1>Installing Wazuh</h1>
<p>Since this is an all-in-one installation (i.e. dashboard, server, and indexer on one machine) I am using the Wazuh quickstart guide (<a href="https://documentation.wazuh.com/current/quickstart.html">https://documentation.wazuh.com/current/quickstart.html</a>).</p>
<p>After running the setup script and at the end of its output, it prints the login credentials for your initial login into the Wazuh dashboard.</p>
<p>Once logged into the dashboard, it’s time to add agents for your Wazuh instance to monitor. From the sidebar, select <code>Agent Management</code> -&gt; <code>Summary</code> -&gt; <code>Deploy new agent</code> to get started adding the first agent. It will ask you to select the OS, Wazuh web server IP address, agent name that you create, and the group. Based on these responses, a command is generated for you to download and install, then run the agent. Copy and run each of those commands on your agent.</p>
<p>Once run, the agent should pop up after ~5 minutes and you have your first device to monitor in the new SIEM!</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Homelab Overview]]></title>
            <link>https://emilio-ovalles.com/homelab-architecture</link>
            <guid isPermaLink="false">https://emilio-ovalles.com/homelab-architecture</guid>
            <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Intro This page is a living reference and inventory of my homelab setup - its current state and future work. I expect to periodically update it as changes are made to the homelab environment. Purpose ...]]></description>
            <content:encoded><![CDATA[<h2>Intro</h2>
<p>This page is a living reference and inventory of my homelab setup - its current state and future work. I expect to periodically update it as changes are made to the homelab environment.</p>
<h2>Purpose</h2>
<p>This homelab grew out of my experience taking down my home network experimenting with Pihole. I needed a way to segment my network and have a sandbox environment where misconfigurations were self-contained and other people and devices would not be affected. It has since evolved as a way to learn about networking, self-host applications and services, repurpose old hardware, and explore networking, security, and infrastructure concepts without running up an AWS bill.</p>
<h2>Architecture</h2>
<pre><code class="language-mermaid">flowchart TD
    wan[WAN]

    subgraph mgmt["Management VLAN (1)"]
        cgu{{Cloud Gateway Ultra &lt;br/&gt; Router · Firewall · IPS}}
        switch[[USW-Lite-8-PoE]]
        ap1[[U6+ AP]]
        ap2[[U6 Lite AP]]
    end

    subgraph trustedvlan["Trusted VLAN (10)"]
        printer[Printer]
        iot[IoT Devices x10]
        gaming[Gaming Consoles x2]
        mobile[Mobile Devices x4]
        laptops[Laptops x3]
        ha[Home Assistant Pi]
        hue[Hue Bridge]
    end

    subgraph iotvlan["IoT VLAN (20)"]
        iotempty[Unused]
    end

    subgraph guestvlan["Guest VLAN (30)"]
        guestempty[Unused]
    end

    subgraph homelabvlan["Homelab VLAN (40)"]
        air[Media Server]
        pro[App Server]
    end

    wan --&gt; cgu
    cgu --&gt; switch
    switch --&gt; ap1
    switch --&gt; hue
    switch --&gt; ha
    switch --&gt; air
    ap1 --- |Mesh Uplink| ap2
    ap1 --&gt; pro
    ap1 --&gt; printer
    ap1 --&gt; iot
    ap1 --&gt; gaming
    ap1 --&gt; mobile
    ap1 --&gt; laptops
    ap2 --&gt; iot
    ap2 --&gt; mobile
    ap2 --&gt; laptops
</code></pre>
<h2>Network Overview</h2>
<h3>VLAN Scheme</h3>
<ul>
<li><strong>Management (1)</strong> - network devices (i.e. gateway, switches, access points, etc.)</li>
<li><strong>Trusted (10)</strong> - personal devices, consoles, and IoT (planned migration to IoT VLAN)</li>
<li><strong>IoT (20)</strong> - provisioned, migration planned</li>
<li><strong>Guest (30)</strong> - provisioned, unused</li>
<li><strong>Homelab (40)</strong> - servers, sandboxes</li>
</ul>
<h3>Segmentation</h3>
<ul>
<li>VLANs designed to be isolated from each other</li>
<li>Inter-VLAN ALLOW from the network device list (tablet, Roku stick, Roku TV) which contains the devices running the Jellyfin client application (trusted) --&gt; media server (homelab). Allow established/related return traffic</li>
<li>IPv6 not configured</li>
</ul>
<h2>Networking Hardware</h2>
<ul>
<li><strong>Gateway</strong> - UniFi Cloud Gateway Ultra</li>
<li><strong>Switch</strong> - USW-Lite-8-PoE</li>
<li><strong>Access points</strong> - U6+ &amp; U6 Lite</li>
</ul>
<h2>24/7 Servers</h2>
<p><strong>Raspberry Pi 4</strong> - running Home Assistant OS. Currently supporting lighting automation with Phillips Hue bulbs, Hue motion sensor, an Aqara presence sensor communicating over Zigbee, and Alexa speakers.</p>
<p><strong>2017 MacBook Air</strong> - Ubuntu Server OS. Running Jellyfin media server.</p>
<p><strong>2018 MacBook Pro</strong> - Ubuntu Server OS. Running self-hosted todo list app (PWA, API, DB)</p>
<h2>Remote Access</h2>
<p>Tailscale provides an encrypted tunnel to communicate with specific devices on the network securely. At present, there are no access control lists configured to prevent any devices on the tailnet from communicating with each other. The devices currently on my tailnet are:</p>
<ul>
<li>Phone</li>
<li>Home Assistant</li>
<li>MacBook Air</li>
<li>MacBook Pro</li>
<li>Daily laptop</li>
</ul>
<p>Using Tailscale allows me to access Home Assistant from my phone and laptop while I am away securely. Without access control lists, the devices running services are able to talk to my Home Assistant instance, which is not ideal and is referenced in the future work section.</p>
<h2>Security</h2>
<p><strong>IPS</strong> - block all Tor/Tor-associated traffic. In reviewing logs, I noticed a significant amount of traffic originating from Tor-associated IP addresses to two devices on the homelab VLAN. Until I am able to identify and investigate further, I’ve configured the IPS to block all Tor traffic and traffic from Tor-associated IP addresses.</p>
<p><strong>DHCP guarding</strong> - enabled on all VLANs to prevent rogue or unauthorized DHCP servers on the network.</p>
<h2>Roadmap</h2>
<p>There’s still much to be done to harden the network. This document will be updated as changes are made. Future work is as follows:</p>
<ul>
<li><strong>Tailscale access control lists</strong> - not all devices on the tailnet need to be able to communicate with each other on all ports. Access control lists need to be configured to enforce principle of least privilege</li>
<li><strong>Migrate IoT devices to IoT VLAN (20)</strong> - self explanatory. IoT devices with weak or opaque security controls should live on their own VLAN. Access and functionality needs to be configured to balance security and functionality so features like AirPlay and communication with smart speakers are possible.</li>
<li><strong>Plan and configure guest network</strong> - the guest network is currently unused. I need to figure out a method of adding an authentication/approval layer to the trusted VLAN and a method for visitors to seamlessly log on to the WiFi.</li>
<li><strong>Migrate Jellyfin server</strong> - to dedicated device and more appropriate VLAN to avoid poking holes in what is intended to be a completely isolated VLAN (40)</li>
<li><strong>Dedicated management VLAN</strong> - instead of using the default UniFi VLAN, move the management VLAN and the UniFi network devices to a dedicated VLAN where I have full control over the configuration</li>
<li><strong>Migrate U6 Lite from uplink to wired connection</strong></li>
<li><strong>Configure honeypot</strong> - future project. I’m curious to explore what kinds of activity a honeypot would get</li>
<li><strong>Log forwarding to Wazuh</strong> - in the interest of building industry-relevant skills and increasing visibility into network activity</li>
</ul>
]]></content:encoded>
        </item>
    </channel>
</rss>