وب سرور Apache محبوبترین و وسیعترین سرور HTTP قابلدسترس روی اینترنت است که از زبانهای Perl وPHP پشتیبانی کرده و بر روی اکثر سیستمهای عامل قابلیت اجرا دارد.
آپاچی برنامهای free Open Source محسوب میشود که همراه سرورهای وب بهمنظور اداره نمودن درخواستهای وب و همچنین منابع مورداستفاده قرار میگیرد.
Apache HTTP Server بر روی سیستمعامل یونیکس همچون Linux یا BSD قابلیت اجرا دارد. ضمناً امکان اجرا روی ویندوز مایکروسافت و همچنین سیستمهای عامل دیگر یا Platformها را دارا میباشد. این سرور ویژگیهای منحصربهفردی همراه add-on های قوی دارد که به شکل رایگان در دسترس هستند.
Apache از امکانات خاصی برخوردار میباشد و رایجترین کاربرد این برنامه مربوط به htaccess میشود که طراحان حرفهای از آن در محیط لینوکس بهره میبرند.
مخفی کردن نسخه Apache و خطاهای سرور
وقتی Apache را از طریق سورس یا package manger مانند yum نصب می کنید ، نسخه وب سرور Apache شما با نام سیستم عامل سرور شما در Errors نمایش داده می شود. همچنین اطلاعات مربوط به ماژول های Apache که در سرور شما نصب شده اند را نشان می دهد.
در تصویر بالا میبینید که نسخه Apache و نام سیستمعامل نصب شده در سرور شما را نشان میدهد. این میتواند یک تهدید امنیتی بزرگ برای وب سرور و همچنین لینوکس شما باشد. برای اینکه Apache این اطلاعات را نشان ندهد، باید در فایل پیکربندی اصلی Apache تغییراتی ایجاد کنیم.
فایل پیکربندی را با ویرایشگر nano باز کنید و «ServerSignature» را جستجو کنید ، که به طور پیشفرض روشن است. ما باید این ServerSignature را خاموش کنیم و خط دوم «ServerTokens Prod» به Apache میگوید که در هر درخواست صفحه فقط Apache را بهعنوان محصول در هدر پاسخ سرور برگرداند، این سیستمعامل، اطلاعات نسخه اصلی و جزئی را سرکوب میکند.
#sudo nano /etc/apache2/apache2.conf
ServerSignature Off
ServerTokens Prod
و در ادامه سرور خود را restart می کنیم
نکته:
در صورتی که ServerSignature و ServerTokens وجود نداشت می توانیم به انتهای فایل کانفیگ آپاچی اضافه کرد
بعد از اعمال مراحل بالا درخواست درصورت خطا به شکل زیر میشود
غیرفعال سازی لیست فهرست یا Directory Listing
به طور پیش فرض Apache تمام محتوای دایرکتوری ریشه Document را در غیاب فایل index لیست می کند. لطفاً تصویر زیر را ببینید
ما می توانیم لیست فهرست را با استفاده از Options در فایل پیکربندی یک دایرکتوری خاص را خاموش کنیم. بدین منظور باید یک entry در فایل httpd.conf یا apache2.conf ایجاد کنیم. مثلا
# sudo nano /etc/apache2/apache2.conf
دستور زیر را به فایک کانفیگ اضافه می کنیم
<Directory /var/www/html>
Options -Indexes
</Directory>
سپس آپاچی را ریستارت میکنیم
sudo service apache2 restart
بعد از ریستارت شدن به صورت زیر می شود
نصب ماژول mod_security و mod_evasive برای امنیت Apache
این دو ماژول «mod_security» و «mod_evasive» از نظر امنیتی ماژول های بسیار محبوب Apache هستند.
Mod_security
mod_security به عنوان فایروال برای برنامه های وب ما کار می کند و به ما امکان می دهد تا بر اساس زمان واقعی ترافیک را کنترل کنیم. همچنین به ما کمک می کند تا از وب سایت ها یا وب سرور خود در برابر حملات هکرها محافظت کنیم.
sudo apt-get install libapache2-modsecurity
sudo a2enmod mod-security
sudo /etc/init.d/apache2 force-reload
Mod_evasive
این ماژوا بسیار کارآمد کار است و با پردازش یک درخواست از حملات DDOS جلوگیری می کند. این ویژگی ما را قادر به کنترل HTTP brute force و حمله Dos یا DDos میکند. این ماژول حملات را با سه روش تشخیص می دهد.
- اگر تعداد زیادی درخواست در چند ثانیه به یک صفحه ارسال شود
- اگر هر پردازش child سعی در ساختن بیش از 50 درخواست همزمان کند.
اگر هر IP در هنگام قرار گرفتن موقت در لیست سیاه همچنان در تلاش برای درخواست جدید باشد
apt-get install libapache2-mod-evasive Create the log directory for mod_evasive mkdir -p /var/log/apache2/evasive chown -R www-data:root /var/log/apache2/evasive vi /etc/apache2/mods-available/mod-evasive.load LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 5 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSLogDir "/var/log/apache2/evasive" DOSEmailNotify [email protected] DOSWhitelist IPADDRESS_RANGE_FOR_WHITE_LISTING </IfModule> در ادامه بایستی سرویس آپاچی را ریستارت کنید /etc/init.d/apache2 restart or sudo systemctl restart apache2