Network Security — 7-Layer Exposure Analysis

Onam analyzes your cloud network topology across seven layers — from VPC isolation at the top to flow-log monitoring at the bottom — to identify exposure paths, misconfigured firewall rules, and unprotected internet-facing resources. The output is a prioritized list of effectively exposed resources, not a static dump of open security-group ports: a port that is open in a security group but unreachable through the other layers is a low-priority finding, while a port reachable through every layer is a critical one.

This page explains the 7-layer model, how effective-exposure analysis works gate by gate, what each layer checks across all supported clouds, and which findings to fix first.

7-layer network security analysis
7-layer network security analysis
The network security view in the Onam console (demo account)
The network security view in the Onam console (demo account)

The 7-Layer Analysis Model

Every modern cloud has 5–10 overlapping network controls — VPC peering, transit gateways, route tables, NACLs, security groups, load balancers, WAFs, flow logs. A single layer in isolation tells you almost nothing about real risk, so the Network Security engine evaluates all seven layers top-to-bottom on every scan. Each layer asks a different question; together they answer the only question that matters: can the internet actually reach this resource, and if so, with what protection?

LayerNameQuestion it answers
L1Network IsolationAre environments (prod, dev, shared services) properly segmented at the VPC and account level?
L2Network ReachabilityWhat can reach what — across route tables, NAT, and public/private subnet markings?
L3Network ACLsDo subnet-level stateless rules permit or block the traffic?
L4Security GroupsDo instance-level stateful rules permit traffic on the requested port?
L5Load Balancer SecurityIf an LB sits in front, does it terminate TLS correctly and only on accepted versions?
L6WAF ProtectionIs application-layer filtering attached to internet-facing resources?
L7Network MonitoringIs there log visibility into the traffic that did pass through?

Why seven and not three? Older CSPM tools only check L4 (security groups). That misses the most common misconfiguration patterns — over-broad transit gateways (L1), orphaned route tables (L2), default NACLs (L3), TLS 1.0 still accepted on a public ALB (L5), missing WAF on a CloudFront distribution (L6), and disabled VPC Flow Logs (L7). The network checks are part of Onam's 10,000+ rule registry and are framework-mapped to CIS, NIST, PCI-DSS, and SOC 2.

Effective Exposure

Onam's signature network capability is effective-exposure analysis. Instead of treating "port open in security group" as a finding, the engine traces the full path the internet would have to take to reach the resource — and only flags the resource as exposed if every gate on the path permits the traffic.

Effective exposure — all gates between the internet and your resource must permit traffic for the resource to be effectively exposed
Effective exposure — all gates between the internet and your resource must permit traffic for the resource to be effectively exposed

Reading the chain left to right:

  1. Internet — the source of every untrusted attacker; the starting state of the analysis.
  2. Gate 1 — Internet Gateway — does the VPC even have an IGW attached? No IGW, no path. (For Azure this is a public IP / Front Door check; for GCP an external IP / Cloud NAT check.)
  3. Gate 2 — Route Table — is there a route to 0.0.0.0/0 pointing at the IGW from the relevant subnet? Without it, traffic cannot enter via the IGW.
  4. Gate 3 — Subnet Type — is the subnet public (associated with a route table that has the IGW route)? Resources in private subnets are not directly reachable even if their security group allows it.
  5. Gate 4 — Network ACL — does the subnet's NACL permit inbound on the requested port? NACLs are stateless and apply at the subnet boundary.
  6. Gate 5 — Security Group — does the instance's SG inbound rule permit traffic from 0.0.0.0/0 on the port? This is what most tools check; Onam checks it last.

If all gates permit the path, the resource is effectively exposed and the finding is Critical. If any gate blocks the path, the finding is recorded at low priority — the policy text is still suboptimal, but the actual risk is contained.

A typical large AWS account has hundreds of security groups with 0.0.0.0/0 rules — most sit on instances in private subnets with no IGW path. Old tools alert on all of them. Effective-exposure analysis ranks only the truly reachable ones as Critical, which is why alert volume drops sharply in the first scan.

Each effectively-exposed finding shows the full path with the specific permit at each gate, so you see exactly what to change to break the chain — and you spend remediation time on the small fraction of open-port rules that attackers can actually use.

Network security platform view — 7-layer topology analysis, exposure paths, and firewall findings
Network security platform view — 7-layer topology analysis, exposure paths, and firewall findings

Layer-by-Layer Coverage

