SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-27

VPS पर UFW Firewall कैसे सेटअप करें

VPS को सुरक्षित करने के लिए UFW का उपयोग करें। SSH लॉक-आउट से बचने के लिए सही कमांड्स सीखें, डिफॉल्ट-डिनाय पॉलिसी लागू करें और केवल आवश्यक पोर्ट्स को ही ओपन रखने का तरीका जानें।

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

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

इसे छूने से पहले, यह जानें कि कौन सी services listen कर रही हैं, क्योंकि firewall इन्हीं services के भाग्य का फैसला करता है। ss -tlnp के साथ यह पढ़ना कि क्या listen कर रहा है पहला सही कदम है।

वह एक नियम जो आपको लॉक-आउट होने से बचाता है

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

यदि आपके साथ ऐसा हो भी जाए, तो आप फंसेंगे नहीं: आपके provider का web console, VNC या serial के माध्यम से, SSH से होकर नहीं जाता है। इसलिए आप वहां login कर सकते हैं और ufw disable चला सकते हैं या छूटा हुआ rule जोड़ सकते हैं। firewall lockout का एक स्पष्ट लक्षण भी होता है, क्योंकि एक dropped packet आपके SSH client को तब तक लटकाए रखता है जब तक कि वह time out न हो जाए, जबकि एक बंद SSH daemon connection को तुरंत अस्वीकार (refuse) कर देता है, जो कि connection refused और connection timed out के बीच का अंतर है।

चरण 1: डिफ़ॉल्ट नीतियां सेट करें

सबसे पहले UFW को निर्देश दें कि वह आने वाले सभी ट्रैफ़िक को अस्वीकार (deny) करे और बाहर जाने वाले सभी ट्रैफ़िक को अनुमति (allow) दे:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming इसका महत्वपूर्ण हिस्सा है। इसका अर्थ है कि जिस पोर्ट के लिए कोई स्पष्ट अनुमति नियम नहीं है, वह बाहरी दुनिया के लिए बंद रहेगा, भले ही कोई सर्विस उस पर लिसन (listen) कर रही हो। allow outgoing आपके सर्वर को अपडेट और अन्य कार्यों के लिए सामान्य रूप से इंटरनेट तक पहुँचने की अनुमति देता है। ये दोनों कमांड केवल नीति बदलते हैं; जब तक आप चरण 3 में UFW को इनेबल नहीं करते, तब तक कुछ भी लागू नहीं होता है।

चरण 2: केवल आवश्यक ports को अनुमति दें

Firewall enable करने से पहले SSH को open करें ताकि आपका connection बना रहे:

sudo ufw allow 22/tcp

UFW आपके लिए SSH पर rate-limit भी लगा सकता है: sudo ufw limit 22/tcp इस port को अनुमति देता है, लेकिन उन सभी addresses को block कर देता है जो 30 सेकंड में 6 या उससे अधिक बार connect करने का प्रयास करते हैं। यह बिना किसी अतिरिक्त software के brute-force scripts को रोकने में प्रभावी है।

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

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

केवल उन्हीं services को अनुमति दें जिन्हें आप public करना चाहते हैं। Postgres जैसे database को port 5432 पर कभी भी allow rule नहीं देना चाहिए। इसके बजाय इसे 127.0.0.1 पर bind करें ताकि यह केवल उसी machine से access किया जा सके। आपके द्वारा खोला गया प्रत्येक port एक ऐसा द्वार है जिसकी सुरक्षा अब आपको करनी है, इसलिए सूची को छोटा रखें।

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

ToolUFW rule generator

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

sudo ufw enable

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

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 का अर्थ है कि फायरवॉल चल रहा है। और प्रत्येक नियम दो बार दिखाई देता है, एक बार सामान्य रूप से और एक बार (v6) के साथ, जो आपको बताता है कि UFW IPv4 के साथ-साथ IPv6 को भी कवर कर रहा है। यदि (v6) लाइनें गायब हैं, तो आपका IPv6 पक्ष अनमैनेज्ड है, जो अपने आप में एक समस्या है जिसे IPv6 फायरवॉल पोस्ट में कवर किया गया है।

नियमों का प्रबंधन

नियमों को नंबर के साथ देखने के लिए ताकि आप किसी एक को हटा सकें:

sudo ufw status numbered
sudo ufw delete 3

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

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

अपना address बदलने पर या कई machines को access देने की जरूरत होने पर यह तरीका काम नहीं करता। सामान्य समाधान यह है कि port को public रूप से खोलना ही बंद कर दें और इसके बजाय private network के माध्यम से service तक पहुंचें। इसी उद्देश्य के लिए server के private subnet को अपने tailnet में advertise करना उपयोगी है।

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

Firewall तभी प्रभावी होती है जब आप जानते हों कि ports क्या हैं और services कैसे listen करती हैं, और इसे कॉन्फ़िगर करना नए VPS पर शुरुआती 10 मिनट के कार्यों में से एक महत्वपूर्ण चरण है।

FAQ

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

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

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

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

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

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

मैं UFW rule को कैसे हटाऊं?

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

मैं केवल एक IP address से port को कैसे 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 उसे खोल न दे, इसलिए यह from rule ही अंदर आने का एकमात्र तरीका है: पूरा internet blocked रहता है और केवल आपके द्वारा निर्दिष्ट address ही अंदर आ पाता है। इसके साथ कोई साधारण allow 5432/tcp न जोड़ें, जो port को सभी के लिए खोल देगा। database या admin panel को expose करने का यह सबसे सुरक्षित तरीका है। इसे sudo ufw status verbose के साथ confirm करें, जो port के बगल में source address दिखाता है।