<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>My IT Journal</title>
    <link>https://my-it-blog.netlify.app/</link>
    <description>Recent content on My IT Journal</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://my-it-blog.netlify.app/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Secondary DNS Server</title>
      <link>https://my-it-blog.netlify.app/posts/secondary-dns-server/</link>
      <pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/secondary-dns-server/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Configure a Secondary DNS server that automatically replicates DNS zones from the Primary DNS server using zone transfers (AXFR).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 Primary DNS Server VM + 1 Secondary DNS Server + 1 Web Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;h2 id=&#34;dns-tolopogy&#34;&gt;&lt;img alt=&#34;dns-tolopogy&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/secondary-dns-server/topology.png&#34;&gt;&lt;/h2&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;This lab builds upon the following previous labs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Private DNS Infrastructure with BIND9&lt;/li&gt;
&lt;li&gt;Hosting Multiple Websites on One Server Using Nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following components are assumed to already be configured:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTPS with Nginx using a Private Certificate Authority</title>
      <link>https://my-it-blog.netlify.app/posts/private-certificate-authority/</link>
      <pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/private-certificate-authority/</guid>
      <description>&lt;h1 id=&#34;https-with-nginx-using-a-private-certificate-authority&#34;&gt;HTTPS with Nginx using a Private Certificate Authority&lt;/h1&gt;
&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Secure an existing Nginx website using HTTPS and a certificate signed by a private Certificate Authority.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DNS Server VM + 1 Web Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;dns-topology&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/private-certificate-authority/dns-topology.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;This lab builds upon the Private DNS Infrastructure with BIND9. The following components are assumed to already be configured:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BIND9 installed and running on the DNS server.&lt;/li&gt;
&lt;li&gt;The company.lab DNS zone created and configured.&lt;/li&gt;
&lt;li&gt;The zone file (/etc/bind/db.company.lab) already exists.&lt;/li&gt;
&lt;li&gt;The client is configured to use the internal DNS server (192.168.10.10) via Netplan.&lt;/li&gt;
&lt;li&gt;DNS resolution between the client and the DNS server has been verified.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;phase-1---verify-dns-resolution&#34;&gt;Phase 1 - Verify DNS Resolution&lt;/h2&gt;
&lt;p&gt;Before enabling HTTPS, verify that DNS resolves the web server correctly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Reverse DNS (PTR Records) with BIND9</title>
      <link>https://my-it-blog.netlify.app/posts/reverse-dns/</link>
      <pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/reverse-dns/</guid>
      <description>&lt;h1 id=&#34;configuring-reverse-dns-ptr-records-with-bind9&#34;&gt;Configuring Reverse DNS (PTR Records) with BIND9&lt;/h1&gt;
&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Extend the existing private DNS infrastructure by configuring Reverse DNS (PTR records). This enables IP addresses to be resolved back to hostnames, complementing the forward lookup zone created in previous labs.&lt;/p&gt;
&lt;p&gt;By the end of this lab, the DNS server will support both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Forward lookups (hostname → IP address)&lt;/li&gt;
&lt;li&gt;Reverse lookups (IP address → hostname)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DNS Server VM + 1 Web Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;dns-topology&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/reverse-dns/dns-topology.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hosting Multiple Websites on One Server Using Nginx</title>
      <link>https://my-it-blog.netlify.app/posts/nginx-virtual-hosts/</link>
      <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/nginx-virtual-hosts/</guid>
      <description>&lt;h1 id=&#34;hosting-multiple-websites-on-one-server-using-nginx&#34;&gt;Hosting Multiple Websites on One Server Using Nginx&lt;/h1&gt;
&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Host multiple websites on a single web server by combining:&lt;/p&gt;
&lt;p&gt;DNS (BIND9)
Nginx Virtual Hosts (Server Blocks)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DNS Server VM + 1 Web Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;dns-topology&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/nginx-virtual-hosts/dns_vhost_topology.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;This lab builds upon the Private DNS Infrastructure with BIND9 (3-VM Lab). The following components are assumed to already be configured:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BIND9 installed and running on the DNS server.&lt;/li&gt;
&lt;li&gt;The company.lab DNS zone created and configured.&lt;/li&gt;
&lt;li&gt;The zone file (/etc/bind/db.company.lab) already exists.&lt;/li&gt;
&lt;li&gt;The client is configured to use the internal DNS server (192.168.10.10) via Netplan.&lt;/li&gt;
&lt;li&gt;DNS resolution between the client and the DNS server has been verified.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this lab, the existing DNS infrastructure is extended by adding additional DNS records and configuring Nginx virtual hosts to host multiple websites on a single web server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Private DNS Infrastructure with BIND9</title>
      <link>https://my-it-blog.netlify.app/posts/private-dns/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/private-dns/</guid>
      <description>&lt;h1 id=&#34;private-dns-infrastructure-with-bind9&#34;&gt;Private DNS Infrastructure with BIND9&lt;/h1&gt;
