{
  "title": "How to Build a DMZ in AWS or Azure to Separate Public Components from Internal Networks — FAR 52.204-21 / CMMC 2.0 Level 1 - Control - SC.L1-B.1.XI Implementation Checklist",
  "date": "2026-04-20",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-build-a-dmz-in-aws-or-azure-to-separate-public-components-from-internal-networks-far-52204-21-cmmc-20-level-1-control-scl1-b1xi-implementation-checklist.jpg",
  "content": {
    "full_html": "<p>Building a DMZ (demilitarized zone) in public cloud platforms like AWS or Azure is an essential step for small businesses that must comply with FAR 52.204-21 and CMMC 2.0 Level 1 Control SC.L1-B.1.XI — the requirement to separate public-facing components from internal networks that host sensitive or internal-only systems. This post walks through practical design patterns, concrete configuration details, a step-by-step implementation checklist, real-world small business examples, and compliance best practices you can follow today.</p>\n\n<h2>Why a DMZ matters for FAR 52.204-21 and CMMC 2.0 Level 1</h2>\n<p>The core objective of SC.L1-B.1.XI is to reduce attack surface and limit exposure of internal systems by segregating externally accessible services (web servers, API endpoints, file upload endpoints, bastion hosts) into controlled public zones with strict ingress/egress controls. For small contractors subject to FAR 52.204-21, failure to separate public components can lead to unauthorized access to Covered Contractor Information (CCI), noncompliance findings, lost contracts, and expensive incident response. Implementing a DMZ demonstrates basic safeguarding and provides audit evidence of network segmentation and access control.</p>\n\n<h2>Core DMZ architecture and components in AWS (practical details)</h2>\n<p>An AWS DMZ for a small business usually uses a VPC with separate public and private subnets across 2 AZs: public subnets host ALB/Application Load Balancer and NAT/Proxy if needed, while private subnets host application servers and databases. Typical components: Internet Gateway attached to the VPC, public subnets (e.g., 10.0.0.0/24 and 10.0.2.0/24), private subnets (e.g., 10.0.1.0/24 and 10.0.3.0/24), an ALB in the public subnets, a WAF attached to ALB, NAT Gateway(s) for outbound internet from private subnets, and no public IPs on backend EC2/RDS. Use VPC Flow Logs, CloudTrail, and AWS Config to capture audits.</p>\n\n<h3>AWS security details and example rules</h3>\n<p>Use Security Groups and NACLs with least-privilege rules: ALB SG allows 80/443 from 0.0.0.0/0; Web server SG allows 443 from ALB SG only and SSH (22) only from Bastion SG (not 0.0.0.0/0). Example SG rules: ALB inbound TCP 443 0.0.0.0/0; Web-SG inbound TCP 443 from sg-ALB (reference by SG ID), Web-SG inbound TCP 22 from sg-Bastion. Apply NACLs as a defense-in-depth layer: public subnet NACLs allow ephemeral outbound and inbound 80/443, private subnets deny inbound 0.0.0.0/0 for 22/3389. Use S3 VPC endpoints for backups to avoid routing through the internet and to reduce CCI exposure.</p>\n\n<h2>Core DMZ architecture and components in Azure (practical details)</h2>\n<p>In Azure, implement a similar pattern using a Virtual Network (VNet) with separate subnets: Application Gateway (with WAF) or Azure Front Door in the public layer, a dedicated DMZ subnet for reverse proxies or jump boxes, backend subnets for app servers and databases, and Azure Firewall or Network Virtual Appliance (NVA) for centralized filtering. Use Azure Bastion for secure admin access without public IPs on VMs, and Private Endpoints (for Storage, SQL) to keep data plane traffic off the internet. Configure Network Security Groups (NSGs) on each subnet and route tables to enforce traffic flow.</p>\n\n<h3>Azure security details and example rules</h3>\n<p>Example NSG rules for Azure: ApplicationGateway subnet allows TCP 80/443 inbound from Internet (priority 100), App subnet NSG allows inbound 443 from ApplicationGateway subnet only (priority 200), management subnet allows RDP/SSH only from specific on-prem IP ranges or through Azure Bastion. Use Azure Monitor, Network Watcher NSG flow logs and Azure Activity Logs to capture changes and traffic patterns. Enable Diagnostic Logs for Application Gateway and Azure Firewall and send them to a Log Analytics workspace for retention and alerts.</p>\n\n<h2>Implementation checklist (practical, step-by-step)</h2>\n<p>1) Plan address space and AZ redundancy: choose CIDR blocks (e.g., /16 VPC/VNet with /24 subnets per tier) and design public/private subnets across at least 2 AZs for availability. 2) Place only edge services in public subnets: ALB/Application Gateway, WAF, or front-door; avoid public IPs on backend services. 3) Use a bastion or managed service (AWS Systems Manager Session Manager, Azure Bastion) for admin access—no direct RDP/SSH from internet. 4) Apply least-privilege security group/NSG rules and reference SGs rather than IPs where possible. 5) Use NAT Gateways or service endpoints for outbound traffic from private subnets and VPC/VNet endpoints for storage/databases. 6) Enable centralized logging (CloudTrail, VPC Flow Logs / Azure Monitor, NSG flow logs), set retention consistent with contract requirements, and create alerts for security group/NSG changes and public IP assignments. 7) Document the design, change control, and test the segmentation with internal penetration tests and network reachability tests before production launch.</p>\n\n<h2>Real-world small business scenarios and cost considerations</h2>\n<p>Example A: A small dev shop runs a public marketing site and a private customer portal. Put the marketing site behind an ALB in the DMZ and the portal behind the ALB with WAF rules; store user data in private RDS with no public IP and an S3 bucket with a VPC Endpoint. Example B: A contractor serves a simple API for DoD partners — use AWS API Gateway or Azure API Management in front of private compute; enforce mutual TLS if required by the partner and log all access for audit. Cost tips: small businesses can minimize expense by using a single NAT Gateway across multiple private subnets per AZ (or a minimal set of NAT instances if cost constrained), and by leveraging built-in managed services (AWS WAF, Azure WAF) rather than expensive third-party appliances.</p>\n\n<h2>Risks of not implementing the DMZ and compliance tips</h2>\n<p>Not separating public components from internal networks increases risk of data exfiltration, lateral movement, and exposure of CCI; a compromise of a public web server could allow attackers to pivot into backend systems. Noncompliance with FAR 52.204-21 or CMMC 2.0 can lead to contract suspension or termination. Compliance tips: maintain an architecture diagram and control matrix mapping DMZ components to SC.L1-B.1.XI, collect and store logs as evidence (timestamps, user IDs, change records), use IAM least-privilege for automation accounts, and run quarterly reviews of network rules and IPS/IDS alerts. Automate tests: scripted checks that verify no backend instances have public IPs, and that ALB/Application Gateway is the only path from Internet to web servers.</p>\n\n<p>Summary: Implementing a DMZ in AWS or Azure to meet FAR 52.204-21 and CMMC 2.0 Level 1 is achievable for small businesses by following a clear architecture — separate public subnets for edge services, private subnets for internal systems, strict security group/NSG rules, centralized logging, and secure admin access. Use managed services (ALB/Application Gateway + WAF, NAT Gateways, VPC/VNet endpoints, Bastion/Session Manager), document everything for auditors, and automate checks to maintain compliance over time. Following the checklist above will significantly reduce risk and provide the evidence needed to demonstrate compliance with SC.L1-B.1.XI.</p>",
    "plain_text": "Building a DMZ (demilitarized zone) in public cloud platforms like AWS or Azure is an essential step for small businesses that must comply with FAR 52.204-21 and CMMC 2.0 Level 1 Control SC.L1-B.1.XI — the requirement to separate public-facing components from internal networks that host sensitive or internal-only systems. This post walks through practical design patterns, concrete configuration details, a step-by-step implementation checklist, real-world small business examples, and compliance best practices you can follow today.\n\nWhy a DMZ matters for FAR 52.204-21 and CMMC 2.0 Level 1\nThe core objective of SC.L1-B.1.XI is to reduce attack surface and limit exposure of internal systems by segregating externally accessible services (web servers, API endpoints, file upload endpoints, bastion hosts) into controlled public zones with strict ingress/egress controls. For small contractors subject to FAR 52.204-21, failure to separate public components can lead to unauthorized access to Covered Contractor Information (CCI), noncompliance findings, lost contracts, and expensive incident response. Implementing a DMZ demonstrates basic safeguarding and provides audit evidence of network segmentation and access control.\n\nCore DMZ architecture and components in AWS (practical details)\nAn AWS DMZ for a small business usually uses a VPC with separate public and private subnets across 2 AZs: public subnets host ALB/Application Load Balancer and NAT/Proxy if needed, while private subnets host application servers and databases. Typical components: Internet Gateway attached to the VPC, public subnets (e.g., 10.0.0.0/24 and 10.0.2.0/24), private subnets (e.g., 10.0.1.0/24 and 10.0.3.0/24), an ALB in the public subnets, a WAF attached to ALB, NAT Gateway(s) for outbound internet from private subnets, and no public IPs on backend EC2/RDS. Use VPC Flow Logs, CloudTrail, and AWS Config to capture audits.\n\nAWS security details and example rules\nUse Security Groups and NACLs with least-privilege rules: ALB SG allows 80/443 from 0.0.0.0/0; Web server SG allows 443 from ALB SG only and SSH (22) only from Bastion SG (not 0.0.0.0/0). Example SG rules: ALB inbound TCP 443 0.0.0.0/0; Web-SG inbound TCP 443 from sg-ALB (reference by SG ID), Web-SG inbound TCP 22 from sg-Bastion. Apply NACLs as a defense-in-depth layer: public subnet NACLs allow ephemeral outbound and inbound 80/443, private subnets deny inbound 0.0.0.0/0 for 22/3389. Use S3 VPC endpoints for backups to avoid routing through the internet and to reduce CCI exposure.\n\nCore DMZ architecture and components in Azure (practical details)\nIn Azure, implement a similar pattern using a Virtual Network (VNet) with separate subnets: Application Gateway (with WAF) or Azure Front Door in the public layer, a dedicated DMZ subnet for reverse proxies or jump boxes, backend subnets for app servers and databases, and Azure Firewall or Network Virtual Appliance (NVA) for centralized filtering. Use Azure Bastion for secure admin access without public IPs on VMs, and Private Endpoints (for Storage, SQL) to keep data plane traffic off the internet. Configure Network Security Groups (NSGs) on each subnet and route tables to enforce traffic flow.\n\nAzure security details and example rules\nExample NSG rules for Azure: ApplicationGateway subnet allows TCP 80/443 inbound from Internet (priority 100), App subnet NSG allows inbound 443 from ApplicationGateway subnet only (priority 200), management subnet allows RDP/SSH only from specific on-prem IP ranges or through Azure Bastion. Use Azure Monitor, Network Watcher NSG flow logs and Azure Activity Logs to capture changes and traffic patterns. Enable Diagnostic Logs for Application Gateway and Azure Firewall and send them to a Log Analytics workspace for retention and alerts.\n\nImplementation checklist (practical, step-by-step)\n1) Plan address space and AZ redundancy: choose CIDR blocks (e.g., /16 VPC/VNet with /24 subnets per tier) and design public/private subnets across at least 2 AZs for availability. 2) Place only edge services in public subnets: ALB/Application Gateway, WAF, or front-door; avoid public IPs on backend services. 3) Use a bastion or managed service (AWS Systems Manager Session Manager, Azure Bastion) for admin access—no direct RDP/SSH from internet. 4) Apply least-privilege security group/NSG rules and reference SGs rather than IPs where possible. 5) Use NAT Gateways or service endpoints for outbound traffic from private subnets and VPC/VNet endpoints for storage/databases. 6) Enable centralized logging (CloudTrail, VPC Flow Logs / Azure Monitor, NSG flow logs), set retention consistent with contract requirements, and create alerts for security group/NSG changes and public IP assignments. 7) Document the design, change control, and test the segmentation with internal penetration tests and network reachability tests before production launch.\n\nReal-world small business scenarios and cost considerations\nExample A: A small dev shop runs a public marketing site and a private customer portal. Put the marketing site behind an ALB in the DMZ and the portal behind the ALB with WAF rules; store user data in private RDS with no public IP and an S3 bucket with a VPC Endpoint. Example B: A contractor serves a simple API for DoD partners — use AWS API Gateway or Azure API Management in front of private compute; enforce mutual TLS if required by the partner and log all access for audit. Cost tips: small businesses can minimize expense by using a single NAT Gateway across multiple private subnets per AZ (or a minimal set of NAT instances if cost constrained), and by leveraging built-in managed services (AWS WAF, Azure WAF) rather than expensive third-party appliances.\n\nRisks of not implementing the DMZ and compliance tips\nNot separating public components from internal networks increases risk of data exfiltration, lateral movement, and exposure of CCI; a compromise of a public web server could allow attackers to pivot into backend systems. Noncompliance with FAR 52.204-21 or CMMC 2.0 can lead to contract suspension or termination. Compliance tips: maintain an architecture diagram and control matrix mapping DMZ components to SC.L1-B.1.XI, collect and store logs as evidence (timestamps, user IDs, change records), use IAM least-privilege for automation accounts, and run quarterly reviews of network rules and IPS/IDS alerts. Automate tests: scripted checks that verify no backend instances have public IPs, and that ALB/Application Gateway is the only path from Internet to web servers.\n\nSummary: Implementing a DMZ in AWS or Azure to meet FAR 52.204-21 and CMMC 2.0 Level 1 is achievable for small businesses by following a clear architecture — separate public subnets for edge services, private subnets for internal systems, strict security group/NSG rules, centralized logging, and secure admin access. Use managed services (ALB/Application Gateway + WAF, NAT Gateways, VPC/VNet endpoints, Bastion/Session Manager), document everything for auditors, and automate checks to maintain compliance over time. Following the checklist above will significantly reduce risk and provide the evidence needed to demonstrate compliance with SC.L1-B.1.XI."
  },
  "metadata": {
    "description": "Practical, actionable guidance to design and implement a DMZ in AWS or Azure to meet FAR 52.204-21 and CMMC 2.0 Level 1 control SC.L1-B.1.XI.",
    "permalink": "/how-to-build-a-dmz-in-aws-or-azure-to-separate-public-components-from-internal-networks-far-52204-21-cmmc-20-level-1-control-scl1-b1xi-implementation-checklist.json",
    "categories": [],
    "tags": []
  }
}