Every scan evaluates all seven layers for every cloud account in scope.

Layer 1 — Network Isolation

Most lateral-movement attack paths trace back to a Layer 1 gap.

CheckWhat Onam evaluates
VPC / VCN peer connectivityAre production and dev VPCs peered without restrictive routing?
Transit Gateway routesDoes the TGW route table allow unrestricted cross-account traffic?
VPC sharingAre shared VPCs granting broader access than the consumer needs?
Default VPC usageIs the default VPC (no security controls by default) in use for production resources?
PrivateLink vs public endpointsAre cloud services accessed via PrivateLink or via the public service endpoint?

Layer 2 — Network Reachability

L2 is where "I thought this was private" findings live.

CheckWhat Onam evaluates
Public subnet identificationSubnets with both an IGW route AND public-IP allocation = effective internet exposure
NAT Gateway placementIs NAT outbound-only (correct) or also providing inbound paths (misconfigured)?
Route table anomaliesRoutes to unexpected destinations — 0.0.0.0/0 in subnets you intended to be private
VPC EndpointsAre S3 / DynamoDB accessed via VPC Endpoints (private) or via the public service endpoint?

Layer 3 — Network ACLs

NACLs and security groups don't always agree — when they conflict, the NACL wins for matching traffic.

CheckWhat Onam evaluates
Inbound rules allowing all traffic0.0.0.0/0 allow on any port in NACL inbound rules
Outbound unrestrictedOutbound 0.0.0.0/0 allows data exfiltration even if inbound is blocked
Default NACL in useDefault NACLs allow all traffic — production should use custom NACLs with explicit rules
Conflicting NACL / SG rulesStateless NACLs and stateful SGs misaligned cause both false-positive and false-negative findings if treated separately

Layer 4 — Security Groups

The most-cited layer in cloud-breach post-mortems. Findings split into two severity bands.

Security group findings — Critical (open to 0.0.0.0/0) and High (overly broad rules)
Security group findings — Critical (open to 0.0.0.0/0) and High (overly broad rules)

Critical findings — inbound open to 0.0.0.0/0:

FindingWhy it's CriticalRecommended fix
SSH — port 22Direct shell access to Linux instances; brute-force targetUse AWS Session Manager / GCP IAP / Azure Bastion, or a bastion host with VPN-only ingress
RDP — port 3389Windows remote desktop; BlueKeep and ransomware targetRestrict to VPN CIDRs only or use a jump host
Database ports (3306 MySQL · 5432 Postgres · 1433 MSSQL · 27017 Mongo)Direct data-exfiltration pathDatabases should never be internet-reachable — private subnets + VPC Endpoint patterns
Cache / KV stores (6379 Redis · 11211 Memcached)Default no-auth; session theft and RCE riskRestrict to application security groups only
Kubernetes (6443 API · 10250 kubelet)Cluster takeoverUse private clusters or authorized-networks lists

High findings — overly broad or orphaned rules:

FindingWhy it's a problemRecommended fix
Admin / management ports (8080 · 8443 · 9090 open to large CIDR)Often dashboard or metric endpoints with weak authRestrict to specific source IPs / SGs
All TCP / UDP allowed inboundEquivalent to "no firewall" for that source CIDRSpecify ports explicitly; remove the catch-all rule
Orphaned security groupRules but no attached resources — risk of future accidental attachment with stale rulesDelete or document the intended purpose

Layer 5 — Load Balancer Security

CheckWhat Onam evaluates
HTTP listener on internet-facing LBMissing HTTPS redirect — plaintext on a public endpoint
TLS versionTLS 1.0 / 1.1 still accepted — only TLS 1.2+ should be allowed, TLS 1.3 preferred
SSL policyOutdated policies with weak cipher suites (RC4, 3DES)
Access logging disabledNo request-level audit trail
Health check over HTTPPlaintext health checks on an HTTPS application leak app structure

Layer 6 — WAF Protection

Network firewalls block by IP and port; WAFs block by request content (SQL injection, XSS, OWASP Top 10).

CheckWhat Onam evaluates
Internet-facing ALB without WAFApplication Load Balancer with no WAF attached
CloudFront without WAFCDN distribution serving app traffic without WAF
API Gateway without WAFREST / HTTP API exposed without WAF
WAF rule setsOWASP Core Rule Set missing, rate limiting missing
WAF in COUNT modeWAF deployed in detection-only mode, not blocking

Layer 7 — Network Monitoring