&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Build a private DNS infrastructure using BIND9 where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A DNS server resolves names in the company.lab domain.&lt;/li&gt;
&lt;li&gt;A web server hosts a website.&lt;/li&gt;
&lt;li&gt;A client uses the DNS server to locate and access the web server.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DNS Server VM + 1 Web Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;dns-topology&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/private-dns/dns-topology.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;phase-1---configure-dns-server&#34;&gt;Phase 1 - Configure DNS Server&lt;/h2&gt;
&lt;h3 id=&#34;step-1---install-bind9-and-verify&#34;&gt;Step 1 - Install BIND9 and verify&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install bind9 bind9-utils dnsutils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status named/bind9
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -tulnp | grep 192.168.10.10:53
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;bind9-status&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/private-dns/bind9-status.png&#34;&gt;
&lt;img alt=&#34;verify&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/private-dns/verify-bind.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Firewall &amp; DMX Networking Lab</title>
      <link>https://my-it-blog.netlify.app/posts/dmz-networking/</link>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/dmz-networking/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;The lab focuses on troubleshooting real-world network failures by systematically isolating issues at each layer of the network stack.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;LAN (User Network)		DMZ (Service Network)
192.168.10.0/24			192.168.20.0/24
__________________		_____________________

Client VM			Server VM
192.168.10.101			192.168.20.10
	|				|
	|				|
	________ Firewall VM ___________
		(Router + Firewall)
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;issue-1-no-connectivity-between-networks&#34;&gt;Issue 1: No connectivity between networks&lt;/h2&gt;
&lt;p&gt;Failure to connect to the webserver&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;issue&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/dmz-networking/issue.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;troubleshooting-workflow&#34;&gt;Troubleshooting Workflow&lt;/h2&gt;
&lt;h3 id=&#34;step-1---verify-the-service-exists&#34;&gt;Step 1 - Verify the service exists&lt;/h3&gt;
&lt;p&gt;From Server:&lt;/p&gt;</description>
    </item>
    <item>
      <title>DMZ Network Lab - Firewall, Routing, and nftables</title>
      <link>https://my-it-blog.netlify.app/posts/dmz/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/dmz/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;The goal of this lab is to design and implement a basic DMZ (Demilitarized Zone) network using Linux virtual machines, understand routing between network segments, and apply nftables as a stateful firewall.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;LAN (User Network)		DMZ (Service Network)
192.168.10.0/24			192.168.20.0/24
__________________		_____________________

Client VM			Server VM
192.168.10.101			192.168.20.10
	|				|
	|				|
	________ Firewall VM ___________
		(Router + Firewall)
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;vm--routing-configuration&#34;&gt;VM &amp;amp; Routing Configuration&lt;/h2&gt;
&lt;h3 id=&#34;client-vm&#34;&gt;Client VM&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;client-config&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/dmz/client-conf.png&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo netplan try
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo netplan apply
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;firewall-vm-core-router&#34;&gt;Firewall VM (Core Router)&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;firewall-config&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/dmz/frw-conf.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux nftables Firewall Fundamentals Lab</title>
      <link>https://my-it-blog.netlify.app/posts/nftables/</link>
      <pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/nftables/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;hr&gt;
