mod_security Web Intrusion Detection And Prevention
خب!!! در بحث امنیت قصد دارم ماژولهای امنیتی آپاچی رو بررسی کنیم. امنیت یا Security بحثی است که هیچ وقت تمومی نداره و همیشه سیستمهای کامپیوتری ما در خطر حمله هستند حتی ایمن ترین سیستمها. یکی از مهمترین و اساسی ترین ماژولهای امنیتی آپاچی که به عنوان فایروال شخصی یا IDS ارائه می شود mod_security است. - بررسی payload های بسته های ارسالی با متد post - بررسی هدرها - بررسی کوکی های کابر - بررسی متغیرهای محیطی - بررسی متغیرهای سرور - بررسی خروجی اسکریپتها قبل از اجرا - Request Filtering - بررسی بسته های HTTPS - ثبت وقایع - حذف اسلشهای متوالی - حذف فضاهای خالی , null byte-%00 - بررسی صحت Byte Range (که تنها مقادیر کاراکتری مشخصی میتوانند به عنوان بخشی از درخواست قرار گیرند.) - بررسی صحت URL Encoding - بررسی صحت Unicode Encoding - و ... اینها تنها گوشه ای از عملکرد این ماژول است در واقع این ماژول یک راه حل مناسب برای جلوگیری از حملات XSS, CSRF, CRLF , SQL Injection , Buffer Overflow , جعل محتوا و فرمانهای OS در اختیار شما قرار می دهد. هر کدام از حملات فوق در صورت نیاز به اختصار مورد بررسی قرار می گیرد. طریقه استفاده از این ماژول پس از نصب آن به دو صورت است : 1- SecFilter KEYWORD [Actions] 2- SecFilterSelective LOCATION KEYWORD [Actions] البته من هم مثل شما روش دوم رو ترجیح می دم. قبل از استفاده شما نیاز به نوشتن چند خط در فایل پیکربندی دارید :
# Turn the filtering engine On or Off SecFilterEngine On
# Make sure that URL encoding is valid SecFilterCheckURLEncoding On
# Unicode encoding check SecFilterCheckUnicodeEncoding Off
# Only allow bytes from this range SecFilterForceByteRange 32 126
# Only log suspicious requests SecAuditEngine RelevantOnly
# The name of the audit log file SecAuditLog logs/audit_log # Debug level set to a minimum SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLevel 0
# Should mod_security inspect POST payloads SecFilterScanPOST On
# By default log and deny suspicious requests # with HTTP status 500 SecFilterDefaultAction "deny,log,status:500"
کامتنها خود گویای همه چیز هست! البته نباید سخت گرفت قضیه ساده تر از اونیه که فکر می کنید. خب حالا یک مثال در مورد جلوگیری از حملات SQL Injection با استفاده از کوکی : SecFilterSelective COOKIE_sessionid "!^(|[0-9]{1,9})$" با درج دستور فوق در فایل پیکربندی آپاچی ، تنها کوکی هایی پذیرفته می شوند که شامل ارقام 9-1 باشند. همچنین شما می توانید با استفاده از این ماژول فقط به ثبت رویدادها (LOG) بپردازید بدون آنکه جلوی درخواستی را بگیرید یا پیغامی به کاربر نشان دهید. این ماژول را می توانید به همراه راهنمای نصب و راه اندازی از سایت رسمی آن تهیه کنید : http://www.modsecurity.org n!ghtw0lf good luck |