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

در این راهنما فرض بر این است که شما سیستم‌عامل Ubuntu server را بر روی سرور خود نصب کرده‌اید، پیکربندی شبکه انجام شده و به SSH دسترسی دارید.
Apache2 وب‌سرور مورد استفاده پیش‌فرض در فرایند نصب بسیاری از لینوکس‌هاست. گرچه آپاچی تنها گزینه موجود و نیز همیشه بهترین انتخاب برای شرایط مختلف نیست، ولی بسیاری از موارد استفاده را بخوبی پوشش می‌دهد. ممکن است در فرآیند نصب، سیستم از شما بخواهد که وب‌سرور مورد نظر خود را برای پیکربندی مجدد مشخص کنید که باید apache2 را معرفی کنید.
نصب Apache2
برای نصب آپاچی۲ و دیگر کتابخانه‌های مورد نیاز دستور زیر را اجرا کنید.
 
۱
$ sudo aptget y install aptget install apache2 apache2.2common apache2doc apache2mpmprefork apache2utils libexpat1 sslcert libapache2modphp5 php5 php5common php5gd php5cli php5cgi libapache2modfcgid apache2suexec phppear phpauth php5mcrypt mcrypt libapache2modsuphp libopensslruby libapache2modruby
بروز رسانی منطقه زمانی و بررسی زمان صحیح
به منظور کاهش تداخل و اشتباهات در اطلاعات share شده و mirror شده لازم است تمامی سرورها تا جای ممکن با یکدیگر همگام باشند. بعضی مسائل در مدیریت سرور نیاز به دقیق بودن زمان سیستم دارند. و اگر این سرور قرار است مربوط به یک شرکت بزرگ باشد قوانین سخت‌گیرانه‌ای در مورد ثبت دقیق زمان رویدادها در این مورد وجود دارد.
 
۱
۲
۳
$ sudo aptget y install openntpd tzdata
$ sudo dpkgreconfigure tzdata
$ sudo service openntpd restart
تنظیم منطقه زمانی
غیرفعال کردن تداخل‌های AppArmor
اگرچه AppArmor مجموعه‌ایست که بصورت پیش‌فرض یک سری لایه‌های امنیتی اضافی را ارائه می‌کند، ترجیح بر این است که برای هر سیستم پروفایل‌های اختصاصی با تنظیمات مناسب ایجاد شود که کار چندان ساده‌ای نیست و باید در مقاله دیگری به آن پرداخت. پس فعلا برای جلوگیری از هرگونه تداخل با پیکربندی‌های پیش‌فرض AppArmor را غیرفعال می‌کنیم.
 
۱
۲
۳
$ sudo /etc/init.d/apparmor stop
$ sudo updaterc.d f apparmor remove
$ sudo aptget remove apparmor apparmorutils
جلوگیری از حملات DDoS
حملات DDoS یکی از مسائل مهم مورد توجه در بحث امنیت سرور است و اگر از آن غافل باشید به سادگی می‌تواند منابع اساسی سرور شما را بلعیده و آن را از کار بی‌اندازد. برای جلوگیری این مساله از یک ماژول آپاچی استفاده می‌کنیم.
 
۱
۲
۳
; htmlscript: false ]$ sudo aptget y install libapache2modevasive
$ sudo mkdir p /var/log/apache2/evasive
$ sudo chown R wwwdata:root /var/log/apache2/evasive
سپس دستور زیر را وارد کنید تا فایل mod-evasive.load باز شود.
 
۱
; htmlscript: false ]$ sudo nano /etc/apache2/modsavailable/modevasive.load
و در انتهای آن کدهای زیر را وارد کرده و ذخیره کنید.
 
۱
۲
۳
۴
۵
۶
۷
۸
; htmlscript: 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 نیز ماژول مخصوصی برای آپاچی وجود دارد. توجه داشته باشید که نام ماژول بسته به اینکه از کدام نسخه اوبونتو استفاده می‌کنید متفاوت است. برای اوبونتو ۱۲٫۱۰ به بعد :
 
۱
; htmlscript: false ]$ sudo aptget y install libapache2modqos
سپس پیکربندی موجود در فایل qos.conf را بررسی کنید.
 
۱
; htmlscript: false ]$ sudo nano /etc/apache2/modsavailable/qos.conf
 
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
; htmlscript: 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 را باز کنید.
 
۱
; htmlscript: false ]$ sudo nano /etc/apache2/modsavailable/antiloris.conf
و پیکربندی آن را بررسی کنید.
 
۱
۲
۳
۴
; htmlscript: false ]<IfModule mod_antiloris.c>
# Maximum simultaneous connections in READ state per IP address
IPReadLimit 5
</IfModule>
جلوگیری از جملات DNS Injection
Spamhaus ماژولی است که به منظور بلوک کردن پخش اسپم از طریق فرم‌ها از DNSBL بهره می‌برد. این ماژول امکان تزریق به URL را از بین برده و حملات DDoS از طریق HTTP را نیز بلوک کرده و در مجموع سرور را از آی پی های بد شناخته شده محافظت می‌کند.
 
۱
۲
; htmlscript: false ]$ sudo aptget y install libapache2modspamhaus
$ sudo touch /etc/spamhaus.wl
فایل apache2.conf را باز کنید.
 
۱
; htmlscript: false ]$ sudo nano /etc/apache2/apache2.conf
و کدهای زیر را به آنتهای آن اضافه کنید.
 
۱
۲
۳
۴
۵
; htmlscript: false ]<IfModule mod_spamhaus.c>
  MS_METHODS POST,PUT,OPTIONS,CONNECT
  MS_WhiteList /etc/spamhaus.wl
  MS_CacheSize 256
</IfModule>
و در نهایت سرویس آپاچی را Restart نمایید تا ماژول‌های جدید لود شوند.
 
۱
; htmlscript: false ]$ sudo service apache2 restart
اکنون وب‌سرور نصب شده و آماده استفاده است. در مرورگر آدرس دامین خود را وارد کنید تا پیغام کارکرد صحیح پیش‌فرض آپاچی را مشاهده نمایید. بعنوان آخرین نکته دستور زیر را اجرا کرده و اطمینان حاصل کنید سرور پیغام خطایی ارائه نکرده باشد. اگر به ارور برخورد کردید ابتدا سعی کنید در گوگل به جستجوی آن بپردازید و در نهایت مشکل خود را در مکان مناسب مطرح کنید.
 
۱
; htmlscript: false ]$ sudo tail 200 /var/log/syslog
منبع :‌ linuxreview

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

نشانی ایمیل شما منتشر نخواهد شد.