نیا VPS محفوظ کرنے کے پہلے 10 منٹ
نیا VPS پہلے ہی منٹ سے ہدف بنتا ہے کیونکہ root لاگ ان کھلا ہوتا ہے۔ یہ 10 منٹ کی رن بک یوزر بناتی، SSH keys سیٹ کرتی، root لاگ ان بند کرتی اور فائر وال آن کرتی ہے۔
آپ کے سرور کی سلامتی کا تعارف پہلے 10 منٹ طے کرتے ہیں
ایک بالکل نیا VPS محفوظ نہیں ہوتا۔ جیسے ہی اسے کوئی عوامی IP ملتی ہے، سکینرز لاگ ان ہونے کی کوشش کرتے ہیں، اور ڈیفالٹ امیج انہیں ایک بڑا ہدف دیتی ہے: root اکثر قابل رسائی ہوتا ہے، پاس ورڈ اکثر اجازت دیتے ہیں، کوئی فائر وال نہیں ہوتا، اور کچھ بھی باقاعدہ پیچ نہیں کیا جاتا۔ اچھی بات یہ ہے کہ یہ سب کو بند کرنے میں تقریباً دس منٹ اور چند کمانڈز لگتی ہیں۔ یہ وہ رن بک ہے جو میں ہر نئے سرور پر اس سے پہلے چلاتا ہوں جب میں اس پر کچھ بھی انسٹال کروں۔
اسے ترتیب وار پڑھیں، کیونکہ ہر مرحلہ پچھلے پر مبنی ہے۔ ہر ایک کا اپنا گائیڈ ہے، جس کا لنک آگے چلتے ہوئے دیا گیا ہے۔ یہ صفحہ ایک تیز راستہ ہے جو ان سب کو جوڑتا ہے۔
منٹ 1: سب کچھ اپڈیٹ کریں
اپنے فراہم کنندہ کی دی گئی اسناد کے ساتھ root کے طور پر لاگ ان ہوں، اور کچھ بھی کرنے سے پہلے سسٹم کو مکمل طور پر اپ ڈیٹ کریں:
apt update && apt upgrade -yایک غیر پیچ شدہ سرور آسان ترین ہدف ہوتا ہے، اس لیے یہ سب سے پہلے آتا ہے۔ ایک بار یہ مکمل ہونے پر، خودکار سیکیورٹی اپڈیٹس لگائیں تاکہ یہ آپ کو یاد دلانے کے بغیر پیچ شدہ رہے۔
منٹ 2: sudo کے ساتھ ایک عام یوزر بنائیں
root کے طور پر کام کرنا جاری نہ رکھیں۔ اپنے لیے ایک یوزر بنائیں اور اسے sudo دیں:
adduser matt
usermod -aG sudo mattاب سے آپ اس یوزر کے طور پر لاگ ان ہوتے ہیں اور ایڈمن کاموں کے لیے sudo استعمال کرتے ہیں۔ ہر وقت root کے طور پر چلنا اس بات کا مطلب ہے کہ ہر غلطی اور ہر سمجھوتہ لامحدود طاقت کے ساتھ ہوتا ہے، اور یہی وہ چیز ہے جسے ایک غیر مراعات یافتہ یوزر کے طور پر چلنا روکنے کے لیے بنایا گیا ہے۔
منٹ 4: SSH کلیدز سیٹ اپ کریں
پاس ورڈ کا اندازہ لگایا جا سکتا ہے؛ کلیدز کا نہیں۔ اپنے لیپ ٹاپ پر، اگر آپ کے پاس پہلے سے کوئی کلید نہیں ہے، تو ایک بنائیں:
ssh-keygen -t ed25519پھر عوامی حصے کو سرور پر کاپی کریں:
ssh-copy-id matt@YOUR_SERVERssh-copy-id کے لیے نئے یوزر کا پاس ورڈ لاگ ان آن ہونا ضروری ہے۔ اگر یہ پہلے سے آف ہے، تو root کی ~/.ssh/authorized_keys کو /home/matt/.ssh/authorized_keys میں کاپی کریں (جس کی ملکیت matt کے پاس ہو)، یا اپنی عوامی کلید کو اس فائل میں ہاتھ سے پیسٹ کریں۔
اس مرحلے کے پیچھے کا ماڈل، یعنی ہر ڈیوائس کے لیے ایک کلید، وہ اجازتیں جو کلید لاگ ان کو توڑ دیتی ہیں، اور کھوئی ہوئی کلید کو منسوخ کرنا، SSH کلید مینجمنٹ کی بنیادیات میں بیان کیا گیا ہے۔
کلید کا استعمال کرتے ہوئے matt کے طور پر لاگ آؤٹ کریں اور واپس لاگ ان ہوں، اور اگلا مرحلہ چھونے سے پہلے تصدیق کریں کہ یہ کام کرتا ہے۔ کلید کے ساتھ داخل ہونے سے پہلے SSH کو محفوظ بنانا لوگوں کے خود کو باہر بند کر لینے کا طریقہ ہے۔
منٹ 6: root لاگ ان اور پاس ورڈز بند کریں
اب جبکہ آپ کی کلید کام کر رہی ہے، ان دو دروازوں کو بند کریں جن پر سکینرز انحصار کرتے ہیں۔ ایک ڈراپ ان فائل استعمال کریں تاکہ پیکیج اپ گریڈز اسے اوور رائٹ نہ کریں۔ اس کا نام 00- رکھیں تاکہ یہ 50-cloud-init.conf سے پہلے ترتیب میں آئے، جس کے ساتھ Ubuntu کلاؤڈ امیجز PasswordAuthentication yes شپ کرتے ہیں۔ sshd جو پہلی قدر پڑھتا ہے اسے رکھتا ہے، اس لیے بعد میں ترتیب آنے والی فائل خاموشی سے ہار جائے گی:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noپھر SSH کو ری لوڈ کریں:
sudo systemctl restart sshپھر وہ سیٹنگز چیک کریں جو sshd واقعی استعمال کرتا ہے، تاکہ کوئی ہارنے والی ڈراپ ان فائل آپ کو دھوکہ نہ دے سکے:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'پاس ورڈز بند اور root لاگ ان ختم ہونے کے ساتھ، آپ کے سرور کے خلاف مسلسل بروٹ فورس ٹریفک کامیاب نہیں ہو سکتی۔ مکمل طریقہ کار، بشمول ایک اختیاری پورٹ تبدیلی، VPS پر SSH ہارڈننگ میں ہے۔
منٹ 8: فائر وال آن کریں
ان باند کے لیے ہر چیز کو ڈیفالٹ طور پر ڈینائی کریں، پھر صرف وہ چیزز اجازت دیں جو آپ کو درکار ہیں۔ اسے آن کرنے سے پہلے SSH کی اجازت دیں، ورنہ آپ اپنا کنکشن کاٹ دیں گے:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableکسی بھی ایسی سروس کے لیے allow رولز شامل کریں جو آپ واقعی چلاتے ہیں، جیسے ویب سائٹ کے لیے 80/tcp اور 443/tcp۔ چیک کریں کہ IPv4 اور IPv6 دونوں کوریج میں ہیں، کیونکہ ایک ایسی فائر وال جو صرف IPv4 کو فلٹر کرتی ہے IPv6 سائڈ کو کھلا چھوڑ دیتی ہے۔ مکمل واک تھرو VPS پر فائر والز 101 ہے۔
منٹ 10: Fail2ban کے ساتھ سکینرز کو سست کریں
آخر میں، اپنے پورٹس پر مسلسل حملہ کرنے والے ایڈریسز کو نکالنے کے لیے Fail2ban شامل کریں:
sudo apt install -y fail2banUbuntu 24.04 پر اسٹاک انسٹالیشن پہلے بوٹ سے ہی SSH کی حفاظت کرتی ہے۔ کلیدز کے پہلے سے ضروری ہونے کے ساتھ، یہ ایک بیک اپ تدبیر ہے جو لاگ نوائز کو کم کرتی ہے اور بار بار کرنے والوں کو بلاک کرتی ہے، نہ کہ آپ کی بنیادی دفاع۔
آپ کی چیک لسٹ
یہ وہ رن بک ہے۔ ہر کنٹرول کو ٹک کرنے اور سرور کے ساتھ رکھنے کے لیے ایک ذاتی چیک لسٹ بنانے کے لیے نیچے دیے گئے جنریٹر کا استعمال کریں، جس میں ہر مرحلے کی عین کمانڈ شامل ہو:
ہر نئے سرور پر اسے ایک بار مکمل کریں اور یہ پوری چیز عضلاتی یاد بن جائے گی۔ اب دس منٹ آپ کو وہ بہت برا بعد دوپہر بچا لیں گے جو سرور کے ہیک ہو جانے کے بعد آتا ہے۔
ایک بار بنیادی باتیں ہو جانے پر، Ubuntu پر خودکار سیکیورٹی اپڈیٹس آپ کے واپس لاگ ان کیے بغیر سرور کو اپ ڈیٹ رکھتی ہیں۔
FAQ
ایک نئے VPS پر سب سے پہلے کیا کروں؟
apt update && apt upgrade -y کے ساتھ سسٹم اپڈیٹ کریں، پھر sudo کے ساتھ ایک عام یوزر بنائیں اور root کے طور پر کام کرنا چھوڑ دیں۔ وہاں سے، SSH کلیدز سیٹ اپ کریں، root لاگ ان اور پاس ورڈ توثیق غیر فعال کریں، ایک ڈیفالٹ ڈینائی فائر وال آن کریں، اور Fail2ban انسٹال کریں۔ اس ترتیب میں ان کو کرنے کا مطلب ہے کہ ہر مرحلہ خود کو باہر بند کیے بغیر محفوظ ہے۔
SSH کو ہارڈن کرتے ہوئے خود کو باہر بند ہونے سے کیسے بچوں؟
پاس ورڈز یا root کو غیر فعال کرنے سے پہلے اپنا SSH کلید لاگ ان سیٹ اپ کریں اور ٹیسٹ کریں۔ کلید کے ساتھ لاگ آؤٹ اور واپس لاگ ان ہوں تاکہ تصدیق ہو کہ یہ کام کرتا ہے، اور تب ہی PasswordAuthentication اور PermitRootLogin کو آف کریں۔ جب آپ فائر وال آن کریں، تو ufw enable چلانے سے پہلے پورٹ 22 کی اجازت دیں۔ اگر آپ واقعی باہر بند ہو جاتے ہیں، تو آپ کے فراہم کنندہ کا ویب کنسول آپ کو SSH کے بغیر واپس اندر لے آئے گا۔
کیا مجھے ایک چھوٹے سرور پر ان سب کی واقعی ضرورت ہے؟
ہاں، کیونکہ سکینرز کو اس بات سے کوئی فرق نہیں پڑتا کہ آپ کا سرور کتنا چھوٹا ہے۔ وہ ہر عوامی IP کو ایک ہی طرح آزما کرتے ہیں۔ پوری رن بک میں تقریباً دس منٹ لگتے ہیں اور یہ آسان راستے ختم کر دیتی ہے: کوئی root لاگ ان نہیں، کوئی پاس ورڈ اندازہ نہیں، کوئی ایسی چیز ظاہر نہیں جسے آپ نے نہ چنا ہو، اور معروف بگز خودکار پیچ ہو جاتی ہیں۔
سب سے اہم مرحلہ کون سا ہے؟
صرف کلید والا SSH، root لاگ ان کے غیر فعال ہونے کے ساتھ۔ ایک نئے VPS پر زیادہ تر حملے root کے خلاف خودکار پاس ورڈ اندازے ہوتے ہیں، اور دونوں کو آف کرنا اس پوری قسم کے حملے کو ناممکن بنا دیتا ہے۔ فائر وال اور Fail2ban پھر ظاہر ہونے والی چیز کو محدود کرتے ہیں اور جو کچھ بچے اسے سست کرتے ہیں۔
میں کیسے تصدیق کروں کہ سرور واقعی محفوظ ہو گیا ہے؟
اس پر بھروسہ کرنے سے پہلے تین چیزیں ہاتھ سے چیک کریں۔ sudo ss -tlnp چلائیں اور تصدیق کریں کہ صرف وہ پورٹس جنہیں آپ کھولنا چاہتے تھے ایک عوامی ایڈریس پر لسن کر رہی ہیں، اور کوئی ایسا 0.0.0.0 یا [::] سروس نہیں ہے جسے آپ بھول گئے تھے۔ sudo ufw status verbose چلائیں اور تصدیق کریں کہ ڈیفالٹ انکمنگ پالیسی deny ہے اور کہ پلین اور (v6) دونوں رولز موجود ہیں۔ اور ہمیشہ پہلے والی بند کرنے سے پہلے دوسرا SSH سیشن کھولیں، تاکہ SSH کنفیگریشن میں کوئی غلطی آپ کو سرور سے باہر نہ بند کر دے۔ اگر تینوں ٹھیک نظر آئیں، تو بنیادی باتیں ہو گئی ہیں۔