<?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>DEV Community: Abhishek Kadlii</title>
    <description>The latest articles on DEV Community by Abhishek Kadlii (@abhishek_kadlii_9ef4ca8bc).</description>
    <link>https://dev.to/abhishek_kadlii_9ef4ca8bc</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%2F3945536%2F543d54c3-f3c9-49ba-b4c1-f9d22f89ec15.jpg</url>
      <title>DEV Community: Abhishek Kadlii</title>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhishek_kadlii_9ef4ca8bc"/>
    <language>en</language>
    <item>
      <title>Shifting to IaC: Writing the 183-Line Central Firewall Engine in Bicep When the Portal Hits a Wall | Day 9 &amp; 10</title>
      <dc:creator>Abhishek Kadlii</dc:creator>
      <pubDate>Wed, 27 May 2026 06:45:25 +0000</pubDate>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc/shifting-to-iac-writing-the-183-line-central-firewall-engine-in-bicep-when-the-portal-hits-a-wall-1n5l</link>
      <guid>https://dev.to/abhishek_kadlii_9ef4ca8bc/shifting-to-iac-writing-the-183-line-central-firewall-engine-in-bicep-when-the-portal-hits-a-wall-1n5l</guid>
      <description>&lt;p&gt;In my Day 8 lab, we successfully executed a classic data-plane traffic hijack. By forging a User Defined Route (UDR) for &lt;code&gt;0.0.0.0/0&lt;/code&gt; on our Spoke network (&lt;code&gt;Sec_Spoke_SEA_VNet&lt;/code&gt;), we successfully ripped traffic away from its default internet path and funneled it straight into a virtual appliance placeholder IP at &lt;code&gt;10.0.1.4&lt;/code&gt; inside our Hub. As my terminal verification tests proved, outbound internet transit hit a hard 100% packet hole.&lt;/p&gt;

&lt;p&gt;For Days 9 &amp;amp; 10, the mission was clear: replace that placeholder IP with a live, stateful &lt;strong&gt;Azure Native Firewall (Basic SKU)&lt;/strong&gt; to intercept, inspect, and enforce rule collections on those hijacked packets.&lt;/p&gt;

&lt;p&gt;Then, reality hit. Mid-sprint, my active 30-day promotional credit pool hit its expiration safety boundary. My portal dashboard flagged a paused state with an absolute balance of ₹0.00. &lt;/p&gt;

&lt;p&gt;In a production enterprise environment, infrastructure blockers like this happen all the time. Budgets freeze, subscription terms shift, or portal access gets locked down. As a Network Security Engineer transitioning into DevSecOps, you don’t stop the roadmap; you change your delivery mechanism. Instead of manually clicking buttons inside the billing-active Azure Portal GUI, I pivoted immediately. I abstracted our entire physical network, routing states, peering hooks, and stateful security rules into a single, declarative &lt;strong&gt;Infrastructure-as-Code (IaC)&lt;/strong&gt; deployment blueprint using &lt;strong&gt;Azure Bicep&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By moving from the GUI to local code, I built and validated the complete security engine architecture entirely for free inside Visual Studio Code with zero out-of-pocket financial risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Network Logic: What Are We Architecting?
&lt;/h2&gt;

&lt;p&gt;Before looking at the codebase, let’s map out exactly how data packets traverse this topology during runtime:&lt;/p&gt;

&lt;p&gt;[ Private Spoke Subnet: 10.1.1.0/24 ]&lt;br&gt;
│&lt;br&gt;
▼ (User Defined Route: 0.0.0.0/0 ➔ Next Hop: 10.0.2.4)&lt;br&gt;
[ AzureFirewallSubnet: 10.0.2.0/24 ] ──► Stateful Inspection Engine&lt;br&gt;
│&lt;br&gt;
├──► Matched Rule (UDP Port 53) ──► Allowed ──► Source NAT (SNAT) ➔ Internet&lt;br&gt;
└──► Unmatched Rule (TCP 80/443) ──► Dropped ➔ Implicit Deny Posture&lt;/p&gt;

&lt;p&gt;If you are coming from a traditional Network Security TAC background (like managing Palo Alto Prisma Access service connections or security zones), this setup mimics a centralized Next-Generation Firewall (NGFW) deployment. &lt;/p&gt;

&lt;p&gt;The private Spoke VM does not have a public interface or an internet gateway. When it tries to talk to the outside world, our UDR acts as a mandatory signpost forcing the packet across the VNet Peering highway into the Hub's &lt;code&gt;AzureFirewallSubnet&lt;/code&gt; at coordinate &lt;code&gt;10.0.2.4&lt;/code&gt;. The firewall then parses the packet from Layer 3 up to Layer 7, cross-references it with our rule policy, and decides whether to let it transit or drop it on the floor.&lt;/p&gt;


&lt;h2&gt;
  
  
  Complete Enterprise-Grade Bicep Security Blueprint
&lt;/h2&gt;

&lt;p&gt;Below is the complete, unedited 183-line Bicep file that builds the entire baseline network fabric and trains the central firewall's inspection engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;param location string = 'southeastasia'

// ===================================================================
// 1. CENTRAL ROUTE TABLE (THE TRAFFIC HIJACK SIGNPOST)
// ===================================================================
resource spokeRouteTable 'Microsoft.Network/routeTables@2023-09-01' = {
  name: 'Spoke_To_Hub_RT'
  location: location
  properties: {
    routes: [
      {
        name: 'Route_To_Hub'
        properties: {
          addressPrefix: '0.0.0.0/0'         // Intercepts all outbound internet traffic
          nextHopType: 'VirtualAppliance'     // Overrides default system provider routing
          nextHopIpAddress: '10.0.2.4'       // Core internal private IP of our Azure Firewall
        }
      }
    ]
  }
}

// ===================================================================
// 2. CORE HUB NETWORK (MANAGEMENT, FIREWALL, AND GATEWAY SEGMENTS)
// ===================================================================
resource hubVnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
  name: 'Sec_Hub_SEA_VNet'
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [ '10.0.0.0/16' ]
    }
    subnets: [
      {
        name: 'Management_SEA_Subnet'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
      {
        name: 'AzureFirewallSubnet'         // Mandated structural name for native engine binding
        properties: {
          addressPrefix: '10.0.2.0/24'
        }
      }
      {
        name: 'GatewaySubnet'               // Reserved segment for future VPN/ExpressRoute Gateways
        properties: {
          addressPrefix: '10.0.3.0/24'
        }
      }
    ]
  }
}

// ===================================================================
// 3. SPOKE PRODUCTION NETWORK (BOUND TO TRAFFIC HIJACK UDR)
// ===================================================================
resource spokeVnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
  name: 'Sec_Spoke_SEA_VNet'
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [ '10.1.0.0/16' ]
    }
    subnets: [
      {
        name: 'App_Prod_Subnet'
        properties: {
          addressPrefix: '10.1.1.0/24'
          routeTable: {
            id: spokeRouteTable.id           // Associates the traffic-hijacking UDR table
          }
        }
      }
    ]
  }
}

// ===================================================================
// 4. BIDIRECTIONAL NETWORK PEERING: HUB TO SPOKE
// ===================================================================
resource hubToSpokePeering 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2023-09-01' = {
  parent: hubVnet
  name: 'Hub_To_Spoke_Peer'
  properties: {
    allowVirtualNetworkAccess: true
    allowForwardedTraffic: true
    allowGatewayTransit: false
    useRemoteGateways: false
    remoteVirtualNetwork: {
      id: spokeVnet.id
    }
  }
}

