{
  "title": "How to Configure Cloud VPCs and Subnets to Meet FAR 52.204-21 / CMMC 2.0 Level 1 - Control - SC.L1-B.1.XI: A Practical How-To",
  "date": "2026-04-10",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-configure-cloud-vpcs-and-subnets-to-meet-far-52204-21-cmmc-20-level-1-control-scl1-b1xi-a-practical-how-to.jpg",
  "content": {
    "full_html": "<p>This how-to walks you through practical, actionable steps to configure cloud VPCs and subnets so your environment supports the basic safeguarding expectations of FAR 52.204-21 and the CMMC 2.0 Level 1 practice SC.L1-B.1.XI (system and communications protection related to basic network segmentation and isolation). The guidance is vendor-neutral where possible and includes clear, small-business-friendly examples for AWS, Azure, and GCP, plus configuration patterns, risk descriptions, and implementation tips you can apply today.</p>\n\n<h2>Understanding the objective: what the Compliance Framework expects</h2>\n\n<p>At Level 1, the Compliance Framework focuses on basic safeguarding: limit exposure of contractor information, prevent unnecessary external access, and implement simple network controls to reduce attack surface. In practice that means isolating sensitive workloads into private subnets, enforcing least-privilege ingress/egress, and ensuring administrative access is tightly controlled and logged. For VPCs and subnets this translates to: no unnecessary public IPs on systems handling covered data, explicit deny-by-default routing and security rules, and the use of private endpoints or NAT for controlled outbound access.</p>\n\n<h2>Design patterns and CIDR planning</h2>\n\n<p>Start with a clear CIDR plan: use a VPC sized to the number of hosts and services per environment (for small businesses a 10.0.0.0/16 is common). Split into at least three subnet types per AZ: public (e.g., 10.0.1.0/24) for load balancers/bastions, private application (e.g., 10.0.2.0/24) for app servers, and private data/management (e.g., 10.0.3.0/28) for databases and jump hosts. Keep the database subnet with a smaller mask to minimize assigned IPs and reduce accidental exposure. Tag subnets and resources to enforce policy and make audits simpler (tag keys such as Environment, Role, and CompliancePurpose).</p>\n\n<h2>Network controls: route tables, NAT, endpoints, security groups, and NACLs</h2>\n\n<p>Implement a default deny posture: route tables for private subnets should not include an Internet Gateway. Use a NAT Gateway (or NAT instance) in a public subnet to permit controlled outbound internet access from private subnets when required. Where possible use cloud-provider private endpoints (AWS VPC Endpoint to S3, Azure Private Endpoint, GCP Private Service Connect) to avoid routing sensitive traffic over the public internet. Security groups should be stateful, narrowly scoped (e.g., allow TCP 443 from load balancer SG), and use CIDR or SG references rather than wide-open 0.0.0.0/0 rules. NACLs can provide an additional stateless layer — for example, block all inbound traffic except required ports and only allow return traffic from known IP ranges — but ensure the combination of SGs and NACLs is tested to avoid accidental lockout.</p>\n\n<h2>Access and administrative patterns (small-business examples)</h2>\n\n<p>For administrative access, avoid exposing SSH/RDP to the internet. Use a hardened bastion host or managed jump service in a small public subnet with the bastion restricted to a known admin IP range (e.g., your office IP or an employee home IP). Better: use a bastion with session recording (SSM Session Manager on AWS, Azure Bastion, or Identity-Aware Proxy on GCP) so you can remove inbound ports entirely. Example AWS approach: create a bastion in 10.0.1.0/24, restrict security group to port 22 from your static IP, and allow the app subnet SG to accept SSH only from the bastion SG. Use MFA-backed IAM roles for all console/CLI access. For small businesses lacking a static IP, use VPN with client certs or client-based MFA to allow secure admin access without public keys.</p>\n\n<h3>Implementation snippets and checklist items</h3>\n\n<p>Checklist items you can apply immediately: 1) Create a VPC 10.0.0.0/16 and split into public/private subnets per AZ; 2) Attach separate route tables: public subnets -> IGW, private subnets -> NAT Gateway; 3) Remove public IP auto-assignment for private subnets; 4) Create VPC endpoints for storage and secrets where possible; 5) Harden security groups to \"deny by default\" and allow only necessary ports and source ranges; 6) Enable VPC Flow Logs and send to a central logging bucket or SIEM; 7) Enable provider-native configuration recording (AWS Config, Azure Policy, GCP Config Validator) to detect drift.</p>\n\n<h2>Monitoring, logging, and compliance validation</h2>\n\n<p>Enable network-level logs: VPC Flow Logs (AWS), NSG flow logs (Azure), or VPC Flow Logs (GCP) so you have visibility into traffic patterns and can prove to an auditor that subnets carrying covered information are not accepting unexpected inbound connections. Retain logs according to contract requirements and automate alerts for anomalies (e.g., unexpected Internet-bound traffic from a private data subnet). Implement simple automated checks: a periodic scanner that verifies no private subnet has an associated public IP range or that route tables haven’t been changed to expose private subnets.</p>\n\n<h2>Risks of not implementing segmentation and isolation</h2>\n\n<p>Without these controls you increase the chance of accidental public exposure (public IPs on sensitive hosts), lateral movement after an initial compromise, and uncontrolled data exfiltration. Noncompliance with FAR 52.204-21 or CMMC expectations can lead to contract penalties, loss of federal business, and reputational damage. Practically, an exposed database on a public subnet or an app server with broad security group rules is a high-risk finding that’s easy for an attacker to exploit and straightforward for an assessor to spot.</p>\n\n<p>In summary: adopt a simple, repeatable VPC/subnet architecture that enforces least privilege (private subnets, NAT for outbound, private endpoints), restrict and log administrative access, enable flow logs and config recording, and codify the design in infrastructure-as-code so it is auditable and repeatable. For small businesses these steps deliver meaningful protection aligned with FAR 52.204-21 and CMMC Level 1 practice expectations while keeping operational overhead low.</p>",
    "plain_text": "This how-to walks you through practical, actionable steps to configure cloud VPCs and subnets so your environment supports the basic safeguarding expectations of FAR 52.204-21 and the CMMC 2.0 Level 1 practice SC.L1-B.1.XI (system and communications protection related to basic network segmentation and isolation). The guidance is vendor-neutral where possible and includes clear, small-business-friendly examples for AWS, Azure, and GCP, plus configuration patterns, risk descriptions, and implementation tips you can apply today.\n\nUnderstanding the objective: what the Compliance Framework expects\n\nAt Level 1, the Compliance Framework focuses on basic safeguarding: limit exposure of contractor information, prevent unnecessary external access, and implement simple network controls to reduce attack surface. In practice that means isolating sensitive workloads into private subnets, enforcing least-privilege ingress/egress, and ensuring administrative access is tightly controlled and logged. For VPCs and subnets this translates to: no unnecessary public IPs on systems handling covered data, explicit deny-by-default routing and security rules, and the use of private endpoints or NAT for controlled outbound access.\n\nDesign patterns and CIDR planning\n\nStart with a clear CIDR plan: use a VPC sized to the number of hosts and services per environment (for small businesses a 10.0.0.0/16 is common). Split into at least three subnet types per AZ: public (e.g., 10.0.1.0/24) for load balancers/bastions, private application (e.g., 10.0.2.0/24) for app servers, and private data/management (e.g., 10.0.3.0/28) for databases and jump hosts. Keep the database subnet with a smaller mask to minimize assigned IPs and reduce accidental exposure. Tag subnets and resources to enforce policy and make audits simpler (tag keys such as Environment, Role, and CompliancePurpose).\n\nNetwork controls: route tables, NAT, endpoints, security groups, and NACLs\n\nImplement a default deny posture: route tables for private subnets should not include an Internet Gateway. Use a NAT Gateway (or NAT instance) in a public subnet to permit controlled outbound internet access from private subnets when required. Where possible use cloud-provider private endpoints (AWS VPC Endpoint to S3, Azure Private Endpoint, GCP Private Service Connect) to avoid routing sensitive traffic over the public internet. Security groups should be stateful, narrowly scoped (e.g., allow TCP 443 from load balancer SG), and use CIDR or SG references rather than wide-open 0.0.0.0/0 rules. NACLs can provide an additional stateless layer — for example, block all inbound traffic except required ports and only allow return traffic from known IP ranges — but ensure the combination of SGs and NACLs is tested to avoid accidental lockout.\n\nAccess and administrative patterns (small-business examples)\n\nFor administrative access, avoid exposing SSH/RDP to the internet. Use a hardened bastion host or managed jump service in a small public subnet with the bastion restricted to a known admin IP range (e.g., your office IP or an employee home IP). Better: use a bastion with session recording (SSM Session Manager on AWS, Azure Bastion, or Identity-Aware Proxy on GCP) so you can remove inbound ports entirely. Example AWS approach: create a bastion in 10.0.1.0/24, restrict security group to port 22 from your static IP, and allow the app subnet SG to accept SSH only from the bastion SG. Use MFA-backed IAM roles for all console/CLI access. For small businesses lacking a static IP, use VPN with client certs or client-based MFA to allow secure admin access without public keys.\n\nImplementation snippets and checklist items\n\nChecklist items you can apply immediately: 1) Create a VPC 10.0.0.0/16 and split into public/private subnets per AZ; 2) Attach separate route tables: public subnets -> IGW, private subnets -> NAT Gateway; 3) Remove public IP auto-assignment for private subnets; 4) Create VPC endpoints for storage and secrets where possible; 5) Harden security groups to \"deny by default\" and allow only necessary ports and source ranges; 6) Enable VPC Flow Logs and send to a central logging bucket or SIEM; 7) Enable provider-native configuration recording (AWS Config, Azure Policy, GCP Config Validator) to detect drift.\n\nMonitoring, logging, and compliance validation\n\nEnable network-level logs: VPC Flow Logs (AWS), NSG flow logs (Azure), or VPC Flow Logs (GCP) so you have visibility into traffic patterns and can prove to an auditor that subnets carrying covered information are not accepting unexpected inbound connections. Retain logs according to contract requirements and automate alerts for anomalies (e.g., unexpected Internet-bound traffic from a private data subnet). Implement simple automated checks: a periodic scanner that verifies no private subnet has an associated public IP range or that route tables haven’t been changed to expose private subnets.\n\nRisks of not implementing segmentation and isolation\n\nWithout these controls you increase the chance of accidental public exposure (public IPs on sensitive hosts), lateral movement after an initial compromise, and uncontrolled data exfiltration. Noncompliance with FAR 52.204-21 or CMMC expectations can lead to contract penalties, loss of federal business, and reputational damage. Practically, an exposed database on a public subnet or an app server with broad security group rules is a high-risk finding that’s easy for an attacker to exploit and straightforward for an assessor to spot.\n\nIn summary: adopt a simple, repeatable VPC/subnet architecture that enforces least privilege (private subnets, NAT for outbound, private endpoints), restrict and log administrative access, enable flow logs and config recording, and codify the design in infrastructure-as-code so it is auditable and repeatable. For small businesses these steps deliver meaningful protection aligned with FAR 52.204-21 and CMMC Level 1 practice expectations while keeping operational overhead low."
  },
  "metadata": {
    "description": "Step-by-step guidance for configuring cloud VPCs and subnets to satisfy FAR 52.204-21 and CMMC 2.0 Level 1 network protection expectations with concrete examples for small businesses.",
    "permalink": "/how-to-configure-cloud-vpcs-and-subnets-to-meet-far-52204-21-cmmc-20-level-1-control-scl1-b1xi-a-practical-how-to.json",
    "categories": [],
    "tags": []
  }
}