Ravindra BagaleCourses & study guides English Track your progress

Linux Host Firewalls Hands-On: iptables, nftables, firewalld आणि UFW

Lucas Meyer व Sneha Reddy: iptables, nftables, firewalld, ufw. फक्त firewall hands-on. SELinux/fail2ban: hardening survey.

या chapter मध्ये तुम्ही काय शिकाल

  • चार tools कधी
  • Port allow/deny
  • Output वाचा
  • curl/nc + persistent
  • SG सोबत काम

1. रोजचे उदाहरण

SG = building gate; host FW = apartment lock. Port 9000 बंद — ufw किंवा nftables.

2. SG असताना host FW का?

हे का लागतं?

  • Peer lateral movement
  • Bastion default deny
  • Local policy
  • Compliance

3. Tool map

ToolBest onStyle
iptablesLegacy scriptsChains
nftablesModern distrosnft language
firewalldRHEL familyZones
ufwUbuntuSimple CLI

एकच backend

ufw + firewalld + raw iptables एकत्र = fight. Image मध्ये एक primary निवडा.

4. iptables hands-on

हे काय आहे?

iptables → netfilter. INPUT/OUTPUT/FORWARD. Policy ACCEPT/DROP.

कसं करायचं (step by step)

# View rules (filter table)
sudo iptables -L -n -v --line-numbers
# sample output meaning:
# Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
# num  pkts bytes target  prot  opt  in  out  source      destination
# 1       0     0 ACCEPT  tcp   --   *   *    0.0.0.0/0   0.0.0.0/0   tcp dpt:22
# → line 1 allows SSH (tcp/22) from anywhere

# Default deny incoming (careful: keep SSH allowed first!)
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
# OUTPUT often left ACCEPT for beginners

# Delete a line
sudo iptables -D INPUT 3

Persist: iptables-persistent / netfilter-persistent. RHEL: service किंवा nft/firewalld.

5. nftables hands-on

# List
sudo nft list ruleset
# sample: table inet filter { chain input { type filter hook input priority 0; policy drop;
#   ct state established,related accept
#   tcp dport 22 accept
# } }

# Quick inet filter (IPv4+IPv6)
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport 80 accept

# Persist: save to /etc/nftables.conf and enable nftables.service
sudo nft list ruleset | sudo tee /etc/nftables.conf
sudo systemctl enable --now nftables

6. firewalld hands-on

# State and default zone
sudo firewall-cmd --state
# running
sudo firewall-cmd --get-default-zone
# public

# Allow HTTP permanently and reload
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
# sample: public (active)
#   services: cockpit dhcpv6-client http ssh
#   ports: 8080/tcp
# → http and 8080 are allowed in zone public

# Rich rule example: allow 10.0.0.0/24 to 3306
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 port port=3306 protocol=tcp accept'
sudo firewall-cmd --reload

7. ufw hands-on

sudo ufw status verbose
# Status: inactive

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
# or: sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# Command may ask for confirmation — say y

sudo ufw status numbered
# [ 1] 22/tcp ALLOW IN Anywhere
# [ 2] 80/tcp ALLOW IN Anywhere
# → SSH and HTTP allowed; everything else incoming denied by default

# Delete rule number 2
sudo ufw delete 2

ufw enable = reboot नंतरही rules.

8. curl आणि nc ने test

कसं करायचं (step by step)

# From a second host (or your laptop if SG allows)
curl -s -o /dev/null -w "%{http_code}\n" http://TARGET/
# 200 → web allowed; 000 / timeout → blocked or down

nc -vz TARGET 22
# Connection to TARGET 22 port [tcp/ssh] succeeded!
nc -vz TARGET 9000
# nc: connect to TARGET port 9000 (tcp) failed: Connection refused / timed out
# → refused often means nothing listening; timed out often means filtered (FW)

# On the target, watch drops (nft example)
sudo nft monitor | head

Ravindra Bagale's Tip

AWS वर SG आणि host FW दोन्ही उघडा. एक विसरले की 30 मिनिटे blame game.

9. Persistent — cheat sheet

ToolPersist
iptablesiptables-persistent
nftablesnftables.conf + service
firewalld--permanent + reload
ufwufw enable

10. Multi-industry

  • Clinic: ufw + bastion IP
  • Fintech: nft + firewalld
  • Ecommerce: ufw CI subnet
  • Uni: firewalld zones

11. Lab: VM lock + proof

  1. Snapshot/AMI.
  2. एक tool.
  3. SSH IP + 80; deny in.
  4. Proof matrix.
  5. Reboot persist.
  6. Notes.

Cleanup

  1. Throwaway → terminate.
  2. Shared → tighten.

12. Command map