&lt;h2 id=&#34;lab-environment&#34;&gt;Lab Environment&lt;/h2&gt;
&lt;p&gt;Client VM 1 - 192.168.10.101
Client VM 2 - 192.168.10.102
Server VM - 192.168.10.10&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;server-setup&#34;&gt;Server Setup&lt;/h2&gt;
&lt;h3 id=&#34;step-1---run-web-server&#34;&gt;Step 1 - Run web server&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m http.server &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -tln | grep :8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;web-server&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/nftables/web-server.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;step-2---base-firewall-configuration&#34;&gt;Step 2 - Base firewall configuration&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nft add table inet filter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nft add chain inet filter input &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{ type filter hook input priority 0; policy drop; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nft add rule inet filter input iif lo accept
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nft add rule inet filter input ct state established,related accept
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;ruleset&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/nftables/basenft_ruleset.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>LUKS Full Disk Encryption Lab (Attack &amp; Defense)</title>
      <link>https://my-it-blog.netlify.app/posts/luks-encryption-lab/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/luks-encryption-lab/</guid>
      <description>&lt;h3 id=&#34;objective&#34;&gt;Objective&lt;/h3&gt;
&lt;p&gt;This lab demonstrates how Linux Full Disk Encryption (LUKS) works and what it protects against.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;part-1---attack-scenario-unencrypted-disk&#34;&gt;Part 1 - Attack Scenario (Unencrypted Disk)&lt;/h2&gt;
&lt;h3 id=&#34;step-1---identify-disk&#34;&gt;Step 1 - Identify disk&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-2---create-filesystem-no-ecnryption&#34;&gt;Step 2 - Create filesystem (no ecnryption)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mkfs.ext4 /dev/sdc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;sdc&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/luks-encryption-lab/sdc.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;step-3---mount-disk&#34;&gt;Step 3 - Mount disk&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mkdir /mnt/test
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mount /dev/sdc /mnt/test
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;mount_sdc&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/luks-encryption-lab/mount_sdc.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;step-4---add-sensitive-data&#34;&gt;Step 4 - Add sensitive data&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sensitive data&amp;#34;&lt;/span&gt; | sudo tee /mount/test/secret.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;attack-simulation&#34;&gt;ATTACK SIMULATION&lt;/h2&gt;
&lt;h3 id=&#34;step-1---direct-mount-attempt&#34;&gt;Step 1 - Direct mount attempt&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mkdir /mnt/attack; sudo mount /dev/sdc /mnt/attack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -l /mnt/attack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat /mnt/attack/secret.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;exposed_data&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/luks-encryption-lab/attack1_exposed_data.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>GRUB Security Lab: Boot-Time Privilege Escalation &amp; Hardening</title>
      <link>https://my-it-blog.netlify.app/posts/grub-security-lab/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/grub-security-lab/</guid>
      <description>&lt;h2 id=&#34;attack-simulation-gaining-root-access-via-grub&#34;&gt;Attack Simulation: Gaining Root Access via GRUB&lt;/h2&gt;
&lt;h3 id=&#34;objective&#34;&gt;Objective&lt;/h3&gt;
&lt;p&gt;Demonstrate how physical access to a Linux system can be abused to gain root privileges by modifying GRUB boot parameters.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Linux Ubuntu&lt;/li&gt;
&lt;li&gt;Access to GRUB menu during boot&lt;/li&gt;
&lt;li&gt;No GRUB password protection enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;attack-steps&#34;&gt;Attack Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Reboot the system and access the GRUB menu.&lt;/li&gt;
&lt;li&gt;Select the default Linux entry and press e to edit boot parameters.&lt;/li&gt;
&lt;li&gt;Locate the line starting with: linux /boot/vmlinuz-&amp;hellip;&lt;/li&gt;
&lt;li&gt;Modify the line&lt;/li&gt;
&lt;li&gt;Boot the modified entry using Ctrl + X&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;grub_systemd&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/grub-security-lab/grub_systemd.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>USB Automounting with systemd</title>
      <link>https://my-it-blog.netlify.app/posts/usb-automounting/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/usb-automounting/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Setting up automatic USB drive mounting on a Linux server using systemd mount and automount units&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu&lt;/li&gt;
&lt;li&gt;Tools: system, USB drive&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-1---find-partition-uuid&#34;&gt;Step 1 - Find Partition UUID&lt;/h2&gt;
&lt;p&gt;Prerequisite: Plugin USB drive&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;blkid /dev/sdb1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;sdb1&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/usb-automounting/sdb1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Note: UUID and filesystem type&lt;/p&gt;
&lt;h2 id=&#34;step-2---create-the-mount-unit&#34;&gt;Step 2 - Create the Mount Unit&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/systemd/system/mnt-usb.mount
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;mnt-usb.mount&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/usb-automounting/mnt-usb_mount.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;step-3---create-automount-unit&#34;&gt;Step 3 - Create Automount Unit&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/systemd/system/mnt-usb.automount
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;mnt-usb.automount&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/usb-automounting/mnt-usb_automount.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;step-4---enable-and-start&#34;&gt;Step 4 - Enable and Start&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable mnt-usb.automount
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl start mnt-usb.automount
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-5---verify-and-test&#34;&gt;Step 5 - Verify and test&lt;/h2&gt;
&lt;p&gt;Check the automount is active:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centralized rsyslog server</title>
      <link>https://my-it-blog.netlify.app/posts/rsyslog-centralized-logging/</link>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/rsyslog-centralized-logging/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;Build a centralized logging environment where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SERVER receives logs from client1&lt;/li&gt;
