जब कोई समझौता किया गया स्क्रिप्ट या गलत कॉन्फ़िगर की गई एप्लिकेशन 10.x या 192.168.x पतों को टटोलना शुरू करती है, तो वह ट्रैफ़िक आपके सर्वर से निकलता है और अक्सर नेटवर्क की ओर से एब्यूज़ रिपोर्ट का कारण बनता है। प्राइवेट रेंज की ओर आउटबाउंड कनेक्शन ब्लॉक करना किसी भी VPS Linux Infrawire पर एक सरल सुरक्षा उपाय है। यह गाइड दिखाती है कि UFW से यह कैसे करें, बिना DNS या अपने कनेक्शन को तोड़े।
📋 पूर्वापेक्षाएँ
- Ubuntu 24.04 या Debian 12 पर root SSH एक्सेस वाला VPS (UFW दोनों पर उपलब्ध है)।
- UFW की बुनियादी जानकारी। यदि अभी इंस्टॉल नहीं है:
Bashsudo apt update && sudo apt install -y ufw
- फ़ायरवॉल बदलते समय खुला रखा गया दूसरा SSH सत्र।
🧭 कौन सी रेंज ब्लॉक करें
| रेंज | उपयोग |
|---|---|
10.0.0.0/8 | RFC1918 प्राइवेट |
172.16.0.0/12 | RFC1918 प्राइवेट |
192.168.0.0/16 | RFC1918 प्राइवेट |
100.64.0.0/10 | कैरियर-ग्रेड NAT (RFC6598) |
169.254.0.0/16 | IPv4 लिंक-लोकल |
192.0.0.0/24 | IETF प्रोटोकॉल असाइनमेंट |
198.18.0.0/15 | बेंचमार्किंग |
fc00::/7 | IPv6 यूनिक लोकल पते |
fe80::/10 को ब्लॉक न करें: IPv6 नेबर डिस्कवरी के लिए और अक्सर डिफ़ॉल्ट गेटवे के लिए लिंक-लोकल पते इस्तेमाल करता है, इसलिए इसे ब्लॉक करने से IPv6 पूरी तरह कट जाता है।
🔍 पहले देखें कि आपके VPS को वास्तव में क्या चाहिए
यदि आपका गेटवे या DNS रिज़ॉल्वर किसी प्राइवेट रेंज में है, तो सब कुछ ब्लॉक करने से आपका नेटवर्क कट जाएगा। कोई भी नियम जोड़ने से पहले अपना कॉन्फ़िगरेशन देखें:
Baship route ip -6 route cat /etc/resolv.conf resolvectl status | grep -E 'DNS Servers|Link'
यदि कोई रिज़ॉल्वर या आपकी निर्भर कोई सेवा प्राइवेट पते (PRIVATE_DNS_IP) पर है, तो नीचे दिखाए अनुसार उसे स्पष्ट रूप से अनुमति दें और वह नियम सबसे पहले रखें। यदि आप जो भी इस्तेमाल करते हैं वह सार्वजनिक है, तो यह चरण छोड़ सकते हैं।
🧱 विधि 1: ufw deny out
सुनिश्चित करें कि SSH पहुँच में रहे, फिर डिफ़ॉल्ट नीतियाँ सेट करें। प्राइवेट रेंज पर आउटबाउंड नियम आपके SSH सत्रों के इनबाउंड उत्तरों को प्रभावित नहीं करते।
Bashsudo ufw allow 22/tcp sudo ufw default deny incoming sudo ufw default allow outgoing
यदि अपवाद चाहिए, तो उसे स्थिति 1 पर डालें ताकि वह इनकार वाले नियमों से पहले जाँचा जाए:
Bashsudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53
अब हर रेंज के लिए एक इनकार नियम जोड़ें (UFW नियम क्रम से जाँचे जाते हैं, पहला मेल जीतता है):
Bashsudo ufw deny out to 10.0.0.0/8 sudo ufw deny out to 172.16.0.0/12 sudo ufw deny out to 192.168.0.0/16 sudo ufw deny out to 100.64.0.0/10 sudo ufw deny out to 169.254.0.0/16 sudo ufw deny out to 192.0.0.0/24 sudo ufw deny out to 198.18.0.0/15 sudo ufw deny out to fc00::/7 sudo ufw enable
ufw enable चेतावनी दे सकता है कि यह SSH कनेक्शन बाधित कर सकता है; पोर्ट 22 की अनुमति दी जा चुकी है, इसलिए y उत्तर दें। क्रम इस तरह जाँचें:
Bashsudo ufw status numbered
📄 विधि 2: before.rules
यदि आप यूज़र नियमों से पहले लागू होने वाला एक ही नियम-समूह चाहते हैं, तो /etc/ufw/before.rules संपादित करें। पहले बैकअप लें:
Bashsudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak sudo nano /etc/ufw/before.rules
*filter भाग में, लूपबैक और स्थापित कनेक्शन स्वीकार करने वाली पंक्तियों के बाद, यह जोड़ें:
TEXT1# प्राइवेट नेटवर्क की ओर आउटबाउंड ट्रैफ़िक ब्लॉक करें 2-A ufw-before-output -d 10.0.0.0/8 -j REJECT 3-A ufw-before-output -d 172.16.0.0/12 -j REJECT 4-A ufw-before-output -d 192.168.0.0/16 -j REJECT 5-A ufw-before-output -d 100.64.0.0/10 -j REJECT 6-A ufw-before-output -d 169.254.0.0/16 -j REJECT
IPv6 की अपनी फ़ाइल /etc/ufw/before6.rules है, जिसमें चेन का नाम भी ufw-before-output है:
TEXT-A ufw-before-output -d fc00::/7 -j REJECT
PRIVATE_DNS_IP के लिए अपवाद इन पंक्तियों के ठीक ऊपर -A ufw-before-output -d PRIVATE_DNS_IP -j ACCEPT से जोड़ें। फिर रीलोड करें:
Bashsudo ufw reload
REJECT तुरंत त्रुटि लौटाता है, इसलिए एप्लिकेशन टाइमआउट का इंतज़ार किए बिना जल्दी विफल होती हैं। यदि आप चुप्पी पसंद करते हैं तो -j DROP इस्तेमाल करें।
✅ जाँच
नियम लोड होने चाहिए, ब्लॉक किए गए गंतव्य विफल होने चाहिए, और सार्वजनिक गंतव्य चलते रहने चाहिए:
Bashsudo ufw status verbose ping -c 1 10.0.0.1 # विफल होना चाहिए ping -c 1 192.168.1.1 # विफल होना चाहिए curl -m 5 http://10.0.0.1 # विफल होना चाहिए ping -c 2 1.1.1.1 # सफल होना चाहिए dig +short example.com # रिज़ॉल्व होना चाहिए curl -I https://www.debian.org
ufw deny out के साथ विफल ping आमतौर पर Operation not permitted बताता है। पैकेट काउंटर हिट की पुष्टि करते हैं:
Bashsudo iptables -L ufw-user-output -n -v sudo iptables -L ufw-before-output -n -v
🛠️ समस्या निवारण
DNS चलना बंद हो गया। आपका रिज़ॉल्वर किसी प्राइवेट रेंज में है। sudo ufw status numbered से क्रम हटाएँ या ठीक करें, फिर sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53 जोड़ें। आप नेटवर्क कॉन्फ़िगरेशन में किसी सार्वजनिक रिज़ॉल्वर पर भी जा सकते हैं।
बदलाव के बाद IPv6 टूट गया। संभवतः आपने fe80::/10 या fc00::/7 के भीतर के किसी गेटवे को ब्लॉक कर दिया। नियम को sudo ufw delete deny out to fc00::/7 से हटाएँ और केवल ज़रूरी हिस्सा दोबारा जोड़ें।
प्राइवेट नेटवर्क की किसी सेवा (VPN, आंतरिक API) तक नहीं पहुँच पा रहे। उसी सटीक पते के लिए ufw insert 1 allow out to PRIVATE_IP से अनुमति नियम जोड़ें। यदि SSH ही नहीं पहुँच पा रहा, तो सर्वर तक किसी भी कंसोल एक्सेस का उपयोग करें और sudo ufw disable चलाएँ।
🔒 आपका VPS अब गलती से प्राइवेट नेटवर्क स्कैन नहीं करेगा: इस तरह की एब्यूज़ रिपोर्ट बंद होनी चाहिए।