Jobiptablesnftfirewalldufw
Listiptables -L -n -vnft listfirewall-cmd --list-allufw status
Allow 8080-A INPUT 8080nft add--add-portufw allow
Deny IP-I DROPnft droprich-ruleufw deny from
Saveiptables-savenft saveruntime to permufw enable

13. Lab A

Throwaway VM: HTTP server, lock, one port, curl/nc prove.

# Terminal 1 (server)
python3 -m http.server 8080 --bind 0.0.0.0
# Terminal 2 (firewall) — ufw example
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw status numbered
# Terminal 3 (client)
curl -v --max-time 3 http://SERVER_IP:8080/
nc -vz SERVER_IP 8080
nc -vz SERVER_IP 8081

Expected: 8080 OK; 8081 fail. Both OK means default allow or another layer.

14. Lab B

# Export legacy
sudo iptables-save > /tmp/legacy.v4
iptables -V
sudo nft flush ruleset
sudo nft -f - <<'EOF'
table inet filter {
  chain input { type filter hook input priority 0; policy drop;
    ct state established,related accept
    iif lo accept
    tcp dport { 22, 80, 443 } accept
  }
  chain forward { type filter hook forward priority 0; policy drop; }
  chain output { type filter hook output priority 0; policy accept; }
}
EOF
sudo nft list ruleset
sudo nft list ruleset > /etc/nftables.conf
sudo systemctl enable --now nftables

15. Lab C

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

16. Eight Linux FW errors

17. सामान्य errors आणि fixes

प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.

Error / लक्षणFix
-A after ACCEPT-I / reorder
Not permanentSave
Both onOne only
Same-host testOther IP
IPv6 openCheck v6
Docker rewritePlan
fail2ban vs UFWIntegrate
No counters-v hits

18. Troubleshooting

19. Troubleshooting checklist

  1. Daemon status?
  2. Who owns?
  3. Default policy?
  4. INPUT vs FORWARD
  5. Timeout vs refused
  6. First match wins

20. Firewall decision checklist

  1. Threat एक वाक्य.
  2. Layer निवडा.
  3. Form निवडा.
  4. Default policy.
  5. Allow + deny tests.
  6. Logging dest.
  7. On-call.
  8. Deep chapter link.
  9. Cost estimate.
  10. Persist test.

21. Copy-paste quick commands

# --- Host (Ubuntu ufw) ---
sudo ufw status verbose
sudo ufw allow OpenSSH && sudo ufw allow 80/tcp && sudo ufw enable

# --- Host (RHEL firewalld) ---
sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload

# --- Host (nft) ---
sudo nft list ruleset

# --- AWS pointers (details in linked chapters) ---
aws ec2 describe-security-groups --group-ids $SG
aws wafv2 list-web-acls --scope REGIONAL --region ap-south-1
aws network-firewall list-firewalls --region ap-south-1
aws route53resolver list-firewall-rule-groups --region ap-south-1

22. अजून industry stories

  • Retail: host+network; WAF ecommerce only
  • Media: CF+WAF; NF admin; Shield
  • Gov: FMS mandate
  • Startup: grow into NF
  • Logistics: DNS+Suricata

23. Glossary

Termअर्थ
NetfilterLinux packet framework
SuricataIDS/IPS; NF dialect
5-tuple5 fields
East-westआतील traffic
North-southबाहेरील traffic
Default denyMatch नसेल तर drop
False positiveLegit block चुकून

24. Practice: मोठ्याने explain

  1. 60s guard story.
  2. 60s four tools.
  3. 60s four AWS.
  4. 60s inspection VPC.
  5. Record ×2.

25. Safe lab hygiene

  • Prod SSH + DROP = console.
  • Tag owner+expiry.
  • Rollback file.
  • Allowlist first.
  • NF hourly — delete.
  • Networking basics
  • SG vs NACL
  • Hardening survey
  • CF+WAF
  • WAF/Shield set

27. Rule-writing workshop

आधी English rule, मग tool. वाईट: bad stuff. चांगले: Drop 445 except 10.0.0.0/16.

  1. Direction.
  2. Match fields.
  3. Action.
  4. Observability.
  5. Rollback.
  6. Peer review.

28. Allow / deny matrix

FlowSGHostWAFNF
Public HTTPS80/443 world80/443CRS+/loginedge वर कमी
SSH bastion22 corp22 corpn/aoptional
App→DBapp SGoptionaln/aeast-west optional
Egress DNS53allown/aDNS+NF

29. दहा oral drills

  1. Packet vs stateful ×3.
  2. Four Linux tools.
  3. Refused ≠ filtered.
  4. Inspection VPC.
  5. UTM when.
  6. Suricata on AWS.
  7. FMS stops drift.
  8. No duplicate.
  9. Two industries.
  10. NF hourly delete.

30. सामान्य errors आणि fixes

प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.