&lt;li&gt;SERVER receives logs from client2&lt;/li&gt;
&lt;li&gt;Logs are stored in separate files:
&lt;ul&gt;
&lt;li&gt;/var/log/client1.log&lt;/li&gt;
&lt;li&gt;/var/log/client2.log&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;network-layout&#34;&gt;Network Layout&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Host&lt;/th&gt;
          &lt;th&gt;IP&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;server&lt;/td&gt;
          &lt;td&gt;192.168.10.10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;client1&lt;/td&gt;
          &lt;td&gt;192.168.10.101&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;client2&lt;/td&gt;
          &lt;td&gt;192.168.10.102&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;environment&#34;&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu&lt;/li&gt;
&lt;li&gt;Tools: rsyslog&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;part-1---configure-the-rsyslog-server&#34;&gt;Part 1 - Configure the rsyslog Server&lt;/h2&gt;
&lt;h3 id=&#34;verify-rsyslog&#34;&gt;Verify rsyslog&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status rsyslog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;rsyslog_status&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/rsyslog-centralized-logging/server_rsyslog_status.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;enable-udp-syslog-reception-and-restart-the-rsyslog-service&#34;&gt;Enable UDP Syslog reception and restart the rsyslog service&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/rsyslog.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart rsyslog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;udp_enabled&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/rsyslog-centralized-logging/udp_enabled.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>DNS Lab - Dnsmasq, Client resolver, Caching</title>
      <link>https://my-it-blog.netlify.app/posts/dns-server/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/dns-server/</guid>
      <description>&lt;h1 id=&#34;-dns-lab&#34;&gt;🧪 DNS Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;Understand DNS from a systems perpective&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DNS Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-lab-network-topology&#34;&gt;🛠️ Lab Network Topology&lt;/h2&gt;
&lt;h3 id=&#34;-phase-1--direct-dns-no-cache&#34;&gt;🧩 Phase 1 — Direct DNS (No Cache)&lt;/h3&gt;
&lt;p&gt;Client VM -&amp;gt; dnsmasq (192.168.10.10)&lt;/p&gt;
&lt;p&gt;Used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Break #1 (Wrong DNS Server)&lt;/li&gt;
&lt;li&gt;Break #2 (Wrong DNS Record)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-phase-2--direct-dns-no-cache&#34;&gt;🧩 Phase 2 — Direct DNS (No Cache)&lt;/h3&gt;
&lt;p&gt;Clint VM -&amp;gt; systemd-resolved (127.0.0.53) [CACHE] -&amp;gt; dnsmasq (192.168.10.10) [DNS SERVER]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inter-Interface Packet Forwarding Failure Investigation</title>
      <link>https://my-it-blog.netlify.app/posts/tcp-ip-forwarding-failure/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/tcp-ip-forwarding-failure/</guid>
      <description>&lt;h1 id=&#34;-inter-interface-packet-forwarding-failure-investigation&#34;&gt;🧪 Inter-Interface Packet Forwarding Failure Investigation&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;Diagnose why a client cannot reach the internet&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: ( 1 DHCP Server VM + 1 Client VM)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-lab-network-topology&#34;&gt;🛠️ Lab Network Topology&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Server (DHCP)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IP: 192.168.10.10&lt;/li&gt;
