Security Groups vs NACLs
AWS Networking (ANS-C01 track) AWS console — free tier (GUI + CLI)
مقصدObjectiveObjective
سیکیورٹی گروپس (stateful) اور نیٹ ورک ACLs (stateless) کے فرق کو سمجھ کر دونوں کے رولز لگانا۔Security Groups (stateful) aur Network ACLs (stateless) ke farq ko samajh kar dono ke rules lagana.Understand the difference between Security Groups (stateful) and Network ACLs (stateless) and configure rules for both.
آسان مثالSimple AnalogySimple Analogy
سیکیورٹی گروپ ہر انسٹنس کے دروازے پر کھڑا سمارٹ گارڈ ہے — جو اندر جانے دے اسے واپس آنے بھی دیتا ہے۔ NACL پوری منزل (سب نیٹ) کا سخت چیک پوسٹ ہے — آنے اور جانے دونوں کے لیے الگ الگ اجازت چاہیے۔Security Group har instance ke darwazay par khara smart guard hai — jo andar janay de usay wapas aanay bhi deta hai. NACL poori manzil (subnet) ka sakht check post hai — aanay aur janay dono ke liye alag alag ijazat chahiye.A Security Group is a smart guard at each instance's door — whatever it lets in, it lets back out. A NACL is a strict checkpoint for the whole floor (subnet) — inbound and outbound each need their own permission.
سیٹ اپLab SetupLab Setup
LabVPC کے سب نیٹس موجود ہوں۔ ہم ایک ویب سرور سیکیورٹی گروپ بنائیں گے اور ایک کسٹم NACL بنا کر stateless رویے کا تجربہ کریں گے۔LabVPC ke subnets maujood hon. Hum ek web server security group banayenge aur ek custom NACL bana kar stateless behavior ka tajurba karenge.You need the LabVPC subnets. We will create a web-server security group and a custom NACL to observe stateless behavior.
اقداماتStepsSteps
Step 1
سیکیورٹی گروپ بنائیں۔ سیکیورٹی گروپ انسٹنس لیول پر کام کرتا ہے اور stateful ہے — یعنی جواب والی ٹریفک خودکار طور پر اجازت پاتی ہے۔Security Group banayein. Security Group instance level par kaam karta hai aur stateful hai — matlab jawab wali traffic khudkar taur par ijazat pati hai.Create a security group. Security Groups work at the instance level and are stateful — return traffic is automatically allowed.
aws ec2 create-security-group --group-name LabWebSG --description "Web server SG" --vpc-id vpc-0123456789abcdef0 --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=LabWebSG}]'🖱️ EC2 > Security Groups > Create security group > نام LabWebSG، VPC LabVPC > CreateEC2 > Security Groups > Create security group > Name LabWebSG, VPC LabVPC > CreateEC2 > Security Groups > Create security group > Name LabWebSG, VPC LabVPC > Create
Step 2
ان باؤنڈ رولز لگائیں: پورٹ 80 (HTTP) اور 443 (HTTPS) سب کے لیے، اور پورٹ 22 (SSH) صرف اپنی IP سے۔ آؤٹ باؤنڈ ڈیفالٹ طور پر سب کھلا ہوتا ہے۔Inbound rules lagayein: port 80 (HTTP) aur 443 (HTTPS) sab ke liye, aur port 22 (SSH) sirf apni IP se. Outbound default taur par sab khula hota hai.Add inbound rules: port 80 (HTTP) and 443 (HTTPS) from everywhere, and port 22 (SSH) only from your IP. Outbound is open to all by default.
aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 80 --cidr 0.0.0.0/0 aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 443 --cidr 0.0.0.0/0 aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 22 --cidr 203.0.113.25/32
🖱️ LabWebSG منتخب کریں > Inbound rules > Edit inbound rules > Add rule: HTTP 80 Anywhere-IPv4، HTTPS 443 Anywhere-IPv4، SSH 22 My IP > SaveLabWebSG select karein > Inbound rules > Edit inbound rules > Add rule: HTTP 80 Anywhere-IPv4, HTTPS 443 Anywhere-IPv4, SSH 22 My IP > SaveSelect LabWebSG > Inbound rules > Edit inbound rules > Add rule: HTTP 80 Anywhere-IPv4, HTTPS 443 Anywhere-IPv4, SSH 22 My IP > Save
Step 3
اب ایک کسٹم NACL بنائیں۔ NACL سب نیٹ لیول پر کام کرتا ہے اور stateless ہے — جواب والی ٹریفک کے لیے الگ رول چاہیے۔ ڈیفالٹ NACL سب کچھ اجازت دیتا ہے۔Ab ek custom NACL banayein. NACL subnet level par kaam karta hai aur stateless hai — jawab wali traffic ke liye alag rule chahiye. Default NACL sab kuch ijazat deta hai.Now create a custom NACL. NACLs work at the subnet level and are stateless — return traffic needs its own rule. The default NACL allows everything.
aws ec2 create-network-acl --vpc-id vpc-0123456789abcdef0 --tag-specifications 'ResourceType=network-acl,Tags=[{Key=Name,Value=LabNACL}]'🖱️ VPC > Network ACLs > Create network ACL > نام LabNACL، VPC LabVPC > CreateVPC > Network ACLs > Create network ACL > Name LabNACL, VPC LabVPC > CreateVPC > Network ACLs > Create network ACL > Name LabNACL, VPC LabVPC > Create
Step 4
NACL میں ان باؤنڈ رول لگائیں: رول نمبر 100، پورٹ 80، سورس 0.0.0.0/0، ALLOW۔ رولز نمبر کی ترتیب سے چیک ہوتے ہیں — سب سے چھوٹا نمبر پہلے۔NACL mein inbound rule lagayein: rule number 100, port 80, source 0.0.0.0/0, ALLOW. Rules number ki tarteeb se check hotay hain — sab se chhota number pehle.Add an inbound NACL rule: rule number 100, port 80, source 0.0.0.0/0, ALLOW. Rules are evaluated in number order — lowest number first.
aws ec2 create-network-acl-entry --network-acl-id acl-0123456789abcdef0 --rule-number 100 --protocol tcp --rule-action allow --cidr-block 0.0.0.0/0 --ingress --port-range From=80,To=80
🖱️ LabNACL > Inbound rules > Edit inbound rules > Add rule: نمبر 100، Type HTTP(80)، Source 0.0.0.0/0، Allow > SaveLabNACL > Inbound rules > Edit inbound rules > Add rule: Number 100, Type HTTP(80), Source 0.0.0.0/0, Allow > SaveLabNACL > Inbound rules > Edit inbound rules > Add rule: Number 100, Type HTTP(80), Source 0.0.0.0/0, Allow > Save
Step 5
اہم نکتہ: چونکہ NACL stateless ہے، صرف ان باؤنڈ پورٹ 80 کھولنے سے ویب سائٹ نہیں چلے گی۔ جواب والی ٹریفک کے لیے آؤٹ باؤنڈ میں ephemeral پورٹس (1024-65535) بھی کھولنی پڑیں گی۔Ahem nuqta: chunke NACL stateless hai, sirf inbound port 80 kholnay se website nahi chale gi. Jawab wali traffic ke liye outbound mein ephemeral ports (1024-65535) bhi kholni parein gi.Key point: because the NACL is stateless, opening inbound port 80 alone will not make the website work. Return traffic needs outbound ephemeral ports (1024–65535) opened too.
aws ec2 create-network-acl-entry --network-acl-id acl-0123456789abcdef0 --rule-number 100 --protocol tcp --rule-action allow --cidr-block 0.0.0.0/0 --egress --port-range From=1024,To=65535
🖱️ LabNACL > Outbound rules > Edit > Add rule: نمبر 100، Custom TCP، پورٹ رینج 1024-65535، Destination 0.0.0.0/0، Allow > SaveLabNACL > Outbound rules > Edit > Add rule: Number 100, Custom TCP, port range 1024-65535, Destination 0.0.0.0/0, Allow > SaveLabNACL > Outbound rules > Edit > Add rule: Number 100, Custom TCP, port range 1024-65535, Destination 0.0.0.0/0, Allow > Save
Step 6
NACL کو LabPrivateA سب نیٹ سے جوڑیں۔ یاد رکھیں: ایک سب نیٹ ایک وقت میں صرف ایک NACL سے جڑ سکتا ہے۔NACL ko LabPrivateA subnet se jorein. Yaad rakhein: ek subnet ek waqt mein sirf ek NACL se jur sakta hai.Associate the NACL with the LabPrivateA subnet. Remember: one subnet can be associated with only one NACL at a time.
aws ec2 describe-network-acls --filters Name=association.subnet-id,Values=subnet-ccccprivatea --query 'NetworkAcls[*].Associations[*].NetworkAclAssociationId' --output text
🖱️ LabNACL > Subnet associations > Edit subnet associations > LabPrivateA منتخب کریں > SaveLabNACL > Subnet associations > Edit subnet associations > LabPrivateA select karein > SaveLabNACL > Subnet associations > Edit subnet associations > select LabPrivateA > Save
تصدیقVerifyVerify
LabWebSG میں تین ان باؤنڈ رولز (80، 443، 22) نظر آئیں۔ LabNACL میں ان باؤنڈ رول 100 (پورٹ 80) اور آؤٹ باؤنڈ رول 100 (1024-65535) ہوں، اور وہ LabPrivateA سے جڑا ہو۔LabWebSG mein teen inbound rules (80, 443, 22) nazar aayein. LabNACL mein inbound rule 100 (port 80) aur outbound rule 100 (1024-65535) hon, aur woh LabPrivateA se jura ho.LabWebSG shows three inbound rules (80, 443, 22). LabNACL has inbound rule 100 (port 80) and outbound rule 100 (1024–65535), and is associated with LabPrivateA.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 --query 'SecurityGroups[*].IpPermissions[*].[IpProtocol,FromPort,IpRanges[*].CidrIp]' --output table aws ec2 describe-network-acls --network-acl-ids acl-0123456789abcdef0 --query 'NetworkAcls[*].Entries[*].[RuleNumber,Egress,RuleAction,PortRange.From]' --output table
خرابی دور کرناTroubleshootingTroubleshooting
⚠️ سیکیورٹی گروپ میں پورٹ 80 کھلا ہے مگر ویب سائٹ نہیں کھلتی۔Security Group mein port 80 khula hai magar website nahi khulti.Port 80 is open in the security group but the website does not load.
✅ سب نیٹ کا NACL چیک کریں — ممکن ہے وہ جواب والی ٹریفک روک رہا ہو۔ آؤٹ باؤنڈ میں ephemeral پورٹس (1024-65535) ALLOW کریں۔Subnet ka NACL check karein — mumkin hai woh jawab wali traffic rok raha ho. Outbound mein ephemeral ports (1024-65535) ALLOW karein.Check the subnet's NACL — it may be blocking return traffic. ALLOW outbound ephemeral ports (1024–65535).
⚠️ SSH اپنی IP سے بھی کنیکٹ نہیں ہوتا۔SSH apni IP se bhi connect nahi hota.SSH does not connect even from your own IP.
✅ My IP والا رول پرانی IP پر بنا ہو سکتا ہے — اپنی موجودہ پبلک IP چیک کر کے رول اپ ڈیٹ کریں۔ ساتھ NACL کے ان باؤنڈ میں پورٹ 22 ALLOW ہونا چاہیے۔My IP wala rule purani IP par bana ho sakta hai — apni maujooda public IP check kar ke rule update karein. Saath NACL ke inbound mein port 22 ALLOW hona chahiye.The My IP rule may hold an old IP — check your current public IP and update the rule. Also confirm port 22 is ALLOWed inbound on the NACL.
انٹرویو سوالاتInterview Q&AInterview Q&A
❓ سیکیورٹی گروپ اور NACL میں بنیادی فرق کیا ہے؟Security Group aur NACL mein bunyadi farq kya hai?What is the fundamental difference between a Security Group and a NACL?
سیکیورٹی گروپ انسٹنس لیول پر stateful ہوتا ہے — جواب والی ٹریفک خودکار اجازت پاتی ہے۔ NACL سب نیٹ لیول پر stateless ہوتا ہے — ہر سمت کے لیے الگ رول چاہیے۔Security Group instance level par stateful hota hai — jawab wali traffic khudkar ijazat pati hai. NACL subnet level par stateless hota hai — har simt ke liye alag rule chahiye.A Security Group is stateful at the instance level — return traffic is automatic. A NACL is stateless at the subnet level — each direction needs its own rule.
❓ NACL میں ephemeral پورٹس کیوں کھولنی پڑتی ہیں؟NACL mein ephemeral ports kyun kholni parti hain?Why must ephemeral ports be opened in a NACL?
کیونکہ NACL stateless ہے۔ جب کلائنٹ پورٹ 80 پر آتا ہے تو سرور جواب ephemeral پورٹ (1024-65535) پر بھیجتا ہے، جس کے لیے آؤٹ باؤنڈ اجازت الگ سے چاہیے۔Kyunke NACL stateless hai. Jab client port 80 par aata hai to server jawab ephemeral port (1024-65535) par bhejta hai, jis ke liye outbound ijazat alag se chahiye.Because the NACL is stateless. When a client arrives on port 80, the server replies from an ephemeral port (1024–65535), which needs its own outbound permission.