SSD Nodes Learn
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-07-24

UFW firewall setup kaise karein VPS ke liye

UFW ka upyog karke apne VPS ko secure karein. SSH access lock hone se bachne ke liye sahi default-deny policy aur port rules set karne ka sahi tarika seekhein.

UFW क्या है और आपको इसकी आवश्यकता क्यों है

UFW का अर्थ Uncomplicated Firewall है, और यह नाम बिल्कुल सही है। यह Linux kernel में पहले से मौजूद firewall के लिए एक सरल front end है। इसके कारण आपको raw rules लिखने के बजाय ufw allow 22/tcp जैसे छोटे commands टाइप करने होते हैं। एक नए VPS पर, default रूप से हर listening service internet से reachable होती है। Firewall इस स्थिति को बदल देता है: आप पहले सब कुछ deny कर देते हैं, फिर केवल उन्हीं ports को allow करते हैं जिनका आप वास्तव में उपयोग करते हैं। लगभग चार commands के साथ यह बदलाव आपकी exposure को काफी कम कर देता है।

इसका उपयोग करने से पहले, यह जान लें कि कौन सी services listening पर हैं, क्योंकि firewall इन्हीं services के बारे में निर्णय लेता है। ss -tlnp के साथ क्या listening पर है उसे पढ़ना सही पहला कदम है।

वह एक नियम जो आपको खुद को लॉक होने से बचाता है

यहाँ वह गलती है जिससे लोग firewalls से डरते हैं। आप default-deny policy के साथ UFW को enable करते हैं, लेकिन आपने SSH को allow नहीं किया होता है। इसके परिणामस्वरूप, जैसे ही firewall चालू होता है, आपका अपना connection कट जाता है और आप वापस login नहीं कर पाते। इससे बचने के लिए, UFW को enable करने से पहले हमेशा SSH को allow करें। यही मुख्य तरीका है, और नीचे दिए गए steps इसे सुरक्षित क्रम में करते हैं।

यदि ऐसा आपके साथ हो जाता है, तो आप फँसे नहीं हैं: आपके provider का web console, VNC या serial के माध्यम से, SSH का उपयोग नहीं करता है। इसलिए आप वहाँ login कर सकते हैं और ufw disable चला सकते हैं या missing rule जोड़ सकते हैं।

Step 1: Default policies सेट करें

सबसे पहले UFW को सभी incoming traffic को deny करने और सभी outgoing traffic को allow करने के लिए configure करें:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming सबसे महत्वपूर्ण हिस्सा है। इसका अर्थ है कि यदि किसी port के लिए कोई explicit allow rule नहीं है, तो वह बाहर से बंद रहेगा, भले ही उस पर कोई service चल रही हो। allow outgoing आपके server को updates और अन्य कार्यों के लिए internet से सामान्य रूप से जुड़ने की अनुमति देता है। ये दोनों commands केवल policy बदलते हैं; step 3 में UFW को enable करने तक कोई भी नियम लागू नहीं होगा।

Step 2: केवल आवश्यक ports को allow करें

Enable करने से पहले, SSH को open रखें ताकि आपका connection बना रहे:

sudo ufw allow 22/tcp

UFW आपके लिए SSH पर rate-limit भी लगा सकता है: sudo ufw limit 22/tcp port को allow करता है, लेकिन किसी भी address को block कर देता है जो thirty seconds में six या उससे अधिक connections बनाता है। यह बिना किसी extra software के brute-force scripts को रोकता है।

यदि आप web server चला रहे हैं, तो HTTP और HTTPS को भी allow करें:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

केवल वही allow करें जो आप public को serve करते हैं। Port 5432 पर Postgres जैसे database को लगभग कभी भी allow rule नहीं मिलना चाहिए। इसके बजाय इसे 127.0.0.1 पर bind करें ताकि यह केवल उसी machine पर reachable रहे। आपके द्वारा खोला गया हर port एक door है जिसे अब आपको defend करना होगा, इसलिए list को छोटा रखें।

आप अपने server के लिए ufw commands की पूरी sequence यहाँ बना सकते हैं, फिर उन्हें क्रम में चलाएँ:

ToolUFW rule generator

Step 3: Enable करें, और पुष्टि करें कि यह चालू है

sudo ufw enable

यह चेतावनी देता है कि इस command से मौजूदा SSH connections बाधित हो सकते हैं। चूंकि आपने step 2 में 22/tcp को अनुमति दी थी, इसलिए आपका session बना रहेगा। परिणाम की पुष्टि करें:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