&lt;li&gt;Interfaces:
&lt;ul&gt;
&lt;li&gt;enp0s8 -&amp;gt; LAN&lt;/li&gt;
&lt;li&gt;enp0s3 -&amp;gt; NAT&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Client VM&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IP: 192.168.10.100&lt;/li&gt;
&lt;li&gt;Interface: enp0s8&lt;/li&gt;
&lt;li&gt;Gateway: 192.168.10.10&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-incident-statement&#34;&gt;🚨 Incident Statement&lt;/h2&gt;
&lt;p&gt;Client cannot access the internet&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-phase-1--verify-the-problem&#34;&gt;🔍 PHASE 1 — Verify the Problem&lt;/h2&gt;
&lt;p&gt;Run on Client VM:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Process Management &amp; Resource Control Lab</title>
      <link>https://my-it-blog.netlify.app/posts/process-management--resource-control/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/process-management--resource-control/</guid>
      <description>&lt;h1 id=&#34;-process-management--resource-control-lab&#34;&gt;🧪 Process Management &amp;amp; Resource Control Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;Simulate and troubleshoot a real-world system slowdown caused by CPU saturation and memory exhaustion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: Ubuntu Server&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-lab-setup&#34;&gt;🛠️ Lab Setup&lt;/h2&gt;
&lt;h3 id=&#34;step-1---create-cpu-load-script&#34;&gt;Step 1 - Create CPU Load Script&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano cpu_hog.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x cpu_hog.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;cpu_script&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/process-management--resource-control/cpu_heavy_script.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;step-2---create-memory-load-script-python&#34;&gt;Step 2 - Create Memory Load Script (Python)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano mem_hog.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x mem_hog.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;py_script&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/process-management--resource-control/mem_heavy_py_script.png&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-incident-simulation&#34;&gt;🚨 Incident Simulation&lt;/h2&gt;
&lt;h3 id=&#34;step-1---check-the-system-load-baseline&#34;&gt;Step 1 - Check the System Load Baseline&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uptime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Baseline&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/process-management--resource-control/uptime_baseline.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>DHCP Lab: Setup, Failure Scenarios &amp; Debugging Workflow</title>
      <link>https://my-it-blog.netlify.app/posts/dhcp-server/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/dhcp-server/</guid>
      <description>&lt;h1 id=&#34;-dhcp-lab&#34;&gt;🧪 DHCP Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;Understand how DHCP works in real network environment and how to debug common failure scenarios using a structured top-to-bottom approach.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: Ubuntu Server (1 DHCP Server VM &amp;amp; 2 Client VMs)&lt;/li&gt;
&lt;li&gt;Network mode: Internal Network + NAT (enp0s3 ignored for DHCP lab)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-network-setup&#34;&gt;🛠️ Network Setup&lt;/h2&gt;
&lt;h3 id=&#34;interfaces&#34;&gt;Interfaces&lt;/h3&gt;
&lt;p&gt;DHCP Server&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;enp0s8 -&amp;gt; 192.168.10.10/24 (Lab network)&lt;/li&gt;
&lt;li&gt;enp0s3 -&amp;gt; NAT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Clients&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;enp0s8 -&amp;gt; DHCP assigned IPs&lt;/li&gt;
&lt;li&gt;enp0s3 -&amp;gt; NAT (not used)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-network-configuration-netplan&#34;&gt;⚙️ Network Configuration (Netplan)&lt;/h3&gt;
&lt;p&gt;Both server and clients are configured using Netplan, which defines interface behavior before DHCP starts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic Network Setup &amp; Connectivity</title>
      <link>https://my-it-blog.netlify.app/posts/basic-network-setup-connectivity/</link>
      <pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/basic-network-setup-connectivity/</guid>
      <description>&lt;h1 id=&#34;-basic-network-setup--connectivity-lab&#34;&gt;🧪 Basic Network Setup &amp;amp; Connectivity Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;Understand how IP addressing, subnetting, and basic connectivity work in a controlled virtual environment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Virtualization: VirtualBox&lt;/li&gt;
&lt;li&gt;OS: Ubuntu Server (2 VMs)&lt;/li&gt;
&lt;li&gt;Network mode: Internal Network + NAT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VMs&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;VM&lt;/th&gt;
          &lt;th&gt;IP Address&lt;/th&gt;
          &lt;th&gt;Role&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;VM1&lt;/td&gt;
          &lt;td&gt;192.168.10.10/24&lt;/td&gt;
          &lt;td&gt;Client&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;VM2&lt;/td&gt;
          &lt;td&gt;192.168.10.20/24&lt;/td&gt;
          &lt;td&gt;Server&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-setup&#34;&gt;🛠️ Setup&lt;/h2&gt;
