بلاگ/اپلیکیشن ModSecurity؛ نصب و تنظیم در سرور آپاچی
به‌روز شده

اپلیکیشن ModSecurity؛ نصب و تنظیم در سرور آپاچی

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

1399/06/165201 بازدید
اپلیکیشن ModSecurity؛ نصب و تنظیم در سرور آپاچی
ModSecurity یک برنامه فایروال برای وب‌سرور آپاچی محسوب می‌شود. اپلیکیشن ModSecurity علاوه بر قابلیت‌های تنظیم ورودی، می‌تواند ترافیک HTTP را به منظور تشخیص حملات احتمالی پایش کند. ModSecurity همچنین می‌تواند به عنوان یک ابزار تشخیص نفوذ مورد استفاده قرار گیرد. در نتیجه، می‌توانید واکنش مناسبی به اتفاقات مشکوک در سیستم‌های وب خود داشته باشید.اپلیکیشن Modsecurity به عنوان فایروال اگرچه اپلیکیشن ModSecurity با تنظیمات پیش‌فرض همراه خواهد بود، ولی در این آموزش از تنظیمات OWASP ModSecurity Core Rule Set (CRS) نسخه 3.0.2 استفاده می‌شود. هدف از پروژه OWASP ارائه یک سری قواعد اصولی برای ایجاد یک سطح پایه ایمنی برای هر گونه اپلیکیشن تحت‌وب بوده است. همچنین CRS برای حفاظت از اپلیکیشن‌های تحت‌وب در برابر مجموعه گسترده از حملات ارائه شده است. این نسخه از CRS نیازمند  استفاده از ModSecurity 2.8.0 و یا نسخه‌های جدیدتر است. تنظیمات از طریق rule set ها انجام می‌شود که به منظور جلوگیری از حملاتی مانند نفوذ SSQ، اسکریپت‌های اشتراکی و اجرای ریموت کد صورت می‌گیرد. در این آموزش، نحوه تنظیم قواعد پیش‌فرض را به شما نشان می‌دهیم. در همین حال، تنظیمات پیشفرض اپلیکیشن ModSecurity به عنوان یک چالش برای خواننده مطلب درنظر گرفته می‌شود.

نصب اپلیکیشن ModSecurity

قبل از اینکه اپلیکیشن ModSecurity را نصب کنید، حتماً باید آپاچی را در سرور خود داشته باشید. در این آموزش، از بسته موسوم به LAMP استفاده می‌شود.

دبیان

php
sudo apt install libapache2-modsecurity
راه‌اندازی دوباره آپاچی
php
/etc/init.d/apache2 restart
بررسی نسخه اپلیکیشن ModSecurity
php
apt-cache show libapache2-modsecurity
نکته: پس از نصب تمام مودها با استفاده از فرمان apachectl -M، اپلیکیشن ModSecurity تحت عنوان security2_module فهرست‌بندی می‌شود.

اوبونتو

php
sudo apt-get install libapache2-mod-security2
راه‌اندازی دوباره آپاچی
php
/etc/init.d/apache2 restart
بررسی اینکه نسخه ModSecurity برابر 2.8.0 و یا بالاتر است:
php
apt-cache show libapache2-mod-security2

CentOS

php
yum install mod_security
راه‌اندازی دوباره آپاچی با استفاده از فرمان زیر صورت می‌گیرد.
php
/etc/init.d/httpd restart
بررسی اینکه نسخه ModSecurity برابر 2.8.0 و یا بالاتر است:
php
yum info mod_security

سری قواعد هسته OWASP ModSecurity

مراحل زیر برای توزیع‌های مبتنی بر دبیان هستند. مسیر فایل‌ها و فرمان‌ها برای RHEL ممکن است اندکی تفاوت داشته باشند. ۱) جابجایی و  تغییر نام فایل پیش‌فرض اپلیکیشن ModSecurity
php
mv /etc/modsecurity/modsecurity.conf-recommended  modsecurity.conf
۲) در صورت لزوم git را نصب کنید.
php
sudo apt install git
۳) از گیت‌هاب، OWASP ModSecurity CRS را دریافت نمایید.
php
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
۴) به دایرکتوری دانلود شده بروید.  در اینجا باید فایل crs-setup.conf.example را به crs-setup.conf تغییر داده و جابجا کنید. سپس همین کار را با rules/ نیز انجام دهید.
php
cd owasp-modsecurity-crsmv crs-setup.conf.example /etc/modsecurity/crs-setup.confmv rules/ /etc/modsecurity/
۵) این فایل تنظیمات می‌بایست با مسیر بالا و با همان چیزی که در پارامتر IncludeOptional تعریف شده، مطابقت داشته باشد. برای این منظور، یک پارامتر دیگر Include با ارجاع به rule set اضافه کنید.
php
etc/apache2/mods-available/security2.conf<IfModule security2_module># Default Debian dir for modsecurity's persistent dataSecDataDir /var/cache/modsecurity# Include all the *.conf files in /etc/modsecurity.# Keeping your local configuration in that directory# will allow for an easy upgrade of THIS file and# make your life easierIncludeOptional /etc/modsecurity/*.confInclude /etc/modsecurity/rules/*.conf</IfModule>
۶) حالا آپاچی را دوباره راه‌اندازی کنید تا تغییرات اِعمال شوند.
php
/etc/init.d/apache2 restart

آزمایش اپلیکیشن ModSecurity

OWASP CRS بر اساس ModSecurity ساخته شده و بنابراین، قواعد موجود می‌توانند با این ابزار گسترش پیدا کنند. ۱) به سراغ تنظیمات پیش‌فرض آپاچی بروید و مطابق زیر، دو پارامتر دیگر اضافه کنید.
php
/etc/apache2/sites-available/000-default.conf<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www/htmlErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combinedSecRuleEngine OnSecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'Our test rule has triggered'"</VirtualHost>
۲) آپاچی را دوباره راه‌اندازی کنید و فرمان curl را نیز برای صفحه فهرست اجرا نمایید تا هشدارها عمداً فعال شوند.
php
curl localhost/index.html?testparam=test
کد پاسخ می‌بایست 403 باشد. همچنین باید پیامی در ثبت‌وقایع نشان دهند که قاعده تعریف شده اپلیکیشن ModSecurity عمل کرده است. می‌توانید این موضوع را با استفاده از فرمان sudo tail -f /var/log/apache2/error.log بررسی نمایید.
php
ModSecurity: Access denied with code 403 (phase 2). String match “test” at ARGS:testparam.       ۳) بررسی عملکرد OWASP CRScurl localhost/index.html?exec=/bin/bash
تاریخچه را دوباره بررسی کنید. جایی که قاعده اپلیکیشن ModSecurity توانسته تلاش برای اجرا یک اسکریپت خودسرانه را تشخیص دهد.
php
ModSecurity: Warning. Matched phrase “bin/bash” at ARGS:.                     

گام‌های بعدی

فایل‌های تنظیمات موجود در دایرکتوری /etc/modsecurity/*.conf را بررسی کنید. بسیاری از فایل‌ها دارای توضیحاتی در مورد گزینه‌های در دسترس‌شان هستند. اپلیکیشن ModSecurity از سیستم امتیازبندی موسوم به آنومالی استفاده می‌کند که عدد 5 در آن بالاترین سطح را دارد. در همین حال، منابع مختلف و از جمله وب‌سایت ModSecurity برای اطلاع بیشتر در دسترس خواهند بود.