آشنایی با Web Application Firewall (بخش اول)

آشنایی با Web Application Firewall

مقدمه

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

با توجه به گستردگی و پیچیدگی حملات سایبری و با توجه به متنوع بودن ساختار برنامه های تحت وب ، احتیاج به داشتن یک راه حل جامع و کارا جهت جلوگیری و یا به حداقل رساندن اثرات منفی اینگونه حملات امری ضروری  محسوب می شود. یکی از جدیدترین ابزارهای جلوگیری از نفوذ و حمله به وب سایت ها، فایروال های مختص برنامه های تحت وب یا همان Web Application Firewall(WAF) ها می باشند. در این مستند به بررسی دلایل استفاده از WAF و ویژه گی ها و مزایای استفاده از این سیستم ها می پردازیم. لازم به ذکر است که این مستند وابسته به یک محصول خاص نبوده و شامل ویژگی های اصلی و لازم برای WAF ها می باشد و در صورت تصمیم سازمان در خصوص تهیه و استفاده از WAF  در شبکه ، نسبت به ارائه طرح متناسب با ساختار شبکه و برنامه های تحت وب موجود اقدام خواهد گردید.

مشکلات امنیتی برنامه های تحت وب

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

با گسترش و پیشرفت روش های نفوذ به برنامه های تحت وب ، هرروزه روش های جدیدی ار قبیل SQL injection, cross-site scripting or session hijacking جایگزین روشی قبلی می گرددند .

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

از نقطه نظر فنی، دلیل اصلی و بنیادین این مشکلات مربوط به ساختار خود وب و یا همان پروتکل HTTP می باشد.پروتکل HTTP برای ساختارهای پیچیده برنامه های تحت وب امروزی طراحی نگردیده است به عنوان مثال ساختار پروتکل HTTP بصورت stateless می باشد و این در حالی است که برای ایجاد ونگهداری وضعیت  Sessionها و یا برنامه های Stateful نیاز به استفاده ازعملیات جداگانه دیگری می باشد همچنین از طرفی استفاده از اسکریپت های تحت وب ،Framework های گوناگون و تکنولوژهای متنوع ایجاد وب سایت ها، به میزان پیچیدگی برنامه ها تحت وب افزوده و امکان ایجاد نقاط ضعف دربرنامه را بطور چشمگیری افزایش می دهد.

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

512

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

  • آنالیز
  • طراحی
  • پیاده سازی
  • تست درستی عملکرد و مستند سازی
  • نگهداری

با توجه به مطالب فوق ،یکی که بهترین زمان هایی که می توان یک برنامه امن و قابل اطمینان ایجاد نمود در زمان طراحی و پیاده سازی نرم افزار می باشد. در این زمان می توان از روش ها و ابزار های مشخصی جهت آنالیز کد های(code analysis) نوشته شده از لحاظ رعایت  نمودن موارد امنیتی و مطابقت با استاندارهای مربوطه  استفاده نمود معمولا در این زمان می توان با آموزش  برنامه نویسان با مطالبی همچون Secure Code Programming  ، یک برنامه امن و قابل اطمینان ایجاد نمود. گفتنی است که می توان تقریبا جلوی تمامی روش های نفوذ به برنامه های کاربردی تحت وب را در صورت رعایت و پیاده سازی آخرین استاندارد های امنیتی در کد  خود برنامه گرفت و مانع نفوذ و دسترسی غیر مجاز به برنامه یا سایر منابع مربوطه شد.

در بسیاری از مواقع  پس از عملیاتی شدن برنامه ، و پس از بررسی گوناگون مثلا پس از انجام تست نفوذ (Penetration Test enetration Test تست نفوذنمجاز به برنامه یا سایر منابع مربوطه شدردی را در صورتی فزار می باشد) و یا ارزیابی امنیتی (security assessment) وجود یک یا چندین مشکل امنیتی در برنامه تحت وب تشخیص داده می شود در این موارد می توان معمولا یکی از دو حالت زیر بوجود می آید:

  • امکان تغییر و اصللاح برنامه وجود دارد
  • امکان تغییر و اصللاح برنامه وجود ندارد

امکان تغییر و اصلاح کامل برنامه تنها در صورتی وجود دارد که تمامی موارد در اختیار و دسترس باشند:

  • دسترسی به مستندات ، ساختار و معماری برنامه ، سورس کد برنامه و یا برنامه نویسان تولید کننده نرم افزار
  • دسترسی به آپدیت ها ، Patchها و روش های حل مشکلات ، در صورتی که در ساختار برنامه از ابزار های Third-Party استفاده شده باشد

حتی با در اختیار داشتن موارد فوق نیز گهگاهی امکان رفع سریع و بموقع مشکل امنیتی وجود ندارد مثلا بنا به سیاست های سازمان تنها امکان از سرویس خارج کردن برنامه تحت وب در زمان های معینی وجود دارد (Scheduled Maintenance Time )

