ufw फ़ायरवॉल: जो ज़रूरी नहीं उसे बंद करें
पाँच मिनट में ufw कैसे सेट करें: ज़रूरी पोर्ट खोलें, बाक़ी बंद करें, पते के अनुसार पहुँच सीमित करें, और अपना SSH कटने से बचाएँ।
23 अगस्त 2026 को अपडेट किया गया
नई मशीन पर नेटवर्क पर जो कुछ भी सुनता है, वह खुला रहता है। कुछ सेवाएँ आपने जानबूझकर इंस्टॉल की हैं, कुछ पैकेजों के साथ आई हैं। फ़ायरवॉल इसे एक ही बार में हल कर देता है: जो आप लिस्ट करते हैं उसके अलावा सब कुछ ब्लॉक रहता है।
ufw कर्नेल नियमों के ऊपर एक सरल रैपर है। ज़्यादातर मामलों में यह काफ़ी है; ज़्यादा जटिल सेटअप के लिए nftables वाला लेख देखें।
बेसिक सेटअप
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status verbose
यहाँ क्रम मायने रखता है: SSH नियम चालू करने से पहले जोड़ा जाता है। वरना ufw enable आपका कनेक्शन काट देगा, और आपको पैनल /hosting/vds/m/<id> के कंसोल या रेस्क्यू मोड से वापस अंदर आना पड़ेगा।
पैनल का कंसोल नेटवर्क से स्वतंत्र रूप से काम करता है, इसलिए आप खुद को पूरी तरह बाहर नहीं कर सकते — लेकिन इसमें समय लगता है।
आम नियम
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw limit 22/tcp
ufw delete allow 80/tcp
ufw status numbered
ufw delete 3
ufw limit उन सभी को धीमा कर देता है जो 30 सेकंड में छह से ज़्यादा कनेक्शन खोलते हैं — पासवर्ड ब्रूट-फ़ोर्सिंग के खिलाफ़ सस्ती सुरक्षा। इसी काम के लिए एक ज़्यादा बारीक टूल है fail2ban।
allow from नियम उन सेवाओं के लिए उपयोगी है जो सार्वजनिक नहीं होनी चाहिए: डेटाबेस, एडमिन पैनल, मेट्रिक्स एक्सपोर्टर।
ufw allow from 203.0.113.5 to any port 5432 proto tcp
नतीजा जाँचें
ufw status verbose
ss -tulpn
ss दिखाता है कि सिस्टम किस पर सुन रहा है, ufw status दिखाता है कि बाहर से किसे अंदर आने दिया गया है। दोनों लिस्टों का अंतर वे सेवाएँ हैं जिन्हें आपने बंद कर दिया है, और यह ठीक है। उल्टा खराब है: ufw में कोई पोर्ट खुला है, लेकिन उस पर कोई लिसनर नहीं है।
बाहर से पिंग से नहीं, पोर्ट से जाँचें:
nc -vz <address> 443
Docker और ufw
अगर मशीन पर Docker चल रहा है, तो ध्यान रखें: कंटेनर पोर्ट फ़ॉरवर्डिंग ufw नियमों से पहले कर्नेल चेन में होती है। -p 5432:5432 के साथ शुरू किया गया कंटेनर बाहर से पहुँचने योग्य रहेगा, भले ही ufw status में deny दिखे। ऐसे पोर्ट को लोकल इंटरफ़ेस पर बाइंड करें:
docker run -p 127.0.0.1:5432:5432 postgres
आम गलतियाँ
| गलती | नतीजा | समाधान |
|---|---|---|
SSH नियम के बिना ufw enable | नेटवर्क एक्सेस का नुकसान | पैनल कंसोल से अंदर आएँ, ufw allow 22/tcp |
| SSH पोर्ट बदला, पुराना नियम छोड़ दिया | वही बात | पहले नियम, फिर पोर्ट |
| पोर्ट खुला है, सेवा जवाब नहीं देती | सेवा 127.0.0.1 पर सुन रही है | बाइंड एड्रेस बदलें |
| deny के बावजूद कंटेनर पहुँचने योग्य है | Docker ufw को बायपास करता है | 127.0.0.1 पर बाइंड करें |
कोई पोर्ट बंद करने से पहले
ss -tulpnचलाएँ और पक्का करें कि आप समझते हैं कि उस पर क्या बैठा है। बाद में बंद किया गया मॉनिटरिंग पोर्ट "सेवा डाउन हो गई" जैसा दिखता है।