&lt;h3 id=&#34;step-1---create-virtual-machines&#34;&gt;Step 1 - Create Virtual Machines&lt;/h3&gt;
&lt;p&gt;Create two Linux virtual machines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;server_01&lt;/li&gt;
&lt;li&gt;server_02&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recommended specs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 CPU&lt;/li&gt;
&lt;li&gt;1-2 GB RAM&lt;/li&gt;
&lt;li&gt;10+ GB disk&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;step-2---configure-network&#34;&gt;Step 2 - Configure Network&lt;/h3&gt;
&lt;p&gt;Both VMs must use the same &lt;strong&gt;Internal Network&lt;/strong&gt;
This ensures both machines are on the same isolated Layer 2 network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Networking</title>
      <link>https://my-it-blog.netlify.app/posts/network--service-connectivity/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/network--service-connectivity/</guid>
      <description>&lt;h1 id=&#34;-linux-networking-and-service-exposure-lab&#34;&gt;🧪 Linux Networking and Service Exposure Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;This lab simulates real-world Linux networking issues and teaches how to troubleshoot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Service availability&lt;/li&gt;
&lt;li&gt;Port listening&lt;/li&gt;
&lt;li&gt;Firewall behavior (UFW)&lt;/li&gt;
&lt;li&gt;Binding (&amp;rsquo;localhost&amp;rsquo; vs external access)&lt;/li&gt;
&lt;li&gt;Network-layer debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu (VM + Bridged Adapter)&lt;/li&gt;
&lt;li&gt;Service: Nginx&lt;/li&gt;
&lt;li&gt;Tools: ss, curl, ufw, systemctl&lt;/li&gt;
&lt;li&gt;Host machine for external testing (Powershell)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-stage-1&#34;&gt;🟢 Stage 1&lt;/h2&gt;
&lt;p&gt;Verify service:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Expected outcome:
Active (running)&lt;/p&gt;
&lt;p&gt;Check listening ports:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Analysis &amp; System Debugging</title>
      <link>https://my-it-blog.netlify.app/posts/log-analysis--system-debug/</link>
      <pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/log-analysis--system-debug/</guid>
      <description>&lt;h1 id=&#34;-log-analysis--system-debugging-lab&#34;&gt;🧪 Log Analysis &amp;amp; System Debugging Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Read system logs like real incidents&lt;/li&gt;
&lt;li&gt;Identify root causes&lt;/li&gt;
&lt;li&gt;Debug common system failures&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu&lt;/li&gt;
&lt;li&gt;Tools: journalctl, df, du, dmesg&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-scenario-1-service-crash-investigation&#34;&gt;🚨 Scenario 1: Service Crash Investigation&lt;/h2&gt;
&lt;h3 id=&#34;step-1---break-the-service&#34;&gt;Step 1 - Break the service&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/nginx/nginx.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add invalid line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;invalid_directive;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-2---investigate&#34;&gt;Step 2 - Investigate&lt;/h3&gt;
&lt;p&gt;Check status:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Nginx&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/log-analysis--system-debug/nginx.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Failed&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/log-analysis--system-debug/failed_nginx.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Check logs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo journalctl -u nginx -n &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt; --no-pager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Journal&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/log-analysis--system-debug/journalctl.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Permissions &amp; Access Control</title>
      <link>https://my-it-blog.netlify.app/posts/linux-permission-access-control/</link>
      <pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/linux-permission-access-control/</guid>
      <description>&lt;h1 id=&#34;-linux-permission-and-access-control-lab&#34;&gt;🧪 Linux Permission and Access Control Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;To test how Linux file permissions and access control mechanisms work in a multi-user environment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu&lt;/li&gt;
&lt;li&gt;Tools: chmod, chown, ls, groups, sudo&lt;/li&gt;
&lt;li&gt;Users: alice, bob, admin&lt;/li&gt;
&lt;li&gt;Groups: devs, managers&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-setup&#34;&gt;🛠️ Setup&lt;/h2&gt;
&lt;h3 id=&#34;1-create-users&#34;&gt;1. Create Users&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo adduser alice
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo adduser bob
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo adduser admin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;2-create-groups&#34;&gt;2. Create Groups&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo groupadd devs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo groupadd managers
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Assign users:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo usermod -aG devs alice
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo usermod -aG managers bob
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo usermod -aG devs admin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo usermod -aG managers admin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Add_Groups&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/linux-permission-access-control/add_groups.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cron Job Automation</title>
      <link>https://my-it-blog.netlify.app/posts/cron-job-automation/</link>
      <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/cron-job-automation/</guid>
      <description>&lt;h1 id=&#34;-cron-job-automation-lab&#34;&gt;🧪 Cron Job Automation Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;To build a scheduled automation script, observe its behavior, and learn how to debug failures.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-part-1---script-setup&#34;&gt;⚙️ Part 1 - Script Setup&lt;/h2&gt;
