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

در این راهنما فرض بر این است که شما سیستم‌عامل 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 یکی از مسائل مهم مورد توجه در بحث امنیت سرور است و اگر از آن غافل باشید به سادگی می‌تواند منابع اساسی سرور شما را بلعیده و آن را از کار بی‌اندازد. برای جلوگیری این مساله از یک ماژول آپاچی استفاده می‌کنیم.
 
۱
۲
۳
; html–script: false ]$ 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 باز شود.
 
۱
; html–script: false ]$ sudo nano /etc/apache2/mods–available/mod–evasive.load
و در انتهای آن کدهای زیر را وارد کرده و ذخیره کنید.
 
۱
۲
۳
۴
۵
۶
۷
۸
; html–script: false ]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 admin@domain.com
جلوگیری از حملات Slowloris
برای پیش‌گیری از حملات Slowloris نیز ماژول مخصوصی برای آپاچی وجود دارد. توجه داشته باشید که نام ماژول بسته به اینکه از کدام نسخه اوبونتو استفاده می‌کنید متفاوت است. برای اوبونتو ۱۲٫۱۰ به بعد :
 
۱
; html–script: false ]$ sudo apt–get –y install libapache2–mod–qos
سپس پیکربندی موجود در فایل qos.conf را بررسی کنید.
 
۱
; html–script: false ]$ sudo nano /etc/apache2/mods–available/qos.conf
 
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
; html–script: false ]## 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              ۲۵۶
    # disables keep-alive when 70% of the TCP connections are occupied:
    QS_SrvMaxConnClose      ۱۸۰
    # minimum request/response speed (deny slow clients blocking the server,    
    # ie. slowloris keeping connections open without requesting anything):
    QS_SrvMinDataRate       ۱۵۰ ۱۲۰۰
    # and limit request header and body (carefull, that limits uploads and
    # post requests too):
    # LimitRequestFields      ۳۰
    # QS_LimitRequestBody     ۱۰۲۴۰۰
</IfModule>

نکته: اگر نسخه اوبونتو شما قبل از ۱۲٫۰۴ است از این دستور استفاده کنید sudo apt-get -y install libapache2-mod-antiloris $

:

سپس فایل antiloris.conf را باز کنید.
 
۱
; html–script: false ]$ sudo nano /etc/apache2/mods–available/antiloris.conf
و پیکربندی آن را بررسی کنید.
 
۱
۲
۳
۴
; html–script: false ]<IfModule mod_antiloris.c>
# Maximum simultaneous connections in READ state per IP address
IPReadLimit 5
</IfModule>
جلوگیری از جملات DNS Injection
Spamhaus ماژولی است که به منظور بلوک کردن پخش اسپم از طریق فرم‌ها از DNSBL بهره می‌برد. این ماژول امکان تزریق به URL را از بین برده و حملات DDoS از طریق HTTP را نیز بلوک کرده و در مجموع سرور را از آی پی های بد شناخته شده محافظت می‌کند.
 
۱
۲
; html–script: false ]$ sudo apt–get –y install libapache2–mod–spamhaus
$ sudo touch /etc/spamhaus.wl
فایل apache2.conf را باز کنید.
 
۱
; html–script: false ]$ sudo nano /etc/apache2/apache2.conf
و کدهای زیر را به آنتهای آن اضافه کنید.
 
۱
۲
۳
۴
۵
; html–script: false ]<IfModule mod_spamhaus.c>
  MS_METHODS POST,PUT,OPTIONS,CONNECT
  MS_WhiteList /etc/spamhaus.wl
  MS_CacheSize 256
</IfModule>
و در نهایت سرویس آپاچی را Restart نمایید تا ماژول‌های جدید لود شوند.
 
۱
; html–script: false ]$ sudo service apache2 restart
اکنون وب‌سرور نصب شده و آماده استفاده است. در مرورگر آدرس دامین خود را وارد کنید تا پیغام کارکرد صحیح پیش‌فرض آپاچی را مشاهده نمایید. بعنوان آخرین نکته دستور زیر را اجرا کرده و اطمینان حاصل کنید سرور پیغام خطایی ارائه نکرده باشد. اگر به ارور برخورد کردید ابتدا سعی کنید در گوگل به جستجوی آن بپردازید و در نهایت مشکل خود را در مکان مناسب مطرح کنید.
 
۱
; html–script: false ]$ sudo tail –200 /var/log/syslog
منبع :‌ linuxreview

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *