AWS मध्ये Security Group vs NACL
मागच्या chapter मध्ये आपण VPC चे subnets केले आणि internet gateway व route table ने त्यातला एक public केला, AWS VPC मध्ये Public आणि Private Subnets कसे बनवायचे. या chapter मध्ये ते सगळं प्रत्यक्ष वापरायचं. Default VPC आणि custom VPC ची तुलना, VPC चा खर्च, web, app आणि database tier साठी custom VPC, phone पासून web server पर्यंत एका request चा प्रवास, आणि त्या रस्त्यावरचे दोन firewalls: security group आणि network ACL (NACL). एक stateful आणि दुसरा stateless का, ephemeral ports म्हणजे काय, NACL rule numbers कोणाला आत सोडायचं ते कसं ठरवतात, public Nginx .php requests private app server कडे कसा देतो, आणि PHP private IP वरच्या database ला कसा पोचतो, हे सगळं बघू. शेवटी एक puzzle: ज्या server ला internet च नाही, त्याच्यावर काहीही install कसं करायचं?
या class मध्ये काय शिकणार
- Default VPC vs custom VPC
- VPC चा खर्च आणि काय free आहे
- तीन tiers साठी custom VPC: एक public, दोन private subnets
- Web server पर्यंत एका request चा प्रवास
- Security group vs NACL
- Stateful vs stateless, आणि ephemeral ports
- NACL rules: rule numbers, order आणि gaps
- Nginx
.phprequests private app server कडे पाठवतो - PHP private IP वरच्या database ला connect होतो
- Console मध्ये बनवणे
1. Custom VPC का
का: खऱ्या application ला तीन tiers असतात: web, app आणि database. फक्त web tier internet ला दिसायला हवा. App आणि database servers वर code आणि data असतो, म्हणून बाहेरच्या कुणालाच तिथपर्यंत पोचता यायला नको.
काय: custom VPC म्हणजे तुम्ही स्वतः design केलेला VPC: तुमचा CIDR, तुमचे subnets, आणि कुठला subnet public ते तुमचा निर्णय. AWS प्रत्येक account ला एक default VPC पण देतो, आणि दोघांचं वागणं खूप वेगळं आहे.
Classroom line
If AWS feels complex to someone from the very start, they will leave AWS.
Class मधलं वाक्य
जर कुणाला सुरुवातीपासूनच AWS complex वाटायला लागलं, तर तो AWS सोडून देईल.
Classroom line – हिंदी
"Agar kisi user ko pehle se hi AWS complex lagne lagega to wo AWS chhod dega."
2. Default VPC vs custom VPC
Default VPC का असतो: नवशिक्याला networks बद्दल काहीही माहीत नसताना पहिल्या मिनिटात server launch करता यावा म्हणून.
- AWS प्रत्येक Region मध्ये एक default VPC बनवतो, CIDR
172.31.0.0/16. - त्यात प्रत्येक Availability Zone मध्ये एक default
/20subnet असतो. - Internet gateway आधीच attach केलेला असतो.
- त्याच्या main route table मध्ये आधीच
0.0.0.0/0→ internet gateway असतो, म्हणून प्रत्येक default subnet public.
Custom VPC रिकामा सुरू होतो:
- तुम्ही बनवेपर्यंत subnets नाहीत.
- तुम्ही attach करेपर्यंत internet gateway नाही.
- Main route table मध्ये फक्त
localroute, म्हणून route add करेपर्यंत सगळं private.
Rule: default VPC शिकण्यासाठी आणि quick tests साठी. Production साठी custom VPC बनवा, म्हणजे तुम्ही निवडलेलेच subnets public होतील.
Classroom line
In the default VPC, the main route table is a public route table by default.
Class मधलं वाक्य
"Default VPC madhe jo main route table aahe, to by default public route table rahil."
Default VPC मध्ये जो main route table आहे, तो by default public route table राहील.
Classroom line
In the default VPC, the main route table is a public route table by default.
Figure 1. Default VPC (172.31.0.0/16) सोबत प्रत्येक AZ मध्ये subnet, internet gateway आणि public main route table येतो, म्हणून प्रत्येक default subnet public. Custom VPC काहीही नसताना सुरू होतो आणि route add करेपर्यंत private राहतो.
3. Route tables: थोडक्यात आठवण
Route table मध्ये दोन columns, डावीकडून उजवीकडे वाचायचे: Destination (एक CIDR) आणि Target (कुठे पाठवायचं). Details Route tables: Destination and Target मध्ये आहेत. या chapter साठी तीन गोष्टी लागतात:
- प्रत्येक route table मध्ये
10.0.0.0/16→localअसतो, म्हणून VPC चे सगळे subnets एकमेकांशी बोलू शकतात. - Public route table मध्ये
0.0.0.0/0→igw-...असतो. Private route table मध्ये नसतो. - ज्या subnet चं explicit association नाही, तो main route table वापरतो.
4. VPC चा खर्च
का महत्त्वाचं: students गोष्टी चालू ठेवतात आणि bill येतं. कुठले parts free आहेत ते माहीत हवं.
Free:
- VPC स्वतः, subnets आणि route tables.
- Internet gateway.
- Security groups आणि network ACLs.
पैसे लागतात:
- AWS मधून internet कडे जाणारा data. दर महिन्याचे पहिले 100 GB free; त्यानंतर प्रत्येक GB ला charge.
- Public IPv4 addresses, प्रत्येक public IP ला तासाप्रमाणे charge, वापरा किंवा नका वापरू.
- NAT gateways, तासाप्रमाणे आणि त्यातून जाणाऱ्या प्रत्येक GB प्रमाणे charge.
5. तीन tiers साठी custom VPC
Plan (VPC 10.0.0.0/16, प्रत्येक tier ला एक /20):
- Public subnet
10.0.0.0/20: Nginx आणि HTML pages (उदा.signup.html) असलेला web server. - Private subnet
10.0.16.0/20: PHP असलेला app server. - Private subnet
10.0.32.0/20: MySQL (MariaDB) असलेला database server. - Public route table:
10.0.0.0/16→localआणि0.0.0.0/0→ internet gateway. फक्त web subnet associate करा. - Private route table: फक्त
10.0.0.0/16→local. App आणि DB subnets तो वापरतात.
App आणि DB servers ना internet कडे route नाही आणि public IP नाही, म्हणून बाहेरून कोणी तिथपर्यंत पोचू शकत नाही. local route मुळे ते web server शी मात्र बोलू शकतात.
Figure 2. Custom VPC 10.0.0.0/16: public web subnet 10.0.0.0/20 (Nginx), private app subnet 10.0.16.0/20 (PHP) आणि private DB subnet 10.0.32.0/20 (MySQL). फक्त public route table मध्ये 0.0.0.0/0 internet gateway कडे.
6. एका request चा प्रवास
समजा आपण Instagram आहोत, Mumbai Region (ap-south-1) मध्ये host केलेलं, आणि एक user phone वर signup page उघडतो. Request असा प्रवास करते:
- Phone → mobile tower → internet.
- Internet → AWS Mumbai Region.
- Internet gateway: VPC चं दार.
- Route table: request web subnet कडे पाठवतो.
- NACL: subnet चा firewall.
- Security group: server चा firewall.
- Web server वरचा Nginx उत्तर देतो.
म्हणजे request दोन firewalls मधून जाते: आधी subnet च्या दारावर NACL, मग server च्या दारावर security group.
Classroom line
Got it? See whether you follow this path.
Class मधलं वाक्य
"Kalta ka? He kalta ka bagha rasta."
कळतं का? हा रस्ता कळतो का बघा.
Classroom line
Got it? See whether you follow this path.
Figure 3. Animation: phone, tower, internet, AWS Mumbai; मग VPC च्या आत internet gateway, route table, NACL (subnet चं दार), security group (server चं दार), आणि शेवटी Nginx.
7. Security group vs NACL
Security group: instance वरचा (त्याच्या network card वरचा) firewall. तो तुम्ही Security groups chained tier by tier मध्ये पाहिला.
NACL (network access control list): subnet वरचा firewall. Subnet मधला प्रत्येक server त्याच्या मागे असतो.
दोन्ही का: समजा एक IP आपल्यावर attack करतोय. एका /20 subnet मध्ये 4,091 servers बसू शकतात. फक्त security groups असतील तर प्रत्येक server चे rules बदलावे लागतील, आणि वाईट traffic तरीही प्रत्येक server पर्यंत पोचेल. NACL मधला एक deny rule ते subnet च्या दारावरच थांबवतो, कुठल्याही server पर्यंत पोचण्याआधी.
Classroom line
Why are you putting that load on the server?
Class मधलं वाक्य
Server वर load का टाकताय तुम्ही?
Classroom line – हिंदी
"Kyu server pe load de rahe ho tum?"
Figure 4. Security group: instance level, फक्त allow rules, stateful, सगळे rules एकत्र check. NACL: subnet level, allow आणि deny, stateless, सर्वात लहान rule number आधी. एक IP block फक्त NACL करू शकतो.
आणखी तुलना Security group vs NACL मध्ये आहे.
8. Stateful vs stateless
Stateful (security group): तो प्रत्येक connection लक्षात ठेवतो. Request आत allowed झाली असेल, तर तिचा reply आपोआप बाहेर allowed. तुम्ही फक्त inbound rule लिहायचा.
Stateless (NACL): त्याला काहीच लक्षात राहत नाही. आत येणारी request आणि बाहेर जाणारा reply वेगवेगळे check होतात, म्हणून request साठी inbound rule आणि reply साठी outbound rule दोन्ही लागतात.
Classroom line
This is exactly what they ask in interviews.
Class मधलं वाक्य
Interview मध्ये हेच विचारतात.
Classroom line – हिंदी
"Interview mein yehi puchte hai."
9. Ephemeral ports: reply कुठे जातो
का महत्त्वाचं: NACL outbound rule चुकीच्या port साठी लिहिला तर page कधीच load होत नाही.
Worked example: एक phone आपल्या web server वर https:// उघडतो.
- Phone या connection साठी एक random मोठा port निवडतो, उदा.
41296. हा ephemeral (थोड्या वेळाचा) port. - Request phone च्या port
41296कडून server च्या port443कडे जाते. - Server स्वतःच्या port 443 वरून phone च्या port
41296ला reply करतो. Server दुसऱ्या port वर जात नाही. - Security group: stateful, म्हणून reply आपोआप allowed.
- NACL: stateless, म्हणून reply ला outbound rule लागतो. Phone चा port random असतो, म्हणून पूर्ण ephemeral range allow करा:
0.0.0.0/0कडे outbound 1024-65535.
उलटी बाजू: server स्वतः call करतो, उदा. sudo yum install nginx -y, तेव्हा server client असतो. तो ephemeral port निवडतो आणि replies त्याच्याकडे परत येतात. म्हणून NACL inbound rules मध्ये पण 1024-65535 allow हवे.
Figure 5. Animation: request port 41296 कडून 443 कडे जाते; security group 443 कडून 41296 कडे जाणारा reply आपोआप सोडतो; NACL ला 1024-65535 साठी outbound rule लागतो.
10. Defaults
- Security group: inbound सगळं deny, outbound सगळं allow. तुम्ही फक्त allow rules add करता; deny rule नसतोच.
- Default NACL (VPC सोबतच बनलेला): सगळं traffic आत आणि बाहेर allow. तुम्ही दुसरा निवडेपर्यंत प्रत्येक नवीन subnet तोच वापरतो.
- तुम्ही बनवलेला NACL: rules add करेपर्यंत सगळं traffic आत आणि बाहेर deny.
म्हणून एक IP block करायला security group काही करू शकत नाही: त्यात deny नाही. NACL deny rule लागतो.
Classroom line
In a security group we don't block, we only allow.
Class मधलं वाक्य
Security group मध्ये आपण block करत नाही, आपण allow करतो.
Classroom line – हिंदी
"Security group ke andar hum log block nahi karte, hum log allow karte hai."
11. NACL rules: सर्वात लहान number जिंकतो
प्रत्येक NACL rule मध्ये: Rule number, Type, Protocol, Port range, Source (inbound) किंवा Destination (outbound), आणि Allow किंवा Deny.
NACL कसं ठरवतो:
- तो सर्वात लहान rule number पासून वर rules check करतो.
- पहिला match होणारा rule निर्णय घेतो. बाकीचे वाचले जात नाहीत.
- शेवटचा rule,
*, काहीच match न झालेलं सगळं deny करतो. तो delete करता येत नाही.
Worked example. समजा आपण Instagram आहोत. Attacker 3.3.3.3 port 80 वर flood करतोय; normal user 7.7.7.7 आहे.
चुकीचा order:
- Rule 1:
0.0.0.0/0कडून HTTP 80 allow. - Rule 2:
3.3.3.3/32कडून HTTP 80 deny. - Attacker ची request आधी rule 1 ला match होते: allowed. Rule 2 वाचलाच जात नाही.
बरोबर order:
- Rule 1:
3.3.3.3/32कडून HTTP 80 deny. - Rule 2:
0.0.0.0/0कडून HTTP 80 allow. 3.3.3.3rule 1 ला match: denied.7.7.7.7rule 1 ला match होत नाही, rule 2 ला होतो: allowed.
Rule: deny rule ला, तो ज्या allow rule ला हरवायचा आहे त्यापेक्षा लहान number द्या.
Classroom line
The smaller the rule number, the higher its priority.
Class मधलं वाक्य
Rule number जितका लहान, तितकी त्याला जास्त priority.
Classroom line – हिंदी
"Jitna rule number chhota rahega, usko highest priority milegi."
Figure 6. Animation: allow rule 1 असेल तर attacker 3.3.3.3 आत येतो कारण rule 2 वाचलाच जात नाही. Deny rule 1 असेल तर 3.3.3.3 denied आणि 7.7.7.7 rule 2 ने allowed.
12. Rule numbers मध्ये gaps सोडा
का: site live आहे. पुढच्या आठवड्यात attacker 4.4.4.4 वर जातो. तुमचे rules 1, 2, 3 असतील तर allow rule च्या वर नवीन deny ठेवायला जागाच नाही, आणि live rules renumber करणं risky.
कसं: rules टप्प्याटप्प्याने number करा, उदा. 10, 20 ... 100.
- Live rules: 10 deny
3.3.3.3/32, 100 allow0.0.0.0/0,*deny. - Attacker
4.4.4.4वर गेला:4.4.4.4/32कडून HTTP 80 deny करणारा rule 20 add करा. - Rule 20, 10 आणि 100 च्या मध्ये बसतो. कुठलाही live rule बदलत नाही.
Limits: rule numbers 1 ते 32766. एका NACL ला by default 20 inbound आणि 20 outbound rules; AWS ते प्रत्येकी 40 पर्यंत वाढवू शकतो. Rules कधीही edit किंवा delete करता येतात.
Classroom line
Once the website is live, changing rule numbers later is a big problem.
Class मधलं वाक्य
Website live झाल्यावर नंतर rule numbers बदलायला गेलात तर मोठा problem आहे.
Classroom line – हिंदी
"Website live ho gaya, baad me rule number change karoge to bada problem hai."
Figure 7. Live rules 10 (3.3.3.3 deny) आणि 100 (सगळं allow). Attacker 4.4.4.4 वर गेला की rule 20 gap मध्ये बसतो आणि काहीच renumber होत नाही.
13. एक public server: .php app server कडे पाठवा
का: या design मध्ये internet पर्यंत पोचणारा web server हा एकच server आहे. HTML, images आणि CSS थेट त्याच्यावरून देता येतात. पण PHP code private app server वर आहे.
Classroom line
That is the only server that is public.
Class मधलं वाक्य
तोच एक server आहे जो public आहे.
Classroom line – हिंदी
"Wahi ek server hai jo public hai."
समजा आपण Instagram आहोत: page /get_reels.php मागतं. Public Nginx ने ती request app server कडे द्यायची आणि उत्तर browser ला परत पाठवायचं. याला reverse proxy म्हणतात, Put Nginx in front as the reverse proxy सारखं.
कसं (web server वर):
- Config उघडा:
sudo nano /etc/nginx/nginx.conf. -
server { ... }block च्या आत add करा:location ~ \.php$ { proxy_pass http://10.0.16.7; } -
~म्हणजे "पुढचा भाग regular expression आहे".\.php$म्हणजे "path.phpने संपतो" (\.म्हणजे खरा dot,$म्हणजे शेवट). 10.0.16.7हा app server चा private IP. तुमच्या स्वतःच्या app server चा IP वापरा; तो app subnet10.0.16.0/20च्या आतला हवा.- Config test करा:
sudo nginx -t. - Reload:
sudo service nginx reload.
आता /signup.html web server स्वतः देतो, आणि /get_reels.php app server कडे जातं.
14. App server पण request ला उत्तर देतो
Request app server पर्यंत HTTP वरून पोचते, म्हणून ती घ्यायला app server ला पण web server लागतो: त्याचा स्वतःचा private Nginx आणि php-fpm, The server: Nginx, php-fpm and MariaDB प्रमाणे setup केलेला. तो Nginx .php file php-fpm ला देतो, PHP HTML बनवतो, आणि उत्तर public Nginx मधून browser कडे परत जातं.
Classroom line
On the PHP server, who will handle the request and the response?
Class मधलं वाक्य
"PHP chya server madhe kon request-response handle karel?"
PHP च्या server मध्ये request-response कोण handle करेल?
Classroom line
On the PHP server, who will handle the request and the response?
App server चा security group: HTTP 80 allow करा, source = web server चा security group. बाकी कोणीही त्याला call करू शकत नाही.
15. PHP private IP वरच्या database ला connect होतो
Connect व्हायला PHP ला चार values लागतात: server name, username, password, database name (The four connection values). Database त्याच server वर असतो तेव्हा server name localhost असतं. आता तो स्वतःच्या server वर आहे, म्हणून फक्त server name बदलतं, DB server च्या private IP मध्ये:
$servername = "10.0.32.10"; // DB server's private IP (example)
$username = "appuser";
$password = "YOUR_APP_PASSWORD";
$database = "insta";
10.0.32.10 हे DB subnet 10.0.32.0/20 मधलं उदाहरण; तुमच्या DB server चा स्वतःचा private IP वापरा.
Classroom line
Where will the query run? On this MySQL server.
Class मधलं वाक्य
"Query kuthe fire hoil? Ya MySQL var."
Query कुठे fire होईल? या MySQL वर.
Classroom line
Where will the query run? On this MySQL server.
DB server वर तीन गोष्टी नक्की करा:
- Network वर listen करा.
/etc/my.cnf.d/mariadb-server.cnfमध्येbind-address127.0.0.1नसावा (ती line काढा किंवाbind-address=0.0.0.0ठेवा). मगsudo service mariadb restart. -
App server च्या IPs साठी user,
localhostसाठी नाही:CREATE USER 'appuser'@'10.0.16.%' IDENTIFIED BY 'YOUR_APP_PASSWORD'; GRANT ALL PRIVILEGES ON insta.* TO 'appuser'@'10.0.16.%';10.0.16.%म्हणजे "10.0.16. ने सुरू होणारा कुठलाही IP", म्हणजे app subnet मधून. 3. DB server चा security group: MySQL/Aurora 3306 allow करा, source = app server चा security group.
साखळी: web SG 0.0.0.0/0 कडून 80/443 allow करतो → app SG फक्त web SG कडून 80 → DB SG फक्त app SG कडून 3306.
Figure 8. /signup.html public Nginx देतो; /get_reels.php .php ने संपतं, म्हणून ते app server 10.0.16.7 (Nginx + php-fpm) कडे proxy होतं, आणि तिथला PHP DB server च्या private IP वरच्या MariaDB ला connect होतो. Security groups साखळी web → app → DB.
16. Console मध्ये बनवा
Part A: network (Build it in the console प्रमाणे)
- VPC > Your VPCs > Create VPC, VPC only, name
my-vpc, IPv4 CIDR10.0.0.0/16. - Subnets बनवा:
web-a(10.0.0.0/20,ap-south-1a),app-b(10.0.16.0/20,ap-south-1b),db-c(10.0.32.0/20,ap-south-1c). - Internet gateway
my-igwबनवा आणि attach करा. public-rtबनवा:0.0.0.0/0→my-igwadd करा, फक्तweb-aassociate करा.app-bआणिdb-cmain route table वरच राहू द्या, त्यात फक्तlocalआहे.
Part B: security groups (EC2 > Security Groups > Create security group, VPC my-vpc)
web-sg: inbound HTTP 80 आणि HTTPS 4430.0.0.0/0कडून, SSH 22 My IP कडून.app-sg: inbound HTTP 80, sourceweb-sg.db-sg: inbound MySQL/Aurora 3306, sourceapp-sg.
Part C: servers
- Web server
web-aमध्येweb-sgसोबत launch करा, Auto-assign public IP: Enable. - App server
app-bमध्येapp-sgसोबत launch करा, Auto-assign public IP: Disable. - DB server
db-cमध्येdb-sgसोबत launch करा, Auto-assign public IP: Disable.
Part D: एक NACL deny rule
- VPC > Network ACLs,
web-aला associate असलेला NACL (default वाला) select करा. त्यात सगळं traffic allow करणारा rule 100 आणि deny करणारा*आहे. - Inbound rules > Edit inbound rules > Add new rule: Rule number
10, Type HTTP (80), Source3.3.3.3/32, Deny. Save changes. - Rule 10 हा 100 पेक्षा लहान, म्हणून तो आधी check होतो.
NACL rules बद्दल आणखी: Network ACL: inbound and outbound rules.
17. काही चुकलं तर
- स्वतःचा NACL बनवल्यावर page काहीच load करत नाही: नवीन NACL सगळं deny करतो. Inbound 80/443 आणि outbound 1024-65535 add करा.
- Custom NACL असताना web server वर
sudo yum installअडकतं: replies ephemeral ports वर परत येतात. Inbound 1024-65535 allow करा. - Block केलेला IP तरीही आत येतो: त्याच्या deny rule चा number आधी match होणाऱ्या allow rule पेक्षा मोठा आहे.
.phppages 502 Bad Gateway देतात: app server port 80 वर उत्तर देत नाहीये. त्याचा Nginx आणि php-fpm check करा, आणिapp-sgweb-sgकडून 80 allow करतो का ते बघा.- PHP database ला connect होत नाही:
$servernameमधला private IP,bind-address, user'appuser'@'10.0.16.%', आणिdb-sgapp-sgकडून 3306 allow करतो का ते check करा. nginx -tfail होतं:locationblock मध्ये;किंवा}राहिलाय.
Ravindra Bagale's Tip
"या server शी कोण बोलू शकतं" यासाठी security groups वापरा आणि NACLs साधे ठेवा: default allow-all, आणि block करायच्या IPs साठी deny rules, 10 च्या टप्प्याने numbered. काही बंद पडलं तर request ज्या क्रमाने जाते त्याच क्रमाने check करा: route table, NACL, security group, मग server वरची service.
18. Puzzle: private server वर PHP
Web server सोपा होता:
- Laptop वरून त्याच्या public IP वर SSH.
sudo yum install nginx -ysudo service nginx start- HTML files
scpने copy.
आता app server वर PHP install करा. दोन गोष्टी अडवतात:
- Public IP नाही: laptop वरून त्याला SSH करता येत नाही.
- Internet कडे route नाही: आत गेलात तरी
sudo yum install php -yकाहीच download करू शकत नाही.
Classroom line
That PHP server has no public IP.
Class मधलं वाक्य
"Tya PHP chya server la public IP nahiye."
त्या PHP च्या server ला public IP नाहीये.
Classroom line
That PHP server has no public IP.
Classroom line
It has no internet at all, so where will it install from?
Class मधलं वाक्य
"Internet ch nahiye tyachya madhe, install kuthun honar?"
Internet च नाहीये त्याच्यामध्ये, install कुठून होणार?
Classroom line
It has no internet at all, so where will it install from?
Figure 9. Public web server वर Nginx सहज install होतो. Private app server ला public IP नाही (laptop वरून SSH नाही) आणि internet कडे route नाही (yum download करू शकत नाही), म्हणून sudo yum install php -y अजून चालू शकत नाही.
पुढे वाचण्याआधी विचार करा: त्या server पर्यंत कसं पोचाल, आणि तो public न होता packages कसे download करेल? उत्तर, bastion host आणि NAT gateway, पुढच्या chapter मध्ये आहे: How to Access a Private EC2 with a Bastion Host and NAT Gateway.
Classroom line
Switch on the light bulb in your brain.
Class मधलं वाक्य
डोक्यातला bulb लावा.
Classroom line – हिंदी
"Dimag ki batti jalao."
19. संपूर्ण class एका page वर
- Default VPC:
172.31.0.0/16, प्रत्येक AZ मध्ये subnet, IGW attached, public main route table. Custom VPC: तुम्ही बनवेपर्यंत रिकामा आणि private. - Free: VPC, subnets, route tables, IGW, SGs, NACLs. पैसे: 100 GB/महिना नंतर data out, public IPv4, NAT gateways.
- तीन tiers: web public subnet मध्ये, app आणि DB
local-only route table वरच्या private subnets मध्ये. - Request चा रस्ता: internet → IGW → route table → NACL (subnet) → SG (instance) → server.
- SG: instance level, फक्त allow, stateful. NACL: subnet level, allow आणि deny, stateless.
- Reply server च्या port (443) कडून client च्या ephemeral port कडे जातो; NACLs ना replies साठी 1024-65535 allow लागतं.
- Defaults: SG आत सगळं deny, बाहेर सगळं allow; default NACL सगळं allow; नवीन NACL सगळं deny.
- NACL: सर्वात लहान rule number आधी, पहिला match जिंकतो,
*बाकी deny करतो. Deny allow च्या आधी ठेवा, आणि टप्प्याने number करा. - Rule numbers 1-32766; by default 20 inbound + 20 outbound rules.
- Public Nginx:
location ~ \.php$ { proxy_pass http://<app private IP>; }, मगsudo nginx -tआणि reload. - PHP चा
$servernameDB चा private IP होतो; DB network वर listen करायला हवा आणि10.0.16.%साठी user हवा; SGs साखळी web → app → DB.
20. घरी करून बघा
घरी करून बघा
Task 1: कागदावर
5.5.5.5आणि6.6.6.6ला port 80 वरून block करणारे आणि बाकी सगळ्यांना allow करणारे NACL inbound rules लिहा. Gaps सोडा.- एक phone port
50123वरून तुमच्या server च्या port 443 ला connect होतो. Reply चे source आणि destination ports लिहा.
Task 2: console मध्ये
web-a,app-bआणिdb-c, IGW आणिpublic-rtसोबतmy-vpcबनवा (section 16).- साखळी sources सोबत
web-sg,app-sgआणिdb-sgबनवा. web-aमध्ये web server launch करा, Nginx install करा, आणि त्याचा public IP browser मध्ये उघडा.
Task 3: NACL prove करा
- तुमच्या स्वतःच्या public IP कडून HTTP 80 deny करणारा inbound rule 10 add करा (laptop वर
curl ifconfig.meतो दाखवतो). Page reload करा: fail होतं. - Rule number 200 करा आणि save करा. Reload: page load होतं, कारण rule 100 आधी allow करतो.
- Rule delete करा. Clean up: servers terminate करा, security groups, subnets, route table, IGW आणि VPC delete करा.
Recap
थोडक्यात
- Default VPC सगळीकडे public; custom VPC तुम्ही उघडेपर्यंत private.
- फक्त web subnet ला internet gateway कडे route; app आणि DB private राहतात.
- Request आधी subnet वर NACL ला, मग server वर security group ला भेटते.
- Security groups stateful आणि फक्त allow; NACLs stateless आणि deny करू शकतात.
- सर्वात लहान NACL rule number जिंकतो; नंतरच्या rules साठी gaps सोडा.
- Public Nginx
.phpprivate app server कडे proxy करतो, आणि PHP DB ला private IP ने पोचतो.
सराव Tasks
Maple Leaf Books हा टोरांटो मधला पुस्तक विक्री व्यवसाय आहे. Emily Tremblay त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे CAD मध्ये मोजले जातात आणि AWS resources ca-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं /16 मध्ये किती addresses?
का: VPC size ठरवायला ही संख्या लागते.
काय करायचं: Maple Leaf Books चा VPC 10.131.0.0/16. एकूण किती IP addresses?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं VPC बनवा
का: VPC म्हणजे AWS मधलं तुमचं स्वतःचं private network.
काय करायचं: 10.5.0.0/16 CIDR block असलेला VPC बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Internet gateway बनवा
का: Internet gateway शिवाय VPC मधलं काहीही internet ला पोचत नाही.
काय करायचं: नवा internet gateway बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम एका AZ मध्ये subnet बनवा
का: Subnets VPC range वाटतात व प्रत्येक एकाच AZ मध्ये असतो.
काय करायचं: vpc-0e32412000deadbee मध्ये ca-central-1a मध्ये 10.5.1.0/24 subnet बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Internet route जोडा
का: Route table 0.0.0.0/0 internet gateway ला पाठवत असेल तरच subnet "public".
काय करायचं: Route table rtb-002d32412000bb22 मध्ये सगळं internet traffic (0.0.0.0/0) igw-02d32412000aa11 कडे पाठवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम VPC router address शोधा
का: AWS router साठी base+1 राखतो.
काय करायचं: 10.131.4.0/24 मध्ये VPC router साठी AWS कोणता address राखतो?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम AWS /24 subnet मधले usable IPs
का: AWS प्रत्येक subnet मध्ये 5 addresses राखून ठेवतो.
काय करायचं: AWS वर 10.131.1.0/24 subnet मध्ये Maple Leaf Books servers साठी किती addresses वापरू शकतो?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Subnet route table शी जोडा
का: Associate करेपर्यंत subnet main route table वापरतो.
काय करायचं: Subnet subnet-002d32412000bb1 ला route table rtb-002d32412000bb22 शी associate करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Internet gateway attach करा
का: VPC ला attach केल्याशिवाय gateway काही करत नाही.
काय करायचं: igw-02d32412000aa11 ला vpc-0e32412000deadbee शी attach करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Server साठी पहिला usable IP
का: पहिले 4 addresses AWS राखतो.
काय करायचं: AWS वर 10.131.20.0/24 मध्ये server ला मिळणारा पहिला IP?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड सर्वात लहान prefix निवडा
का: योग्य size मुळे address space वाचतो.
काय करायचं: AWS वर subnet मध्ये 100 servers हवेत. बसणारा सर्वात मोठा prefix number? उदा. /25.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड /24 चे दोन भाग
का: Public व private subnets एक block वाटून घेतात.
काय करायचं: 10.131.8.0/24 चे दोन समान subnets करा. दोन्ही CIDRs comma ने लिहा.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
झटपट उजळणी cards
हा chapter दोन मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR त्याचा lesson उघडतो.









अजून cards: Ravi Sir's Cards: AWS VPC and Subnets.