{
  "title": "How to Build a Practical Checklist for FAR 52.204-21 / CMMC 2.0 Level 1 - Control - AC.L1-B.1.IV to Secure Public-Facing Websites and Portals",
  "date": "2026-04-03",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-build-a-practical-checklist-for-far-52204-21-cmmc-20-level-1-control-acl1-b1iv-to-secure-public-facing-websites-and-portals.jpg",
  "content": {
    "full_html": "<p>This post gives a practical, implementable checklist to help small businesses meet the access-control expectations in FAR 52.204-21 and CMMC 2.0 Level 1 (Control AC.L1-B.1.IV) for public-facing websites and portals — with concrete configuration examples, real-world scenarios, and compliance tips you can apply in weeks, not months.</p>\n\n<h2>Understanding the requirement and scope</h2>\n<p>At a high level, FAR 52.204-21 and CMMC Level 1 require basic safeguarding of Federal Contract Information (FCI) and implementation of simple access controls for systems that process or display that information. For public-facing web assets that host areas where contract information, employee access, or client portals exist, that means enforcing authenticated access for non-public areas, preventing unauthorized access attempts, and logging access events. For small businesses, the practical focus is: unique user accounts, basic authentication protections (including MFA where possible), session controls, and protections against automated attacks and brute-force attempts.</p>\n\n<h2>Practical checklist — quick overview</h2>\n<p>Use this condensed checklist as a starting point; each item below is expanded in the sections that follow and includes technical examples you can adopt immediately:\n<ul>\n  <li>Inventory and classify public-facing endpoints that handle or could expose FCI.</li>\n  <li>Require unique accounts and enable MFA for all portal/logins.</li>\n  <li>Limit failed logon attempts and throttle authentication endpoints.</li>\n  <li>Enforce secure sessions and cookie settings (Secure, HttpOnly, SameSite).</li>\n  <li>Apply TLS (1.2+) and security headers (HSTS, CSP, X-Frame-Options).</li>\n  <li>Deploy WAF / rate limiting and bot protections.</li>\n  <li>Log authentication events and retain logs for evidence of compliance.</li>\n  <li>Document controls and perform periodic reviews and vulnerability scans.</li>\n</ul>\n</p>\n\n<h2>Authentication and account controls (implementation details)</h2>\n<p>Require unique user accounts for any portal access that can interact with FCI and enable multi-factor authentication (MFA) where feasible. For small businesses using WordPress or CMS: install a trusted plugin (e.g., Wordfence or Limit Login Attempts Reloaded) and add an MFA plugin (TOTP or WebAuthn). For cloud-hosted apps, enable AWS Cognito, Azure AD B2C, or Google Identity Platform with MFA enforcement. Example technical configs:\n<ul>\n  <li>WordPress: enable two-factor with a TOTP plugin and set lockout after 5 failed attempts.</li>\n  <li>Nginx: use auth_request with an identity provider or configure basic auth to deny after N attempts combined with fail2ban blocking.</li>\n  <li>SSO/OAuth: disable implicit grants; require authorization_code with PKCE for public clients.</li>\n</ul>\nThese controls map directly to access control expectations — they stop casual attackers and reduce risk of compromised credentials being used to access FCI.</p>\n\n<h2>Session management, cookies and transport security</h2>\n<p>Enforce secure session practices: set session timeouts for inactivity (15–30 minutes depending on risk), rotate session IDs on login, and apply cookie flags. Example headers and settings:\n<ul>\n  <li>Set-Cookie: session=abcd; Secure; HttpOnly; SameSite=Strict; Max-Age=1800</li>\n  <li>TLS: disable TLS 1.0/1.1, enable TLS 1.2+ with strong ciphers (ECDHE) and HSTS: Strict-Transport-Security: max-age=63072000; includeSubDomains; preload</li>\n  <li>Security headers: Content-Security-Policy to restrict script sources, X-Frame-Options: DENY, Referrer-Policy: no-referrer-when-downgrade</li>\n</ul>\nSmall businesses using managed platforms should confirm these settings with their hosting provider and enforce them at the CDN or load balancer where possible (e.g., CloudFront custom headers, Cloudflare rules).</p>\n\n<h2>Protecting against automated attacks and rate limiting</h2>\n<p>Public-facing auth endpoints are a top target for credential stuffing and brute-force attacks. Implement layered protections: WAF rules, rate limiting at the edge, bot mitigation, and IP reputation blocking. Examples:\n<ul>\n  <li>Cloudflare: enable \"Bot Fight Mode\" or set a rate limit like 100 req/min on /login and challenge unknown clients with CAPTCHA.</li>\n  <li>AWS WAF: create a rule to block more than N requests from same IP to /api/auth within a 5-minute window.</li>\n  <li>Fail2ban: monitor web server auth logs and add IP bans after 5 failures for 1 hour; sample regex for WordPress login failures.</li>\n</ul>\nFor small businesses, using a CDN/WAF (Cloudflare, AWS WAF, Azure Front Door) often provides the fastest and most cost-effective protection without heavy development effort.</p>\n\n<h2>Logging, monitoring, and operational practices</h2>\n<p>Log all successful and failed authentication attempts, account changes, and administrative access. Retain logs for at least 90 days to support investigations and an audit trail. Use a simple centralized collector: CloudWatch Logs + CloudTrail for AWS, Azure Monitor, or a lightweight ELK/Graylog stack. Practical steps:\n<ul>\n  <li>Record username, source IP, timestamp, user agent, and reason for failure (locked, wrong password, inactive).</li>\n  <li>Configure alerts for suspicious patterns (e.g., 10 failed attempts from multiple IPs targeting many accounts in 10 minutes).</li>\n  <li>Document policies: password requirements, MFA enrollment, account provisioning/deprovisioning process and review these quarterly.</li>\n</ul>\nThese operational controls make your technical controls auditable and demonstrate intent to protect FCI under FAR/CMMC.</p>\n\n<h2>Real-world small business scenarios and examples</h2>\n<p>Example 1 — A 12-person contracting firm uses WordPress for marketing and a separate client portal for deliverables. Quick wins: move the client portal behind a subdomain protected by Cloudflare WAF, enable MFA for all client accounts, install rate-limiting rules on /wp-login.php, and enable strict cookie flags. Example 2 — A small SaaS on AWS: use Cognito for authentication, enforce MFA, add an AWS WAF rule for login throttling, enable CloudTrail and CloudWatch alerts for anomalous sign-ins. In both examples, document the configurations and run an authenticated scan (Nikto for basic web checks, and OWASP ZAP for login flows) to validate controls.</p>\n\n<h2>Risks of not implementing these controls</h2>\n<p>Failing to apply access controls and protections on public-facing websites and portals increases the risk of credential compromise, unauthorized access to FCI, data exfiltration, and business disruption. Beyond technical harm, non-compliance with FAR 52.204-21 can lead to contract penalties, loss of federal contracts, damage to reputation, and expensive incident response and remediation. For small businesses, even a single compromise can be existential — making these low-cost, high-impact controls essential.</p>\n\n<p>Summary: implement the checklist items above starting with inventory and MFA, add session/cookie hardening and TLS, deploy WAF and rate limiting, centralize logs and document controls; validate with scans and periodic reviews. These practical steps will help your public-facing sites meet the intent of FAR 52.204-21 and CMMC Level 1 access control expectations while materially reducing your attack surface and exposure of Federal Contract Information.</p>",
    "plain_text": "This post gives a practical, implementable checklist to help small businesses meet the access-control expectations in FAR 52.204-21 and CMMC 2.0 Level 1 (Control AC.L1-B.1.IV) for public-facing websites and portals — with concrete configuration examples, real-world scenarios, and compliance tips you can apply in weeks, not months.\n\nUnderstanding the requirement and scope\nAt a high level, FAR 52.204-21 and CMMC Level 1 require basic safeguarding of Federal Contract Information (FCI) and implementation of simple access controls for systems that process or display that information. For public-facing web assets that host areas where contract information, employee access, or client portals exist, that means enforcing authenticated access for non-public areas, preventing unauthorized access attempts, and logging access events. For small businesses, the practical focus is: unique user accounts, basic authentication protections (including MFA where possible), session controls, and protections against automated attacks and brute-force attempts.\n\nPractical checklist — quick overview\nUse this condensed checklist as a starting point; each item below is expanded in the sections that follow and includes technical examples you can adopt immediately:\n\n  Inventory and classify public-facing endpoints that handle or could expose FCI.\n  Require unique accounts and enable MFA for all portal/logins.\n  Limit failed logon attempts and throttle authentication endpoints.\n  Enforce secure sessions and cookie settings (Secure, HttpOnly, SameSite).\n  Apply TLS (1.2+) and security headers (HSTS, CSP, X-Frame-Options).\n  Deploy WAF / rate limiting and bot protections.\n  Log authentication events and retain logs for evidence of compliance.\n  Document controls and perform periodic reviews and vulnerability scans.\n\n\n\nAuthentication and account controls (implementation details)\nRequire unique user accounts for any portal access that can interact with FCI and enable multi-factor authentication (MFA) where feasible. For small businesses using WordPress or CMS: install a trusted plugin (e.g., Wordfence or Limit Login Attempts Reloaded) and add an MFA plugin (TOTP or WebAuthn). For cloud-hosted apps, enable AWS Cognito, Azure AD B2C, or Google Identity Platform with MFA enforcement. Example technical configs:\n\n  WordPress: enable two-factor with a TOTP plugin and set lockout after 5 failed attempts.\n  Nginx: use auth_request with an identity provider or configure basic auth to deny after N attempts combined with fail2ban blocking.\n  SSO/OAuth: disable implicit grants; require authorization_code with PKCE for public clients.\n\nThese controls map directly to access control expectations — they stop casual attackers and reduce risk of compromised credentials being used to access FCI.\n\nSession management, cookies and transport security\nEnforce secure session practices: set session timeouts for inactivity (15–30 minutes depending on risk), rotate session IDs on login, and apply cookie flags. Example headers and settings:\n\n  Set-Cookie: session=abcd; Secure; HttpOnly; SameSite=Strict; Max-Age=1800\n  TLS: disable TLS 1.0/1.1, enable TLS 1.2+ with strong ciphers (ECDHE) and HSTS: Strict-Transport-Security: max-age=63072000; includeSubDomains; preload\n  Security headers: Content-Security-Policy to restrict script sources, X-Frame-Options: DENY, Referrer-Policy: no-referrer-when-downgrade\n\nSmall businesses using managed platforms should confirm these settings with their hosting provider and enforce them at the CDN or load balancer where possible (e.g., CloudFront custom headers, Cloudflare rules).\n\nProtecting against automated attacks and rate limiting\nPublic-facing auth endpoints are a top target for credential stuffing and brute-force attacks. Implement layered protections: WAF rules, rate limiting at the edge, bot mitigation, and IP reputation blocking. Examples:\n\n  Cloudflare: enable \"Bot Fight Mode\" or set a rate limit like 100 req/min on /login and challenge unknown clients with CAPTCHA.\n  AWS WAF: create a rule to block more than N requests from same IP to /api/auth within a 5-minute window.\n  Fail2ban: monitor web server auth logs and add IP bans after 5 failures for 1 hour; sample regex for WordPress login failures.\n\nFor small businesses, using a CDN/WAF (Cloudflare, AWS WAF, Azure Front Door) often provides the fastest and most cost-effective protection without heavy development effort.\n\nLogging, monitoring, and operational practices\nLog all successful and failed authentication attempts, account changes, and administrative access. Retain logs for at least 90 days to support investigations and an audit trail. Use a simple centralized collector: CloudWatch Logs + CloudTrail for AWS, Azure Monitor, or a lightweight ELK/Graylog stack. Practical steps:\n\n  Record username, source IP, timestamp, user agent, and reason for failure (locked, wrong password, inactive).\n  Configure alerts for suspicious patterns (e.g., 10 failed attempts from multiple IPs targeting many accounts in 10 minutes).\n  Document policies: password requirements, MFA enrollment, account provisioning/deprovisioning process and review these quarterly.\n\nThese operational controls make your technical controls auditable and demonstrate intent to protect FCI under FAR/CMMC.\n\nReal-world small business scenarios and examples\nExample 1 — A 12-person contracting firm uses WordPress for marketing and a separate client portal for deliverables. Quick wins: move the client portal behind a subdomain protected by Cloudflare WAF, enable MFA for all client accounts, install rate-limiting rules on /wp-login.php, and enable strict cookie flags. Example 2 — A small SaaS on AWS: use Cognito for authentication, enforce MFA, add an AWS WAF rule for login throttling, enable CloudTrail and CloudWatch alerts for anomalous sign-ins. In both examples, document the configurations and run an authenticated scan (Nikto for basic web checks, and OWASP ZAP for login flows) to validate controls.\n\nRisks of not implementing these controls\nFailing to apply access controls and protections on public-facing websites and portals increases the risk of credential compromise, unauthorized access to FCI, data exfiltration, and business disruption. Beyond technical harm, non-compliance with FAR 52.204-21 can lead to contract penalties, loss of federal contracts, damage to reputation, and expensive incident response and remediation. For small businesses, even a single compromise can be existential — making these low-cost, high-impact controls essential.\n\nSummary: implement the checklist items above starting with inventory and MFA, add session/cookie hardening and TLS, deploy WAF and rate limiting, centralize logs and document controls; validate with scans and periodic reviews. These practical steps will help your public-facing sites meet the intent of FAR 52.204-21 and CMMC Level 1 access control expectations while materially reducing your attack surface and exposure of Federal Contract Information."
  },
  "metadata": {
    "description": "Step-by-step checklist and technical guidance to meet FAR 52.204-21 / CMMC 2.0 Level 1 access-control expectations for public-facing websites and portals.",
    "permalink": "/how-to-build-a-practical-checklist-for-far-52204-21-cmmc-20-level-1-control-acl1-b1iv-to-secure-public-facing-websites-and-portals.json",
    "categories": [],
    "tags": []
  }
}