یک ماژول فایروال تحت وب است که برای استفاده همراه با وب سرورهای Apache طراحی شده است.  این ماژول سطح بالاتری از امنیت سرور را با محافظت سرور در مقابل نقاط آسیب پذیر موجود در  کد نرم افزار، فراهم می کند.

این افزایش امنیت با شناسایی و پیشگیری از خطوط حمله احتمالی پیش از رسیدن به برنامه واقعی به دست می آید. طبق تخمینی که زده شده است، بیش از ۷۰ درصد از تمام حملات وب سرور ها در سطح برنامه های  تحت وب صورت می گیرد، بنابراین نیاز به یک هاست ایمن تر کاملا احساس می شود.

ModSecurity یک ماژول آپاچی است که ویژگی های تشخیص نفوذ و پیشگیری از آن را به وب سرور اضافه می کند. در اصل شبیه به IDS است که شما برای تجزیه و تحلیل ترافیک شبکه خود از آن استفاده می کنید، به جز اینکه در سطح HTTP کار می کند و درک بسیار خوبی از آن دارد. از این رو به شما اجازه می دهد تا مواردی را که از دید HTTP عادی اما انجام آن از یک IDS کلاسیک دشوار است را انجام دهید. این تفاوت بعدا واضح خواهد شد زمانی که چند نمونه از آنچه mod_security می تواند انجام دهد را با هم  بررسی کنیم.

علاوه بر تشخیص، mod_security پیشگیری از حملات را نیز  پشتیبانی می کند. به دلیل اینکه بین مشتری و سرور قرار می گیرد، اگر متوجه شود درخواست شامل محتوای محرمانه است، می تواند با اجرای هر یک از پارامترهایی که دارد این درخواست را رد کند.

به عنوان یک ماژول مثل همه ماژول های دیگر، می توانید از mod_security هم به عنوان بخشی از نصب Apache استفاده کنید. سرباری که به علت  پردازش اضافی به وجود می آید، ناچیز است. البته اگر به درستی پیکربندی شده باشد. با این حال، اگر به این نکته مهم توجه کنید که وقوع یک حمله بسیار پرهزینه تر است و mod_security می تواند شما را در مقابل این حملات محافظت کند، هزینه سربار نصب آن ناچیز به شمار می آید.

ایرانسرور ماژول ModSecurity  را روی تمامی هاست های لینوکس خود ارائه می دهد تا اطمینان حاصل کند، امن ترین محیط میزبانی را برای مشتریان خود فراهم کرده است. باوجود اینکه این راه حل، تضمینی برای محافظت در برابر همه حملات نیست، اما سطح حملات محیط های میزبانی را کاهش می دهد، بنابراین احتمال وقوع نقص امنیتی نیز کاسته می شود.

گاهی اوقات نصب بودن ModSecurity روی سرور باعث می شود،IP مشتریانی که سورس کد وب سایتشان ناایمن شناخته می شود، بلاک شود. همچنین زمان هایی که برنامه ها به روشی ناایمن سعی در ارتباط با سرور دارند، این بلاک شدن ها اتفاق می افتد. که ممکن است  توسط تروجان یا ویروس روی کامپیوتر شما یا سایر برنامه های نرم افزاری یا پلاگین های آنها رخ دهد.

 

 

قوانین هسته در  برابر چه حملاتی سرور را محافظت می کنند؟

به منظور ارائه حفاظت از برنامه های کاربردی وب، قوانین هسته از تکنیک های زیر استفاده می کنند:

حفاظت HTTP – کشف نقض پروتکل HTTP و سیاست استفاده محلی تعریف شده از آن.

حفاظت در مقابل حملات تحت وب متداول – شناسایی حملات رایجی که نسبت به نرم افزار های تحت وب انجام می شود.

تشخیص خودکار – شناسایی رباتها، خزنده ها، اسکنرها و دیگر فعالیت های مخرب.

حفاظت تروجان- شناسایی دسترسی به تروجان.

پنهان کردن پیغام های خطا – پنهان کردن پیام های خطای ارسال شده توسط سرور.

 

عیب یابی هشدارهای ModSecurity

اگر چه موراد بسیاری هست که ModSecurity را هنگام کار یا دسترسی به یک سایت فعال می کنند، اما اولین چیزهایی که باید بررسی کنید عبارتند از:

