منبع اصلی نوشتار زیر در این لینک قرار دارد

چگونه یک وب‌سرور آپاچی امن بر روی اوبونتو پیاده کنیم

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

در این راهنما فرض بر این است که شما سیستم‌عامل Ubuntu server را بر روی سرور خود نصب کرده‌اید، پیکربندی شبکه انجام شده و به SSH دسترسی دارید.

Apache2 وب‌سرور مورد استفاده پیش‌فرض در فرایند نصب بسیاری از لینوکس‌هاست. گرچه آپاچی تنها گزینه موجود و نیز همیشه بهترین انتخاب برای شرایط مختلف نیست، ولی بسیاری از موارد استفاده را بخوبی پوشش می‌دهد. ممکن است در فرآیند نصب، سیستم از شما بخواهد که وب‌سرور مورد نظر خود را برای پیکربندی مجدد مشخص کنید که باید apache2 را معرفی کنید.

نصب Apache2

برای نصب آپاچی۲ و دیگر کتابخانه‌های مورد نیاز دستور زیر را اجرا کنید.

$ sudo apt-get -y install apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby

 

بروز رسانی منطقه زمانی و بررسی زمان صحیح

به منظور کاهش تداخل و اشتباهات در اطلاعات share شده و mirror شده لازم است تمامی سرورها تا جای ممکن با یکدیگر همگام باشند. بعضی مسائل در مدیریت سرور نیاز به دقیق بودن زمان سیستم دارند. و اگر این سرور قرار است مربوط به یک شرکت بزرگ باشد قوانین سخت‌گیرانه‌ای در مورد ثبت دقیق زمان رویدادها در این مورد وجود دارد.

$ sudo apt-get -y install openntpd tzdata
$ sudo dpkg-reconfigure tzdata
$ sudo service openntpd restart

تنظیم منطقه زمانی

 

غیرفعال کردن تداخل‌های AppArmor

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

$ sudo /etc/init.d/apparmor stop
$ sudo update-rc.d -f apparmor remove
$ sudo apt-get remove apparmor apparmor-utils

 

جلوگیری از حملات DDoS

حملات DDoS یکی از مسائل مهم مورد توجه در بحث امنیت سرور است و اگر از آن غافل باشید به سادگی می‌تواند منابع اساسی سرور شما را بلعیده و آن را از کار بی‌اندازد. برای جلوگیری این مساله از یک ماژول آپاچی استفاده می‌کنیم.

$ sudo apt-get -y install libapache2-mod-evasive
$ sudo mkdir -p /var/log/apache2/evasive
$ sudo chown -R www-data:root /var/log/apache2/evasive

سپس دستور زیر را وارد کنید تا فایل mod-evasive.load باز شود.

$ sudo nano /etc/apache2/mods-available/mod-evasive.load

و در انتهای آن کدهای زیر را وارد کرده و ذخیره کنید.

DOSHashTableSize 2048
DOSPageCount 20            # maximum number of requests for the same page
DOSSiteCount 300           # total number of requests for any object by the same client IP on the same listener
DOSPageInterval 1.0        # interval for the page count threshold
DOSSiteInterval 1.0        # interval for the site count threshold
DOSBlockingPeriod 10.0     # time that a client IP will be blocked for
DOSLogDir “/var/log/apache2/evasive”
DOSEmailNotify [email protected]

 

جلوگیری از حملات Slowloris

برای پیش‌گیری از حملات Slowloris نیز ماژول مخصوصی برای آپاچی وجود دارد. توجه داشته باشید که نام ماژول بسته به اینکه از کدام نسخه اوبونتو استفاده می‌کنید متفاوت است. برای اوبونتو ۱۲.۱۰ به بعد :

$ sudo apt-get -y install libapache2-mod-qos

سپس پیکربندی موجود در فایل qos.conf را بررسی کنید.

$ sudo nano /etc/apache2/mods-available/qos.conf

 

## QoS Settings
<IfModule mod_qos.c>
    # handles connections from up to 100000 different IPs
    QS_ClientEntries 100000
    # will allow only 50 connections per IP
    QS_SrvMaxConnPerIP 50
    # maximum number of active TCP connections is limited to 256
    MaxClients              256 
    # disables keep-alive when 70% of the TCP connections are occupied:
    QS_SrvMaxConnClose      180
    # minimum request/response speed (deny slow clients blocking the server,     
    # ie. slowloris keeping connections open without requesting anything):
    QS_SrvMinDataRate       150 1200
    # and limit request header and body (carefull, that limits uploads and 
    # post requests too):
    # LimitRequestFields      30
    # QS_LimitRequestBody     102400
</IfModule>
نکته: اگر نسخه اوبونتو شما قبل از ۱۲.۰۴ است از این دستور استفاده کنید

 sudo apt-get -y install libapache2-mod-antiloris $

:

سپس فایل antiloris.conf را باز کنید.

$ sudo nano /etc/apache2/mods-available/antiloris.conf

و پیکربندی آن را بررسی کنید.

<IfModule mod_antiloris.c>
	# Maximum simultaneous connections in READ state per IP address 
	IPReadLimit 5 
</IfModule>

 

جلوگیری از جملات DNS Injection

Spamhaus ماژولی است که به منظور بلوک کردن پخش اسپم از طریق فرم‌ها از DNSBL بهره می‌برد. این ماژول امکان تزریق به URL را از بین برده و حملات DDoS از طریق HTTP را نیز بلوک کرده و در مجموع سرور را از آی پی های بد شناخته شده محافظت می‌کند.

$ sudo apt-get -y install libapache2-mod-spamhaus
$ sudo touch /etc/spamhaus.wl

فایل apache2.conf را باز کنید.

$ sudo nano /etc/apache2/apache2.conf

و کدهای زیر را به آنتهای آن اضافه کنید.

<IfModule mod_spamhaus.c>
  MS_METHODS POST,PUT,OPTIONS,CONNECT 
  MS_WhiteList /etc/spamhaus.wl 
  MS_CacheSize 256 
</IfModule>

 

و در نهایت سرویس آپاچی را Restart نمایید تا ماژول‌های جدید لود شوند.

$ sudo service apache2 restart

 

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

$ sudo tail -200 /var/log/syslog

 

برگرفته از : +

6 دیدگاه برای این نوشته:

  1. عرفان طباطبائی:

    ۰۷ آذر ۱۳۹۲
    ممنون برای مطلب عالــی و فنــی مسعود جان
  2. هادی:

    ۰۷ آذر ۱۳۹۲
    بسیار عالی با تشکر از مسعود عزیز
  3. جعفر:

    ۰۷ آذر ۱۳۹۲
    بسیار عالی بود.
  4. مهدی شیخ حسینی:

    ۰۷ آذر ۱۳۹۲
    عالی بود .
  5. مسعود آموزگار:

    ۰۸ آذر ۱۳۹۲
    خواهش میکنم دوستان قابل شما رو نداشت. :)
  6. محمد:

    ۱۰ آذر ۱۳۹۲
    بسیار مفید و کاربردی :)
    خسته نباشید

ارسال نظر سریع



برچسب ها : , , ,