یہ سوال شاذ و نادر ہی بلاوجہ پیدا ہوتا ہے۔ سرور سست ہو گیا، ہوسٹنگ فراہم کنندہ نے باہر جانے والے ٹریفک کے بارے میں پیغام بھیجا، یا آپ کی میل میں ایسے لاگ اِن کی اطلاع پڑی ہے جو آپ نے کبھی نہیں کیا۔ اس کے بعد ناخوشگوار حصہ آتا ہے: یہ واضح نہیں کہ کہاں دیکھیں اور کس ترتیب سے، اور پہلا ردعمل — سب کچھ مٹا کر نئے سرے سے شروع کرو — تقریباً ہمیشہ قبل از وقت ہوتا ہے۔
نیچے جانچ کی وہ ترتیب ہے جو تقریباً بیس منٹ لیتی ہے اور بیشتر صورتوں میں واضح جواب دیتی ہے۔ یہ سستے سے مہنگے کی طرف بڑھتی ہے: پہلے وہ جو فوراً نظر آتا ہے، پھر وہ جسے کسی معیار سے ملانا پڑتا ہے۔
پہلا مرحلہ: کون داخل ہوا
لاگ اِن سے شروع کریں۔ اگر کوئی اور اندر آیا ہے تو تقریباً یقیناً وہ SSH کے راستے آیا اور نشان چھوڑ گیا ہے۔
last -20
lastb | head -20
who
last حالیہ کامیاب لاگ اِن دکھاتا ہے، lastb ناکام، اور who وہ جو اِس وقت جڑا ہوا ہے۔ اہم تعداد نہیں بلکہ شکل ہے۔ ایسے پتوں سے ہزاروں ناکام کوششیں جو دوبارہ کبھی نہیں آتیں، پاس ورڈ اندازہ لگانے کا عام پس منظر ہیں؛ یہ ہر عوامی پتے کے خلاف بلا توقف چلتا رہتا ہے اور اس کا کوئی مطلب نہیں۔
فکرمند کرنے والی بات اور ہے:
- ایسے پتے سے کامیاب لاگ اِن جہاں آپ کا کوئی فرد موجود نہیں؛
- ایسے صارف نام سے لاگ اِن جو آپ نے کبھی بنایا ہی نہیں؛
- ایسے صارف نام کے خلاف ناکام کوششیں جو اس مشین پر واقعی موجود ہے — یعنی کسی نے جان لیا کہ آپ کے صارفین کون ہیں، لغت آزمانے کے بجائے؛
- ابھی کھلا ہوا ایسا سیشن جو آپ نے نہیں کھولا۔
الگ سے دیکھیں کہ کہیں اجنبی کلیدیں تو نمودار نہیں ہوئیں۔ فائل ~/.ssh/authorized_keys اندر رہنے کا سب سے عام طریقہ ہے: پاس ورڈ جتنی بار چاہیں بدلیں، کلید باقی رہتی ہے۔
cat ~/.ssh/authorized_keys
sudo cat /root/.ssh/authorized_keys
وہاں کی ہر سطر کسی نہ کسی کی رسائی ہے۔ اگر آپ نہیں بتا سکتے کہ کس کی، تو اسے اجنبی سمجھیں۔
دوسرا مرحلہ: نظام میں کیا بدلا
دراندازی تقریباً ہمیشہ ڈسک پر نشان چھوڑتی ہے: بدلی ہوئی قابلِ عمل فائل، ترتیبات میں ایک اضافی سطر، ویب سرور کی ڈائریکٹری میں نئی فائل۔ اسے آنکھ سے جانچنا بے سود ہے — ایک معیار درکار ہے۔
Debian اور Ubuntu پر معیار پہلے سے موجود ہے: ہر پیکج اپنی فائلوں کے چیک سم جانتا ہے۔
sudo apt install debsums
sudo debsums -c
یہ کمانڈ وہ فائلیں دکھاتی ہے جو ڈسٹری بیوشن کی نصب کردہ فائلوں سے مختلف ہیں۔ نتائج کا ایک حصہ جائز ہوگا — /etc میں ترتیبات کی فائلیں اسی لیے موجود ہیں کہ انہیں ترمیم کیا جائے۔ لیکن ایسے سرور پر جسے آپ نے کبھی ہاتھ سے نہیں چھوا، /usr/bin، /usr/sbin یا /bin میں بدلی ہوئی قابلِ عمل فائل بالکل الگ بات ہے۔
دوسرا ذریعہ ایسی جگہوں پر نئی فائلیں ہیں جہاں انہیں نہیں ہونا چاہیے۔ web shell عموماً اپ لوڈ کی ڈائریکٹری میں بیٹھتا ہے اور ایک بے ضرر .php جیسا لگتا ہے:
find /var/www -type f -name '*.php' -mtime -14 -ls
چودہ دن محض ایک نقطۂ آغاز ہیں؛ وہ مدت لیں جس میں آپ جانتے ہیں کہ کچھ شائع نہیں کیا۔
تیسرا مرحلہ: باہر کیا جا رہا ہے
سمجھوتہ شدہ سرور شاذ ہی اپنی خاطر ہیک ہوتا ہے۔ اسے استعمال کیا جاتا ہے: اسپام بھیجنے کے لیے، کان کنی کے لیے، دوسرے نیٹ ورکس تک پہنچنے کے لیے، دوسروں کی فائلیں رکھنے کے لیے۔ یہ سب ایسے باہر جانے والے کنکشن بناتے ہیں جو پہلے نہیں تھے۔
ss -tulpn
ss -tp state established
پہلی کمانڈ دکھاتی ہے کہ کیا سن رہا ہے، دوسری کہ اِس وقت کیا جڑا ہوا ہے۔ عمل کا کالم پڑھیں۔ سوال کھڑے کرنے والی باتیں: 0.0.0.0 پر سننے والا کوئی اجنبی عمل؛ ایسے پتوں کے بلند پورٹس کی طرف باہر جانے والے کنکشن جن سے آپ کی ایپلیکیشن کا کوئی تعلق نہیں؛ اور سب سے بڑھ کر /tmp یا /dev/shm سے چلایا گیا عمل — ان ڈائریکٹریوں سے کوئی جائز چیز نہیں چلتی۔
اور جب آپ وہاں ہیں تو بوجھ پر بھی نظر ڈالیں۔ کان کن خود کو یوں ظاہر کرتا ہے کہ ایسی سائٹ پر پروسیسر کو مصروف رکھتا ہے جسے کوئی مقبولیت حاصل نہیں۔
اگر علامات موجود ہوں
پہلا ردعمل جلدی صفائی کا ہوتا ہے: اجنبی کلید مٹا دو، عمل ختم کر دو، فائل ہٹا دو۔ ایسا نہ کریں — آپ عین وہی چیز تباہ کر رہے ہیں جو بعد میں سمجھا سکتی تھی کہ وہ کیسے داخل ہوئے۔ اور اگر یہ نامعلوم رہا تو وہ لوٹ آئیں گے، شاید کل ہی۔
ایسی ترتیب جو ڈیٹا اور تصویر دونوں محفوظ رکھے:
- اگر آپ کے فراہم کنندہ کے ہاں ممکن ہو تو ڈسک کا اسنیپ شاٹ لیں۔ یہی واحد قدم ہے جو بعد میں دہرایا نہیں جا سکتا۔
- مشین کو نیٹ ورک سے کاٹ دیں یا اپنے IP کے سوا سب کچھ بند کر دیں — مگر اسے بند نہ کریں۔ بند کرنے سے عمل کی فہرست اور کھلے کنکشن ضائع ہو جاتے ہیں، اور یہ آدھے شواہد ہیں۔
- لاگ مشین سے باہر نقل کریں:
/var/log/auth.log، ویب سرور کے لاگ، اور اوپر کی تین کمانڈز کا نتیجہ۔ - اور اب جا کر معلوم کریں کہ وہ کیسے داخل ہوئے۔
اگر رسائی root کے اختیارات کے ساتھ حاصل ہوئی ہو تو صاف ستھری دوبارہ تنصیب درست اختتام ہے۔ کوئی بھی صفائی اس بات کی ضمانت نہیں دیتی کہ کچھ باقی نہیں رہا۔ لیکن سبب سمجھے بغیر دوبارہ تنصیب بے فائدہ ہے: آپ وہی سوراخ تازہ نظام پر واپس لے آئیں گے۔
یہ سوال اچانک نہ آئے، اس کے لیے
اوپر کی ہر بات ایک بار کی دستی جانچ ہے، اور یہ اس سوال کا جواب دیتی ہے کہ «اِس وقت کیا ہو رہا ہے»۔ مشکل یہ ہے کہ یہ سوال عموماً دیر سے پوچھا جاتا ہے: جب فراہم کنندہ لکھ چکا ہو یا سائٹ گر چکی ہو۔
ان میں سے ہر جانچ ایک الگ اوزار کے طور پر موجود ہے جو مسلسل نگرانی کر سکتا ہے: ناکام لاگ اِن — fail2ban، فائلوں کی تبدیلیاں — AIDE، پیکجوں کی سالمیت — debsums، کھلے پورٹ — ss کا باقاعدہ اسنیپ شاٹ۔ انہیں ایک ایک کر کے نصب کرنا مشکل نہیں؛ مشکل یہ عادت بنانا ہے کہ روزانہ داخل ہو کر چھ مختلف نتائج پڑھیں، اور اسی لیے عملاً انہیں کوئی نہیں پڑھتا۔
اور ان سب کو یکجا کرنے والے پینل کا مقصد بالکل یہی ہے: وہی ڈیٹا، مگر ایک صفحے پر اور تاریخ کے ساتھ، تاکہ «کل ایسا نہیں تھا» کسی خاص مہم کے بغیر نظر آ جائے۔ نیچے وہ ڈیمو صفحات ہیں جو دکھاتے ہیں کہ یہ سب یکجا ہو کر کیسا لگتا ہے۔