VPS پر UFW فائر وال کیسے سیٹ اپ کریں
VPS سیکیورٹی کے لیے UFW کا استعمال سیکھیں۔ ڈیفالٹ پالیسی سیٹ کرنے، مخصوص پورٹس کھولنے اور SSH کنکشن منقطع ہونے سے بچتے ہوئے فائر وال کو فعال کرنے کا مکمل طریقہ یہاں موجود ہے۔
UFW کیا ہے اور آپ کو اس کی ضرورت کیوں ہے
UFW کا مطلب Uncomplicated Firewall ہے، اور یہ نام حقیقت کے عین مطابق ہے۔ یہ Linux kernel میں پہلے سے موجود فائر وال کے لیے ایک دوستانہ فرنٹ اینڈ ہے، لہذا خام رولز لکھنے کے بجائے آپ ufw allow 22/tcp جیسے مختصر کمانڈز ٹائپ کرتے ہیں۔ ایک نئے VPS پر ہر listening سروس بائی ڈیفالٹ انٹرنیٹ سے قابل رسائی ہوتی ہے۔ ایک فائر وال اس صورتحال کو بدل دیتی ہے: آپ ہر چیز کو deny کرتے ہیں، اور پھر صرف ان چند پورٹس کو allow کرتے ہیں جنہیں آپ درحقیقت استعمال کرتے ہیں۔ یہ واحد تبدیلی تقریباً 4 کمانڈز میں آپ کے زیادہ تر خطرات کو ختم کر دیتی ہے۔
اسے استعمال کرنے سے پہلے، یہ جان لیں کہ کون سی سروسز listening حالت میں ہیں، کیونکہ فائر وال انہی سروسز کے بارے میں فیصلہ کرتی ہے۔ ss -tlnp کے ساتھ یہ دیکھنا کہ کیا listening حالت میں ہے پہلا درست قدم ہے۔
وہ ایک اصول جو آپ کو خود کو باہر نکالنے سے روکتا ہے
یہ وہ غلطی ہے جو لوگوں کو فائر والز سے دور رکھتی ہے۔ آپ default-deny پالیسی کے ساتھ UFW کو فعال کرتے ہیں، لیکن آپ نے کبھی SSH کی اجازت نہیں دی ہوتی، لہذا جیسے ہی فائر وال آن ہوتی ہے آپ کا اپنا کنکشن منقطع ہو جاتا ہے اور آپ دوبارہ اندر نہیں جا سکتے۔ اس سے بچنے کے لیے UFW کو فعال کرنے سے پہلے ہمیشہ SSH کی اجازت دیں۔ یہ مکمل ترکیب ہے، اور نیچے دیے گئے اقدامات اسے محفوظ ترتیب میں مکمل کرتے ہیں۔
اگر آپ کے ساتھ پھر بھی ایسا ہو جائے، تو آپ پھنسے نہیں ہیں: آپ کے فراہم کنندہ کا ویب کنسول، VNC یا سیریل کے ذریعے، SSH سے نہیں گزرتا، لہذا آپ وہاں لاگ ان کر سکتے ہیں اور ufw disable چلا سکتے ہیں یا گمشدہ اصول شامل کر سکتے ہیں۔
مرحلہ 1: ڈیفالٹ پالیسیاں سیٹ کریں
ابتدا میں UFW کو ہدایت دیں کہ وہ آنے والی تمام ٹریفک کو مسترد (deny) کرے اور باہر جانے والی تمام ٹریفک کی اجازت (allow) دے:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming اس کا اہم حصہ ہے۔ اس کا مطلب یہ ہے کہ کوئی بھی پورٹ جس کے لیے واضح طور پر اجازت کا اصول موجود نہیں ہے، وہ باہر کی دنیا کے لیے بند رہے گی، چاہے کوئی سروس اس پر لسن (listen) ہی کیوں نہ کر رہی ہو۔ allow outgoing آپ کے سرور کو اپ ڈیٹس اور اسی طرح کے دیگر کاموں کے لیے معمول کے مطابق انٹرنیٹ تک رسائی کی سہولت دیتا ہے۔ یہ دونوں کمانڈز صرف پالیسی تبدیل کرتی ہیں؛ جب تک آپ مرحلہ 3 میں UFW کو فعال (enable) نہیں کرتے، تب تک کچھ بھی نافذ نہیں ہوگا۔
مرحلہ 2: صرف ان پورٹس کی اجازت دیں جن کی آپ کو ضرورت ہے
فائر وال کو فعال کرنے سے پہلے، SSH کو کھولیں تاکہ آپ کا کنکشن برقرار رہے:
sudo ufw allow 22/tcpUFW آپ کے لیے SSH پر ریٹ لمیٹنگ (rate-limit) بھی لگا سکتا ہے: sudo ufw limit 22/tcp پورٹ کی اجازت دیتا ہے لیکن کسی بھی ایسے ایڈریس کو بلاک کر دیتا ہے جو 30 سیکنڈ میں 6 یا اس سے زیادہ کنکشن بنانے کی کوشش کرے، یہ اضافی سافٹ ویئر کے بغیر بروٹ فورس اسکرپٹس کو ناکام بناتا ہے۔
اگر آپ ویب سرور چلا رہے ہیں، تو HTTP اور HTTPS کی بھی اجازت دیں:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpصرف ان چیزوں کی اجازت دیں جو آپ عوامی سطح پر فراہم کرتے ہیں۔ Postgres جیسا ڈیٹا بیس جو پورٹ 5432 پر ہو، اس کے لیے تقریباً کبھی بھی اجازت کا اصول (allow rule) نہیں ہونا چاہیے۔ اس کے بجائے اسے 127.0.0.1 پر بائنڈ (bind) کریں تاکہ یہ صرف اسی مشین پر قابل رسائی ہو۔ ہر وہ پورٹ جسے آپ کھولتے ہیں وہ ایک ایسا دروازہ ہے جس کا اب آپ کو دفاع کرنا ہے، لہذا فہرست کو مختصر رکھیں۔
آپ یہاں اپنے سرور کے لیے ufw کمانڈز کی مکمل ترتیب بھی بنا سکتے ہیں، اور پھر انہیں ترتیب وار چلا سکتے ہیں:
مرحلہ 3: فعال کریں، اور تصدیق کریں کہ یہ آن ہے
sudo ufw enableیہ انتباہ دیتا ہے کہ یہ کمانڈ موجودہ SSH کنکشنز میں خلل ڈال سکتی ہے۔ چونکہ آپ نے مرحلہ 2 میں 22/tcp کی اجازت دی تھی، اس لیے آپ کا سیشن برقرار رہے گا۔ نتیجے کی تصدیق کریں:
sudo ufw status verboseStatus: 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 تک محدود رکھنے کا ایک اچھا طریقہ ہے:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpیہ طریقہ اس وقت ناکام ہو جاتا ہے جب آپ کا اپنا IP address تبدیل ہو جائے یا متعدد مشینوں کو رسائی درکار ہو۔ عام حل یہ ہے کہ port کو public طور پر کھولنا ہی بند کر دیں اور اس کے بجائے private network کے ذریعے service تک پہنچیں۔ اسی مقصد کے لیے server کے private subnet کو اپنے tailnet میں advertise کرنا استعمال ہوتا ہے۔
فائر وال ایک تہہ ہے۔ یہ کنٹرول کرتی ہے کہ کون سی چیز پورٹ تک پہنچ سکتی ہے، لیکن یہ کسی ایسے شخص کی رفتار کو کم نہیں کرتی جو آپ کی کھلی چھوڑی ہوئی پورٹ، جیسے کہ SSH، پر مسلسل حملہ کر رہا ہو۔ اس کے لیے، SSH کے سامنے Fail2ban شامل کریں تاکہ بار بار حملہ کرنے والوں کو بین کیا جا سکے۔ دفاعی گہرائی (Defence in depth) کا مطلب ہے کہ ہر تہہ ان چیزوں کا احاطہ کرتی ہے جنہیں دوسری تہیں نہیں کر سکتیں۔
فائر وال تبھی کارآمد ہوتی ہے جب آپ پورٹس کیا ہیں اور سروسز کیسے لسن کرتی ہیں کو سمجھ لیں، اور اسے کنفیگر کرنا نئے VPS پر پہلے 10 منٹ کے اقدامات میں سے ایک ہے۔
FAQ
کیا UFW کو فعال کرنے سے میرا SSH سیشن منقطع ہو جائے گا؟
اگر آپ پہلے SSH کی اجازت دے دیں تو ایسا نہیں ہوگا۔ sudo ufw allow 22/tcp کو sudo ufw enable سے پہلے چلائیں، اور آپ کا کنکشن برقرار رہے گا کیونکہ فائر وال اب پورٹ 22 کی اجازت دیتی ہے۔ خطرہ اس وقت ہوتا ہے جب آپ SSH کی اجازت کے اصول کے بغیر ڈیفالٹ ڈینائی (default-deny) فائر وال کو فعال کرتے ہیں، جو آپ کا رابطہ منقطع کر دیتا ہے۔ اگر ایسا ہو جائے تو، اپنے پرووائیڈر کے VNC یا سیریل کنسول کے ذریعے لاگ ان کریں اور ufw disable چلائیں۔
مجھے VPS پر کون سی پورٹس کھولنی چاہئیں؟
صرف وہی پورٹس کھولیں جنہیں آپ عوامی استعمال کے لیے پیش کرتے ہیں۔ SSH (22/tcp) تاکہ آپ سرور کا انتظام کر سکیں، اور HTTP اور HTTPS (80/tcp، 443/tcp) اگر آپ ویب سائٹ چلا رہے ہیں۔ باقی تمام پورٹس کو ڈینائی (denied) رہنے دیں۔ اندرونی سروسز جیسے کہ ڈیٹا بیس کو 127.0.0.1 پر بائنڈ ہونا چاہیے اور ان کے لیے کوئی فائر وال رول نہیں ہونا چاہیے، تاکہ وہ نیٹ ورک سے کبھی بھی قابل رسائی نہ ہوں۔
کیا UFW IPv6 کو ہینڈل کرتا ہے؟
جدید Ubuntu پر، جی ہاں: /etc/default/ufw میں IPV6=yes سیٹ ہوتا ہے، لہذا ہر اصول دونوں اسٹیکس پر لاگو ہوتا ہے اور ufw status، IPv6 کے اصولوں کو (v6) لاحقہ کے ساتھ دکھاتا ہے۔ جن طریقوں سے یہ اب بھی غلط ہو سکتا ہے، ان کا احاطہ IPv6 فائر وال کے جال میں کیا گیا ہے۔
میں UFW رول کو کیسے ہٹا سکتا ہوں؟
اصولوں کو انڈیکس نمبرز کے ساتھ دیکھنے کے لیے sudo ufw status numbered چلائیں، پھر sudo ufw delete N چلائیں جہاں N اس اصول کا نمبر ہے جسے آپ ہٹانا چاہتے ہیں۔ آپ تفصیلات کے مطابق بھی حذف کر سکتے ہیں، مثال کے طور پر sudo ufw delete allow 80/tcp۔
میں صرف ایک IP ایڈریس سے پورٹ کی اجازت کیسے دوں؟
سادہ allow کے بجائے from رول کا استعمال کریں۔ صرف اپنے دفتر کے ایڈریس کو PostgreSQL تک رسائی دینے کے لیے، sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp چلائیں۔ ڈیفالٹ ڈینائی پالیسی کے ساتھ پورٹ ہر کسی کے لیے بند رہتی ہے جب تک کہ کوئی اصول اسے نہ کھول دے، لہذا یہ from رول ہی اندر جانے کا واحد طریقہ ہے: پورا انٹرنیٹ بلاک رہتا ہے اور صرف آپ کا نامزد کردہ ایڈریس ہی رسائی حاصل کر سکتا ہے۔ اس کے ساتھ کوئی سادہ allow 5432/tcp شامل نہ کریں، جو پورٹ کو ہر کسی کے لیے کھول دے گا۔ ڈیٹا بیس یا ایڈمن پینل کو ظاہر کرنے کا یہ سب سے محفوظ طریقہ ہے۔ اس کی تصدیق sudo ufw status verbose سے کریں، جو پورٹ کے ساتھ سورس ایڈریس کو ظاہر کرتا ہے۔