آخرین نوشته ها

image post

راه کار های افزایش امنیت وب سرور Apache

مخفی سازی نسخه Apache و سایر اطلاعات حساس

تقریبا تمام نسخه های Apahce بعد از نصب نام و شماره نسخه وب سرور و سیستم عامل و سابر اطلاعات حساس مثل ماژول های نصب شده را به کاربران نمایش می دهند , نفوذگران میتوانند از این اطلاعات برای حملات خود استفاده نمایند !

برای تغییر این وضعیت کافی است به فایل تنظیمات آپاچی httpd.conf مراجعه نمایید

در سیستم عامل لینوکس باید در آدرس

/etc/apache

به دنبال این فایل باشید

در فایل مورد نظر تنظیمات زیر را وارد نمایید تا اطلاعات وب سرور نمایش داده نشوند !

نکته : در صورتی که موارد بالا بصورت پیشفرض وجود داند باید ویرایش شوند

ServerSignature Off
ServerTokens Prod
ServerSignature امضایی است که در زیر صفحات خطای وب سرور مثل 404 و ... وجود دارد و اطلاعات وب سرور را نمایش می دهد 
ServerTokens اطلاعات نسخه وب سرور در HTTP response header را به نام وب سرور محدود می نماید ! 
  • نکته : تمامی کد های تنظیمات در فایل httpd.conf باید ویرایش یا افزوده شوند !

اطمینان حاصل نمایید فایل های خارج از Root وب سرور قابل دسترسی نباشند

قطعا نمیخواهید وب سرور به فایل هایی جز فایل های وب سایت دسترسی داشته باشد

از آنجا که همیشه وب سایت داخل یک دایرکتوری قرار دارد میتوان با تنظیمات زیر محدودیت را ایجاد نمود

در مثال زیر دایرکتوری وب سایت web نام دارد

<Directory />
  Order Deny,Allow
  Deny from all
  Options None
  AllowOverride None
</Directory>
<Directory /web>
  Order Allow,Deny
  Allow from all
</Directory>

اطمینان حاصل نمایید Apache تحت حساب و گروه کاربری خودش اجرا می شود

ممکن است آپاچی بعد از نصب تحت گروه کاربری nobody اجرا شود

در این صورت حمله به اپاچی میتواند Mail Server شما را به خطر بی اندازد و بالعکس

User apache
Group apache

غیر فعال سازی Directory Browsing در Apache

میتوانید در داخل تگ Directory از کد زیر استفاده نمایید

Options -Indexes

غیر فعال سازی server side includes در Apache

میتوانید در داخل تگ Directory از کد زیر استفاده نمایید

Options -Includes

غیر فعال سازی CGI execution در Apache

اگر از CGI استفاده نمی کنید آنرا غیر فعال نمایید

Options -ExecCGI

جلوگیری از Follow شدن symbolic links در Apache

این مورد هم از طریق اقزودن کد زیر در تگ Directory قابل انجام است

Options -FollowSymLinks

غیر فعال سازی فایل .htaccess در Apache

در تگ Directory کد زیر را قرار دهید

AllowOverride None

نکته : اگر میخواهید از Override تنظیمات وب سرور استفاده نمایید اطمینان حاصل کنید فایل .htaccess قابل دانلود نباشد , همچنین میتوانید نام این فایل را به .httpdoverride تغییر دهید , همچنین دسترسی به تمام فایل هایی که با .ht شروع میشوند را ببندید

AccessFileName .httpdoverride
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

اجرای mod_security در Apache

ماژول mod_security بسیاری از موارد امنیتی را برای شما هندل میکند

https://www.modsecurity.org

غیر فعال سازی تمامی ماژول های غیر لازم

آپاچی پس از نصب تعدادی ماژول را بصورت پیش فرض اجرا میکند , با مطالعه module documentation متوجه می شوید به بسیاری از آنها نیاز ندارید!

اطمینان حاصل نمایید فقط کاربر Root به تنظیمات و binary های Apache دسترسی دارد

با اجرای دستورات زیر در ترمینال لینوکس مشکل حل میشود

chown -R root:root /usr/local/apache
chmod -R o-rwx /usr/local/apache

کاهش زمان TimeOut در سرور

زمان TimeAOut در Apache بصورت پیشفرض بر روی ۳۰۰ ثانیه تنظیم شده است اما شما با کاهش این زمان میتوانید کمک بسیاری به جلوگیری از حملات denial-of-service (DoS) attack بکنید

در فایل تنظیمات httpd.conf کد قبلی را ویرایش کرده و کد زیر را قرار دهید

Timeout 45

محدود سازی درخواست های بزرگ به وب سرور

آپاچی روش هایی برای محدود سازی درخواست ها ایجاد نموده که شما را در مقابله با denial of service attack مقاوم تر می نماید

بصورت پیشفرض هیچ محدودیتی وجود ندارد

LimitRequestBody 1048576

با کد بالا محدودیت بر روی یک مگابایت تنظیم می شود , توجه داشته باشید در این صورت هیچ فایل بالای ۱ مگابایتی قابل آپلود نیست !

محدود سازی XML Body

این مورد هم با افزودن کد زیر محدود میشود

LimitXMLRequestBody 10485760

محدود سازی همزمانی !

Apache تنظیماتی برای مدیریت و محدود سازی درخواست های همزمان را دارد

برای مثال MaxClients تعداد Child Proccess هایی است که میتواند توسط درخواست ها ایجاد شود

اگر سرور شما توانایی هندل کردن تعداد زیادی از درخواست های همزمان رو نداشته باشد تنظیمات بالا میتواند به شما کمک کند

همچنین MaxSpareServers , MaxRequestsPerChild , ThreadsPerChild , ServerLimit , MaxSpareThreads باید مطابق با توانایی سخت افزار و سیستم عامل شما تنظیم شوند !

محدود سازی دسترسی با IP

اگر میخواهید وب سایت شما فقط از طریق شبکه خودتون دیده شود میتوانید با IP این محدودیت را ایجاد نمایید

Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16

یا

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

تنظیم KeepAlive در Apache

بر اساس مستندات Apache استفاده از HTTP Keep Alive's  میتواند performance کاربران وب سایت را تا 50 درصد افزایش دهد

در تغییر این تنظیمات احتیاط کنید زیرا در عملکرد حملات DOS تاثیر مستقیم می گذارند

HTTP Keep Alive's بصورت پیشفرض روشن است و باید روشن بماند اما شما میتوانید MaxKeepAliveRequests و KeepAliveTimeout را بر اساس آنالیز لاگ فایل سرور تغییر دهید

اجرای Apache در یک محیط Chroot

Chroot به شما اجازه می دهد تا هر برنامه را در زندان ایزوله شده خود اجرا نمایید , در این صورت هر شکستی در یکی از سرویس های وب سرویس به نفوذگر اجازه دسترسی به سایر قسمت های سرور را نمی دهد !

اطلاعات بیشتر

اما mod_security در دل خود این امکان را دارد با کد زیر میتوان به راحتی انرا فعال نمود

SecChrootDir /chroot/apache

 

0 دیدگاه

ارسال دیدگاه جدید

دنیس ریچی : یونیکس بسیار ساده هست، تنها یک نابغه باید باشید تا بتوانید سادگی آن را درک کنید.