// ===================================================================
// 5. BIDIRECTIONAL NETWORK PEERING: SPOKE TO HUB
// ===================================================================
resource spokeToHubPeering 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2023-09-01' = {
  parent: spokeVnet
  name: 'Spoke_To_Hub_Peer'
  properties: {
    allowVirtualNetworkAccess: true
    allowForwardedTraffic: true
    allowGatewayTransit: false
    useRemoteGateways: false
    remoteVirtualNetwork: {
      id: hubVnet.id
    }
  }
}

// ===================================================================
// 6. CENTRAL FIREWALL PUBLIC EGRESS INTERFACE (PUBLIC IP)
// ===================================================================
resource firewallPublicIP 'Microsoft.Network/publicIPAddresses@2023-09-01' = {
  name: 'Sec_Hub_FW_PIP'
  location: location
  sku: {
    name: 'Standard'
  }
  properties: {
    publicIPAllocationMethod: 'Static'
  }
}

// ===================================================================
// 7. CENTRAL FIREWALL POLICY CONTAINER (THE SECURITY RULEBOOK)
// ===================================================================
resource firewallPolicy 'Microsoft.Network/firewallPolicies@2023-09-01' = {
  name: 'Hub_Central_FW_Policy'
  location: location
  properties: {
    sku: {
      tier: 'Basic'
    }
  }
}

// ===================================================================
// 8. CENTRAL NATIVE FIREWALL ENGINE PROVISIONING
// ===================================================================
resource azureFirewall 'Microsoft.Network/azureFirewalls@2023-09-01' = {
  name: 'Central-Security-Engine'
  location: location
  properties: {
    sku: {
      name: 'AZFW_VNet'
      tier: 'Basic'
    }
    firewallPolicy: {
      id: firewallPolicy.id
    }
    ipConfigurations: [
      {
        name: 'fw-ip-config'
        properties: {
          publicIPAddress: {
            id: firewallPublicIP.id
          }
          subnet: {
            id: '${hubVnet.id}/subnets/AzureFirewallSubnet' // Drops interface into reserved subnet
          }
        }
      }
    ]
  }
}

