Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Security Groups vs NACLs Decision
📖 Scenario: You are setting up network security for a small web application hosted on AWS. You need to control which traffic can reach your servers and which traffic can leave your network.Two common AWS tools for this are Security Groups and Network Access Control Lists (NACLs). You will create simple configurations to understand how each works.
🎯 Goal: Build basic AWS configurations for a Security Group and a Network ACL to control inbound and outbound traffic for your web servers.
📋 What You'll Learn
Create a Security Group named web-sg that allows inbound HTTP traffic on port 80 from anywhere
Create a Network ACL named web-nacl that allows inbound HTTP traffic on port 80 and denies all other inbound traffic
Add outbound rules to both Security Group and Network ACL to allow all outbound traffic
Use exact resource names and rule specifications as described
💡 Why This Matters
🌍 Real World
In real AWS environments, Security Groups and Network ACLs work together to protect resources. Security Groups act like firewalls attached to instances, while Network ACLs control traffic at the subnet level.
💼 Career
Understanding how to configure Security Groups and Network ACLs is essential for cloud security roles, network engineering, and AWS architecture positions.
Progress0 / 4 steps
1
Create Security Group with inbound HTTP rule
Create a Security Group named web-sg with an inbound rule allowing TCP traffic on port 80 from 0.0.0.0/0.
AWS
Hint
Use resource "aws_security_group" "web_sg" and define an ingress block with port 80 and protocol TCP.
2
Add outbound rule to Security Group
Add an outbound rule to the web-sg Security Group that allows all outbound traffic (all ports, all protocols) to anywhere.
AWS
Hint
Add an egress block with protocol = "-1" and ports 0 to 0 to allow all outbound traffic.
3
Create Network ACL with inbound HTTP allow and deny all else
Create a Network ACL named web-nacl with an inbound rule that allows TCP traffic on port 80 from 0.0.0.0/0 and a rule that denies all other inbound traffic.
AWS
Hint
Use resource "aws_network_acl" "web_nacl" with two ingress blocks: one to allow port 80 TCP, one to deny all.
Use protocol 6 for TCP and -1 for all protocols.
4
Add outbound allow rule to Network ACL
Add an outbound rule to the web-nacl Network ACL that allows all outbound traffic (all ports, all protocols) to 0.0.0.0/0.
AWS
Hint
Add an egress block with rule_action = "allow", protocol = "-1", and ports 0 to 0 to allow all outbound traffic.
Practice
(1/5)
1. Which statement best describes the main difference between AWS Security Groups and Network ACLs (NACLs)?
easy
A. Security Groups control subnet-level traffic; NACLs control instance-level traffic.
B. Security Groups are stateful and control instance-level traffic; NACLs are stateless and control subnet-level traffic.
C. Both Security Groups and NACLs are stateful and control instance-level traffic.
D. NACLs are stateful and control instance-level traffic; Security Groups are stateless and control subnet-level traffic.
Solution
Step 1: Understand Security Groups behavior
Security Groups are stateful, meaning they remember allowed connections and automatically allow return traffic. They work at the instance level.
Step 2: Understand NACLs behavior
NACLs are stateless, so they do not remember previous traffic and require explicit rules for both inbound and outbound traffic. They apply at the subnet level.
Final Answer:
Security Groups are stateful and control instance-level traffic; NACLs are stateless and control subnet-level traffic. -> Option B
2. Which of the following is the correct way to allow inbound HTTP traffic on port 80 using a Security Group rule in AWS?
easy
A. Allow outbound TCP traffic on port 80 from 0.0.0.0/0
B. Allow inbound UDP traffic on port 80 from 0.0.0.0/0
C. Allow inbound TCP traffic on port 80 from 0.0.0.0/0
D. Allow inbound TCP traffic on port 22 from 0.0.0.0/0
Solution
Step 1: Identify correct protocol and port for HTTP
HTTP uses TCP protocol on port 80, so the rule must allow inbound TCP traffic on port 80.
Step 2: Confirm direction and source
Inbound traffic must be allowed from any IP (0.0.0.0/0) to accept public HTTP requests.
Final Answer:
Allow inbound TCP traffic on port 80 from 0.0.0.0/0 -> Option C
Quick Check:
HTTP = TCP port 80 inbound [OK]
Hint: HTTP uses TCP port 80 inbound, not UDP or outbound [OK]
Common Mistakes:
Allowing UDP instead of TCP
Setting outbound instead of inbound
Using wrong port like 22 (SSH)
3. You have a subnet with a NACL that allows inbound traffic on port 443 but denies all outbound traffic. A Security Group attached to an instance in this subnet allows inbound and outbound HTTPS traffic on port 443. What will happen when the instance tries to respond to an HTTPS request?
medium
A. The response will be blocked because the NACL denies outbound traffic.
B. The response will be allowed because Security Groups are stateful.
C. The response will be allowed because NACLs override Security Groups.
D. The response will be blocked because Security Groups deny outbound traffic.
Solution
Step 1: Analyze NACL outbound rules
The NACL denies all outbound traffic, so no outbound packets can leave the subnet regardless of Security Group settings.
Step 2: Analyze Security Group statefulness
Security Groups are stateful and allow return traffic, but they cannot override the stateless NACL's explicit deny on outbound traffic.
Final Answer:
The response will be blocked because the NACL denies outbound traffic. -> Option A
Quick Check:
NACL deny outbound blocks response despite Security Group [OK]
Hint: NACL deny rules always block, even if Security Group allows [OK]
Common Mistakes:
Assuming Security Groups override NACLs
Ignoring NACL outbound deny effect
Confusing stateful and stateless behavior
4. A developer configures a NACL to allow inbound SSH (port 22) traffic but forgets to add an outbound rule to allow return traffic. The Security Group allows inbound and outbound SSH traffic. What issue will occur when trying to SSH into an instance in this subnet?
medium
A. SSH connection will fail because NACL outbound traffic is blocked.
B. SSH connection will succeed because Security Groups allow traffic.
C. SSH connection will fail because Security Groups block inbound traffic.
D. SSH connection will succeed because NACLs are stateful.
Solution
Step 1: Check NACL outbound rules
NACLs are stateless, so return traffic must be explicitly allowed. Missing outbound rule blocks return SSH packets.
Step 2: Check Security Group rules
Security Groups allow inbound and outbound SSH, but cannot override NACL blocking outbound return traffic.
Final Answer:
SSH connection will fail because NACL outbound traffic is blocked. -> Option A
Quick Check:
NACL stateless requires outbound allow for return traffic [OK]
Hint: NACLs need both inbound and outbound rules for two-way traffic [OK]
Common Mistakes:
Assuming Security Groups fix NACL outbound block
Forgetting NACLs are stateless
Thinking inbound allow is enough
5. You want to secure a multi-tier web application in AWS. The web servers are in a public subnet, and the database servers are in a private subnet. Which combination of Security Groups and NACLs is the best practice to control traffic securely?
hard
A. Use NACLs to allow web traffic to web servers and database traffic only from web servers; use Security Groups to block all traffic.
B. Use NACLs to allow all traffic between web and database subnets; use Security Groups to block all traffic.
C. Use Security Groups to allow all traffic between subnets; use NACLs to allow all inbound and outbound traffic.
D. Use Security Groups to allow web traffic to web servers and database traffic only from web servers; use NACLs to block all inbound traffic except HTTP/HTTPS on the public subnet.
Solution
Step 1: Use Security Groups for instance-level control
Security Groups should allow web servers to receive HTTP/HTTPS and allow database servers to accept traffic only from web servers for tight control.
Step 2: Use NACLs for subnet-level filtering
NACLs should block unwanted inbound traffic on the public subnet except HTTP/HTTPS to reduce exposure at the subnet level.
Final Answer:
Use Security Groups to allow web traffic to web servers and database traffic only from web servers; use NACLs to block all inbound traffic except HTTP/HTTPS on the public subnet. -> Option D
Quick Check:
Security Groups for instances, NACLs for subnet filtering [OK]
Hint: Security Groups for instances, NACLs for subnet-wide rules [OK]
Common Mistakes:
Using NACLs to allow all traffic defeats subnet security
Blocking all traffic with Security Groups breaks communication