&lt;p&gt;Create a working directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p ~/cronlab
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~/cronlab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Create the script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano backup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DATE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y-%m-%d_%H-%M-%S&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LOG_FILE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$HOME&lt;span style=&#34;color:#e6db74&#34;&gt;/cronlab/backup.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SOURCE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$HOME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BACKUP_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$HOME&lt;span style=&#34;color:#e6db74&#34;&gt;/cronlab/backups&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exec &amp;gt;&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$LOG_FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;&amp;amp;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--- RUN &lt;/span&gt;$DATE&lt;span style=&#34;color:#e6db74&#34;&gt; ---&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -a --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cronlab&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$SOURCE&lt;span style=&#34;color:#e6db74&#34;&gt;/&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/home-backup-&lt;/span&gt;$DATE&lt;span style=&#34;color:#e6db74&#34;&gt;/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Backup finished&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Script&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/cron-job-automation/script.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Systemd Restart Behavior: Why Restart=on-failure Didn&#39;t Work</title>
      <link>https://my-it-blog.netlify.app/posts/systemd-restart-behavior/</link>
      <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/systemd-restart-behavior/</guid>
      <description>&lt;h1 id=&#34;-systemd-service-restart-behavior-lab&#34;&gt;🧪 Systemd Service Restart Behavior Lab&lt;/h1&gt;
&lt;h2 id=&#34;-objective&#34;&gt;📌 Objective&lt;/h2&gt;
&lt;p&gt;To test and understand how &lt;code&gt;systemd&lt;/code&gt; handles automatic service restarts using the &lt;code&gt;Restart=on-failure&lt;/code&gt; policy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-environment&#34;&gt;⚙️ Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu (systemd-based)&lt;/li&gt;
&lt;li&gt;Tools: systemctl, journalctl, bash&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-setup&#34;&gt;🛠️ Setup&lt;/h2&gt;
&lt;h3 id=&#34;1-create-a-test-script&#34;&gt;1. Create a test script&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /usr/local/bin/labtest.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; true; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lab service is alive: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make it executable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod +x /usr/local/bin/labtest.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;2-create-a-system-service&#34;&gt;2. Create a system service&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/systemd/system/labtest.service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Unit&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Lab test service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;After&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;network.target
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Service&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/local/bin/labtest.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Restart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;on-failure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StandardOutput&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;journal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Install&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WantedBy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;step-3--start-the-service&#34;&gt;Step 3 — Start the service&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable labtest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl start labtest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status labtest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Status&#34; loading=&#34;lazy&#34; src=&#34;https://my-it-blog.netlify.app/posts/systemd-restart-behavior/labtest-status.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grub2 Boot Recovery: Restoring a Server at 2AM</title>
      <link>https://my-it-blog.netlify.app/posts/grub-recovery/</link>
      <pubDate>Thu, 09 Apr 2026 16:49:31 +0300</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/grub-recovery/</guid>
      <description>A step-by-step account of recovering a production server that dropped into the GRUB2 rescue shell at 2AM, resolved within SLA.</description>
    </item>
    <item>
      <title>How I set up my IT journal</title>
      <link>https://my-it-blog.netlify.app/posts/my-first-post/</link>
      <pubDate>Thu, 09 Apr 2026 13:48:47 +0300</pubDate>
      <guid>https://my-it-blog.netlify.app/posts/my-first-post/</guid>
      <description>&lt;h2 id=&#34;why-i-started-this-blog&#34;&gt;Why I started this blog&lt;/h2&gt;
&lt;p&gt;I am a beginner in IT and I want to document every problem I solve as I learn&lt;/p&gt;
&lt;h2 id=&#34;what-i-plan-to-write-about&#34;&gt;What I plan to write about&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Linux &amp;amp; Windows Troubleshooting&lt;/li&gt;
&lt;li&gt;Network issues&lt;/li&gt;
&lt;li&gt;Tools I discover&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
