اگر شما میزبان یک وب سایت یا یک اپلیکیشن تحت وب هستید، احتمالا تا به حال حملات DoS یا Brute Force را تجربه نموده اید اما با نصب mod_evasive در آپاچی می توان بسیاری از حملات را دفع نمود. mod_evasive ماژولی است که عمل دفع حملات در هنگام حمله HTTP DoS یا برخی حمله DDoS یا Brute Force را انجام می دهد. هم چنین mod_evasive طوری طراحی شده تا یک ابزار مشاهده حملات هکری باشد و به سادگی برای اطلاع دادن به شما در مورد برخی حملات سایبری و بودن در نقش یک فایروال لایه 7 پیکربندی شده است بطوری که حتی در مواقع ضروری برای شما ایمیل اطلاعیه نیز می فرستد. نحوه کار به این صورت است که این ماژول آدرس IP ارسال شده به شما را که بیش از حد معمول به شما درخواست داده به مدت 10 دقیقه مسدود نموده تا به این صورت حملات را کنترل نماید. لازم به ذکر است که در فایل تنظیمات، این زمان را می توان کاهش یا افزایش داد.
آموزش نصب mod_evasive در Centos 7
در این مقاله آموزشی قصد داریم نحوه فعال سازی، پیکربندی و نصب mod_evasive بر روی سیستم عامل centos 7 را دنبال نموده و به این منظور از ابزار توسعه آپاچی لینوکس استفاده می نماییم.
نکته: اگر سرور آپاچی شما از سورس کامپایل شد باید مطمئن شوید که ماژول mod_so هم به درستی داخل آن کامپایل شده باشد در غیر اینصورت قادر به اضافه کردن هیچ ماژول سومی روی سرور آپاچی خود نیستید. بعد از کامپایل می توانید با دستور زیر ماژول های فعال شده خود را بررسی نمایید.
# apachectl -M | grep mod_so
نصب پیش نیازها در نصب mod_evasive روی Centos 7:
ما قصد ساخت mod_evasive از منبع را داریم بنابراین لازم است پکیج های زیر را نصب نماییم:
# yum install httpd-devel #yum groupinstall 'Development tools'
نحوه دانلود و کامپایل کردن mod_evasive در فرایند نصب mod_evasive :
با استفاده از دستور زیر به دایرکتوری “opt” وارد شده و ماژول mod_evasive را از Github دانلود نمایید.
# cd /opt/
کامند زیر را برای دانلود سورس وارد کتید :
# wget https://codeload.github.com/shivaas/mod_evasive/zip/master
سورس را با کد دستوری زیر از حالت فشرده خارج نمایید:
# unzip master
اکنون با نوشتن این کد وارد دایرکتوری دانلود شده شوید:
# cd mod_evasive-master
ما در این بخش قصد داریم که ابزار “apxs” را مورد استفاده قرار دهیم. این ابزار، ابزاری مناسب برای اضافه نمودن اشیا اشتراکی پویا ( Dynamic Shared Objects ) به سرور آپاچی قبلی است. بنابراین برای اضافه نمودن ماژول mod_evasive کامند زیر را اجرا نمایید:
# apxs -i -c -a mod_evasive24.c
تا اینجا اگر در نصب mod_evasive همه مراحل صحیح پیش رفته باشد، در ادامه هیچ گزارش خطایی مشاهده نمی گردد.
برای اعمال تنظیمات، سرویس آپاچی خود را ری استارت نمایید:
# systemctl restart httpd
به منظور بررسی فعال شدن آپاچی و در حال اجرا بودن آن، لازم است جمله دستوری زیر را اجرا نمایید:
# apachectl -M | grep evasive
در این مرحله باید خروجی مانند زیر را مشاهده نمایید:
# evasive24_module (shared)
پیکربندی mod_evasive :
توسط کامند زیر میتوانید تنظیمات خود را در فایل “httpd.conf” اضافه نمایید :
# nano /etc/httpd/conf/httpd.conf
باید در پیکر بندی اعداد و ارقام زیر را وارد نمایید:
<IfModule mod_evasive24.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 60 DOSEmailNotify <YOU@YOURMAIL.COM> </IfModule>
*کد دستوری DOSPageCount تعداد درخواست های یک کاربر از دامنه ای یکسان برای صفحه ورودی شما را مشخص می نماید. وقتی تعداد درخواست ها به حد مرز مجاز خود رسیدند، کاربر به لیست کاربران مسدودی اضافه می گردد.
*کد دستوری DOSSiteCount نیز همانند کد دستوری قبلی، تعداد درخواست های ارسالی کاربر به سایت شما را مشخص می نماید. در این حالت نیزاگر تعداد درخواست ها از حد بگذرند، کاربر مسدود می گردد.
*کد دستوری DOSPageInterval تعداد اینتروال های مجاز در آستانه صفحه ورودی شما را شمارش می کند. مقدار پیشفرض همانگونه که میبینید عدد 1 است.
*کد دستوری DOSSiteInterval نیز تعداد اینتروال های مجاز در آستانه سایت را شمارش می کند. مقدار پیشفرض در این حالت نیز عدد 1 است.
*همانطور که قبلا اعلام نمودیم یک گزینه جهت مسدود کردن کاربران درخواست داده شده به سایت شما وجود دارد که می توانیم میزان زمان مسدودی را با عدد دهی به کد دستوری DOSBlockingPeriod تعیین نماییم. بازه زمانی انتخاب شده توسط ما 60 دقیقه است. بدین معنا که کاربر مسدود شده باید 60 دقیقه در انتظار ارسال درخواست مجدد باقی بماند. هرچه بازه زمانی بیشتر باشد، احتمال دفع حملات HTTP DoS، DDoS یا Brute Force با استفاده از ماژول mod_evasive بیشتر خواهد بود. لازم به ذکر است که این مقدار دهی بر اساس ثانیه ذکر شده است.
*اگر قرار باشد از سمت ماژول mod_evasive برای شما ایمیل اطلاع رسانی از حمله احتمالی ارسال گردد، لازم است آدرس ایمیل مورد نظر خود را در مقابل DOSEmailNotify وارد نمایید.
بعد از نصب mod_evasive برای شروع به کار پیکر بندی ماژول mod_evasive و پارامترهای آن فایل متنی که در دایرکتوری سورس قرار داده شده است را مطالعه نمایید:
# cat /opt/mod_evasive/README.md
برای کسب اطلاعات بیشتر و اخبار مربوط به نصب mod_evasive روی centos 7 می توانید از صفحه Github ماژول mod_evasive دیدن فرمایید.
نصب mod_evasive در centos 7 با استفاده از cpanel:
آخرین ورژن cpanel یک پکیج را به mod_evasive تخصیص داده است. تنها تفاوت نصب mod_evasive در centos 7 در آپاچی با نصب mod_evasive در centos 7 در cpanel در کد دستوری yum قرار دارد که به شکل زیر انجام و اجرا می گردد:
yum install ea-apache24-mod_evasive.x86_64