«لینکس پر اینٹی وائرس کی ضرورت نہیں» ایک عام رائے ہے، اور اپنی اصل شکل میں یہ درست ہے: لینکس کی نظامی فائلوں کو متاثر کرنے والے وائرس تقریباً موجود ہی نہیں۔ مگر سرور پر ClamAV کا کام اور ہے، اور یوں بیان ہوتا ہے: وہ ڈھونڈنا جو آپ کی سائٹ کے ذریعے اپ لوڈ کیا گیا۔ سب سے بڑھ کر web shell۔

ہم ٹھیک ٹھیک کیا ڈھونڈ رہے ہیں

web shell ایک چھوٹی PHP فائل ہے جو براؤزر کے ذریعے کمانڈ چلانے کی سہولت دیتی ہے۔ یہ اپ لوڈ فارم سے، کسی خامی والے پلگ اِن سے یا اندازے سے معلوم ہونے والے منتظم کے پاس ورڈ سے آتی ہے، اپ لوڈ ڈائریکٹری میں تصویروں کے درمیان بیٹھ جاتی ہے اور مہینوں وہیں رہتی ہے۔ نہ فائروال اسے دیکھے گا نہ Fail2ban: اس کی طرف آنے والی درخواستیں سائٹ کی عام درخواستوں جیسی لگتی ہیں۔

اس کے علاوہ ClamAV یہ بھی ڈھونڈتا ہے:

  • وہ بدنیت فائلیں جو صارفین نے اپ لوڈ کیں اور جو آپ کے سرور سے آگے دی جا رہی ہیں — فراہم کنندہ کا خط عموماً اسی بارے میں ہوتا ہے؛
  • میل کے منسلکات، اگر سرور میل سنبھالتا ہو؛
  • فائل اسٹوریج میں Windows کا بدنیت سافٹ ویئر — خود سرور کو اس سے فرق نہیں پڑتا، مگر وہ ملازم متاثر ہوگا جو فائل ڈاؤن لوڈ کرے۔

اور حدود کے بارے میں فوراً: ClamAV نقب زنی روکتا نہیں اور خود اس کا سراغ بھی نہیں لگاتا۔ یہ نشانات ڈھونڈتا ہے۔ مگر کسی موجود تھیم فائل کے آخر میں جوڑا گیا نفیس پچھلا دروازہ دستخط اسکینر سے بچ نکلے گا — اسی لیے فائلوں کی سالمیت کی نگرانی موجود ہے۔

تنصیب اور ایک اہم ترتیب

sudo apt install clamav clamav-daemon
sudo systemctl status clamav-freshclam

دوسری کمانڈ پہلی سے زیادہ اہم ہے۔ freshclam دستخطوں کی تازہ کاری کی سروس ہے، اور اگر وہ نہ چل رہی ہو تو ClamAV بے کار ہو جاتا ہے جبکہ کامیاب اسکین کی اطلاع دیتا رہتا ہے۔ ڈیٹابیس کی عمر یوں جانچیں:

sudo ls -l /var/lib/clamav/*.c?d
sudo freshclam

ایک ہفتے سے پرانے ڈیٹابیس کا مطلب ہے کہ نظام ٹوٹا ہوا ہے۔ عام سبب باہر جانے والے کنکشن کی بندش ہے، یا freshclam کا root کے طور پر ہاتھ سے چلایا جانا، جس کے بعد سروس اجازتوں کی وجہ سے اپنی ہی فائل میں نہیں لکھ پاتی۔

میموری: ڈیمن یا ایک بار کا چلانا

استعمال کے دو طریقے ہیں، اور انتخاب شعوری ہونا چاہیے۔

clamd ایک مسلسل چلنے والا ڈیمن ہے جو ڈیٹابیس میموری میں رکھتا ہے۔ یہ تیزی سے جواب دیتا ہے مگر تقریباً ایک گیگابائٹ RAM لے لیتا ہے۔ ایک یا دو گیگابائٹ والے VPS پر یہ ناقابلِ قبول ہے: ڈیمن ڈیٹابیس اور PHP-FPM کو دبا دے گا، اور سرور بغیر کسی ظاہری سبب کے رینگنے لگے گا۔ free -m سے اور فعال سویپ سے اس کی تشخیص ہوتی ہے۔

متبادل شیڈول پر clamscan ہے۔ یہ سست ہے (ہر بار ڈیٹابیس لوڈ کرتا ہے، تقریباً ایک منٹ) مگر صرف اسکین کے دوران کام کرتا ہے:

sudo clamscan -r -i --exclude-dir='^/(proc|sys|dev|run)' /var/www

-i جھنڈا صرف وہی چھاپتا ہے جو ملا؛ ورنہ نتیجہ لاکھوں سطروں تک پہنچ جاتا ہے۔

ڈائریکٹریاں اسکین کریں، ڈسک نہیں

کمزور سرور پر پوری ڈسک کا اسکین گھنٹوں لیتا ہے اور بوجھ ڈالتا ہے، اسی لیے اسے رات کے لیے طے کیا جاتا ہے اور پھر بالکل بند کر دیا جاتا ہے۔ زیادہ عملی یہ ہے کہ وہی اسکین کریں جو واقعی باہر سے بدلتا ہے:

0 3 * * * ionice -c3 nice -n19 clamscan -r -i --move=/var/quarantine /var/www/uploads

اس سطر میں تین چیزیں اہم ہیں۔ ionice اور nice سائٹ پر اثر ختم کر دیتے ہیں۔ --remove کے بجائے --move — فائل مٹنے کے بجائے قرنطینہ میں جاتی ہے: جھوٹی اطلاعات ہوتی ہیں، اور غلطی سے مٹی ہوئی گاہک کی فائل کہیں سے واپس نہیں آتی۔ اور اسکین کی ڈائریکٹری وہی ہے جہاں فائلیں اپ لوڈ ہوتی ہیں، جڑ نہیں۔

web shell کے دستخط

ClamAV کے معیاری ڈیٹابیس PHP کے پچھلے دروازوں کے سامنے کمزور ہیں — ان کا رخ زیادہ تر میل ٹریفک کی طرف ہے۔ Linux Malware Detect (maldet) یہاں نمایاں طور پر بہتر ہے: اس کے پاس اپنا دستخطی مجموعہ ہے جو عین web shell کے گرد بنا ہے، اور اگر ClamAV نصب ہو تو یہ اسی کے انجن سے اسکین کرتا ہے۔ معمول کا امتزاج یہ ہے کہ ClamAV انجن اور قابلِ تازہ کاری ڈیٹابیس ہو، اور maldet خصوصی دستخطوں کا ذریعہ۔

ملنے والی چیز کا کیا کریں

ملا ہوا web shell تحقیق کا اختتام نہیں بلکہ آغاز ہے۔ اپ لوڈ ڈائریکٹری میں فائل کا مطلب ہے کہ کوئی وہاں لکھ سکا، اور فائل مٹانے سے یہ صلاحیت ختم نہیں ہوتی۔

  1. اسے فوراً نہ مٹائیں — ایک نقل محفوظ کریں اور فائل کی تبدیلی کا وقت درج کریں۔
  2. اسی وقت کی مدد سے ویب سرور کے لاگ میں ڈھونڈیں کہ اسے وہاں کس درخواست نے رکھا۔ یہی خامی ہے۔
  3. پڑوسی تلاش کریں: پچھلا دروازہ تقریباً کبھی ایک ہی نقل میں نہیں چھوڑا جاتا۔
  4. جانچیں کہ اسی مدت میں ڈسک پر اور کیا بدلا اور کیا نئے cron کام اور SSH کلیدیں نمودار ہوئیں۔

اور جھوٹی اطلاعات کے بارے میں الگ سے۔ ٹیمپلیٹ لائبریریاں اور مختصر کیا گیا JavaScript کبھی کبھی دستخطوں سے میل کھا جاتے ہیں۔ اسی لیے مٹانے کے بجائے قرنطینہ، اور اسی لیے یہ نصیحت کہ جو بھی فریقِ ثالث کا دستخطی مجموعہ ملے اسے نہ جوڑیں: ایسی رپورٹ پر اعتماد جس کی آدھی سطریں شور ہوں، ایک ہفتے میں ختم ہو جاتا ہے اور لوگ اسے پڑھنا چھوڑ دیتے ہیں۔

اسکینر کی عملی قدر اس میں ہے کہ اس کے نتائج آپ کی نظر میں آئیں: آخری اسکین کب چلا، ڈیٹابیس کتنے پرانے ہیں، کیا ملا۔ یہ ایک ہی سطر ہے، مگر اس کی غیر موجودگی نصب شدہ اینٹی وائرس کو محض ایک خانے کے نشان میں بدل دیتی ہے۔ یہ سطر کیسی لگتی ہے، نیچے ڈیمو صفحہ دکھاتا ہے۔