در بسیاری از برنامه های تحت وب از ابزار های Third-Party استفاده می شود و در خیلی از موارد از زمان کشف یک مشکل امنیتی در یک ابزار Third-Party و ارائه Patch های و سرویس پک ها از سوی شرکت مربوطه، مدت زمان زیادی طول می کشد و تا زمان ارائه این پچ ها و سرویس پک ها ، مشکلات امنیتی همچنان  در برنامه تحت وب سازمان وجود خواهند داشت

 در بعضی ار اوقات نیز امکان تغییر و اصللاح برنامه به امکان پذیر نمی باشد به عنوان مثال سازمان از برنامه های تحت وب تولید شده توسط سایر شرکت ها استفاده می نماید و بنا به بسیاری از دلایل امکان دسترسی به شرکت تولید کننده نرم افزار وتغییر و یا حتی جایگزین کردن نرم افزاروجود ندارد. از مهمترین این دلایل می توان به موارد زیر اشاره نمود

  • اتمام مدت دوره نگهداری نرم افزار
  • عدم پشتیبانی از محصول توسط شرکت تولید کننده
  • در دسترس نبوده شرکت تولید کننده نرم افزار
  • هزینه بالا جهت جایگزین کردن نرم افزار جدید
  • عدم وجود اطلاعات کافی جهت تغییر و اصلاح برنامه

   در شرایط و حالت های ذکر شده در بالا ، برای رفع مشکلات موجود می توان از Web Application Firewall استفاده نمود.

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

بصورت کلی می توان یک WAF را بصورت زیر تعریف نمود:

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

1

وظیفه اصلی یک WAF، محافظت از مشکلات امنیتی موجود در برنامه های تحت وب در مقابل حملات و روش های نفوذ به برنامه می باشد بصورتی که جلوی سوء استفاده و دسترسی غیر مجاز به این مشکلات گرفته شود.

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

برای پی بردن به مشکلات امنیتی موجود در برنامه از روش های مختلفی از قبیل تست نفوذ (Penetration Test ) ، ارزیابی امنیتی (Security Assessment ) ، بازنگری کد برنامه (Source Code Review ) می توان استفاده نمود.

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

در بعضی از مواقع حتی پس از انجام بررسی ها و تست های صورت گرفته (مانند تست نفوذ و بازنگری کد برنامه) بعضی از مشکلات و نقاط ضعف امنیتی کشف و مشخص نمی گرددند و بصورت یک تهدید بالقوه دربرنامه پنهان و مخفی می مانند در این موارد نیز استفاده از WAF مانع نفوذ به برنامه از طریق این مشکلات کشف نشده می گردد (البته در صورتی که WAF بدرستی تنظیم شده باشد)

بسیاری از WAF ها علاوه  بر ارائه سرویس هایی  جهت امن سازی برنامه های تحت وب ، می توانند  در بعضی از مواقع حتی در فرایند طراحی یک  برنامه تحت وب نیز می تواند تاثیر گذار بوده و از انجام عملیات اضافه و غیر ضروری ممانعت به عمل آورند. در این حالت WAF بصورت یک نقطه مرکزی سروریس دهی در جلوی برنامه های تحت وب قرار گرقته و عملیاتی یکسان را که بصورت جداگانه توسط  هرکدام از برنامه های تحت وب انجام می شده را از یک نقطه مرکزی و بصورت یکپارچه انجام می دهد به عنوان مثال می توان به عملیاتی از قبیل مدیریت امن Session ها تمام برنامه های تحت وب براساس ذخیره سازی Cookie ها، ایجاد یک نقطه مرکزی جهت انجام عملیات مربوط به Authentication و Authorization ، جمع آوری تمامی   Error Message ها وب سایتها ، جمع آوری Log فایلهاو…. اشاره نمود.

یکی دیگر از دلایل استفاده از WAF ها ، مطابقت داشتن و پیروی کردن از استاندارهای امنیتی وضع شده از سوی سازمان های امنیتی شناخته شده می باشد. از مهمترین این استاندارها می توان به موارد زیر اشاره نمود:

  • ( Payment Card Industry Data Security Standard(PCI DSS

این استاندارد به عنوان یکی از مهمترین استاندار های سیستم های ا طلاعاتی در مورد سازمان ها و شرکت هایی می باشد که با تراکنش های مالی مشتریان بصورت Online سروکار دارند.

  • (Open Web Application Security Project(OWASP

به عنوان یکی از مهم ترین Community ها، در زمینه امن سازی برنامه های تحت وب فعالیت می نماید از جمله فعالیت های OWASP ارائه Best Practice های مختلف در زمینه توسعه و ایجاد نرم افزارهای امن تحت وب می باشد. معروف و مهم ترین Best Practice ارائه شده توسط OWASP در زمینه Web Application Firewall بنام OWASP Top 10 شناخته می شود و این Best Practice تقریبا توسط تمامی شرکت های تولید کننده WAF پشتیبانی می شود.

OWASP  Top 10 شامل 10 روش اصلی نفوذ به برنامه های تحت وب و روش های جلوگیری از بروز چنین حملاتی می باشد.

نویسنده : مهندس سعید آژیده 

برای مطالعه ادامه مطلب و بخش دوم آشنایی با Web Application Firewall اینجا کیلیک کنید.

admin