وب سرور 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-security-error-page

 

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

فایل پیکربندی را با ویرایشگر nano باز کنید و «ServerSignature» را جستجو کنید ، که به طور پیش‌فرض روشن است. ما باید این ServerSignature را خاموش کنیم و خط دوم «ServerTokens Prod» به Apache می‌گوید که در هر درخواست صفحه فقط Apache را به‌عنوان محصول در هدر پاسخ سرور برگرداند، این سیستم‌عامل، اطلاعات نسخه اصلی و جزئی را سرکوب می‌کند.

#sudo nano /etc/apache2/apache2.conf
ServerSignature Off

ServerTokens Prod

و در ادامه سرور خود را restart می کنیم

نکته:

در صورتی که ServerSignature و ServerTokens  وجود نداشت می توانیم به انتهای فایل کانفیگ آپاچی اضافه کرد

بعد از اعمال مراحل بالا درخواست درصورت خطا به شکل زیر میشود

apache-security-without-error

غیرفعال سازی لیست فهرست یا Directory Listing

به طور پیش فرض Apache تمام محتوای دایرکتوری ریشه Document را در غیاب فایل index لیست می کند. لطفاً تصویر زیر را ببینید

apache-security-directory-list

ما می توانیم لیست فهرست را با استفاده از Options در فایل پیکربندی یک دایرکتوری خاص را خاموش کنیم. بدین منظور باید یک entry در فایل httpd.conf یا apache2.conf ایجاد کنیم. مثلا

# sudo nano /etc/apache2/apache2.conf

دستور زیر را به فایک کانفیگ اضافه می کنیم

<Directory /var/www/html>
   Options -Indexes    
</Directory>

سپس آپاچی را ریستارت میکنیم
sudo service apache2 restart

بعد از ریستارت شدن به صورت زیر می شود

apache-security-403

نصب ماژول 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 mail@yourdomain.com
    DOSWhitelist IPADDRESS_RANGE_FOR_WHITE_LISTING
    
    </IfModule>
    در ادامه بایستی سرویس آپاچی را ریستارت کنید
    
    /etc/init.d/apache2 restart 
    or
    sudo systemctl restart apache2