وقتی یک سرور بلاک می گردد، فایل لاگی ایجاد می شود که نشان می دهد در لحظه بلاک شدن سرور به چه فایل هایی دسترسی انجام شده است. این فایل باید با دقت بررسی شود تا مشخص شود مشکل چیست. فروم های زیادی وجود دارند که در مورد ModSecurity بحث می کنند و این بهترین فروم ها بهترین جاست که مشکلتان را مطرح کرده و حلش کنید.

آیا از یک برنامه FTP خوب و اختصاصی مثل FileZilla استفاده می کنید؟ نرم افزارهای FTP که روی مرورگر نصب می شود باعث ایجاد مشکلاتی با ModSecurity می شوند و برنامه هایی نیستند که ما استفاده از آنها را توصیه کنیم.

آیا اسکن کامل ویروس انجام داده اید تا مطمئن شوید که هیچ نقطه آسیب پذیری روی کامپیوتر شما وجود ندارد؟ شاید بهتر باشد همه کامپیوترهای شبکه خود را چک کنید فقط محض اطمینان ازینکه چیزی در پس زمینه کمین نکرده و منتظر فرصت برای اجرا نباشد.

آیا پلاگینی روی مرورگر خود نصب کرده اید که سعی در اسکن کردن سرور یا صفحات وبی که بازدید می کنید داشته باشند؟ پلاگین های مرورگر می توانند بسیار مفید باشد، اما اغلب باعث مشکلات ModSecurity می شوند. مثلا متوجه شده ایم پلاگین Firebug روی فایرفاکس عامل تعدادی از هشداری ModSecurity است.

 

مزایای استفاده از modsecurity

حتما این سوال برای شما پیش آمده است که چرا نصب  mod_security مفید است؟ ما نمی توانیم جزئیات کاملی از تمام  قابلیت های mod_security  به شما ارائه دهیم، اما در اینجا مرور کوتاهی از آنچه که در هر درخواست رخ می دهد را شرح خواهیم داد:

درخواست را تجزیه و تحلیل کنید. این کار عمدتا ساده است، به جز زمانی که با درخواستی از نوع POST سرو کار دارید.

انجام اقدامات شفاف سازی و ضد تقلب .  یک سری تغییرات برای تبدیل ورودی به شکلی که قابل تجزیه و تحلیل باشد انجام می شود. این مرحله از کار با انواع زیادی از  تکنیک های مخربی که ممکن است هکر ها از آن استفاده کنند مبارزه می کند: مثلا حملات null byte، دایرکتوری های خود ارجاع، کاراکترهای چند اسلشه، استفاده از کاراکتر های بک اسلش در ویندوز و غیره.

انجام چک های خاص داخلی. این مرحله شامل اعتبارسنجی های پیچیده تری از قبیل بررسی نوع رمزگذاری URL و بررسی رمزگزاری Unicode است. همچنین این حق انتخاب را دارید که برای مقابله با کد های مخرب  فقط اجازه استفاده از مقادیر بایت خاصی را در متن درخواست بدهید.

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

سپس درخواست هنگام اجرا برای دسترسی به handler مجاز شناخته می شود. پس از درخواست:

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

درخواست را لاگ کنید. لاگ کامل درخواست شامل هدرهای ورودی و خروجی و بدنه درخواست می شود. برای جلوگیری از لاگ کردن بیش از حد، mod_security را می توان طوری پیکربندی کرد که فقط موراد مربوط را لاگ کند. مثل درخواست هایی که باعث دریافت پاسخی از mod_security می شوند.

 

مثالهای عملی

در این بخش، نشان خواهیم داد که یک قانون mod_security معمولی چه شکل و شمایلی دارد. همیشه باید با قوانینی  شروع کنید که  دامنه گسترده ای دارند و شما را به سمت مسائل خاص بیشتری هدایت می کنند. تمام قوانین mod_security (و گزینه های پیکربندی) می توانند به ازای  هر هاست مجازی یا هر شاخه ای اعمال شوند، بنابراین شما می توانید نواحی با تنظیمات امنیتی کاملا متفاوت داشته باشید.

 

تشخیص حملات متداول

این قوانین حملات رایج برنامه  های تحت وب را هدف قرار می دهند:

# Command execution attacks SecFilter /etc/password SecFilter /bin/ls # Directory traversal attacks SecFilter “\.\./” # XSS attacks SecFilter “<(.|\n)+>” SecFilter “<[[:space:]]*script” # SQL injection attacks SecFilter “delete[[:space:]]+from” SecFilter “insert[[:space:]]+into” SecFilter “select.+from” # MS SQL specific SQL injection attacks SecFilter xp_enumdsn SecFilter xp_filelist SecFilter xp_availablemedia SecFilter xp_cmdshell SecFilter xp_regread SecFilter xp_regwrite SecFilter xp_regdeletekey

 