Without flow logs you can't investigate a breach after the fact.

CheckWhat Onam evaluates
VPC Flow Logs disabledNo traffic visibility for the VPC — investigation impossible
Flow logs not centralizedLogs stuck in CloudWatch instead of shipped to SIEM / S3 / data lake
DNS query logging disabledResolver query logging off — DNS-based exfiltration invisible
WAF logging disabledBlocking decisions not logged — rules can't be tuned
Network Firewall loggingAWS Network Firewall log settings missing or partial

Supported Cloud Providers

The 7-layer model applies across every supported cloud, with CSP-specific service mappings (Azure NSGs play the role of AWS security groups; GCP firewall rules play both the NACL and SG roles). Kubernetes cluster networking (NetworkPolicies, exposed Services) is covered by Container Security.

ProviderL1L2L3L4L5L6L7
AWSFullFullFullFullFullFullFull
AzureFullFullFullFullFullFullFull
GCPFullFullFullFullFullFullFull
OCIFullFullFullFullFullPartialFull
Alibaba CloudFullFullFullFullFullFullPartial
IBM CloudFullFullFullFullFullPartialPartial

Partial means key controls are covered but not 100% of the layer's scope: OCI's native WAF service is newer and has fewer rule sets to audit, and IBM's L7 flow-log integration is being migrated as IBM Cloud retires its older monitoring service.

Key Findings to Prioritize

The ten most-encountered network findings, with default severities. Re-grade per finding type in Settings → Network Security → Severity Policy.

FindingSeverityLayerWhy it matters
SSH open to internet on production instanceCriticalL4Brute-force target with full shell on success
Database port open to 0.0.0.0/0CriticalL4Direct data-exfiltration path
Internet-facing application with no WAFHighL6OWASP Top 10 unblocked
VPC Flow Logs disabledHighL7No forensic capability after a breach
HTTP-only load balancer (no TLS)HighL5Plaintext credentials and sessions
TLS 1.0 / 1.1 accepted on public endpointHighL5Known-broken cipher suites
Default VPC in use with resourcesMediumL1No customized network controls
Default NACL in use (allows all)MediumL3Subnet boundary not enforced
Outbound unrestricted in NACLMediumL3Data-exfiltration path open
Orphaned security groupLowL4Latent risk of future accidental attachment

Every finding includes the affected resource, the full effective-exposure path where applicable, the suggested fix, and the framework controls it satisfies.

API

Network Security endpoints live under the unified platform API (/api/v1, behind the BFF gateway). All endpoints require an authenticated session and are scoped to your tenant.

# List network security findings
GET /api/v1/network-security/findings?severity=CRITICAL

# Get findings for a specific VPC
GET /api/v1/network-security/findings?resource_uid=vpc-12345678

# Get the effective-exposure path for a specific resource
GET /api/v1/network-security/exposure-path?resource_uid={uid}

Full request and response schemas are in the API reference. Webhook delivery on new Critical network findings can be configured under Settings → Notifications.

FAQ

How does effective-exposure analysis differ from a port scan? A port scan sees only what's reachable from where the scanner sits. Effective-exposure analysis evaluates the configuration of every network gate to determine reachability without sending any traffic. Onam never scans your environment from outside — analysis is purely configuration-based, agentless, and read-only.

Can a finding be both Critical and not actually exploitable? No — that's exactly what effective-exposure analysis prevents. A security-group rule open to the internet on a private-subnet instance with no IGW route is graded low priority, not Critical. Severity reflects actual reachability.

Does Onam check IPv6 paths? Yes. IPv6 routes, IPv6 security-group rules, and IPv6 NACL entries are evaluated alongside IPv4. A common finding is "IPv4 properly restricted but IPv6 open" — Onam flags both.

What about AWS Network Firewall and Azure Firewall? Supported on AWS and Azure. Onam evaluates rule groups, stateful vs stateless policy, log delivery, and rule-order anomalies (deny rules placed below allow rules that would never be reached).

Can I export the topology for offline analysis? Yes. The full topology graph (VPCs, subnets, route tables, peerings, transit gateways, security groups, load balancers, WAFs) exports as JSON or GraphML.

Next steps

  • Attack Path — see how network exposure combines with IAM and data findings into full attack chains
  • Container Security — NetworkPolicy coverage and exposed Kubernetes Services
  • API reference — query network findings programmatically
  • Book a demo — see effective-exposure analysis on your own topology