← Articles

April 4, 2026 · Tim Fraser, Cloud Operations Lead

AWS Security Group Audit: A Checklist for Non-DevOps Teams

If you've been handed responsibility for an AWS account and you're not sure whether your security groups are configured correctly, this checklist will get you through it. Security groups are one of the most important — and most commonly misconfigured — parts of any AWS environment.

The good news: you can audit them in under 30 minutes with no special tools. Here's a step-by-step checklist.

What are security groups?

Security groups are virtual firewalls for your AWS resources. Every EC2 instance, RDS database, and load balancer has at least one security group controlling what traffic can reach it.

Think of them as a bouncer at the door: the security group decides who gets in (inbound rules) and who gets out (outbound rules).

The audit checklist

1. Find all security groups open to the internet

This is the most critical check. Go to EC2 → Security Groups and look for any inbound rule with a source of 0.0.0.0/0 (IPv4) or ::/0 (IPv6). This means "anyone on the internet can reach this port."

Red flags: Acceptable (usually):

2. Check for overly broad port ranges

Some security groups allow ranges like 1024-65535 or even 0-65535. This is almost always a mistake — someone didn't know which specific port was needed and opened everything "temporarily."

For each security group, ask: does this resource actually need all these ports? A web server needs 80 and 443. An API server might need 8080. Almost nothing needs 0-65535.

3. Identify unused security groups

Go to EC2 → Security Groups and check the "Associated instances" column (or filter by network interfaces). Security groups with no associated resources are clutter — they make audits harder and can be accidentally attached later.

Note: don't delete the default security group in any VPC. AWS won't let you anyway, but don't try.

4. Check for security groups referencing themselves

This is a common pattern in AWS — a security group rule that says "allow traffic from this same security group." It's used for allowing instances in the same group to communicate. This is usually fine, but make sure you understand why it's there.

5. Review outbound rules

Most security groups have a default outbound rule allowing all traffic to 0.0.0.0/0. For many workloads this is fine, but for sensitive systems (databases, payment processors), consider restricting outbound traffic to only what's needed.

6. Check your RDS and ElastiCache security groups

Database security groups are often overlooked. Go to RDS → Databases and click on each database. Check its security group — it should only allow connections from your application servers, not from 0.0.0.0/0.

The same applies to ElastiCache (Redis/Memcached) clusters.

7. Look for stale IP addresses in rules

Security group rules often reference specific IP addresses — a developer's home IP, a former office, a CI/CD server that's been decommissioned. These accumulate over time and create unnecessary access.

For each IP-based rule, ask: do we still need this? Does anyone know whose IP this is?

Fixing what you find

For each issue:

The ongoing problem

The real challenge with security groups isn't the one-time audit — it's keeping them clean over time. Developers add rules during debugging and forget to remove them. New services get broad rules "for now" that become permanent.

plainfra automates this. Connect your AWS account (read-only) and ask:

> "Do I have any security groups open to the internet?"

plainfra scans every security group across every region and gives you a prioritised list — critical exposures first, informational findings last.

But the real value is the weekly health report. Every Monday, plainfra checks your security groups automatically and flags any new exposures. That "temporary" SSH rule a developer added on Friday? It shows up in Monday's report before it becomes a permanent vulnerability.

Keeping plainfra connected means someone is always checking, not just when you remember to. When an auditor asks "are your security groups locked down?" — you already have the answer.

Try plainfra free → 50K tokens, 7 days, no charge. Or see the interactive demo → to watch it audit security groups in a live AWS environment.