यहाँ दो चीजें पढ़ें। Status: active का अर्थ है कि firewall चल रहा है। और प्रत्येक rule दो बार दिखाई देता है: एक बार plain और एक बार (v6) के साथ, जो बताता है कि UFW, IPv4 के साथ-साथ IPv6 को भी cover कर रहा है। यदि (v6) lines गायब हैं, तो आपका IPv6 side unmanaged है, जिसके बारे में IPv6 firewall post में विस्तार से बताया गया है।

बाद में rules को मैनेज करना

किसी rule को हटाने के लिए, उसे नंबर के साथ देखने के लिए:

sudo ufw status numbered
sudo ufw delete 3

किसी port को केवल एक address से allow करने के लिए, जो admin service को केवल अपने IP तक सीमित रखने का एक अच्छा तरीका है:

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Firewall केवल एक layer है। यह नियंत्रित करता है कि कौन सा traffic किसी port तक पहुँच सकता है, लेकिन यह SSH जैसे खुले port पर होने वाले हमलों (hammering) को धीमा नहीं करता है। इसके लिए, बार-बार हमला करने वालों को ban करने हेतु Fail2ban in front of SSH का उपयोग करें। Defence in depth का अर्थ है कि प्रत्येक layer उन कमियों को पूरा करती है जिन्हें अन्य layers नहीं कर सकतीं।

Firewall का उपयोग तभी सार्थक है जब आप ports क्या होते हैं और services कैसे listen करती हैं यह जान लें, और इसे configure करना the first 10 minutes on a new VPS का एक हिस्सा है।

FAQ

क्या UFW enable करने से मेरा SSH session disconnect हो जाएगा?

यदि आप पहले SSH allow करते हैं, तो नहीं। sudo ufw enable से पहले sudo ufw allow 22/tcp चलाएँ। आपका connection बना रहेगा क्योंकि firewall अब port 22 को अनुमति देता है। खतरा तब होता है जब आप SSH allow rule के बिना default-deny firewall enable करते हैं, जिससे आप disconnect हो जाते हैं। यदि ऐसा होता है, तो अपने provider के VNC या serial console के माध्यम से log in करें और ufw disable चलाएँ।

मुझे VPS पर कौन से ports open करने चाहिए?

केवल वही ports जिन्हें आप public को serve करते हैं। SSH (22/tcp) ताकि आप box को manage कर सकें, और यदि आप website चलाते हैं तो HTTP और HTTPS (80/tcp, 443/tcp)। बाकी सभी को deny रहने दें। Databases जैसे internal services को 127.0.0.1 पर bind होना चाहिए और उनके लिए कोई firewall rule नहीं होना चाहिए, ताकि वे network से कभी reachable न हों।

क्या UFW, IPv6 को handle करता है?

Modern Ubuntu में, हाँ: /etc/default/ufw में IPV6=yes set है, इसलिए प्रत्येक rule दोनों stacks पर लागू होता है और (v6) suffix के साथ ufw status IPv6 rules दिखाता है। इसके गलत होने के तरीके IPv6 firewall trap में दिए गए हैं।

मैं UFW rule कैसे हटा सकता हूँ?

Index numbers के साथ rules की list देखने के लिए sudo ufw status numbered चलाएँ, फिर sudo ufw delete N चलाएँ जहाँ N उस rule का number है जिसे आप हटाना चाहते हैं। आप specification द्वारा भी delete कर सकते हैं, उदाहरण के लिए sudo ufw delete allow 80/tcp

मैं किसी port को केवल एक IP address से allow कैसे करूँ?

साधारण allow के बजाय from rule का उपयोग करें। केवल अपने office address को PostgreSQL तक पहुँचने देने के लिए, sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp चलाएँ। Default-deny policy के साथ, port सभी के लिए बंद रहता है जब तक कि कोई rule उसे open न कर दे, इसलिए यह from rule ही एकमात्र तरीका है: पूरा internet blocked रहता है और केवल आपके द्वारा बताया गया address ही पहुँच पाता है। इसके साथ साधारण allow 5432/tcp न जोड़ें, क्योंकि वह port को सभी के लिए open कर देगा। Database या admin panel को expose करने का यह सबसे सुरक्षित तरीका है। sudo ufw status verbose से इसकी पुष्टि करें, जो port के साथ source address दिखाता है।