Error / लक्षणFix
SSH DROP आधीआधी allow 22
न --permanent--permanent वापरा
दोन्ही onएक निवडा
LockoutConsole
Only localhostSecond host
SG विसरलेSG उघडा
Empty overwriteReview first
SSH world openRevoke/bastion
Refused vs timeoutअर्थ वेगळा

31. Troubleshooting checklist

  1. कोणता tool owner?
  2. आधी SG/NACL.
  3. LOG then DROP.
  4. conntrack full?
  5. Reboot proof.

32. FAQ

प्र. iptables की nft?

नवीन = nft; legacy docs साठी iptables.

प्र. ufw backend

nftables (modern Ubuntu).

प्र. Host ≠ Network FW

Scope वेगळा.

प्र. SELinux?

Hardening chapter link.

प्र. Cloud मध्ये host FW skip?

नाही — peers/bastion साठी OS lock.

प्र. कुठून सुरू?

Types → Linux → AWS → WAF/Shield links.

33. Interview Q&A

प्र. iptables vs nftables

Legacy vs modern netfilter UI.

प्र. firewalld persist

--permanent + reload.

प्र. Filtered prove

Remote nc + counters.

प्र. MNC bastion

Deny in + VPN CIDR + log + reboot.

प्र. 80 vs http

Port explicit; profile OK.

34. Tips — English, मराठी आणि हिंदी

Ravindra Bagale's Tip (EN)

Allow management access first, default deny second, prove with a second host third, persist fourth.

Ravindra Bagale's Tip (MR)

आधी management allow, मग default deny, मग remote proof, शेवटी persist.

Tip (HI)

पहले SSH/आपना IP allow करें, फिर default deny, दूसरे होस्ट से test, फिर persist।

घरी करून बघा

  1. Disposable VM lab.
  2. Output + comments.
  3. Hardening chapter skim.

थोडक्यात सांगायचं तर

  1. चार tools; एक primary.
  2. SSH → deny → remote test.
  3. Persist + reboot.
  4. SG + host FW.

उजळणी, मुलाखत आणि तुलना cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: चार Linux FW tools. Mixing breaks. Four tools; one stack. List → change → test → save. Ubuntu ufw; RHEL firewalld.
उजळणी card: चार Linux FW tools · PNG download करा · Card page उघडा
उजळणी card: Rules persistent. Reboot reopen. Save patterns. Change → prove → persist → reboot. Reboot check.
उजळणी card: Rules persistent · PNG download करा · Card page उघडा
तुलना: UFW vs firewalld. UFW: Simple CLI. firewalld: Zones.
तुलना: UFW vs firewalld · PNG download करा · Card page उघडा
तुलना: iptables vs nftables. iptables: Classic UI. nftables: Modern syntax.
तुलना: iptables vs nftables · PNG download करा · Card page उघडा
मुलाखत card: कुठले tool?. Choice. Distro defaults. Document stack.
मुलाखत card: कुठले tool? · PNG download करा · Card page उघडा
मुलाखत card: Rule कशी test?. Evidence. curl/nc + counters. Not localhost only.
मुलाखत card: Rule कशी test? · PNG download करा · Card page उघडा
मुलाखत card: Persist कसे?. Hygiene. Save + enable + reboot. Re-enable reminder.
मुलाखत card: Persist कसे? · PNG download करा · Card page उघडा
मुलाखत card: Docker vs FW?. Surprise. DOCKER chains. Explicit publish.
मुलाखत card: Docker vs FW? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.

सराव Tasks

या scenario बद्दल

Vidarbha Cotton Mills हा नागपूर मधला वस्त्रोद्योग व्यवसाय आहे. Ganesh Wankhede त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं iptables

का: List.

काय करायचं: -L list तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं nft

का: List.

काय करायचं: nft list तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं ufw

का: Allow.

काय करायचं: ufw allow तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं firewalld

का: Zones.

काय करायचं: Zones तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं ufw status

का: Check.

काय करायचं: Verbose ufw status command.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं nc probe

का: Test.

काय करायचं: nc -vz 10.0.0.5 22.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Order

का: Order.

काय करायचं: First match तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Permanent

का: Persist.

काय करायचं: Permanent reload तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Timeout

का: Probe.

काय करायचं: Timeout filtered तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Refused

का: Probe.

काय करायचं: Refused closed तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम nft list

का: Check.

काय करायचं: पूर्ण nft ruleset list.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम ufw allow

का: Open.

काय करायचं: ufw ने TCP 8080 allow.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Conflict

का: Conflict.

काय करायचं: Conflict तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड IPv6

का: v6.

काय करायचं: IPv6 check तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Docker

का: Chains.

काय करायचं: Docker chains तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Counters

का: Hits.

काय करायचं: Counters तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.