رسائی حاصل کرنا آدھا کام ہے؛ باقی آدھا اسے نہ کھونا ہے۔ اسی لیے تقریباً ہر خودکار بدنیت سافٹ ویئر سب سے پہلے اپنے دوبارہ چلنے کا بندوبست کرتا ہے: دوبارہ آغاز کے بعد، فائل مٹنے کے بعد، پاس ورڈ بدلنے کے بعد۔ اور یہیں سے وہ مانوس کہانی آتی ہے — «صفائی کی اور دو دن بعد پھر آ گیا»۔
جن جگہوں پر یہ بندوبست ہوتا ہے وہ اتنی زیادہ نہیں، اور سب کو چند منٹ میں جانچا جا سکتا ہے۔ نیچے ترتیب سے پورا چکر ہے۔
۱۔ SSH کی کلیدیں
واپسی کا سب سے سادہ راستہ: authorized_keys کی ایک سطر پاس ورڈ کی تبدیلی، نظام کی تازہ کاری اور دوبارہ آغاز سے بچ جاتی ہے۔
sudo find /home /root -name authorized_keys -exec ls -l {} \; -exec cat {} \;
ہر سطر کسی نہ کسی کی مستقل رسائی ہے۔ اگر آپ نہیں بتا سکتے کہ کس کی، تو اسے اجنبی سمجھیں۔ سطر کے آخر میں لکھے تبصرے پر بھی دھیان دیں: وہ من مانا متن ہے، اور آپ کے نام سے میل کھانا کچھ ثابت نہیں کرتا۔
۲۔ تمام صارفین کے cron کام
صرف آپ کا اپنا crontab جانچنے کی بات نہیں:
for u in $(cut -f1 -d: /etc/passwd); do echo "== $u"; sudo crontab -u "$u" -l 2>/dev/null; done
sudo ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/
sudo cat /etc/crontab
ڈھونڈنے کے قابل علامات: @reboot سطریں، لمبی مرموز کمانڈیں، شیل میں ڈالے گئے curl یا wget کے بلاوے، اور /tmp، /dev/shm یا /var/tmp سے چلنے والی کوئی بھی چیز۔ ان ڈائریکٹریوں سے کوئی معیاری چیز نہیں چلتی۔
۳۔ systemd کے ٹائمر اور سروسز
cron کا جدید متبادل، اور اسے نمایاں طور پر کم جانچا جاتا ہے:
systemctl list-timers --all
systemctl list-units --type=service --state=running
sudo ls -la /etc/systemd/system/ /run/systemd/system/
اور الگ سے، صارف کی سروسز، جو root کے اختیارات کے بغیر چلتی ہیں اور عمومی فہرست میں نہیں آتیں:
systemctl --user list-units --type=service
sudo ls -la /home/*/.config/systemd/user/
ایک اور تفصیل: کسی صارف کے لیے فعال کیا گیا lingering (loginctl enable-linger) اس کی سروسز کو فعال سیشن کے بغیر چلنے دیتا ہے۔ اسے loginctl list-users سے جانچیں۔
۴۔ شیل کی آغاز فائلیں
شیل کی آغاز فائل کے آخر میں جوڑا گیا کوڈ ہر لاگ اِن پر چلتا ہے:
sudo tail -5 /root/.bashrc /root/.profile /home/*/.bashrc /home/*/.profile
sudo ls -la /etc/profile.d/
عین فائل کے آخر کو دیکھیں — وہیں جوڑا جاتا ہے تاکہ سرسری نظر میں نہ آئے۔
۵۔ ld.so.preload
ایک ایسی فائل جو نظام کو ہر چلنے والے عمل میں کوئی مقررہ لائبریری لوڈ کرنے پر مجبور کرتی ہے۔ اور عام حالات میں یہ کبھی نہیں بنتی:
ls -l /etc/ld.so.preload
اس کی موجودگی عملاً سنگین سمجھوتے کی بلا ابہام علامت ہے، اور ایسی لائبریری عموماً فائلیں، عمل اور نیٹ ورک کے کنکشن سب یکساں چھپا دیتی ہے۔ اور اس مشین پر آپ اس کے بعد جو کچھ دیکھیں گے، وہ اعتماد کے لائق نہیں۔
۶۔ پیکج مینیجر کے ہک
ایک طریقہ جو کم یاد رہتا ہے: apt پیکجوں پر ہر عمل سے پہلے اور بعد میں کمانڈیں چلا سکتا ہے۔
sudo ls -la /etc/apt/apt.conf.d/
sudo grep -r 'DPkg::Pre-Invoke\|DPkg::Post-Invoke\|APT::Update' /etc/apt/apt.conf.d/
ایسا ہک ہر تازہ کاری کی تنصیب پر چلتا ہے — یعنی باقاعدگی سے اور root کے طور پر۔
۷۔ Ubuntu میں دن کا پیغام
ڈائریکٹری /etc/update-motd.d/ میں وہ قابلِ عمل اسکرپٹ ہوتے ہیں جو ہر SSH لاگ اِن پر چلتے ہیں اور خوش آمدید کا متن بناتے ہیں۔ اور یہ جگہ عین اسی لیے آسان ہے کہ نظام کا حصہ لگتی ہے:
sudo ls -la /etc/update-motd.d/
۸۔ مؤخر at کام
sudo atq
sudo ls -la /var/spool/cron/atjobs/ 2>/dev/null
ایک پرانا اور کم استعمال ہونے والا نظام، اور اسی لیے سب سے کم جانچا جانے والا۔
اگر کچھ مل جائے تو کیا کریں
پہلا ردعمل یہ ہوتا ہے کہ جو ملا اسے فوراً مٹا دیں۔ اور یہ غلطی ہے: اس کے ساتھ یہ معلومات بھی غائب ہو جاتی ہے کہ وہ وہاں کیسے پہنچا، اور اس سوال کے جواب کے بغیر سب کچھ دہرایا جائے گا۔
- فائل یا کام کی اور اس کی تبدیلی کے وقت کی نقل محفوظ کریں۔
- اسی وقت کی مدد سے ویب سرور کے لاگ میں اور
auth.logمیں دیکھیں کہ اُسی منٹ کیا ہو رہا تھا۔ داخلے کا نقطہ عموماً وہیں ہوتا ہے۔ - فہرست کی تمام آٹھ جگہیں جانچیں، نہ کہ صرف وہ جہاں کچھ ملا۔ پچھلا دروازہ تقریباً کبھی ایک ہی نقل میں نہیں چھوڑا جاتا۔
- اور تب صفائی کریں اور خود خامی بند کریں۔
جاننا کہ معمول کیسا ہوتا ہے
اس جانچ میں اصل مشکل کمانڈیں نہیں بلکہ یہ ہے کہ کاموں کی فہرست میں کوئی نامانوس سطر مشکوک نہیں لگتی اگر آپ کو یاد نہ ہو کہ فہرست پہلے کیسی تھی۔ اور ایسے سرور پر جسے کسی اور نے مرتب کیا ہو، یا جو ایک سال پہلے مرتب ہوا ہو، اپنے اور پرائے میں فرق کرنا تقریباً ناممکن ہے۔
اسی سے عملی نتیجہ نکلتا ہے: «جیسا ہے ویسا» عکس آج لینا معنی رکھتا ہے، جب تک سرور ٹھیک ہے۔ ایک صحت مند مشین پر cron کے کاموں، ٹائمروں، کلیدوں اور سروسز کی فہرست وہی معیار ہے جس سے بعد میں سب کچھ ملایا جاتا ہے۔ اور تاریخ کے ساتھ یکجا اور محفوظ ہو کر یہ پچھلے دروازے کے شکار کو کئی گھنٹوں کی مشق سے دو فہرستوں کے موازنے میں بدل دیتی ہے۔ یہ کیسا لگتا ہے، نیچے ڈیمو صفحات دکھاتے ہیں۔