{
  "title": "How to Map, Inventory, and Secure Publicly Accessible Information Systems to Achieve NIST SP 800-171 REV.2 / CMMC 2.0 Level 2 - Control - AC.L2-3.1.22 Compliance",
  "date": "2026-04-23",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-map-inventory-and-secure-publicly-accessible-information-systems-to-achieve-nist-sp-800-171-rev2-cmmc-20-level-2-control-acl2-3122-compliance.jpg",
  "content": {
    "full_html": "<p>Mapping, inventorying, and securing publicly accessible information systems is a concrete, testable requirement under NIST SP 800-171 Rev.2 and CMMC 2.0 Level 2 (control AC.L2-3.1.22); this post gives a practical, implementation-focused playbook for small businesses and subcontractors to identify exposed assets, bring them into inventory, apply controls, and produce evidence for an assessor.</p>\n\n<h2>Understanding the requirement and why it matters</h2>\n<p>AC.L2-3.1.22 requires organizations to identify information systems, components, and services that are accessible from external networks and ensure they are inventoried and secured according to policy. In practice this means you must be able to demonstrate (1) discovery of all externally reachable assets, (2) an authoritative inventory (CMDB or equivalent) mapping those assets to owners and business functions, and (3) applied technical and procedural controls that reduce exposure (network segmentation, access controls, monitoring, hardening, and documented risk acceptance where applicable). Failure to do so risks leakage of CUI, unauthorized access, contract violations, and material impact to business continuity and reputation.</p>\n\n<h2>Step 1 — Map and discover all publicly accessible systems</h2>\n<p>Start with multiple discovery techniques to avoid blind spots: DNS and zone transfers (dig, host), passive indexing (Shodan, Censys), active scanning (nmap, masscan), and cloud provider APIs. Example commands: aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,PublicIpAddress,Tags]' for AWS, az network public-ip list --output table for Azure, or gcloud compute instances list --format='table(name,EXTERNAL_IP)' for GCP. Add web-app specific discovery with OWASP ZAP or Burp for UIs, and scan for open S3 buckets or Azure Blob containers (aws s3api get-public-access-block, az storage container list --public-access). Combine these feeds into a single inventory source (CSV/CMDB) capturing FQDN, IP, service, owner, environment, and last-scan timestamp.</p>\n\n<h3>Practical discovery tips</h3>\n<p>Automate weekly external scans and ingest results into your CMDB or a spreadsheet for very small teams. Use DNS wildcard checks, certificate transparency logs (crt.sh) to find issued certs for your domains, and monitor third-party registrars for misconfigured subdomains. For SaaS and CDN usages, record endpoints (CloudFront, Fastly, Akamai) and associated origin configurations to ensure origin rules don't leak private content.</p>\n\n<h2>Step 2 — Inventory, classify, and assign ownership</h2>\n<p>Once discovered, classify each asset: Public Web UI, API endpoint, management interface (SSH/RDP), storage endpoint (S3/Blob), IoT device, or third-party hosted application. For each entry capture: system name, business owner, technical owner, CUI processing status, risk level, authentication methods, and compensating controls. Small-business example: a subcontractor with a public demo server should tag that host as \"demo - no CUI\" and restrict production workloads to separate subnets and VPCs. Evidence for assessors: exported CMDB report, owner attestations, and a screenshot of the discovered asset in your scanning tool with timestamps.</p>\n\n<h3>Secure configuration and hardening — concrete actions</h3>\n<p>For each publicly accessible system apply a baseline: remove default credentials; enforce MFA on administrative access; disable direct management access from the Internet (use bastion hosts or VPN); enforce TLS 1.2+ with strong ciphers and HSTS; apply secure HTTP headers (CSP, X-Frame-Options); and enable rate-limiting and WAF rules. For cloud storage, ensure S3 buckets/Blob containers are private by default and use bucket policies or SAS tokens to grant least privilege. Example quick fixes: aws s3api put-public-access-block --bucket my-bucket --public-access-block-configuration BlockPublicAcls=true,BlockPublicPolicy=true; and for EC2 restrict Security Group SSH to management office IPs or remove port 22 from 0.0.0.0/0.</p>\n\n<h2>Monitoring, detection, remediation, and evidence</h2>\n<p>Implement centralized logging (CloudTrail, Azure Monitor, GCP Audit Logs) and enable VPC flow logs or NSG flow logs. Forward logs to a SIEM or simpler log store (Elastic, Splunk, or even an S3 bucket + Athena for small shops). Use IDS/IPS (Suricata/Snort or commercial EDR) and WAF (AWS WAF, Cloudflare, ModSecurity) to detect and block abuse. Tie discovery findings into a vulnerability management process: assign CVSS-based priority, open a ticket (Jira/Trello), and track remediation with timestamps. For auditors, provide scan reports, change tickets, patch/rollback proofs, WAF rule snapshots, and log extracts showing blocked attempts.</p>\n\n<h2>Small business real-world scenario and prioritization</h2>\n<p>Example: a 15-person subcontractor finds three public assets—marketing WordPress site, a demo web API, and an admin RDP host accidentally open. Prioritize the admin RDP (high risk) by closing RDP to the Internet immediately and configuring VPN+bastion; patch and enable MFA. Harden the demo API or move it behind authentication/ACLs if it processes test CUI. For the marketing site, ensure no CUI is served, harden CMS, enable automatic updates, add WAF, and isolate it in a separate VPC/subnet so an exploit cannot reach internal services. Document each fix and incorporate them into your POA&M for items you cannot remediate immediately.</p>\n\n<h2>Risks of not implementing AC.L2-3.1.22 and compliance tips</h2>\n<p>Not mapping and securing publicly accessible systems leaves you vulnerable to credential stuffing, data exfiltration, ransomware, and direct CUI exposure—risks that can result in contract loss, remediation costs, and regulatory consequences. Compliance tips: 1) treat inventory as a living document and automate updates, 2) enforce cloud resource tagging and least privilege IAM, 3) maintain a short list of CRITICAL assets to monitor continuously, 4) keep evidence organized (exportable reports, screenshots, signed owner emails), and 5) include these activities in your System Security Plan (SSP) and POA&M so assessors see process and progress.</p>\n\n<p>Summary: Meeting AC.L2-3.1.22 requires a repeatable, documented process: discover externally reachable assets, ingest them into an authoritative inventory with owners and CUI status, apply hardening and access controls, monitor and remediate vulnerabilities, and produce clear evidence (scan reports, logs, tickets, and policy artifacts). For small businesses, focus on automation where possible, prioritize high-risk public endpoints, and maintain demonstrable records that show you are continuously managing your external attack surface in alignment with NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2 expectations.</p>",
    "plain_text": "Mapping, inventorying, and securing publicly accessible information systems is a concrete, testable requirement under NIST SP 800-171 Rev.2 and CMMC 2.0 Level 2 (control AC.L2-3.1.22); this post gives a practical, implementation-focused playbook for small businesses and subcontractors to identify exposed assets, bring them into inventory, apply controls, and produce evidence for an assessor.\n\nUnderstanding the requirement and why it matters\nAC.L2-3.1.22 requires organizations to identify information systems, components, and services that are accessible from external networks and ensure they are inventoried and secured according to policy. In practice this means you must be able to demonstrate (1) discovery of all externally reachable assets, (2) an authoritative inventory (CMDB or equivalent) mapping those assets to owners and business functions, and (3) applied technical and procedural controls that reduce exposure (network segmentation, access controls, monitoring, hardening, and documented risk acceptance where applicable). Failure to do so risks leakage of CUI, unauthorized access, contract violations, and material impact to business continuity and reputation.\n\nStep 1 — Map and discover all publicly accessible systems\nStart with multiple discovery techniques to avoid blind spots: DNS and zone transfers (dig, host), passive indexing (Shodan, Censys), active scanning (nmap, masscan), and cloud provider APIs. Example commands: aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,PublicIpAddress,Tags]' for AWS, az network public-ip list --output table for Azure, or gcloud compute instances list --format='table(name,EXTERNAL_IP)' for GCP. Add web-app specific discovery with OWASP ZAP or Burp for UIs, and scan for open S3 buckets or Azure Blob containers (aws s3api get-public-access-block, az storage container list --public-access). Combine these feeds into a single inventory source (CSV/CMDB) capturing FQDN, IP, service, owner, environment, and last-scan timestamp.\n\nPractical discovery tips\nAutomate weekly external scans and ingest results into your CMDB or a spreadsheet for very small teams. Use DNS wildcard checks, certificate transparency logs (crt.sh) to find issued certs for your domains, and monitor third-party registrars for misconfigured subdomains. For SaaS and CDN usages, record endpoints (CloudFront, Fastly, Akamai) and associated origin configurations to ensure origin rules don't leak private content.\n\nStep 2 — Inventory, classify, and assign ownership\nOnce discovered, classify each asset: Public Web UI, API endpoint, management interface (SSH/RDP), storage endpoint (S3/Blob), IoT device, or third-party hosted application. For each entry capture: system name, business owner, technical owner, CUI processing status, risk level, authentication methods, and compensating controls. Small-business example: a subcontractor with a public demo server should tag that host as \"demo - no CUI\" and restrict production workloads to separate subnets and VPCs. Evidence for assessors: exported CMDB report, owner attestations, and a screenshot of the discovered asset in your scanning tool with timestamps.\n\nSecure configuration and hardening — concrete actions\nFor each publicly accessible system apply a baseline: remove default credentials; enforce MFA on administrative access; disable direct management access from the Internet (use bastion hosts or VPN); enforce TLS 1.2+ with strong ciphers and HSTS; apply secure HTTP headers (CSP, X-Frame-Options); and enable rate-limiting and WAF rules. For cloud storage, ensure S3 buckets/Blob containers are private by default and use bucket policies or SAS tokens to grant least privilege. Example quick fixes: aws s3api put-public-access-block --bucket my-bucket --public-access-block-configuration BlockPublicAcls=true,BlockPublicPolicy=true; and for EC2 restrict Security Group SSH to management office IPs or remove port 22 from 0.0.0.0/0.\n\nMonitoring, detection, remediation, and evidence\nImplement centralized logging (CloudTrail, Azure Monitor, GCP Audit Logs) and enable VPC flow logs or NSG flow logs. Forward logs to a SIEM or simpler log store (Elastic, Splunk, or even an S3 bucket + Athena for small shops). Use IDS/IPS (Suricata/Snort or commercial EDR) and WAF (AWS WAF, Cloudflare, ModSecurity) to detect and block abuse. Tie discovery findings into a vulnerability management process: assign CVSS-based priority, open a ticket (Jira/Trello), and track remediation with timestamps. For auditors, provide scan reports, change tickets, patch/rollback proofs, WAF rule snapshots, and log extracts showing blocked attempts.\n\nSmall business real-world scenario and prioritization\nExample: a 15-person subcontractor finds three public assets—marketing WordPress site, a demo web API, and an admin RDP host accidentally open. Prioritize the admin RDP (high risk) by closing RDP to the Internet immediately and configuring VPN+bastion; patch and enable MFA. Harden the demo API or move it behind authentication/ACLs if it processes test CUI. For the marketing site, ensure no CUI is served, harden CMS, enable automatic updates, add WAF, and isolate it in a separate VPC/subnet so an exploit cannot reach internal services. Document each fix and incorporate them into your POA&M for items you cannot remediate immediately.\n\nRisks of not implementing AC.L2-3.1.22 and compliance tips\nNot mapping and securing publicly accessible systems leaves you vulnerable to credential stuffing, data exfiltration, ransomware, and direct CUI exposure—risks that can result in contract loss, remediation costs, and regulatory consequences. Compliance tips: 1) treat inventory as a living document and automate updates, 2) enforce cloud resource tagging and least privilege IAM, 3) maintain a short list of CRITICAL assets to monitor continuously, 4) keep evidence organized (exportable reports, screenshots, signed owner emails), and 5) include these activities in your System Security Plan (SSP) and POA&M so assessors see process and progress.\n\nSummary: Meeting AC.L2-3.1.22 requires a repeatable, documented process: discover externally reachable assets, ingest them into an authoritative inventory with owners and CUI status, apply hardening and access controls, monitor and remediate vulnerabilities, and produce clear evidence (scan reports, logs, tickets, and policy artifacts). For small businesses, focus on automation where possible, prioritize high-risk public endpoints, and maintain demonstrable records that show you are continuously managing your external attack surface in alignment with NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2 expectations."
  },
  "metadata": {
    "description": "Practical step-by-step guidance to discover, inventory, and secure all publicly accessible information systems to meet NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2 (AC.L2-3.1.22) requirements.",
    "permalink": "/how-to-map-inventory-and-secure-publicly-accessible-information-systems-to-achieve-nist-sp-800-171-rev2-cmmc-20-level-2-control-acl2-3122-compliance.json",
    "categories": [],
    "tags": []
  }
}