Check ID:
Provider: OpenStack
Service:
Severity: HIGH
Categories:
Resource type:
networking_security_group_allows_ssh_from_internetProvider: OpenStack
Service:
networkingSeverity: HIGH
Categories:
internet-exposed, trust-boundariesResource type:
OS::Neutron::SecurityGroupWhat this check verifies
OpenStack security groups are evaluated to verify that SSH (port 22) is not exposed to the Internet (0.0.0.0/0 or ::/0). Security groups act as virtual firewalls controlling instance traffic. Unrestricted SSH access violates least privilege and creates significant attack surface. Best practices recommend restricting SSH to known IP ranges, bastion hosts, or VPN gateways.Risk
Unrestricted SSH exposes instances to brute-force attacks, password testing, and SSH vulnerability exploitation (CVE-2023-38408, CVE-2021-41617) for initial access. Compromised instances enable persistence, privilege escalation, lateral movement, crypto mining, DDoS botnets, data exfiltration, and ransomware deployment. SSH exposure bypasses defense-in-depth and enables direct production access.Recommendation
Restrict SSH access to known IP ranges using bastion hosts or VPN gateways instead of allowing 0.0.0.0/0. Implement multi-factor authentication, disable password authentication, and use SSH certificates for centralized key management. Monitor SSH logs for failed login attempts and enforce fail2ban or similar IP blocking mechanisms.Remediation
- Terraform
- Dashboard steps
References
- https://docs.openstack.org/neutron/latest/admin/intro-os-networking.html
- https://docs.openstack.org/security-guide/networking/architecture.html
- https://docs.openstack.org/api-ref/network/v2/
- https://docs.openstack.org/neutron/latest/admin/config-rbac.html
Where this check fires
This check runs on every scheduled scan against your OpenStack account. Findings appear at Cloud Security → Findings filterable byCheck ID = networking_security_group_allows_ssh_from_internet. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to OpenStack checks