بحث امنیت وب سرورها یکی از مباحث بسیار مهم است که شاید بتوان آن را بعنوان نگرانی درجه اول یک مدیر سیستم قلمداد کرد. در ادامه این مقاله به ارائه راهحلهایی برای ایمن کردن وب سرور آپاچی در برابر تعدادی از معمولترین حملات شناخته شده میپردازیم. دستورات ارائه شده مبتنی بر پکیج منیجر توزیع اوبونتو هستند ولی هیچ یک اختصاصی نبوده و با کمی جستجو میتوانید دستورات مربوط به گنو/لینوکس سرور خود را بیابید.
در این راهنما فرض بر این است که شما سیستمعامل Ubuntu server را بر روی سرور خود نصب کردهاید، پیکربندی شبکه انجام شده و به SSH دسترسی دارید.
Apache2 وبسرور مورد استفاده پیشفرض در فرایند نصب بسیاری از لینوکسهاست. گرچه آپاچی تنها گزینه موجود و نیز همیشه بهترین انتخاب برای شرایط مختلف نیست، ولی بسیاری از موارد استفاده را بخوبی پوشش میدهد. ممکن است در فرآیند نصب، سیستم از شما بخواهد که وبسرور مورد نظر خود را برای پیکربندی مجدد مشخص کنید که باید apache2 را معرفی کنید.
نصب Apache2 :
برای نصب آپاچی2 و دیگر کتابخانههای مورد نیاز دستور زیر را اجرا کنید.
بروز رسانی منطقه زمانی و بررسی زمان صحیح :
به منظور کاهش تداخل و اشتباهات در اطلاعات share شده و mirror شده لازم است تمامی سرورها تا جای ممکن با یکدیگر همگام باشند. بعضی مسائل در مدیریت سرور نیاز به دقیق بودن زمان سیستم دارند. و اگر این سرور قرار است مربوط به یک شرکت بزرگ باشد قوانین سختگیرانهای در مورد ثبت دقیق زمان رویدادها در این مورد وجود دارد.
غیرفعال کردن تداخلهای AppArmor :
اگرچه AppArmor مجموعهایست که بصورت پیشفرض یک سری لایههای امنیتی اضافی را ارائه میکند، ترجیح بر این است که برای هر سیستم پروفایلهای اختصاصی با تنظیمات مناسب ایجاد شود که کار چندان سادهای نیست و باید در مقاله دیگری به آن پرداخت. پس فعلا برای جلوگیری از هرگونه تداخل با پیکربندیهای پیشفرض AppArmor را غیرفعال میکنیم.
جلوگیری از حملات DDoS :
حملات DDoS یکی از مسائل مهم مورد توجه در بحث امنیت سرور است و اگر از آن غافل باشید به سادگی میتواند منابع اساسی سرور شما را بلعیده و آن را از کار بیاندازد. برای جلوگیری این مساله از یک ماژول آپاچی استفاده میکنیم.
سپس دستور زیر را وارد کنید تا فایل mod-evasive.load باز شود.
و در انتهای آن کدهای زیر را وارد کرده و ذخیره کنید.
جلوگیری از حملات Slowloris :
برای پیشگیری از حملات Slowloris نیز ماژول مخصوصی برای آپاچی وجود دارد. توجه داشته باشید که نام ماژول بسته به اینکه از کدام نسخه اوبونتو استفاده میکنید متفاوت است. برای اوبونتو 12.10 به بعد :
سپس پیکربندی موجود در فایل qos.conf را بررسی کنید.
نکته: اگر نسخه اوبونتو شما قبل از 12.04 است از این دستور استفاده کنید :
سپس فایل antiloris.conf را باز کنید.
و پیکربندی آن را بررسی کنید.
جلوگیری از جملات DNS Injection :
Spamhaus ماژولی است که به منظور بلوک کردن پخش اسپم از طریق فرمها از DNSBL بهره میبرد. این ماژول امکان تزریق به URL را از بین برده و حملات DDoS از طریق HTTP را نیز بلوک کرده و در مجموع سرور را از آی پی های بد شناخته شده محافظت میکند.
فایل apache2.conf را باز کنید.
و کدهای زیر را به آنتهای آن اضافه کنید.
و در نهایت سرویس آپاچی را Restart نمایید تا ماژولهای جدید لود شوند.
اکنون وبسرور نصب شده و آماده استفاده است. در مرورگر آدرس دامین خود را وارد کنید تا پیغام کارکرد صحیح پیشفرض آپاچی را مشاهده نمایید. بعنوان آخرین نکته دستور زیر را اجرا کرده و اطمینان حاصل کنید سرور پیغام خطایی ارائه نکرده باشد. اگر به ارور برخورد کردید ابتدا سعی کنید در گوگل به جستجوی آن بپردازید و در نهایت مشکل خود را در مکان مناسب مطرح کنید.
در این راهنما فرض بر این است که شما سیستمعامل Ubuntu server را بر روی سرور خود نصب کردهاید، پیکربندی شبکه انجام شده و به SSH دسترسی دارید.
Apache2 وبسرور مورد استفاده پیشفرض در فرایند نصب بسیاری از لینوکسهاست. گرچه آپاچی تنها گزینه موجود و نیز همیشه بهترین انتخاب برای شرایط مختلف نیست، ولی بسیاری از موارد استفاده را بخوبی پوشش میدهد. ممکن است در فرآیند نصب، سیستم از شما بخواهد که وبسرور مورد نظر خود را برای پیکربندی مجدد مشخص کنید که باید apache2 را معرفی کنید.
نصب Apache2 :
برای نصب آپاچی2 و دیگر کتابخانههای مورد نیاز دستور زیر را اجرا کنید.
کد PHP:
$ 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 شده لازم است تمامی سرورها تا جای ممکن با یکدیگر همگام باشند. بعضی مسائل در مدیریت سرور نیاز به دقیق بودن زمان سیستم دارند. و اگر این سرور قرار است مربوط به یک شرکت بزرگ باشد قوانین سختگیرانهای در مورد ثبت دقیق زمان رویدادها در این مورد وجود دارد.
کد PHP:
$ sudo apt-get -y install openntpd tzdata
کد PHP:
$ sudo dpkg-reconfigure tzdata
کد PHP:
$ sudo service openntpd restart
غیرفعال کردن تداخلهای AppArmor :
اگرچه AppArmor مجموعهایست که بصورت پیشفرض یک سری لایههای امنیتی اضافی را ارائه میکند، ترجیح بر این است که برای هر سیستم پروفایلهای اختصاصی با تنظیمات مناسب ایجاد شود که کار چندان سادهای نیست و باید در مقاله دیگری به آن پرداخت. پس فعلا برای جلوگیری از هرگونه تداخل با پیکربندیهای پیشفرض AppArmor را غیرفعال میکنیم.
کد PHP:
$ sudo /etc/init.d/apparmor stop
کد PHP:
$ sudo update-rc.d -f apparmor remove
کد PHP:
$ sudo apt-get remove apparmor apparmor-utils
جلوگیری از حملات DDoS :
حملات DDoS یکی از مسائل مهم مورد توجه در بحث امنیت سرور است و اگر از آن غافل باشید به سادگی میتواند منابع اساسی سرور شما را بلعیده و آن را از کار بیاندازد. برای جلوگیری این مساله از یک ماژول آپاچی استفاده میکنیم.
کد PHP:
; 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
کد PHP:
; html-script: false ]$ sudo nano /etc/apache2/mods-available/mod-evasive.load
کد PHP:
; 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 نیز ماژول مخصوصی برای آپاچی وجود دارد. توجه داشته باشید که نام ماژول بسته به اینکه از کدام نسخه اوبونتو استفاده میکنید متفاوت است. برای اوبونتو 12.10 به بعد :
کد PHP:
; html-script: false ]$ sudo apt-get -y install libapache2-mod-qos
کد PHP:
; 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 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>
کد PHP:
sudo apt-get -y install libapache2-mod-antiloris $
کد PHP:
; html-script: false ]$ sudo nano /etc/apache2/mods-available/antiloris.conf
کد PHP:
; html-script: false ]<IfModule mod_antiloris.c>
# Maximum simultaneous connections in READ state per IP address
IPReadLimit 5
</IfModule>
Spamhaus ماژولی است که به منظور بلوک کردن پخش اسپم از طریق فرمها از DNSBL بهره میبرد. این ماژول امکان تزریق به URL را از بین برده و حملات DDoS از طریق HTTP را نیز بلوک کرده و در مجموع سرور را از آی پی های بد شناخته شده محافظت میکند.
کد PHP:
; html-script: false ]$ sudo apt-get -y install libapache2-mod-spamhaus
$ sudo touch /etc/spamhaus.wl
کد PHP:
; html-script: false ]$ sudo nano /etc/apache2/apache2.conf
کد PHP:
; html-script: false ]<IfModule mod_spamhaus.c>
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList /etc/spamhaus.wl
MS_CacheSize 256
</IfModule>
کد PHP:
; html-script: false ]$ sudo service apache2 restart
کد PHP:
; html-script: false ]$ sudo tail -200 /var/log/syslog