پیدا کردن اسپمر در وب سرور

برای مدیران سرورها

وظیفه شما پیدا کردن مشکل، حل کردن آن و ایجاد اطمینان از عدم بروز مجدد آن است.

پیدا کردن مشکل در فعالیت های نتورک: Linux/FreeBSD

یکی از راه‌های پیدا کردن یوزر آلوده، و کسی که اقدام به فرستادن اسپم می‌کند، استفاده از ابزار “lsof” (لیست فایل‌های باز) می‌باشد. lsof تقریبا در تمام نسخه‌های لینوکس موجود است اما ممکن است که نصب نشده باشد. پس اول امتحان میکنیم ببینیم نصب هست یا نه، برای سیستم‌های شکل اوبونتو از دستور:

sudo apt-get install lsof

و برای سیستم های دبینی:

sudo yum install lsof

بعد از نصب شدن lsof میتونیم از دستور زیر استفاده کنیم:

sudo lsof -i | grep smtp

در خروجی این کد ممکنه چند خط باشه که به‌جای “example.com” هاست‌نیم شما نمایش داده‌میشه، به شکل زیر:

sendmail- 18520 root  3u IPv4 3016693 0t0 TCP *:smtp (LISTEN)
sendmail   4401 mail 13u IPv4 8742322 0t0 TCP example.com:42177->mail1.hotmail.com:smtp (ESTABLISHED)
exim       6348 mail  3u IPv4 210565067 0t0 TCP *:smtp (LISTEN)
find       4403  foo 13u IPv4 8742322 0t0 TCP example.com:42176->mtain-dk.r1000.mx.aol.com:smtp (ESTABLISHED)

خط اول برای مثال، نرم‌افزار ارسال ایمیل سرور شماست که برای ارسال ایمیل ها با یوزر روت گوش‌بزنگه یا داره لیسن میکنه، این خط طبیعیه و وجودش هیچ مشکلی نداره.

خط دوم، درست تو همون لحظه‌ای که شما کد رو اجرا کردین یوزر “mail” داشته یه ایمیل به هاتمیل میفرستاده، که اینم طبیعیه. شما ممکنه بجای “sendmail” عبارات “exim”، “postfix”، “smtpd” یا “qmail” رو ببینین که اینا کاملا به تنظیمات و نرم‌افزارهای روی سرور شما بستگی داره.

خط سوم گوش‌بزنگ “exim” نشسته، که در صورتی نرمال و طبیعیه که توسط یوزری به نام “mail”، “mailman” و یا چیزای شبیه به اینا در حال اجرائه و یه یوزر عادی این برنامرو اجرا نکرده.

خط چهارم مربوط به نرم‌افزاریه به نام “find”، که توسط یوزری به نام “foo” در حال اجرائه و داره با سرور AOL ارتباط برقرار می‌کنه.

یوزری که توی خط چهارم نشون داده میشه یوزریه که اسپمر شده، که در این مورد خاص نشون میده که داره از نرم‌افزار “find” استفاده می‌کنه. معمولا بیشتر از یه خط شبیه خط چهارم پیدا می‌کنید.

خوب حالا برای جلوگیری از اسپمر چه کنیم؟

متاسفانه بستن پروسس‌های مربوط به اسپمر فایده نداره، چون معمولا به طور خودکار ریستارت میشن و از یه پروسس دیگه استفاده می‌کنن. شما باید متوجه بشین که این پروسس توسط یه برنامه زمانبندی شده توسط اون یوزر به کار افتاده یا از طریق وب‌سرور دسترسی بهش پیدا شده و یا کسی دسترسی SSH‌به سرور گرفته. سریعا اون نرم‌افزاری که داره اسپم میفرسترو پیدا کنید و پاک کنید. معمولا یا یه اسکریپت PHPـه یا اسکریپت به زبان Perlـه. در بعضی موارد ممکنه برنامه آلوده به محض شروع کارش خودشو پاک میکنه. تو مثال بالا اسپم توسط یه اسکریپت Perl‌ داره فرستاده میشه و ازونجایی که خودشو پاک کرده به نام “mail” و یا “ntpd” خودشو نشون میده. اما شما احتمال هرچیزیو بدین. البته حتما باید پیدا کنین که این اسکریپت از کجا اومده رو سرورتون نصب شده، که معمولا از طریق باگای امنیتی جوملا، دروپال، وردپرس، سی‌پنل و … ـست یا دسترسی FTP برقرار شده و این اسکریپت روی سرور شما نصب شده.

البته توجه کنید که اگه خطی مثل خط foo توی نتیجه‌ی دستورتون نشون داده نشد، نمیشه لزوما نتیجه گرفت که سرور شما پاکه بلکه این یعنی تو اون لحظه‌ای که شما این کد رو اجرا کردین اسپمی فرستاده نمیشده. بهتره چندبار این دستور رو تو زمان‌های مختلف اجرا کنید که برای راحتی می‌تونید از کد زیر استفاده کنید:

while true
do
    sudo lsof -i | grep smtp
    sleep 10
done

پیدا کردن مشکل با پیدا کردن اسکریپت آلوده: Linux/FreeBSD

اسکنرهای زیادی برای اسکن کردن وب‌سرور وجود دارند که می‌تونند کدهای آلوده و مخرب رو پیدا کنن. برنامه نویس‌های زیادی این اسکنرهارو ساختن که یکی از اونا یه اسکریپت ساده به زبون Perlـه به نام “findbot.pl” که توی وب‌سرور دنبال شل‌های معروف مثل r57، cryptPHP و … میگرده و میتونه به راحتی اسکریپت آلوده روی وب‌سرور شمارو پیدا کنه.

این اسکریپت خیلی سادست و شما باید نتایجش رو کنترل کنید که آیا فایلی که از نظر “findbot.pl” آلوده شناخته شده واقعا آلودست یا نه. همیشه حواستون باشه اگه هر اسکنری کد اجرایی تو عکس‌هاتون پیدا کرد، شک نکنید که اون عکس یا تصویر آلودست و بدافزاره.

برای استفاده از “findbot.pl” باید Perl‌ روی وب‌سرورتون نصب شده باشه.

وقتی “findbot.pl” رو اجرا میکنید اولش توضیحات استفادشو مینویسه که میتونید ازش کمک بگیرید.

تقویت PHP در برابر آلودگی‌ها

Suhosin ابزار مناسبیه برای حفاظت از محیط PHP‌در مقابل آلودگی‌ها.

خیلی از اسکریپت‌های آلوده به صورت خودکار خودشون رو راه میندازن و به محض شروع کار خودشونو پاک میکنن، اینجوری شما هیچوقت نمیتونین اسکریپت آلودرو پیدا کنین. پس بهتره جوری وب‌سرورتونو امن کنید که دوباره ازین اتفاقا نیفته.

یه راه دیگه برای پیدا کردن فایل‌های آلوده استفاده از دستور “file” هستش (ممکنه رو وب‌سرورتون نصب نباشه، که باید نصبش کنید).

وقتی باپیام‌های “ELF 32-bit” و “corrupted section header size” موقع اجرای دستور “file” روی فایل آلوده مواجه شدید، یعنی فایل درست رو پیدا کردید:

$ file sshd
sshd:  ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), statically
linked, corrupted section header size

دستور بالارو میتونید بصورت بولک یا کلی به‌صورت زیر اجرا کنید:

file /path/to/directory/* | grep 'corrupted section'
find /path1 /path2 -print | xargs file | grep 'corrupted section'

پیدا کردن مشکل در فعالیت‌های نتورک: Windows

محیط وب‌سرورهای ویندوزی به اندازه لینوکس برای همچین حرکت‌هایی توسعه پیدا نکرده اما می‌تونید از ابزارهای جانبی مثل “tcpview tool” استفاده کنید. برای دریافت ابزار میتونید به اینجا tcpview/tcpconn مراجعه کنید.

پیدا کردن مشکل در لاگ‌ها: عمدتا Linux/FreeBSD

بیشتر بدافزارها و اسکریپت‌های مخرب مهارت بالایی در مخفی کردن خودشون دارن. خودکار اجرا میشن و “on-disk copy” رو پاک میکنن، که چیزی برای پیدا کردن باقی نمیمونه. بیشتر این اسکریپت‌ها میل‌سرور رو بای‌پس میکنن و ردی از خودشون توی خروجی ایمیل‌ها و یا لاگ ایمیل‌ها باقی نمیذارن.

اما این اسکریپت‌ها بالاخره مجبورن که روی وب‌سرور شما اجرا بشن! که همین باعث میشه لاگ بندازن. اگه شما بتونین اون لاگ‌ها رو پیدا کنین می‌تونین یوزر آلوده و بدافزارشو پیدا کنید و اگه هنوز رو وب‌سرور بودن پاکشون کنید.

این اسکریپت‌ها از کجا میان رو وب‌سرور؟؟

معمولا روی وب‌سایت‌ها پورت 21 یا 443 برای استفاده کاربرا از سایتشون و بارگذرای محتوا بازه. اگه کامپیوتر مشتری آلوده باشه و روش به‌عنوان مثال کی‌لاگر نصب باشه که واویلا! لاگ FTP و SSL وب‌سرور رو برای آپلور فایل‌های PHP و Perl بگردید. دنبال اسمای عجیب و غریب باشید. IPـهایی که ربطی به وب‌سرور شما ندارن. اگر همچین چیزیو پیدا کردین حتما یوزر رو مجبور به تعویض پسورداش کنید و اونارو به اسکن کامپیوتراشون توصیه کنید.

لاگ سرورتونم برای دسترسی‌های متناوب به یه فایل PHP یا CGI یا Perl یا درخواست‌های پست بگردید. از اونجا اطلاعات خوبی نسبت به اینکه فایل آلوده از کجا اومده و کی بهش دسترسی گرفته شده پیدا می‌کنید. تجربه شخصیم میگه توی لاگ دنبال “./” بگردید. معمولا فایل‌های آلودرو اینجوری مخفی میکنن.

بیشتر CMSـها مشخصا Plesk، CPanel، Joomla و WordPress باگ‌های امنیتی خطرناکی میدن و اکثرا کاربرا میل زیادی به بروزرسانی به موقع ندارن، بخاطر همین شما ممکنه هیچوقت نتونین پیدا کنین که یه آلودگی از کجا اومده روی وب‌سرورتون.

چه کنیم که دیگه اسپم نشیم؟

همیشه مطمئن بشید که کاربراتون از آخرین نسخه‌های موجود نرم‌افزارها استفاده می‌کنند و هیچ عذر و بهانه‌ایم قبول نکنید. جلوی ارسال ایمیل به‌صورت مستقیم از طرف وب‌سرور رو بگیرید و محدودیت تعیین کنید که ایمیل‌ها حتما از سمت میل‌سرور ارسال بشن.

برای بلاک کردن توی CPanel می‌تونید از CSF (ConfigServer Security Firewall) استفاده کنید. مجانیم هست! CSF‌یه تنظیم داره به‌نام “SMTP_BLOCK” در فعال‌سازیش کوشا باشید!

توی خود CPanel هم یه بخش وجود داره به‌نام “WHM SMTP Tweak” که میتونه کمک زیادی بکنه.

دستورای زیر برای وب‌سرورهای بدون CPanelـه که اجازه ثبت ایمیل‌های خارجیو نمیده:

iptables -A OUTPUT -d 127.0.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --gid-owner mail -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --gid-owner mailman -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable

دستورهای بالا به یوزرها اجازه میده که توسط لوکال میل‌سرور ایمیل ارسال کنن، لوکال میل‌سرور توسط آی‌دی روت و یا “mail” و “mailman” ایمیل ارسال کنن، اما به هیچ کاربری اجازه برقراری ارتباط مستقیم SMTP رو نمیده. این تنظیمات رو باید برای Qmail‌ یا Exim انجام بدین. توجه داشته باشین که دستورات IPTables با ریستارت وب‌سرور از بین میرن و شما باید این دستورات رو در اتوران وب‌سرور قرار بدین.

اگر از CPanel و APF استفاده می‌کنید، APF به‌صورت پیش‌فرض تنظیمات IPTables‌ رو حذف میکنه و سرورو در برابر آلودگی‌ها و هکرها بی‌حفاظ می‌کنه. اگر از APF استفاده میکنین حتما باید دستورات بالارو توی اتوران وب‌سرور قرار بدین.

از خودتون این سوالات رو بپرسین

آیا واقعا به پشتیبانی از اسکریپت‌های PHP احتیاج دارین؟؟ CGI چی؟ قابلیت ارسال ایمیل توسط PHP چی؟ هرکدوم رو که احتیاج ندارین غیرفعال کنین. در بسیاری از وب‌سرورها CGI، fsocketopen یا exec رو در فایل php.ini می‌بندن.

بعضی از این اسکریپت‌ها تو پوشه‌ی “tmp/” ذخیره می‌شن. اگه این پوشه تو درایو دیگه‌ای قرار داره میتونید استفاده از این پوشه رو برای بدافزارها غیرممکن کنید. برای این‌کار تنظیمات “/etc/fstab” رو به “noexec” و “nosuid” تغییر بدین. این دستورات به این معنین که سیستم‌عامل هیچ فایل اجرایی‌ای رو از پوشه “tmp” اجرا نمی‌کنه و یا به عنوان “setuid”‌باهاشون برخورد نمیکنه.

همیشه مطمئن بشین که “anonymous login” FTPـتون بستست.

کاربر آلودرو مجبور به تعویض پسورد کنید و اگه نتونستید کاربر آلودرو پیدا کنید همه پسوردارو عوض کنین.

نظری وجود ندارد. - نظر دهید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*