حفاظت از یک اسکریپت آسیب پذیر

وقتی که یکی از گزینه پیکربندی register_globals فعال شود، برخی از برنامه های PHP ، آسیب پذیر می شوند، به طوری که هکرها می توانند یک متغیر داخلی را به مقدار انتخابی خود پر کنند. معمولا این  روند  منجر به اجرای کد های مخرب توسط هکر ها روی سرور می شود. در اینجا مثالی از دنیای واقعی (Cafelog b2، http://www.securityfocus.com/bid/7786) را مشاهده می کنید:

SecFilterSelective ARG_b2inc “!^$”

 

محافظت در مقابل حملات XSS از طریق کوکی جلسه(Session) PHP

نسخه های PHP قبل از ۴٫۳٫۲ در مقابل حملات XSS  ای که از طریق شناسه session  اتفاق می افتند آسیب پذیر هستند. اگر نسخه PHP خود را به آخرین نسخه ارتقا ندهید، نمی توانید از خودتان محافظت کنید:

SecFilterSelective ARG_PHPSESSID “!^[0-9a-z]*$” SecFilterSelective COOKIE_PHPSESSID “!^[0-9a-z]*$”

 

از FormMail برای فرستادن اسپم استفاده نکنید

برخی از نسخه های FormMail می توانند برای ارسال ایمیل به آدرس های دلخواه مورد استفاده قرار گیرند. قانون زیر نشان می دهد که چگونه می توانید یک فیلتر را فقط برای مکان های خاصی استفاده کنید، در این مورد فقط اسکریپت FormMail. همه درخواست ها رد خواهد شد اگر ایمیل به هر آدرسی به جز آدرسی که آخرش ” @modsecurity.org” وجود داشته باشد ارسال شود:

<Location /cgi-bin/FormMail>     SecFilterSelective “ARG_recipient” “!@modsecurity\.org$” </Location>

 

محدود کردن ورود مدیر فقط به یک آدرس IP

اینجا یک مثال خوب می بینید. من نرم افزاریی دارم که در آن مدیر هم از همان فرم ورودی که کاربران عادی از طریق آن وارد سیستم می شوند استفاده می کند، اما من هنوز می خواهم ورود به سیستم را به برخی از آدرس های IP محدود کنم. بنابراین من از دو قانون زنجیری استفاده کردم. دومین قانون  فقط در صورتی اعمال می شود که قانون اول مطابقت داشته باشد؛ در این مثال – اگر نام کاربری ورودی “admin” باشد.

SecFilterSelective ARG_username admin chain SecFilterSelective REMOTE_ADDR “!^ADMIN_IP_ADDRESS_HERE$”

 

جلوگیری از فاش شدن اطلاعات

در تمام نسخه های PHP، اگر fatal error رخ دهد، اسکریپت فورا حذف می شود (یعنی روش استاندارد مدیریت خطا  فراخوانی نمی شود).  از نشت اطلاعاتی که از این مشکلات نشات می گیرد می می توان توسط اسکن خروجی و جلوگیری از رسیدن به کاربر در صورت وجود پیام های خطا جلوگیری کرد.

SecFilterSelective OUTPUT “Fatal error:”

 

تشخیص نفوذ

فیلتر کردن خروجی اینجا هم به کار می آید و می تواند برای تشخیص نفوذ موفق باشد. این قوانین، بر خروجی  نظارت می کنند  و کلمات کلیدی متداولی را که ناشی از اجرای دستور بر روی سرور است شناسایی می کنند.

SecFilterSelective OUTPUT “Volume Serial Number” SecFilterSelective OUTPUT “Command completed” SecFilterSelective OUTPUT “Bad command or filename” SecFilterSelective OUTPUT “file(s) copied” SecFilterSelective OUTPUT “Index of /cgi-bin/”   SecFilterSelective OUTPUT “.*uid\=\(”

 

و دیگر موارد

اینکه کدام قواعد دیگر ممکن است مفید باشد بستگی به نوع برنامه و وب سرورهایی که پشت پروکسی معکوس از آن استفاده می کنید، دارد. در یک وب سایت mod_security شما می توانید تعداد زیادی از قوانین را که به طور خودکار از قوانین Snort کانورت شده اند، پیدا کنید. لیست را دانلود کنید و به سادگی قوانینی را که خودتان اعمال نکردید، حذف کنید.

بن مایه: https://blog.iranserver.com

امکان ارسال دیدگاه وجود ندارد!