بدافزار یا نرم افزارهای مخرب نامیست که به هر برنامه ای که هدفش تخریب فعالیت نرمال یک سیستم کامپیوتری میباشد، تخصیص داده میشود. اگر چه اکثر شکل های شناخته شده از بدافزارها در حقیقت ویروس ها، نرم افزارهای جاسوسی و ابزارهای تبلیغاتی مزاحم هستند صدماتی که آنها ایجاد میکنند از دزدیدن اطلاعات شخصی گرفته تا حذف دیتای خصوصی و هر عملیاتی مخربی بین این دو کار میباشد در حالیکه کاربرد کلاسیک دیگر بدافزارها در حقیقت کنترل سیستم به منظور استفاده از آن برای لود کردن botnet ها در حملات DDOS میباشد.
به عبارت دیگر شما نمیتوانید به این قضیه بی اهمیت باشید و با خود فکر کنید که : من نیازی ندارم که سیستم خود را مقابل بدافزارها امن کنم. با توجه به این که اطلاعات مهم یا حساسی روی سیستمم ذخیره نکردم، زیرا این موارد تنها هدف های بدافزارها نیستند.
به همین دلیل در این مقاله ما نحوه نصب و کانفیگ Linux Malware Detect (یا کوتاه شده آن aka MalDet یا LMD) به همراه آنتی ویروس ClamAV در RHEL 7.0/6.x، CentOS 7.0/6.x و Fedora 21-12 شرح خواهیم داد.
همچنین توصیه میشود مطالعه کنید.
شناسایی و بررسی rootkit ها در لینوکس با استفاده از rkhunter و chkrootkit
آموزش نصب rkhunter در لینوکس
Malware (بدافزار) چیست ؟
آیا سیستم عامل لینوکس بدون ویروس است ؟
یک اسکنر برای بدافزارها، تحت لایسنس GPL V2 و مخصوصا برای محیط های هاستینگ طراحی و منتشر شده است. به هر حال شما به سرعت تشخیص خواهید داد که از MalDet سود خواهید برد و مهم نیست که شما در چه محیطی کار میکنید.
نصب LMD روی RHEL/CentOS 7.0/6.x و Fedora 21-12
LMD از طریق ریپازیتوری های آنلاین در دسترس نیست اما شما میتوانید آنرا به عنوان یک tarball از وب سایت project دریافت کنید. فایل tarball شامل سورس کد آخرین ورژن میباشد و همیشه از طریق لینک زیر در دسترس است و شما میتوانید با استفاده از دستور زیر آنرا دانلود کنید.
سپس نیاز داریم که فایل tarball را از حالت فشرده خارج کنیم و به دایرکتوری که محتویات آن اکسترکت شده وارد شویم. از آنجایی که ورژن موجود 1.6.3 میباشد، نام دایرکتوری maldetect-1.6.3 که ما در این دایرکتوری اسکریپت نصب به نام install.sh را مشاهده میکنیم.
اگر که اسکریپت نصب را بررسی کنیم که طول آن تنها 160 خط است (با احتساب خط های کامل شده) میتوانیم مشاهده کنیم که نه تنها ابزار را نصب میکند بلکه یک پیش چک (pre-check) را برای بررسی موجود بودن دایرکتوری پیش فرض نصب (/usr/local/maldetect) اجرا میکند. در صورتی که موجود نباشد اسکریپت خودش دایرکتوری نصب را خودش قبل از آغاز هر کاری ایجاد میکند.
در نهایت بعد از اینکه نصب تمام شد، یک تسک اجرای روزانه از طریق قرار دادن اسکریپت cron.daily (همانند تصویر زیر) در /etc/cron.daily برنامه ریزی میشود. این اسکریپت کمکی در میان بقیه موارد دیگر، دیتای temporary قدیمی را پاک خواهد کرد و ریلیزهای جدید LMD را بررسی میکند. همچنین پنل های پیش فرض آپاچی و وب کنترل (به طور مثال Cpanel, DirectAdmin و ...) را در دایرکتوری پیش فرض دیتا اسکن میکند.
اسکریپت نصب را طبق معمول همیشه اجرا کنید.
کانفیگ Linux Malware Detect
کانفیگ LMD از طریق /usr/local/maldetect/conf.maldet قابل کنترل است و همه آپشن ها به منظور آسان کردن کانفیگ ها به خوبی کامنت شده است. در شرایطی که به هر دلیلی در کانفیگ گیر کردید میتوانید به فایل /usr/local/src/maldetect-1.4.2/README برای دستور العمل های بیشتر مراجعه کنید.
در فایل کانفیگ ما بخش های زیر را مشاهده خواهیم کرد که در bracket قرار گرفته اند.
هر کدام از این بخش ها شامل چندین متغییر هستند که مشخص میکند LMD چگونه رفتار خواهد کرد و چه فیچرهایی موجود هستند.
آپشن email_alert را برابر با "1" تعریف کنید (email_alert=1)، اگر میخواهید که notification های ایمیل از نتایج بررسی های بدافزار را دریافت کنید، در اینجا ما به صورت مختصر تنها ایمیل به کاربران لوکال سیستم را بررسی میکنیم اما شما میتوانید گزینه های دیگر مانند ارسال alert های ایمیل به بیرون را نیز کانفیگ کنید.
اگر شما از قبل email_alert را برابر با "1" تعریف کرده اید میبایست، email_subj را برابر با subject مورد نظر خود (email_subj=”Your subject here”) و همچنین email_addr را برابر با username@localhost قرار دهید (email_addr=username@localhost).
با استفاده از quarantine_hits عملیات پیش فرض قرنطینه برای بدافزار صورت میگیرد (0=فقط alert و 1=انتقال به قرنطینه و alert) در حقیقت شما به LMD میگویید که بعد از اینکه بدافزار را شناسایی کرد چه کاری انجام دهد.
quarantine_clean به شما این امکان را میدهد که تصمیم بگیرید که آیا میخواهید string-based malware injections را پاک کنید به خاطر داشته باشید که یک امضای متنی در حقیقت یک رشته بایت مستمر میباشد که میتواند با هر تنوعی از خانواده یک بدافزار match شود.
quarantine_suspend_user که در حقیقت عملیات پیش فرض suspend برای کاربرانیست که مورد هدف قرار گرفته اند که به شما این امکان را میدهد که یک اکانت را که فایل هایش به عنوان آسیب شناسایی شده است را غیرفعال کنید.
scan_clamscan=1 به LMD اعلام میکند که برای شناسایی حضور باینری clamav تلاش کند و آنرا به عنوان موتور پیش فرض اسکنر استفاده کند. این ابزار بازدهی بالغ بر 4 برابر سریعتر در اجرای اسکن و همچنین بررسی به مراتب پیشرفته تر را داراست. این گزینه تنها از clamav به عنوان موتور اسکنر استفاده میکند و همچنان عملکردهای LMD اساس شناسایی تهدیدها میباشند.
نکته : لطفا دقت کنید که quarantine_clean و quarantine_suspend_user نیاز دارند که quar_hits فعال (=1) باشد.
به طور خلاصه، خط های موجود با این متغییرها باید شبیه به زیر در فایل /usr/local/maldetect موجود باشند.
نصب ClamAV در RHEL/CentOS 7.0/6.x و Fedora 21-12
برای نصب ClamAV به منظور استفاده از مزایای تعریف کردن clamav_scan مراحل زیر را دنبال کنید.
سپس با توجه به توزیع لینوکسی خود دستور زیر را اجرا کنید.
نکته : موارد مطرح شده تنها دستوالعمل پایه برای نصب ClamAV به منظور یکپارچه سازی با LMD میباشد. ما وارد جزئیات نخواهیم شد از آنجاییکه تنظیمات ClamAV تنها بخش کوچکی از کار را انجام میدهد و همانطور که قبلا گفتیم معماری LMD هنوز پایه و اساس شناسایی و پاک کردن آسیب ها میباشد.
تست Linux Malware Detect
اکنون زمان تست کردن محیط LMD / ClamAV میباشد. به جای استفاده از بدافزار واقعی ما از فایل تست EICAR استفاده میکنیم که از وب سایت EICAR میتوان آنرا دانلود کرد. (البته روی این ورژنی که نصب کردم اسکریپت های مخرب سایت eicar.com رو نتونست شناسایی بکند و به جاش من از چند اسکریپت مخرب واقعی استفاده کردم که در ادامه بررسی میکنیم)
در اینجا شما همچنین میتوانید برای اجرای cronjob بعدی منتظر بمانید یا maldet را به صورت دستی خودتان اجرا کنید. ما با آپشن دوم ادامه میدهیم.
LMD همچنین wildcard ها را میپذیرد بنابراین اگر شما بخواهید تنها یک نوع خاصی از فایل را اسکن کنید (به طور مثال فایل های zip) شما میتوانید دستور زیر را استفاده کنید.
زمانیکه اسکن کامل شد، شما همچنین میتوانید ایمیلی که توسط LMD ارسال شده را نیز بررسی کنید و یا اینکه گزارش را با استفاده از دستور زیر مرور و بررسی کنید.
در خروجی بالا 181121-1342.5356 در حقیقت SCANID میباشد (مقدار SCANID در محیط تستی شما متفاوت خواهد بود).
اگر شما پوشه قرنطینه را بررسی کنید، محتوای زیر را مشاهده خواهید کرد.
سپس شما میتوانید همه فایل های قرنطینه شده را با دستور زیر حذف کنید.
بررسی نهایی
در شرایطی که شما متوجه شدید LMD بر اساس تسک های روزانه خود به درستی اجرا نمیشود، از آنجایی که maldet نیاز دارد که با cron یکپارچه شود شما نیاز خواهید داشت که متغییرهای زیر را در crontab یوزر root (دستور crontab -e تحت یوزر root اجرا کنید) تعریف کنید.
این مورد به شما کمک میکند که اطلاعات debuging ضروری را محیا کنید.
نتیجه
در این مقاله ما درباره نحوه نصب و کانفیگ Linux Malware Detect به همراه ClamAV به عنوان یک کمک قدرتمند بحث کردیم، با کمک این دو ابزار تشخیص بدافزارها تسک نسبتا آسانی شده است.
به هر حال شما میتوانید در حق خود لطف کنید و با فایل README همانطور که قبلا گفتیم آشنا شوید. شما قادر خواهید بود که از اینکه سیستم تان به درستی یوزر بندی و مدیریت شده مطمئن شوید.
شما میتوانید نظرات و سوالات خود را در رابطه با موضوع پست در همینجا با ما مطرح و به اشتراک بگذارید.
به عبارت دیگر شما نمیتوانید به این قضیه بی اهمیت باشید و با خود فکر کنید که : من نیازی ندارم که سیستم خود را مقابل بدافزارها امن کنم. با توجه به این که اطلاعات مهم یا حساسی روی سیستمم ذخیره نکردم، زیرا این موارد تنها هدف های بدافزارها نیستند.
به همین دلیل در این مقاله ما نحوه نصب و کانفیگ Linux Malware Detect (یا کوتاه شده آن aka MalDet یا LMD) به همراه آنتی ویروس ClamAV در RHEL 7.0/6.x، CentOS 7.0/6.x و Fedora 21-12 شرح خواهیم داد.
همچنین توصیه میشود مطالعه کنید.
شناسایی و بررسی rootkit ها در لینوکس با استفاده از rkhunter و chkrootkit
آموزش نصب rkhunter در لینوکس
Malware (بدافزار) چیست ؟
آیا سیستم عامل لینوکس بدون ویروس است ؟
یک اسکنر برای بدافزارها، تحت لایسنس GPL V2 و مخصوصا برای محیط های هاستینگ طراحی و منتشر شده است. به هر حال شما به سرعت تشخیص خواهید داد که از MalDet سود خواهید برد و مهم نیست که شما در چه محیطی کار میکنید.
نصب LMD روی RHEL/CentOS 7.0/6.x و Fedora 21-12
LMD از طریق ریپازیتوری های آنلاین در دسترس نیست اما شما میتوانید آنرا به عنوان یک tarball از وب سایت project دریافت کنید. فایل tarball شامل سورس کد آخرین ورژن میباشد و همیشه از طریق لینک زیر در دسترس است و شما میتوانید با استفاده از دستور زیر آنرا دانلود کنید.
کد PHP:
# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
کد PHP:
# tar -xvf maldetect-current.tar.gz
# ls -l | grep maldetect
اگر که اسکریپت نصب را بررسی کنیم که طول آن تنها 160 خط است (با احتساب خط های کامل شده) میتوانیم مشاهده کنیم که نه تنها ابزار را نصب میکند بلکه یک پیش چک (pre-check) را برای بررسی موجود بودن دایرکتوری پیش فرض نصب (/usr/local/maldetect) اجرا میکند. در صورتی که موجود نباشد اسکریپت خودش دایرکتوری نصب را خودش قبل از آغاز هر کاری ایجاد میکند.
در نهایت بعد از اینکه نصب تمام شد، یک تسک اجرای روزانه از طریق قرار دادن اسکریپت cron.daily (همانند تصویر زیر) در /etc/cron.daily برنامه ریزی میشود. این اسکریپت کمکی در میان بقیه موارد دیگر، دیتای temporary قدیمی را پاک خواهد کرد و ریلیزهای جدید LMD را بررسی میکند. همچنین پنل های پیش فرض آپاچی و وب کنترل (به طور مثال Cpanel, DirectAdmin و ...) را در دایرکتوری پیش فرض دیتا اسکن میکند.
اسکریپت نصب را طبق معمول همیشه اجرا کنید.
کد PHP:
# ./install.sh
کانفیگ Linux Malware Detect
کانفیگ LMD از طریق /usr/local/maldetect/conf.maldet قابل کنترل است و همه آپشن ها به منظور آسان کردن کانفیگ ها به خوبی کامنت شده است. در شرایطی که به هر دلیلی در کانفیگ گیر کردید میتوانید به فایل /usr/local/src/maldetect-1.4.2/README برای دستور العمل های بیشتر مراجعه کنید.
در فایل کانفیگ ما بخش های زیر را مشاهده خواهیم کرد که در bracket قرار گرفته اند.
- EMAIL ALERTS
- QUARANTINE OPTIONS
- SCAN OPTIONS
- STATISTICAL ANALYSIS
- MONITORING OPTIONS
هر کدام از این بخش ها شامل چندین متغییر هستند که مشخص میکند LMD چگونه رفتار خواهد کرد و چه فیچرهایی موجود هستند.
آپشن email_alert را برابر با "1" تعریف کنید (email_alert=1)، اگر میخواهید که notification های ایمیل از نتایج بررسی های بدافزار را دریافت کنید، در اینجا ما به صورت مختصر تنها ایمیل به کاربران لوکال سیستم را بررسی میکنیم اما شما میتوانید گزینه های دیگر مانند ارسال alert های ایمیل به بیرون را نیز کانفیگ کنید.
اگر شما از قبل email_alert را برابر با "1" تعریف کرده اید میبایست، email_subj را برابر با subject مورد نظر خود (email_subj=”Your subject here”) و همچنین email_addr را برابر با username@localhost قرار دهید (email_addr=username@localhost).
با استفاده از quarantine_hits عملیات پیش فرض قرنطینه برای بدافزار صورت میگیرد (0=فقط alert و 1=انتقال به قرنطینه و alert) در حقیقت شما به LMD میگویید که بعد از اینکه بدافزار را شناسایی کرد چه کاری انجام دهد.
quarantine_clean به شما این امکان را میدهد که تصمیم بگیرید که آیا میخواهید string-based malware injections را پاک کنید به خاطر داشته باشید که یک امضای متنی در حقیقت یک رشته بایت مستمر میباشد که میتواند با هر تنوعی از خانواده یک بدافزار match شود.
quarantine_suspend_user که در حقیقت عملیات پیش فرض suspend برای کاربرانیست که مورد هدف قرار گرفته اند که به شما این امکان را میدهد که یک اکانت را که فایل هایش به عنوان آسیب شناسایی شده است را غیرفعال کنید.
scan_clamscan=1 به LMD اعلام میکند که برای شناسایی حضور باینری clamav تلاش کند و آنرا به عنوان موتور پیش فرض اسکنر استفاده کند. این ابزار بازدهی بالغ بر 4 برابر سریعتر در اجرای اسکن و همچنین بررسی به مراتب پیشرفته تر را داراست. این گزینه تنها از clamav به عنوان موتور اسکنر استفاده میکند و همچنان عملکردهای LMD اساس شناسایی تهدیدها میباشند.
نکته : لطفا دقت کنید که quarantine_clean و quarantine_suspend_user نیاز دارند که quar_hits فعال (=1) باشد.
به طور خلاصه، خط های موجود با این متغییرها باید شبیه به زیر در فایل /usr/local/maldetect موجود باشند.
کد PHP:
email_alert=1
email_addr=habili@linux-zone.org
email_subj="Malware alerts for $HOSTNAME - $(date +%Y-%m-%d)"
quarantine_hits=0
quarantine_clean=1
quarantine_suspend_user=1
scan_clamscan=1
نصب ClamAV در RHEL/CentOS 7.0/6.x و Fedora 21-12
برای نصب ClamAV به منظور استفاده از مزایای تعریف کردن clamav_scan مراحل زیر را دنبال کنید.
سپس با توجه به توزیع لینوکسی خود دستور زیر را اجرا کنید.
RHEL/CentOS/Fedora
کد PHP:
# yum update && yum install clamd
Ubuntu/Mint/Debian
کد PHP:
# yum update && apt install clamd
نکته : موارد مطرح شده تنها دستوالعمل پایه برای نصب ClamAV به منظور یکپارچه سازی با LMD میباشد. ما وارد جزئیات نخواهیم شد از آنجاییکه تنظیمات ClamAV تنها بخش کوچکی از کار را انجام میدهد و همانطور که قبلا گفتیم معماری LMD هنوز پایه و اساس شناسایی و پاک کردن آسیب ها میباشد.
تست Linux Malware Detect
اکنون زمان تست کردن محیط LMD / ClamAV میباشد. به جای استفاده از بدافزار واقعی ما از فایل تست EICAR استفاده میکنیم که از وب سایت EICAR میتوان آنرا دانلود کرد. (البته روی این ورژنی که نصب کردم اسکریپت های مخرب سایت eicar.com رو نتونست شناسایی بکند و به جاش من از چند اسکریپت مخرب واقعی استفاده کردم که در ادامه بررسی میکنیم)
کد PHP:
# cd /var/www/html
# wget http://www.eicar.org/download/eicar.com
# wget http://www.eicar.org/download/eicar.com.txt
# wget http://www.eicar.org/download/eicar_com.zip
# wget http://www.eicar.org/download/eicarcom2.zip
کد PHP:
# maldet --scan-all /usr/share/nginx/
کد PHP:
# maldet --scan-all /usr/share/nginx/*.zip
زمانیکه اسکن کامل شد، شما همچنین میتوانید ایمیلی که توسط LMD ارسال شده را نیز بررسی کنید و یا اینکه گزارش را با استفاده از دستور زیر مرور و بررسی کنید.
کد PHP:
# maldet --report 181121-1342.5356
در خروجی بالا 181121-1342.5356 در حقیقت SCANID میباشد (مقدار SCANID در محیط تستی شما متفاوت خواهد بود).
اگر شما پوشه قرنطینه را بررسی کنید، محتوای زیر را مشاهده خواهید کرد.
کد PHP:
# ls -l /usr/local/maldetect/quarantine/
سپس شما میتوانید همه فایل های قرنطینه شده را با دستور زیر حذف کنید.
کد PHP:
# rm -rf /usr/local/maldetect/quarantine/*
بررسی نهایی
در شرایطی که شما متوجه شدید LMD بر اساس تسک های روزانه خود به درستی اجرا نمیشود، از آنجایی که maldet نیاز دارد که با cron یکپارچه شود شما نیاز خواهید داشت که متغییرهای زیر را در crontab یوزر root (دستور crontab -e تحت یوزر root اجرا کنید) تعریف کنید.
کد PHP:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
SHELL=/bin/bash
نتیجه
در این مقاله ما درباره نحوه نصب و کانفیگ Linux Malware Detect به همراه ClamAV به عنوان یک کمک قدرتمند بحث کردیم، با کمک این دو ابزار تشخیص بدافزارها تسک نسبتا آسانی شده است.
به هر حال شما میتوانید در حق خود لطف کنید و با فایل README همانطور که قبلا گفتیم آشنا شوید. شما قادر خواهید بود که از اینکه سیستم تان به درستی یوزر بندی و مدیریت شده مطمئن شوید.
شما میتوانید نظرات و سوالات خود را در رابطه با موضوع پست در همینجا با ما مطرح و به اشتراک بگذارید.
کامنت