// ===================================================================
// 9. STATEFUL RULE COLLECTION GROUP (LAYER 4 NETWORK FILTER RULES)
// ===================================================================
resource ruleCollectionGroup 'Microsoft.Network/firewallPolicies/ruleCollectionGroups@2023-09-01' = {
  parent: firewallPolicy
  name: 'Outbound_Traffic_RCG'
  properties: {
    priority: 1000
    ruleCollections: [
      {
        ruleCollectionType: 'FirewallPolicyFilterRuleCollection'
        name: 'Allow_Core_Network'
        priority: 1100
        action: {
          type: 'Allow'
        }
        rules: [
          {
            ruleType: 'NetworkRule'
            name: 'Allow_DNS'
            ipProtocols: [
              'UDP'
            ]
            sourceAddresses: [
              '10.1.1.0/24'                  // Permits packets originating from Spoke Prod Subnet
            ]
            destinationAddresses: [
              '8.8.8.8'                      // Target: Google Primary DNS
              '8.8.4.4'                      // Target: Google Secondary DNS
            ]
            destinationPorts: [
              '53'                           // Limits traffic strictly to DNS query protocols
            ]
          }
        ]
      }
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Deep-Dive: Code Logic &amp;amp; Packet Inspection Mechanics
&lt;/h2&gt;

&lt;p&gt;When discussing this topology in enterprise cloud security interviews, you must be able to trace how this specific code handles packet state:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The UDR Override Mechanics (Resource 1)&lt;/strong&gt;: By declaring a custom route for &lt;code&gt;0.0.0.0/0&lt;/code&gt; with a &lt;code&gt;nextHopType&lt;/code&gt; of &lt;code&gt;VirtualAppliance&lt;/code&gt;, we explicitly override default systemic routing. The infrastructure forces the next-hop IP mapping to match &lt;code&gt;10.0.2.4&lt;/code&gt;, which is the exact internal interface of our upcoming firewall engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The API Subnet Constraint (Resource 2)&lt;/strong&gt;: The Azure resource provider imposes a strict naming policy. A native firewall cannot attach to an arbitrarily named subnet profile. It searches exclusively for a subnet token string labeled &lt;strong&gt;&lt;code&gt;AzureFirewallSubnet&lt;/code&gt;&lt;/strong&gt;. We carved out a dedicated &lt;code&gt;/24&lt;/code&gt; block (&lt;code&gt;10.0.2.0/24&lt;/code&gt;) to handle the private clustering interfaces of the engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful Layer 4 Filtering (Resource 9)&lt;/strong&gt;: This section defines our firewall policy rulebook. The engine operates on an &lt;strong&gt;Implicit Deny&lt;/strong&gt; architecture—if a packet parameter profile does not explicitly match an allowed rule entry, it drops dead at the gate.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Allowed Execution Flow&lt;/strong&gt;: A workload inside our Spoke network (&lt;code&gt;10.1.1.0/24&lt;/code&gt;) generates a standard domain name lookup request toward external DNS resolver &lt;code&gt;8.8.8.8&lt;/code&gt; over &lt;strong&gt;UDP Port 53&lt;/strong&gt;. The firewall parses the packet headers, finds an exact match inside our &lt;code&gt;Allow_DNS&lt;/code&gt; rule matrix, permits the transit, and executes Source NAT (SNAT) using our public IP (&lt;code&gt;Sec_Hub_FW_PIP&lt;/code&gt;) to preserve private topology boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Implicit Deny Flow&lt;/strong&gt;: A background process or a user inside that same Spoke network attempts to establish an outbound web session over HTTP (Port &lt;code&gt;80&lt;/code&gt;) or HTTPS (Port &lt;code&gt;443&lt;/code&gt;). The packet hit the firewall interface. The stateful inspector reviews the policy definitions, encounters an absolute absence of any rule mapping ports 80/443, and silently drops the connection instantly. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Code Logic &amp;amp; Traffic Processing Deep-Dive
&lt;/h2&gt;

&lt;p&gt;To demonstrate absolute operational mastery during cloud engineering interviews, we must break down how this file behaves during active network runtime:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Resource 1 (&lt;code&gt;spokeRouteTable&lt;/code&gt;)&lt;/strong&gt;: This object overrides default routing behavior. By creating a custom route entry for &lt;code&gt;0.0.0.0/0&lt;/code&gt; (all internet traffic) with a &lt;code&gt;nextHopType&lt;/code&gt; parameter explicitly declared as &lt;code&gt;VirtualAppliance&lt;/code&gt;, we disrupt standard network isolation. Any server on this subnet that tries to reach an external resource is automatically pointed directly to &lt;code&gt;10.0.2.4&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource 2 (&lt;code&gt;hubVnet&lt;/code&gt;) Subnet Naming Constraint&lt;/strong&gt;: The Azure API dictates that a native firewall appliance cannot bind to an arbitrary subnet profile. It requires an exact structural string identifier named &lt;strong&gt;&lt;code&gt;AzureFirewallSubnet&lt;/code&gt;&lt;/strong&gt;. We carved out a dedicated &lt;code&gt;/24&lt;/code&gt; block (&lt;code&gt;10.0.2.0/24&lt;/code&gt;) to handle the clustering interfaces of the underlying infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource 9 (&lt;code&gt;ruleCollectionGroup&lt;/code&gt;) Layer 4 Parsing&lt;/strong&gt;: This is where our packet filtering criteria are established. The firewall runs a stateful inspection engine, matching source vectors against destination coordinates.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Evaluated Match&lt;/strong&gt;: When a compute host inside our Spoke network (&lt;code&gt;10.1.1.0/24&lt;/code&gt;) generates an upstream lookup request toward &lt;code&gt;8.8.8.8&lt;/code&gt; on &lt;strong&gt;UDP Port 53&lt;/strong&gt;, the firewall validates an exact parameter match in its rule collection and permits egress traffic while executing Source NAT (SNAT).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Implicit Deny Enforcement&lt;/strong&gt;: If an active process on that same workload attempts to create an outbound HTTP web session on port &lt;code&gt;80&lt;/code&gt; or an HTTPS connection on port &lt;code&gt;443&lt;/code&gt;, the data packet hits the firewall interface. The engine reviews the policy rules, encounters a total absence of any rule covering ports 80/443, and instantly drops the connection with zero response back to the client.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Compilation Verification &amp;amp; Local Quality Control
&lt;/h2&gt;

&lt;p&gt;To ensure the technical validity, reference bindings, and compliance of this 183-line enterprise design without launching live, billing-active resources, I leveraged the built-in Microsoft Bicep language compilation workspace inside Visual Studio Code.&lt;/p&gt;

&lt;p&gt;The compiler ran an extensive static validation analysis across our declared topography configurations, network peering structures, and rule groups, verifying a completely flawless design layout:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyh69ll7wf61ij44dgv68.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyh69ll7wf61ij44dgv68.png" alt=" " width="799" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The local IDE output officially confirmed: &lt;strong&gt;&lt;code&gt;No problems have been detected in the workspace.&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>The Live Traffic Intercept: Bringing the Cloud Fortress to Life (Day 8)</title>
      <dc:creator>Abhishek Kadlii</dc:creator>
      <pubDate>Mon, 25 May 2026 06:49:22 +0000</pubDate>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc/the-live-traffic-intercept-bringing-the-cloud-fortress-to-life-day-8-323l</link>
      <guid>https://dev.to/abhishek_kadlii_9ef4ca8bc/the-live-traffic-intercept-bringing-the-cloud-fortress-to-life-day-8-323l</guid>
      <description>&lt;p&gt;As I was curious after reading and implementing the User-Defined Routing (UDR) and subnet-slicing concepts previously, I couldn't wait to test this out under live traffic conditions. Theory is fine on paper, but as an infrastructure engineer, I don't truly trust a network design until I break it, throw live packets at it, and look at the raw terminal logs.&lt;/p&gt;

&lt;p&gt;Tonight, I stepped completely out of the textbooks and moved assets onto the cloud field. I deployed two live virtual servers inside my Singapore network sandbox, faced down strict regional quota walls, bypassed local internet restrictions, and operationally proved that my traffic hijacking detour rule works perfectly under real production conditions.&lt;/p&gt;

&lt;p&gt;Here is the step-by-step engineering log of how I did it, the real-world troubleshooting steps I took, and the underlying mechanics explained so simply that anyone can understand it.&lt;/p&gt;

&lt;p&gt;🏛️The Day 8 Deployment Strategy: Setting the Field&lt;/p&gt;

&lt;p&gt;To safely test our custom detour signpost without opening our network to the public internet, I had to deploy two distinct virtual machines into my sandbox environment. To keep my billing running at exactly ₹0/hour, I utilized Microsoft's newer, high-performance AMD free-tier eligible engine size (Standard_B2ats_v2).&lt;/p&gt;

&lt;p&gt;💡The Analogy: The Front Security Lobby vs. The Locked Back Vault&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hub-Mgmt-VM (The Front Lobby Desk): This machine sits right inside the public entryway of our network (Management_SEA_Subnet). It is given an official, fixed public street address (Static Public IP) so that administrators can find it and log into it from the outside world.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spoke-App-VM (The Hidden Back Vault): This machine sits deep inside the isolated production floor (App_Prod_Subnet) within the Spoke VNet. To maintain strict security, this machine is given absolutely no public front door. It has no public IP address, making it completely invisible to the internet and dependent on our hub-and-spoke bridge to talk to the world.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️The Step-by-Step Command-Line Execution&lt;/p&gt;

&lt;p&gt;Instead of clicking through the graphics of the Azure Portal GUI, I typed the deployment scripts manually into the Azure Cloud Shell to burn the syntax directly into my muscle memory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generating the Golden Cryptographic Login Keys&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before spinning up the servers, I generated a pair of secure cryptographic keys. In professional enterprise security, we completely ban weak, guessable text passwords. Instead, we use advanced mathematics to generate an interconnected Private Golden Key (kept in our pocket) and a matching Public Lock (bolted onto the server door).&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="sb"&gt;`&lt;/span&gt;bash

ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 2048 &lt;span class="nt"&gt;-f&lt;/span&gt; ~/.ssh/id_rsa &lt;span class="nt"&gt;-N&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;ssh-keygen - Starts the security engine tool to manufacture secure digital keys and locks.&lt;/p&gt;

&lt;p&gt;-t rsa - Tells the computer to use the industry-standard RSA math algorithm for maximum security.&lt;/p&gt;

&lt;p&gt;-b 2048 - Makes the lock 2,048 bits thick, which would take supercomputers billions of years to crack.&lt;/p&gt;

&lt;p&gt;-f ~/.ssh/id_rsa - Saves your private golden key as id_rsa and your public lock as id_rsa.pub in a hidden folder.&lt;/p&gt;

&lt;p&gt;-N "" - Assigns a blank passphrase so our automation code can read the keys instantly without annoying prompts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provisioning the Entryway Jump Box (Hub Machine)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I launched the administrative entryway machine directly inside the Singapore network layout using our AMD free-tier compute profile:&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="sb"&gt;`&lt;/span&gt;bash 

az vm create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Hub-Mgmt-VM &lt;span class="nt"&gt;--location&lt;/span&gt; southeastasia &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;--subnet&lt;/span&gt; Management_SEA_Subnet &lt;span class="nt"&gt;--image&lt;/span&gt; Ubuntu2204 &lt;span class="nt"&gt;--size&lt;/span&gt; Standard_B2ats_v2 &lt;span class="nt"&gt;--admin-username&lt;/span&gt; abhishek &lt;span class="nt"&gt;--ssh-key-values&lt;/span&gt; ~/.ssh/id_rsa.pub &lt;span class="nt"&gt;--public-ip-address-allocation&lt;/span&gt; static
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;az vm create - Orders Azure to go to its physical hardware racks and carve out a new virtual server.&lt;/p&gt;

&lt;p&gt;-g Marathahalli_Lab_RG - Groups all the server assets (disks, cards) inside my regional resource folder.&lt;/p&gt;

&lt;p&gt;-n Hub-Mgmt-VM - Labels this machine "Hub-Mgmt-VM" so we can easily track it in logs.&lt;/p&gt;

&lt;p&gt;--location southeastasia - Bypasses local data center hardware shortages by building the machine straight in Singapore.&lt;/p&gt;

&lt;p&gt;--vnet-name Sec_Hub_SEA_VNet - Plugs this machine's network card directly into our central Hub network.&lt;/p&gt;

&lt;p&gt;--subnet Management_SEA_Subnet - Drops the machine into the dedicated room reserved for administrative management desks.&lt;/p&gt;

&lt;p&gt;--image Ubuntu2204 - Installs a clean, production-ready version of the Ubuntu Linux 22.04 operating system.&lt;/p&gt;

&lt;p&gt;--size Standard_B2ats_v2 - Our Zero-Cost Safeguard; chooses a dual-core AMD size that is 100% free-tier eligible.&lt;/p&gt;

&lt;p&gt;--admin-username abhishek - Creates the master administrator user profile inside the Linux operating system.&lt;/p&gt;

&lt;p&gt;--ssh-key-values ~/.ssh/id_rsa.pub - Takes the public lock file we created earlier and bolts it onto the server login gate.&lt;/p&gt;

&lt;p&gt;--public-ip-address-allocation static - Gives this lobby desk a fixed, unchanging internet address so we can always connect from home.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provisioning the Completely Private Workload (Spoke Machine)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next, I launched our isolated application instance. Notice the empty quotes at the very end of the script—this explicitly commands Azure to deny this machine a public IP door, keeping it completely private:&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="sb"&gt;`&lt;/span&gt;bash

az vm create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Spoke-App-VM &lt;span class="nt"&gt;--location&lt;/span&gt; southeastasia &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Spoke_SEA_VNet &lt;span class="nt"&gt;--subnet&lt;/span&gt; App_Prod_Subnet &lt;span class="nt"&gt;--image&lt;/span&gt; Ubuntu2204 &lt;span class="nt"&gt;--size&lt;/span&gt; Standard_B2ats_v2 &lt;span class="nt"&gt;--admin-username&lt;/span&gt; abhishek &lt;span class="nt"&gt;--ssh-key-values&lt;/span&gt; ~/.ssh/id_rsa.pub &lt;span class="nt"&gt;--public-ip-address&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;--vnet-name Sec_Spoke_SEA_VNet - Targets our Spoke Network instead of our Hub network.&lt;/p&gt;

&lt;p&gt;--subnet App_Prod_Subnet - Drops this machine onto our isolated production factory floor block.&lt;/p&gt;

&lt;p&gt;--public-ip-address "" - The Isolation Shield; passing empty quotes forbids Azure from giving this server a public IP address.&lt;/p&gt;

&lt;p&gt;📊 The Routing Validation Blueprint: The Live Tests&lt;/p&gt;

&lt;p&gt;Once both servers were live, it was time to run our live validation test plan. We need to mathematically and operationally prove that our traffic hijacking detour rules are working.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`    ===================================================================================
    =                         THE LIVE TRAFFIC FLOW DIAGRAM                           =
    ===================================================================================

     [ Home/Cloud Terminal ] --(Passes Through)--&amp;gt; [ Hub Lobby Jump Box: 10.0.1.4 ]



                                                            |
                                                   (VNet Peering Bridge)
                                                            |
                                                            v
     [ Internet: 8.8.8.8 ] &amp;lt;---(100% PACKET LOSS!)--- [ Private Spoke VM: 10.1.1.4 ]
          ^                                                 |



          |                                        (User-Defined Route)
          |                                                 |
          +=========== (HIJACKED TO BLACK HOLE!) ===========+
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test 1: The Master Itinerary Manifest Audit (Effective Routes Query)&lt;/p&gt;

&lt;p&gt;Before sending a packet, I queried Azure’s network routing engine directly to show me what map the Spoke network interface was using under the hood:&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="sb"&gt;`&lt;/span&gt;bash

az network nic show-effective-route-table &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Spoke-App-VMVMNic &lt;span class="nt"&gt;-o&lt;/span&gt; table
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;az network nic - Targets the virtual Network Interface Card attached to our private Spoke server.&lt;/p&gt;

&lt;p&gt;show-effective-route-table - Interrogates Azure's live routing processor to show the active traffic map.&lt;/p&gt;

&lt;p&gt;-n Spoke-App-VMVMNic - Targets the specific system name of our Spoke machine's network adapter card.&lt;/p&gt;

&lt;p&gt;-o table - Orders the output messy code to cleanly rearrange itself into a beautiful grid with headers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxf4jjj4pt445bcfndmz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxf4jjj4pt445bcfndmz.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result was an absolute architectural victory! The table showed our manual detour route for 0.0.0.0/0 sitting as Active, while Azure’s native, unmonitored default highway to the internet was marked as completely Invalid.&lt;/p&gt;

&lt;p&gt;Test 2: The Inner Private Walkway Check (The Peering Bridge Jump)&lt;/p&gt;

&lt;p&gt;I used secure SSH Agent Forwarding (ssh -A) to pass through my public entryway lobby box and jump straight onto the internal private IP of our isolated Spoke machine (10.1.1.4).&lt;/p&gt;

&lt;p&gt;Once inside the Spoke machine's shell prompt, I executed an internal connectivity check back to the Hub:&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="sb"&gt;`&lt;/span&gt;bash

ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 10.0.1.4
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;ping - Sends small network test packets to an IP address to see if it is awake.&lt;/p&gt;

&lt;p&gt;-c 4 - Sets a count limit flag; stops sending test packets automatically after 4 attempts.&lt;/p&gt;

&lt;p&gt;10.0.1.4 - Targets the private internal IP coordinate of our Hub management desk room.&lt;/p&gt;

&lt;p&gt;The packets zoomed across the private VNet Peering footbridge instantly, returning a perfect 0% packet loss statistic. This proved that our internal private communication lines were completely healthy and operational.&lt;/p&gt;

&lt;p&gt;Test 3: The Black Hole Validation Check (The Ultimate Hijack Proof)&lt;/p&gt;

&lt;p&gt;Now, the grand finale. While standing inside the private Spoke machine, I attempted to send a packet out to Google's public internet server:&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="sb"&gt;`&lt;/span&gt;bash

ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 8.8.8.8
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;8.8.8.8 - Targets a well-known public internet server (Google's Public DNS infrastructure).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0znoxnr6d6jh79cojc48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0znoxnr6d6jh79cojc48.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The terminal hung for a moment, and then returned exactly 100% packet loss.&lt;/p&gt;

&lt;p&gt;In ordinary desktop computing, losing all your packets looks like a failure. But in Cloud Network Security Engineering, this is a spectacular win! It operationally proves that our custom detour sign successfully intercepted the outbound internet packet at the subnet boundary and shoved it down our secure detour corridor. Because we haven't built the actual firewall software engine at that destination endpoint yet, the traffic terminates safely at that empty boundary, confirming that our perimeter isolation is working flawlessly.&lt;/p&gt;

&lt;p&gt;💰Financial Discipline Check: Protecting the Trial Runway&lt;/p&gt;

&lt;p&gt;By maintaining strict enterprise resource boundaries and leveraging Azure's dual-core AMD free-tier eligible compute allocations, our active sandbox running cost sits at exactly ₹0 per hour. This leaves my full promotional credit balance safe at ~₹18,909 for our upcoming security engine deployments.&lt;/p&gt;

&lt;p&gt;🏁Day 8 Wrap-Up&lt;/p&gt;

&lt;p&gt;Tonight was a massive architectural leap forward. By typing out raw CLI statements, resolving core quotas, and validating data-plane packet paths step by step, I am locking in the exact hands-on engineering confidence needed for senior enterprise technical panels.&lt;/p&gt;

&lt;p&gt;The isolated sandbox field is fully verified. Next up, we deploy our central security engine—the live Azure Native Firewall—to capture that black-holed traffic, inspect it, and safely bridge our secure fortress out to the public web!&lt;/p&gt;

&lt;p&gt;🛠️Safe Infrastructure Resting Script&lt;/p&gt;

&lt;p&gt;To keep our active billing runway perfectly protected while we draft our notes, I executed a master deallocation script from the Cloud Shell Control Tower to put both machines into deep freeze at zero cost:&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="sb"&gt;`&lt;/span&gt;bash

az vm deallocate &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--ids&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;az vm list &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s2"&gt;"[].id"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; tsv&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;--no-wait&lt;/span&gt;
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚙Code Decoder (Line-by-Line):&lt;/p&gt;

&lt;p&gt;az vm deallocate - Commands Azure to stop compute billing entirely by releasing our CPU/RAM chips back into the shared datacenter pool.&lt;/p&gt;

&lt;p&gt;$(az vm list ... --query "[].id" -o tsv) - Automatically compiles a neat list of every single virtual machine ID inside our resource group folder.&lt;/p&gt;

&lt;p&gt;--no-wait - Forces the command to process silently in the background so we can instantly turn off our computer.&lt;/p&gt;

&lt;p&gt;Onward and upward! 🚀🔥&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Sunday Double-Header: Erecting Checkpoints and Traffic Hijacking in the Cloud (Day 6 &amp; 7)</title>
      <dc:creator>Abhishek Kadlii</dc:creator>
      <pubDate>Mon, 25 May 2026 03:57:40 +0000</pubDate>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc/sunday-double-header-erecting-checkpoints-and-traffic-hijacking-in-the-cloud-day-6-7-388h</link>
      <guid>https://dev.to/abhishek_kadlii_9ef4ca8bc/sunday-double-header-erecting-checkpoints-and-traffic-hijacking-in-the-cloud-day-6-7-388h</guid>
      <description>&lt;p&gt;Continuing the weekend grind into Sunday night, I shifted my focus to a fundamental truth of enterprise cloud security: never trust a clear road. For the Day 6 and 7 double-header of my career transition blueprint, I decided to take the automatic, unmonitored highways that cloud providers build behind the scenes and completely tear them up. I moved away from simply connecting networks to executing a tactical traffic intercept—focusing on breaking down complex routing math into plain English and carving out clean, industrial-grade security checkpoints without spending a single rupee of my trial credit.&lt;/p&gt;

&lt;p&gt;By stepping completely out of the default cloud configuration mindset, I learned how to manually intercept global network traffic patterns and carve out specialized infrastructure zones to prepare my central cloud fortress for future Next-Generation Firewalls.&lt;/p&gt;

&lt;p&gt;Here is the technical blueprint of what I built, the real-world engineering constraints I had to solve, and the core routing mechanics broken down so simply that anyone can grasp them.&lt;/p&gt;

&lt;p&gt;🏛️Day 6: Setting the Detour (User-Defined Routes)&lt;/p&gt;

&lt;p&gt;Up until yesterday, our Hub VNet (the central terminal) and Spoke VNet (the application floor) were connected by a private footbridge called VNet Peering.&lt;/p&gt;

&lt;p&gt;💡The Analogy: The Unmonitored Highway vs. The Mandatory Detour&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Default State (System Routes): By default, Azure automatically hands a GPS map to every packet traveling between networks. If a machine inside the Spoke wants to talk to the Hub, the GPS takes it across a direct highway with zero checks, zero gates, and zero security guards. If a hacker breaches an application server, they can walk right into the corporate data center.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Secured State (User-Defined Routes / UDR): Imagine erecting a massive concrete jersey barrier across that highway and placing a giant Mandatory Detour Sign right at the exit gate of the Spoke subnet. The sign states: "You are no longer allowed to use the direct highway. All traffic leaving this building must exit down a side road and report straight to the Security Guard Post inside the Hub first."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the cloud world, we call this Traffic Hijacking or packet interception. We are manually ripping up Azure's automatic mapping instructions and overriding them with our own strict routing rules to force data into a secure checkpoint queue.&lt;/p&gt;

&lt;p&gt;🛠️The Day 6 Command-Line Blueprint&lt;/p&gt;

&lt;p&gt;I cleared my terminal and typed these out manually to build the detour signpost and bolt it down to the application floor:&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="sb"&gt;`&lt;/span&gt;bash

&lt;span class="c"&gt;# 1. Create the physical wooden signpost frame (Route Table)&lt;/span&gt;
az network route-table create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Spoke_To_Hub_RT &lt;span class="nt"&gt;-l&lt;/span&gt; southeastasia

&lt;span class="c"&gt;# 2. Paint the specific "Hijack" instruction onto the signpost&lt;/span&gt;
az network route-table route create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--route-table-name&lt;/span&gt; Spoke_To_Hub_RT &lt;span class="nt"&gt;-n&lt;/span&gt; Intercept_All_Traffic &lt;span class="nt"&gt;--address-prefix&lt;/span&gt; 0.0.0.0/0 &lt;span class="nt"&gt;--next-hop-type&lt;/span&gt; VirtualAppliance &lt;span class="nt"&gt;--next-hop-ip-address&lt;/span&gt; 10.0.1.4

&lt;span class="c"&gt;# 3. Bolt the signpost down to the exit door of our production application road&lt;/span&gt;
az network vnet subnet update &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Spoke_SEA_VNet &lt;span class="nt"&gt;-n&lt;/span&gt; App_Prod_Subnet &lt;span class="nt"&gt;--route-table&lt;/span&gt; Spoke_To_Hub_RT
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔍Deep-Dive Concept: The Rule of the Longest Prefix Match (LPM)&lt;/p&gt;

&lt;p&gt;When an individual router handles a packet, it might look at its manual and see multiple matching instructions. Azure resolves this conflict using a strict mathematical law: The most specific rule (the one with the longest bitmask number) ALWAYS wins.&lt;/p&gt;

&lt;p&gt;The Interview Trap to Watch Out For:&lt;/p&gt;

&lt;p&gt;If a packet leaves our Spoke subnet heading toward an IP address like 10.0.1.5, it matches two rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Our custom catch-all UDR: 0.0.0.0/0 (Length: 0)&lt;/li&gt;
&lt;li&gt;Azure's default peering route: 10.0.0.0/16 (Length: 16)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because 16 is a longer, more precise match than 0, Azure will prioritize the default route and completely bypass our custom detour sign! To successfully force local traffic through our future firewall, we must explicitly write a highly specific UDR targeting the 10.0.0.0/16 corporate range directly.&lt;/p&gt;

&lt;p&gt;🚀 Day 7: Carving Out the Hub Infrastructure Containment Zones&lt;/p&gt;

&lt;p&gt;Once the detour signpost was securely bolted down, I immediately pivoted to Day 7 to prepare the landing pads inside the central Hub network (Sec_Hub_SEA_VNet). Perimeter security engines cannot simply be dropped into regular network subnets alongside administrative tools. They require completely clean, walled-off infrastructure zones.&lt;/p&gt;

&lt;p&gt;💡The Analogy: The Airplane Cockpit and the Loading Dock&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Firewall Zone (AzureFirewallSubnet): Think of this like the Cockpit of a commercial airliner. It is a highly restricted room built for exactly one purpose: holding the pilots and the flight controls. Regular passengers are physically banned from walking inside or pulling up a desk there. If they do, they could accidentally hit a control lever and crash the plane.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Gateway Zone (GatewaySubnet): Think of this like a heavy-duty corporate Loading Dock at the back of the facility. It is fenced off exclusively to receive massive cargo trucks coming from your physical on-premise headquarters or your home network testing labs via secure underground transit tunnels.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️The Day 7 Command-Line Blueprint&lt;/p&gt;

&lt;p&gt;I opened up my ledger book and manually carved out these two specialized rooms, making sure to use the exact case-sensitive names strictly required by Azure's background automated logic:&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="sb"&gt;`&lt;/span&gt;bash

&lt;span class="c"&gt;# 1. Carve out the restricted Cockpit zone on Page 2 of our ledger&lt;/span&gt;
az network vnet subnet create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;-n&lt;/span&gt; AzureFirewallSubnet &lt;span class="nt"&gt;--address-prefixes&lt;/span&gt; 10.0.2.0/24

&lt;span class="c"&gt;# 2. Carve out the secure Loading Dock zone on Page 3 of our ledger&lt;/span&gt;
az network vnet subnet create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;-n&lt;/span&gt; GatewaySubnet &lt;span class="nt"&gt;--address-prefixes&lt;/span&gt; 10.0.3.0/24
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghffy9ns3rmc88mwj5pg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghffy9ns3rmc88mwj5pg.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📊The Evolving Network Topology Map&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`       ===================================================================
       =                       MARATHAHALLI_LAB_RG                       =
       ===================================================================

         [ SEC_SPOKE_SEA_VNET ]                  [ SEC_HUB_SEA_VNET ]
             (10.1.0.0/16)                           (10.0.0.0/16)
        +-----------------------+               +-----------------------+



        |  [ App_Prod_Subnet ]  |               | [Management_SEA_Subnet|
        |     10.1.1.0/24       |               |     10.0.1.0/24       |
        +-----------+-----------+               +-----------+-----------+



                    |                                       |
                    | (Outbound Traffic)                    v
                    v                           +-----------------------+
         +---------------------+                |  AzureFirewallSubnet  |



         |  Spoke_To_Hub_RT    |                |  (The Cockpit Zone)   |
         |  (Route Table / UDR)|                |     10.0.2.0/24       |
         |   [0.0.0.0/0]------ | -----\         +-----------------------+
         +---------------------+       |                    |



                                       |                    v
             XXXXXXXXXXXXXXXXX         |         +-----------------------+
             X DEFAULT VNET  X         |         |     GatewaySubnet     |
             X PEERING ROUTE X         |         |  (The Loading Dock)   |
             X  (HIJACKED!)  X         |         |     10.0.3.0/24       |
             XXXXXXXXXXXXXXXXX         |         +-----------------------+



                    |                  |
                    \------------------+----&amp;gt; [ Future Firewall Appliance IP ]
                                                  (Placeholder Location: 10.0.1.4)
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💰Financial Discipline Check: Protecting the Trial Runway&lt;/p&gt;

&lt;p&gt;By adhering to strict enterprise resource management principles, all infrastructure components deployed over this double-header consist purely of logical network definitions, software route tables, and placeholder rule assignments.&lt;/p&gt;

&lt;p&gt;Because no heavy virtual machine CPUs, hardware firewalls, or static public IPs were active during this configuration phase, my sandbox running cost sits at exactly ₹0 per hour. This leaves my ~₹18,909 Azure free trial credit pool 100% intact and optimized for our upcoming operational deployment labs.&lt;/p&gt;

&lt;p&gt;🏁 Weekend Wrap-Up&lt;/p&gt;

&lt;p&gt;This Sunday was a massive structural leap forward. By typing out raw CLI paths manually, mastering IP allocation constraints, and designing a secure perimeter architecture block by block, I am solidifying the muscle memory needed to sit across from senior infrastructure panels with real confidence.&lt;/p&gt;

&lt;p&gt;The foundation is ready. Next week, we bring this network fortress to life by launching live testing workloads and configuring the traffic validation rules!&lt;/p&gt;

&lt;p&gt;Onward and upward! 🚀🔥&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Weekend Grind: Breaking the GUI Habit and Building a Scalable Cloud Fortress in Azure (Day 4 &amp; 5)</title>
      <dc:creator>Abhishek Kadlii</dc:creator>
      <pubDate>Sat, 23 May 2026 13:56:49 +0000</pubDate>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc/weekend-grind-breaking-the-gui-habit-and-building-a-scalable-cloud-fortress-in-azure-day-4-5-241o</link>
      <guid>https://dev.to/abhishek_kadlii_9ef4ca8bc/weekend-grind-breaking-the-gui-habit-and-building-a-scalable-cloud-fortress-in-azure-day-4-5-241o</guid>
      <description>&lt;p&gt;It is Saturday night in Bengaluru. While most people are out roaming around the outer ring road or chilling in cafes, I made a conscious choice to sit at my desk, open up my terminal, and grind. I want to be part of that 1% crowd—the professionals who don’t just talk about growth but are genuinely curious, willing to put in the hours, and execute.&lt;/p&gt;

&lt;p&gt;Over this intense weekend session, I successfully shattered my dependency on the visual Azure Portal (GUI), moved completely into command-line infrastructure automation, and expanded my secure digital sandbox into an enterprise-grade network topology.&lt;/p&gt;

&lt;p&gt;Here is exactly how I built it, the real-world bugs I encountered, and the core architectural concepts broken down so simply that even a non-technical person can understand them.&lt;/p&gt;

&lt;p&gt;🛑Day 4: Moving from "Pointing-and-Clicking" to Code&lt;/p&gt;

&lt;p&gt;Up until yesterday, I built my cloud infrastructure by manually clicking buttons, menus, and checkboxes inside the Azure Portal web interface.&lt;/p&gt;

&lt;p&gt;💡The Analogy: The Hand-Carved Bakery vs. The Smart Machine&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Manual Way (Days 1–3): Imagine baking a cake where you have to manually measure flour, crack every egg, and closely watch the oven dial. This works great for one cake. But what if a major corporate company in Whitefield orders 500 identical cakes for an event? If you try to do it all by hand, it will take forever, you will get exhausted, and some cakes will inevitably taste different due to human error.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Automation Way (Day 4): Imagine programming a digital, industrial smart-mixer. You type in the exact measurements into a script once, press a button, and the machine perfectly outputs 500 identical cakes with zero errors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the cloud world, we call this Infrastructure as Code (IaC). Enterprise networks are massive; we cannot scale by clicking buttons in a browser. We use text-based scripts to deploy identical, flawless environments in seconds.&lt;/p&gt;

&lt;p&gt;🛠️ The Simplified Command-Line Blueprint&lt;/p&gt;

&lt;p&gt;I opened up the browser-based Azure Cloud Shell and used Azure CLI to fire up my infrastructure using tight, professional shortcut flags:&lt;/p&gt;

&lt;p&gt;-g stands for the Resource Group (our logical container).&lt;br&gt;
-n stands for the Name of our resource.&lt;br&gt;
-l stands for the Location (Southeast Asia/Singapore datacenters).&lt;/p&gt;

&lt;p&gt;Here are the exact three direct commands that built my perimeter security:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;BASH
&lt;span class="c"&gt;# 1. Create the Security Guard Shack (Network Security Group)&lt;/span&gt;
az network nsg create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Sec_Hub_SEA_NSG &lt;span class="nt"&gt;-l&lt;/span&gt; southeastasia

&lt;span class="c"&gt;# 2. Program the Guard to strictly allow my home ISP IP on Port 22 (SSH)&lt;/span&gt;
az network nsg rule create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--nsg-name&lt;/span&gt; Sec_Hub_SEA_NSG &lt;span class="nt"&gt;-n&lt;/span&gt; Allow_SSH_Home_Only &lt;span class="nt"&gt;--priority&lt;/span&gt; 100 &lt;span class="nt"&gt;--source-address-prefixes&lt;/span&gt; 205.254.163.132 &lt;span class="nt"&gt;--destination-port-ranges&lt;/span&gt; 22

&lt;span class="c"&gt;# 3. Create the Private Network and bind it to the Guard Shack instantly&lt;/span&gt;
az network vnet create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;-l&lt;/span&gt; southeastasia &lt;span class="nt"&gt;--address-prefixes&lt;/span&gt; 10.0.0.0/16 &lt;span class="nt"&gt;--subnet-name&lt;/span&gt; Management_SEA_Subnet &lt;span class="nt"&gt;--subnet-prefixes&lt;/span&gt; 10.0.1.0/24 &lt;span class="nt"&gt;--nsg&lt;/span&gt; Sec_Hub_SEA_NSG

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔍 The Day 4 Troubleshooting Story: Defeating the Location Clash&lt;/p&gt;

&lt;p&gt;When I first ran my script, Azure halted everything and threw a glaring red error:&lt;/p&gt;

&lt;p&gt;[InvalidResourceLocation] The resource 'Sec_Hub_VNet' already exists in location 'centralindia' in resource group 'Marathahalli_Lab_RG'. A resource with the same name cannot be created in location 'southeastasia'&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0merdx6nk8qqpxh3p29o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0merdx6nk8qqpxh3p29o.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Lesson:&lt;/p&gt;

&lt;p&gt;During my early labs, I had manually created a network named Sec_Hub_VNet inside India. Today, my script tried to create a new network with the exact same name inside Singapore, but within the same resource group wrapper.&lt;/p&gt;

&lt;p&gt;Azure taught me an important architectural lesson here: While a single Resource Group can hold assets from different cities around the world, it absolutely cannot hold two items that share the exact same name.&lt;/p&gt;

&lt;p&gt;The Fix: I modified my automation script variables, changing the name to Sec_Hub_SEA_VNet. The script instantly cleared the validation check and deployed flawlessly.&lt;/p&gt;

&lt;p&gt;🏛️Deep-Dive Concept: How Firewalls Process Cloud Traffic&lt;/p&gt;

&lt;p&gt;As a Network Security Engineer, I had to understand exactly how Azure evaluates firewall rules when we bind them programmatically. &lt;br&gt;
In Azure, you can attach Network Security Groups (NSGs) at two distinct boundaries: the Subnet level (the whole road) and the NIC level (the specific house's front door).&lt;/p&gt;

&lt;p&gt;💡The Analogy: The High-Security Corporate Tech Park&lt;/p&gt;

&lt;p&gt;Imagine visiting a secure corporate client office in Marathahalli:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Subnet Gate: First, you drive up to the main outer gate of the tech park. Security checks your vehicle. If you are on the list, they let you drive onto the campus (Allow).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The NIC Gate: Next, you walk up to the glass door of Building 3 inside that campus. The security guard at that specific door checks your ID badge and says, "You don't have access to this particular building" (Deny).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Result? You get dropped right there on the floor. You cannot enter. For a packet to reach an application, both security checkpoints must say "Allow".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INBOUND PACKET FLOW:
[Public Internet] ---&amp;gt; ( Subnet NSG: ALLOW ) ---&amp;gt; ( NIC NSG: DENY ) ---&amp;gt; [ Packet Dropped! ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚀Day 5: Scaling Out to a Hub-and-Spoke Topology&lt;/p&gt;

&lt;p&gt;Once Day 4's automation was rock solid, I immediately jumped into Day 5 to scale my lab into a production-grade architecture. Enterprise companies do not dump everything into a single network. They isolate environments using a Hub-and-Spoke Topology.&lt;/p&gt;

&lt;p&gt;💡The Analogy: The International Airport Terminal&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Hub (Sec_Hub_SEA_VNet): Think of this like the main central airport terminal building. This is where customs officers stand, passport control happens, and bags are scanned. Everything entering or leaving the airport must go through here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Spoke (Sec_Spoke_SEA_VNet): Think of this like the isolated airplane boarding gates far down the hallway. Gate A houses domestic flights; Gate B houses cargo. These gates do not need their own expensive customs setups; they rely entirely on the main central terminal (The Hub) to keep them secure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📊 The Network Topology Map (Architecture Layout)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    [ PUBLIC INTERNET ]

                                |
                                | (Strict Port 22 Lockdown Rule)
                                v
     =================== HUB VNET (10.0.0.0/16) ===================

     |                                                            |
     |   [ Sec_Hub_SEA_NSG ] ---&amp;gt; Applied to Subnet Layer         |
     |            |                                               |
     |            v                                               |
     |   [ Management_SEA_Subnet ] (10.0.1.0/24)                  |
     |                                                            |
     ==============================================================

               |                                      ^
               |                                      |
               |-----&amp;gt; [ Hub-to-Spoke Peering ] ------|
               |       (Status: Connected)            |
               |                                      |
               |-----&amp;gt; [ Spoke-to-Hub Peering ] ------|
               v                                      |
     ================== SPOKE VNET (10.1.0.0/16) ==================

     |                                                            |
     |   [ App_Prod_Subnet ] (10.1.1.0/24)                        |
     |   (Production Database / App Microservices workloads)      |
     |                                                            |
     ==============================================================
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💻 Day 5 Code: Line-by-Line Technical Breakdown&lt;/p&gt;

&lt;p&gt;To build this architecture, I executed three specific commands. Here is exactly what each line does under the hood:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating the Spoke Network Space
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="sb"&gt;`&lt;/span&gt;BASH
az network vnet create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;-n&lt;/span&gt; Sec_Spoke_SEA_VNet &lt;span class="nt"&gt;-l&lt;/span&gt; southeastasia &lt;span class="nt"&gt;--address-prefixes&lt;/span&gt; 10.1.0.0/16 &lt;span class="nt"&gt;--subnet-name&lt;/span&gt; App_Prod_Subnet &lt;span class="nt"&gt;--subnet-prefixes&lt;/span&gt; 10.1.1.0/24
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;az network vnet create: Tells the Azure Resource Manager to carve out a new software-defined virtual network fabric.&lt;/p&gt;

&lt;p&gt;-g Marathahalli_Lab_RG: Places this new network inside my existing resource group container.&lt;/p&gt;

&lt;p&gt;-n Sec_Spoke_SEA_VNet: Names this specific network space our "Spoke".&lt;/p&gt;

&lt;p&gt;--address-prefixes 10.1.0.0/16: Allocates a massive pool of over 65,000 private IPs. Critical detail: This does not overlap with our Hub network (10.0.0.0/16), completely preventing routing collisions.&lt;/p&gt;

&lt;p&gt;--subnet-name App_Prod_Subnet --subnet-prefixes 10.1.1.0/24: Instantly slices out a subset corridor within the Spoke where our actual production application databases and web servers will live.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building the Walkway: From Hub to Spoke
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="sb"&gt;`&lt;/span&gt;BASH
az network vnet peering create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;-n&lt;/span&gt; Hub-to-Spoke &lt;span class="nt"&gt;--remote-vnet&lt;/span&gt; Sec_Spoke_SEA_VNet &lt;span class="nt"&gt;--allow-vnet-access&lt;/span&gt;
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;az network vnet peering create: Tells Azure to construct a low-latency, private routing bridge directly across the Microsoft backbone network.&lt;/p&gt;

&lt;p&gt;--vnet-name Sec_Hub_SEA_VNet: Specifies the starting point of our bridge (The Hub).&lt;/p&gt;

&lt;p&gt;-n Hub-to-Spoke: Labels this directional leg of the bridge.&lt;/p&gt;

&lt;p&gt;--remote-vnet Sec_Spoke_SEA_VNet: Connects the other end of the bridge straight into our Spoke network asset.&lt;/p&gt;

&lt;p&gt;--allow-vnet-access: Programmatically permits the virtual machines inside the Hub to talk across this bridge natively.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Completing the Two-Way Street: From Spoke to Hub
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="sb"&gt;`&lt;/span&gt;BASH
az network vnet peering create &lt;span class="nt"&gt;-g&lt;/span&gt; Marathahalli_Lab_RG &lt;span class="nt"&gt;--vnet-name&lt;/span&gt; Sec_Spoke_SEA_VNet &lt;span class="nt"&gt;-n&lt;/span&gt; Spoke-to-Hub &lt;span class="nt"&gt;--remote-vnet&lt;/span&gt; Sec_Hub_SEA_VNet &lt;span class="nt"&gt;--allow-vnet-access&lt;/span&gt;
&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Why this line is mandatory: In cloud architecture, a peering connection is not automatically bidirectional. It is a one-way street until you configure the return path. This command sets the starting point at the Spoke (--vnet-name Sec_Spoke_SEA_VNet) and maps it right back to the Hub (--remote-vnet Sec_Hub_SEA_VNet), completing the secure loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtiu8acp0ya60fg5hc29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtiu8acp0ya60fg5hc29.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰Financial Discipline Check&lt;/p&gt;

&lt;p&gt;Since I only deployed logical networking paths, subnets, and routing bridges without provisioning any heavy virtual machine CPU power today, my automated environment runs at a cost of exactly ₹0 per hour. My Azure free trial credits remain 100% optimized and safe.&lt;/p&gt;

&lt;p&gt;🏁Weekend Wrap-Up&lt;/p&gt;

&lt;p&gt;This weekend was a massive leap forward. By stepping completely out of the comfort zone of the graphical portal, writing raw CLI scripts, conquering real-world resource location bugs, and standing up a verified Hub-and-Spoke enterprise topology, I am actively building the real-world skills needed to command senior cloud security roles.&lt;/p&gt;

&lt;p&gt;The grind continues, where we will start hijacking these default routing paths using User-Defined Routes (UDRs) to force all traffic through a centralized firewall!&lt;/p&gt;

&lt;p&gt;Onward and upward!🚀🔥&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>🚀 My First Day in the Cloud: How I Built a Secured Digital Fortress in Azure</title>
      <dc:creator>Abhishek Kadlii</dc:creator>
      <pubDate>Fri, 22 May 2026 07:41:14 +0000</pubDate>
      <link>https://dev.to/abhishek_kadlii_9ef4ca8bc/my-first-day-in-the-cloud-how-i-built-a-secured-digital-fortress-in-azure-3aka</link>
      <guid>https://dev.to/abhishek_kadlii_9ef4ca8bc/my-first-day-in-the-cloud-how-i-built-a-secured-digital-fortress-in-azure-3aka</guid>
      <description>&lt;p&gt;Many people think learning "Cloud Computing" means watching videos and memorizing words. But to actually become a real engineer, you have to get your hands dirty.&lt;/p&gt;

&lt;p&gt;Today was my very first day building live systems inside Microsoft's global network (Azure). I didn't just build a cloud computer; I wrapped it in high-tech security gates to protect it from hackers.&lt;/p&gt;

&lt;p&gt;Here is exactly what I did, told in plain, simple English.&lt;/p&gt;

&lt;p&gt;🏰 The Analogy: Building a Secret Bank Vault&lt;/p&gt;

&lt;p&gt;To understand what I built today, imagine you want to rent a secure vault inside a giant, high-tech fortress (the Cloud Data Center) to store important data.&lt;/p&gt;

&lt;p&gt;[ Hacker / Stranger ] ────► ❌ &lt;a href="https://dev.toEnforces%20MFA"&gt; Main Security Guard &lt;/a&gt;&lt;br&gt;
                                     │&lt;br&gt;
[ Abhishek's Laptop ] ────► ✅ &lt;a href="https://dev.toChecks%20Your%20Home%20IP%20Address"&gt; Private Gatehouse &lt;/a&gt;&lt;br&gt;
                                     │&lt;br&gt;
                                     ▼ (Bypassed Router Block via Secret Tunnel)&lt;br&gt;
                              ┌──────────────┐&lt;br&gt;
                              │ Inside Vault │ ──► [ Your Ubuntu Linux Server ]&lt;br&gt;
                              └──────────────┘&lt;br&gt;
Here are the 4 steps I took to build it:&lt;/p&gt;

&lt;p&gt;🚪 Step 1: Hiring the Ultimate Security Guard (MFA)&lt;/p&gt;

&lt;p&gt;Before building my vault, I hired a digital security guard for my main account. I turned on a feature called Security Defaults.&lt;/p&gt;

&lt;p&gt;What it means: Think of it like a guard at the front door who checks IDs. If anyone tries to guess my password, the guard stops them instantly and sends a verification code straight to my personal phone. This keeps the bad guys completely out of my account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7r2lq7j7mcj028l8fztr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7r2lq7j7mcj028l8fztr.png" alt=" " width="602" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧱 Step 2: Building a Private Gatehouse (The Firewall / NSG)Next, I built a private wall around my vault. In the tech world, this is called a Network Security Group (NSG). It acts like a smart gatehouse with a very specific rulebook.&lt;/p&gt;

&lt;p&gt;The Rule: I told the gatehouse, "Only let someone in if they are coming from Abhishek's exact home Wi-Fi address." If a hacker from anywhere else in the world tries to knock on the door, the gatehouse completely ignores them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyles2fkrhsapz4f9q8h5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyles2fkrhsapz4f9q8h5.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 Step 3: Launching the Computer (The Virtual Machine)Once the security walls were up, I ordered a fresh Linux computer (called a Virtual Machine) to live inside my vault.&lt;/p&gt;

&lt;p&gt;The Real-World Twist: At first, the local data centers in India were completely full because so many people were using them! Instead of giving up, I used the power of the cloud to instantly teleport my project across the ocean to Singapore, where there was plenty of room. It worked perfectly and cost me next to nothing from my free credits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zjzpcwt9u9puab3pibo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zjzpcwt9u9puab3pibo.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ Step 4: Solving a Hidden Problem (The Serial Console)This was the most exciting part of the day. When I tried to log into my new Singapore computer from my laptop, the connection kept freezing.&lt;/p&gt;

&lt;p&gt;The Problem: It turns out my home internet router is highly restrictive. It blocks the standard pipe (called Port 22) used to connect to Linux computers.&lt;/p&gt;

&lt;p&gt;The Fix: Instead of calling my internet provider to complain, I used a secret Azure back-door tool called the Serial Console. It allowed me to bypass my home router's restriction and open a direct command-line window to my server right inside my Google Chrome browser tab!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F991piqcct07jmf00t5gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F991piqcct07jmf00t5gm.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰 Saving Money: Turning off the Lights&lt;/p&gt;

&lt;p&gt;Because the cloud operates on a "pay-for-what-you-use" model, keeping the computer running when I'm not using it would waste my free credits. To practice good discipline, I hit the Stop (Deallocate) button. This completely shuts down the physical computer in Singapore, dropping my hourly cost to exactly ₹0 until I turn it back on tomorrow.&lt;/p&gt;

&lt;p&gt;🏆 Why this matters&lt;/p&gt;

&lt;p&gt;Today, I proved that I can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lock down a cloud environment so hackers can't get in.&lt;/li&gt;
&lt;li&gt;Adapt and move my infrastructure across the globe when resources are full.&lt;/li&gt;
&lt;li&gt;Troubleshoot tricky network blocks like a real professional.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
