اینترنت و به دنبال آن وب ، دنیای نرم افزار را دستخوش تحولات فراوانی نموده است .
ظهور نسل جدیدی از برنامه های کامپیوتری موسوم به برنامه های وب از جمله این تحولات عظیم است .
پس از ارائه سرویس وب در سال 1991، وب سایت های متعددی ایجاد گردید .
اینگونه سایت ها به منظور ارائه اطلاعات به مخاطبان خود از صفحات وب ایستا استفاده می کردند .
در چنین وب سایت هائی ، امکان تعامل کاربر با برنامه وجود نداشت .
با توجه به این که رویکرد فوق با ماهیت و یا روح نرم افزار چندان سازگار نمی باشد ، تلاش های گسترده ای در جهت ایجاد محتویات پویا انجام و متعاقب آن ، فن آوری های متعددی ایجاد گردید .
به عنوان نمونه ، با پیاده سازی فن آوری CGI ( برگرفته از Common Gateway Interface ) ، امکان استفاده از برنامه های خارجی به منظور تولید محتویات پویا فراهم گردید .
بدین ترتیب ، کاربران قادر به درج اطلاعات و ارسال آنها برای یک برنامه خارجی و یا اسکریپت سمت سرویس دهنده شدند .
برنامه موجود در سمت سرویس دهنده پس از دریافت اطلاعات و انجام پردازش های تعریف شده ، نتایج را تولید و آنها را برای کاربر ارسال می نمود .
رویکرد فوق ، به عنوان نقطه عطفی در برنامه های وب تلقی می گردد چراکه برای اولین مرتبه امکان تولید محتویات پویا در وب سایت ها فراهم گردید .
از آن زمان تاکنون فن آوری های متعددی به منظور تولید برنامه های وب ایجاد شده است .
PHP و ASP.NET نمونه هائی در این زمینه می باشند .
صرفنظر از این که از کدام فن آوری به منظور ایجاد برنامه های وب استفاده می گردد ، ایمن سازی آنان از جمله اهداف مشترک تمامی پیاده کنندگان است .
امنیت برنامه های وب و برداشت های اولیه
زمانی که در رابطه با امنیت برنامه های وب سخن به میان می آید ، تهاجم علیه یک سایت ، سرقت کارت های اعتباری ، بمباران وب سایت ها در جهت مستاصل کردن آنان به منظور ارائه خدمات و سرویس های تعریف شده ، ویروس ها ، تروجان ها ، کرم ها و ...
در ذهن تداعی می گردد .
صرفنظر از نوع برداشت ما در رابطه با موارد فوق ، می بایست بپذیریم که تهدیدات امنیتی متعددی متوجه برنامه های وب با توجه به ماهیت آنان می باشد .
سازمان ها و یا موسساتی که از اینگونه برنامه ها استفاده می نمایند و یا در صدد طراحی و پیاده سازی آنان می باشند ، می بایست به این نکته مهم توجه نمایند که ایمن سازی یک برنامه وب ، محدود به بکارگیری یک فن آوری خاص نبوده و فرآیندی است مستمر که عوامل انسانی و غیرانسانی متعددی می توانند بر روی آن تاثیرگذار باشند .
امنیت برنامه های وب را می بایست با توجه به
نوع معماری و رفتار آنان بررسی نمود .
برداشت های غیرواقعی از امنیت برنامه های وب
متاسفانه به دلیل عدم شناخت لازم در خصوص ماهیت برنامه های وب از یک طرف و از سوی دیگر عدم آشنائی لازم با مفاهیم امنیت ، شاهد برداشت های نادرست در خصوص امنیت برنامه های وب می باشیم .
اجازه دهید به چند نمونه در این خصوص اشاره نمائیم :
• ما ایمن هستیم چون از یک فایروال استفاده می نمائیم .
این تصور کاملا اشتباه است و به نوع تهدید بستگی خواهد داشت .
مثلا یک فایروال قادر به تشخیص داده ورودی مخرب جهت ارسال به یک برنامه وب نمی باشد .
فایروال ها دارای عملکردی قابل قبول در رابطه با اعمال محدودیت بر روی پورت ها می باشند و برخی از آنان می توانند همزمان با بررسی اطلاعات مبادله شده ، امکانات برجسته حفاظتی را ارائه نمایند .
فایروال ها جزء لاینفک در یک فریمورک امنیتی می باشند ولی نمی توان آنان را به عنوان یک راهکار جامع به منظور ایجاد و برپائی یک محیط ایمن در نظر گرفت .
• ما ایمن هستیم چون از SSL ( برگرفته ازSecure Sokets Layer ) استفاده می نمائیم .
SSL برای رمزنگاری ترافیک موجود بر روی شبکه یک گزینه ایده آل است ولی قادر به بررسی داده ورودی یک برنامه نمی باشد .
• ما ایمن هستیم چون از سیستم عاملی استفاده می نمائیم که نسبت به سایر سیستم های عامل دارای امنیت بیشتری است .
استدلال فوق با فرض درست بودن اصل قضیه ، نادرست و غیرمنطقی است چراکه امنیت یک فرآیند است نه یک محصول .
بنابراین با بکارگیری یک محصول خاص ( به عنوان نمونه یک سیستم عامل ) نمی توان این ادعا را داشت که ما به یک محیط ایمن به منظور ایجاد برنامه های وب دست یافته ایم .
با رد امنیت یک سیستم عامل نمی توان امنیت یک سیستم عامل دیگر را تائید نمود.
( من خوبم چون شما بد هستید !
)
امنیت چیست ؟
اولین رسالت امنیت ، حفاظت از سرمایه های یک سازمان است که ممکن است شامل آیتم های ملموسی نظیر یک صفحه وب و یا بانک اطلاعاتی مشتریان و یا آیتم های غیرملموسی نظیر شهرت و اعتبار یک سازمان باشد.
امنیت یک مسیر است نه یک مقصد و به موازات تجزیه و تحلیل زیرساخت و برنامه های موجود ، می بایست اقدام به شناسائی تهدیدات و خطرات ناشی از آنان نمود .
در واقع ، امنیت به مدیریت خطرات و پیاده سازی یک سیستم به منظور پاسخگوئی و مقابله با تهدیدات اشاره داشته و در ارتباط با عتاصر کلیدی زیر است :
• Authentication ، فرآیندی است که به کمک آن به صورت منحصربفرد سرویس گیرندگان یک برنامه شناسائی می گردند .
کاربران ، سرویس ها ، فرآیندها و کامپیوترها ، نمونه هائی از سرویس گیرندگان یک برنامه می باشند .
در واقع ، authentication هویت استفاده کنندگان یک برنامه را بررسی می نماید .
• Authorization ، فرآیندی است که به کمک آن دستیابی سرویس گیرندگان تائید شده به منابع و عملیاتی که قصد انجام آن را دارند بررسی و مجوز لازم صادر می گردد.
فایل ها ، بانک های اطلاعاتی ، جداول ، سطرها ، منابع موجود در سطح سیستم نظیر کلیدهای ریجتسری و داده پیکربندی ، نمونه هائی از منابع مورد درخواست سرویس گیرندگان می باشند .
انجام تراکنش هائی خاص نظیر خرید یک محصول ، واریز و انتقال پول از یک حساب به حساب دیگر و یا افزایش اعتبار یک کارت اعتباری از جمله عملیاتی می باشند که می بایست مجوز استفاده از آنان برای سرویس گیرندگان صادر گردد .
در واقع ، authorization محدوده مجاز عملیاتی را که یک سرویس گیرنده می تواند انجام دهد را مشخص می نماید .
• Auditing : ممیزی موثر و ثبت عملیات انجام شده یکی از اصول مهم در جلوگیری از انجام اعمال خلاف قانون است .
بدین ترتیب این اطمینان ایجاد خواهد شد که یک کاربر نمی تواند باعث عدم انحام یک کار و یا فعالیت در سیستم گردد و یا یک تراکنش را مقداردهی اولیه نماید .
مثلا در یک سیستم e-commerce می بایست از مکانیزم هائی استفاده گردد تا این اطمینان حاصل گردد که یک مصرف کننده نمی تواند سفارش انجام شده برای خرید یکصد نسخه از یک کتاب را انکار نماید .
• Confidentiality ، که از آن با نام privacy نیز نام برده می شود ، فرآیندی است که به کمک آن این اطمینان ایجاد می گردد که حریم خصوصی داده رعایت و امکان مشاهده آن توسط کاربران غیرمجاز و یا سایر افرادی که قادر به ردیابی ترافیک یک شبکه می باشند ، وجود نخواهد داشت .
• Integrity ، فرآیندی است که به کمک آن این اطمینان ایجاد می گردد که داده در مقابل تغییرات تصادفی و یا تعمدی حفاظت خواهد شد .
همانند privacy ، یکپارچگی اطلاعات یک فاکتور اساسی در خصوص امنیت داده محسوب می گردد ، خصوصا در مواردی که داده در طول شبکه مبادله خواهد شد .
یکپارچگی داده در حال حمل ،عموما با استفاده از روش هائی نظیر hashing و یا کدهای تائید پیام انجام می شود .
• Availability ، فرآیندی است که به کمک آن این اطمینان ایجاد خواهد شد که همواره داده برای کاربران مجاز در دسترس و قابل استفاده خواهد بود .
در اغلب حملات از نوع DoS ، مهاجمان این هدف را دنبال می نمایند که بتوانند امکان استفاده و در دسترس بودن برنامه برای کاربران مجاز را غیرممکن و عملا آن را از کار بیندازند .
تعاریف اولیه برخی از اصطلاحات امنیتی : تهدیدات ، نقاط آسیب پذیر و حملات تهدید ( threat ) : به هرگونه پتانسیل بروز یک رویداد مخرب و یا سایر موارد دیگر که می تواند به سرمایه های یک سازمان آسیب برساند ، تهدید گفته می شود .
به عبارت دیگر، هر رویدادی که بتواند به سرمایه های یک سازمان آسیب برساند ، در زمره تهدیدات محسوب می گردد .
نقاط آسیب پذیر (vulnerability) : ضعف های موجود در یک سیستم می باشند که پتانسیل اولیه بروز یک رویداد مخرب را فراهم می نمایند .
ضعف در طراحی ، پیکربندی اشتباه ، استفاده از روش های کدینگ غیرایمن مهمترین دلایل ایجاد یک ضعف در سیستم می باشند .
ضعف در بررسی صحت داده ورودی توسط کاربر ، نمونه ای از یک لایه آسیب پذیر در یک برنامه است که می تواند زمینه بروز یک تهاجم را فراهم نماید .
تهاجم (attack) : عملیاتی است که محوریت آن سوء استفاده از نقاط آسیب پذیر و پتانسیل های بروز یک رویداد مخرب می باشد .
ارسال ورودی مخرب به یک برنامه و یا flooding یک شبکه به منظور از کار انداختن یک سرویس ، نمونه هائی در این زمینه می باشد .
چگونه می توان یک برنامه وب ایمن را ایجاد نمود ؟
تا زمانی که شناخت مناسبی نسبت به تهدیدات وجود نداشته باشد ، امکان ایجاد یک برنامه وب ایمن وجود نخواهد داشت .
بنابراین قبل از هر چیز لازم است که با "مدل تهدیدات " موجود آشنا شویم .
هدف مدل فوق، آنالیز معماری و نحوه طراحی برنامه به منظور شناسائی نقاط آسیب پذیری است که ممکن است به صورت تصادفی توسط یک کاربر ناآگاه و یا مهاجمان با اهداف مخرب مورد سوء استفاده قرار گرفته تا با استناد به آنان بتوانند موجودیت و امنیت سیستم را با خطر مواجه نمایند .
پس از آسنائی با تهدیدات ، می بایست با بکارگیری مجموعه ای از اصول امنیتی اقدام به طراحی سیستم نمود .
در ادامه ، پیاده کنندگان می بایست از روش های ایمن به منظور نوشتن کدهای مطمئن ، مستحکم و قابل اعتماد استفاده نمایند .
پس از طراحی و پیاده سازی برنامه ، می بایست از یک شبکه ایمن ، یک host مطمئن و یک پیکربندی مناسب بر روی سرویس دهنده ، استفاده گردد .
ایجاد یک برنامه وب ایمن ، مستلزم اقدامات امنیتی چند جانبه ای است که موفقیت در تمامی آنان ، ایمن بودن برنامه های وب را تضمین خواهد کرد .
ایمن سازی شبکه ، host و برنامه ، رئوس مثلث امنیتی ایجاد برنامه های وب ایمن را تشکیل می دهند .
ایمن سازی شبکه ، host و برنامه به منظور ایجاد برنامه های وب ایمن ، تبعیت از یک رویکرد جامع امری است الزامی .
بنابراین ، می بایست امنیت برنامه های وب را در سه لایه متفاوت بررسی و اقدامات لازم را در هر لایه با توجه به جایگاه آن انجام داد .
شکل زیر سه لایه مهم به منظور ایجاد برنامه های وب ایمن را نشان می دهد .
در بخش دوم به بررسی هر یک از لایه های فوق خواهیم پرداخت .
اصول امنیت برنامه های وب ( بخش دوم ) در بخش اول به این موضوع اشاره گردید که به منظور ایجاد برنامه های وب ایمن ، می بایست از یک رویکرد جامع تبعیت و بر روی سه لایه متفاوت شبکه ، host و برنامه متمرکز گردید.
در این بخش به بررسی ایمن سازی شبکه خواهیم پرداخت .
ایمن سازی شبکه شبکه ، نقطه ورود به یک برنامه وب است و اولین لایه حفاظتی به منظور کنترل دستیابی به سرویس دهندگان متعدد موجود در محیط عملیاتی را فراهم می نماید .
با این که سرویس دهندگان توسط سیستم های عامل نصب شده بر روی خود حفاظت می گردند ولی نمی بایست به این موضوع صرفا" اکتفاء نمود و لازم است که تدابیر لازم به منظور حفاظت آنها در مقابل سایر تهدیدات ( نظیر ارسال سیلابی از بسته های اطلاعاتی از طریق لایه شبکه ) نیز اندیشیده گردد .
ایمن سازی شبکه ، شامل حفاظت از دستگاه های شبکه ای و داده مبادله شده بر روی آنها می باشد .
روتر ، فایروال و سوئیچ عناصر اولیه زیرساخت یک شبکه را تشکیل می دهند .
شکل زیر نحوه استفاده از عناصر فوق را در یک شبکه نشان می دهد .
عناصر شبکه : روتر ، فایروال و سوئیچ یک برنامه وب بر روی یک زیرساخت شبکه ای ایمن فعالیت و به کاربران خود سرویس های لازم را ارائه می نماید .
برای ایمن سازی شبکه ، علاوه بر این که شبکه می بایست در مقابل حملات مبتنی بر TCP/IP از خود محافظت نماید ، بلکه لازم است اقدامات متعدد دیگری نیز در این رابطه انجام شود .
ایجاد اینترفیس های مدیریتی ایمن، استفاده از رمزهای عبور قدرتمند ، حصول اطمینان از صحت ترافیک ارسالی از جمله اقدامات دیگر در خصوص ایجاد یک شبکه ایمن می باشد .
بدین منظور لازم است که پورت ها و پروتکل های استفاده شده در هر لایه به دقت بررسی و در صورتی که وجود آنها غیرضروری تشخیص داده شود و یا استفاده از آنها زمینه بروز تهدیداتی را فراهم می نماید ، می بایست در همان لایه با آنان برخورد و از یک راهکار مناسب امنیتی استفاده گردد .
وجود ضعف امنیتی در یک شبکه زمینه بروز تهدیدات متعددی را فراهم می نماید .
بدون شناسائی اینگونه تهدیدات ، امکان مقابله منطقی با آنان وجود نخواهد داشت .
تهدیدات یک مهاجم به منظور برنامه ریزی حملات خود به دنبال دستگاه های شبکه ای است که بر روی آنها پیکربندی ضعیفی اعمال شده است .
تنظیمات ضعیف پیش فرض ، دستیابی بدون ضابطه به منابع موجود بر روی شبکه ، وجود دستگاه هائی که به درستی patch و یا بهنگام نشده اند، حفره های امنیتی متعددی را در یک شبکه ایجاد می نماید .
وجود حفره های امنتیی فوق و عدم برخورد مناسب با آنها ، احتمال موفقیت مهاجمان را افزایش می دهد .
مهمترین تهدیدات در یک شبکه عبارتند از : جمع آوری اطلاعات sniffing spoofing session hijacking DoS ( برگرفته از Denial of Service ) با آگاهی از ماهیت هر یک از تهدیدات فوق و نحوه تاثیر آنها بر روی عملکرد شبکه ، می توان امکانات حفاظتی و تدافعی مناسبی را در یک شبکه پیش بینی و پیاده سازی نمود.
در ادامه به بررسی مختصر هر یک از تهدیدات فوق خواهیم پرداخت .
جمع آوری اطلاعات مهاجمان در اولین مرحله ،اقدام به جمع آوری اطلاعات در رابطه با اهداف خود می نمایند .
جمع آوری اطلاعات می تواند باعث افشای اطلاعات توپولوژی شبکه ، پیکربندی سیستم و دستگاه های شبکه ای گردد .
یک مهاجم می تواند در ادامه با استفاده از اطلاعات جمع آوری شده بر روی نقاط آسیب پذیر متمرکز و از حفره های امنیتی موجود در جهت تامین خواسته های مخرب خود استفاده نماید .
نقاط آسیب پذیر متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از : ماهیت غیرایمن ذاتی پروتکل TCP/IP پیکربندی ضعیف دستگاه های شبکه ای استفاده غیرایمن از سرویس هائی که به وجود آنها در یک شبکه نیاز نمی باشد .
حملات متداولترین حملات مبتنی بر "جمع آوری اطلاعات" عبارتند از : استفاده از Tracert به منظور تشخیص توپولوژی شبکه استفاده از Telnet به منظور باز نمودن پورت ها و جمع آوری اطلاعات اولیه استفاده از پویشگرهای پورت به منظور تشخیص وضعیت پورت ها استفاده از درخواست های broadcast برای شمارش تعداد host موجود بر روی یک subnet پیشگیری و مقابله با تهدیدات به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود : استفاده از امکاناتی که اطلاعات اضافه ای را در خصوص پیکربندی نظیر نام و شماره نسخه نرم افزار ارائه نمی نماید .
استفاده از فایروال ها به منظور پوشش سرویس هائی که نمی بایست در معرض دید و استفاده عموم قرار داده شوند .
sniffing sniffing که به آن "استراق سمع " نیز گفته می شود ، مانیتورینگ ترافیک شبکه برای داده هائی نظیر رمزهای عبور ( رمزنشده) و یا اطلاعات پیکربندی است .
با استفاده از یک برنامه packet sniffer ، می توان به سادگی تمامی ترافیک plain text ( رمز نشده ) را مشاهده نمود .
نقاط آسیب پذیر متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از : ضعف امنیت فیزیکی ضعف رمزنگاری در زمان ارسال داده حساس و مهم وجود سرویس هائی که با یکدیگر به صورت متن معمولی ( رمز نشده ) ارتباط برقرار می نمایند .
استفاده از الگوریتم های ضعیف رمزنگاری حملات مهاجمان با قرار دادن یک packet sniffer بر روی شبکه می توانند تمامی ترافیک را capture و آنالیز نمایند .
پیشگیری و مقابله با تهدیدات به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود : استفاده از یک سیستم امنیت فیزیکی مناسب به منظور پیشگیری از نصب دستگاه های مخرب بر روی شبکه رمزنگاری اطلاعات حساس و ترافیک برنامه بر روی شبکه Spoofing spoofing ، که به آن "هویت مبهم " نیز گفته می شود ، به کتمان هویت واقعی بر روی شبکه اطلاق می گردد .
در این رابطه از یک آدرس مبداء جعلی که بیانگر آدرس اولیه صادرکننده پیام نمی باشد ، استفاده می گردد .
در بسیاری موارد از spoofing به منظور مخفی کردن منبع بروز یک تهاجم استفاده می شود.
در برخی موارد که دستیابی به منابع موجود بر روی شبکه بر اساس آدرس متقاضیان انجام می شود ، مهاجمان با تغییر آدرس مبداء سعی می نمایند به اینگونه از منابع دستیابی پیدا نمایند .
نقاط آسیب پذیر متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از : ماهیت غیرایمن ذاتی پروتکل TCP/IP ضعف در فیلترینگ بسته های اطلاعاتی ورودی و خروجی : ترافیک ورودی و خروجی شبکه به درستی کنترل و فیلتر نمی گردد (ingress & egress filtering ) حملات یک مهاجم می تواند از ابزارهای متعددی به منظور تغییر آدرس بسته های خروجی استفاده نماید تا اینچنین وانمود نماید که آنها از یک host و یا شبکه دیگر ارسال شده اند .
پیشگیری و مقابله با تهدیدات به منظور پیشگیری و مقابله با این نوع حملات می توان از از فیلترینگ egress و ingress بر روی روتر های perimeter استفاده نمود .
session Hijacking با استفاده از این نوع حملات که به آنها man in middle نیز گفته می شود ، مهاجمان می توانند از یک برنامه برای تغییر شکل ظاهری خود به عنوان یک سرویس گیرنده و یا سرویس دهنده موجه استفاده نمایند .
بدین ترتیب ، یک سرویس دهنده و یا سرویس گیرنده واقعی فریب خورده و فکر می کنند که با یک host معتبر و مجاز ارتباط برقرار نموده اند .
در واقع ، این نوع کامپیوترهای میزبان متعلق به مهاجمان بوده که سعی می نمایند با دستکاری شبکه خود را به عنوان مقصد مورد نظر وانمود نمایند .
از این نوع حملات به منظور آگاهی از اطلاعات logon و دستیابی به سیستم و سایر اطلاعات محرمانه استفاده می گردد .
نقاط آسیب پذیر متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از : ضعف در امنیت فیزیکی ماهیت غیرایمن ذاتی پروتکل TCP/IP مبادله اطلاعات به صورت رمزنشده حملات یک مهاجم می تواند از ابزارهای متعددی به منظور انجام عملیات spoofing ، تغییر روتینگ و دستکاری بسته های اطلاعاتی استفاده نماید.
پیشگیری و مقابله با تهدیدات به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود : رمزنگاری Session استفاده از روش Stateful inspection در سطح فایروال DoS در این نوع از حملات ، امکان دستیابی کاربران مجاز به یک سرویس دهنده و یا سرویس خاص سلب می گردد .در حملات DoS لایه شبکه ، معمولا" مهاجمان با ارسال سیلابی از بسته های اطلاعاتی امکان استفاده از یک سرویس توسط سایر کاربران را سلب می نمایند .
علاوه بر مشکل فوق ، در چنین مواردی از پهنای باند و منابع موجود بر روی شبکه استفاده بهینه نخواهد شد .
نقاط آسیب پذیر متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از : ماهیت غیرایمن ذاتی پروتکل TCP/IP ضعف در پیکربندی روتر و سوئیچ باگ در سرویسهای نرم افزاری حملات متداولترین حملات DoS عبارتند از : ارسال سیلابی از بسته های اطلاعاتی نظیر حملات cascading broadcast بسته های اطلاعاتی SYN flood سوء استفاده از برخی سرویس ها پیشگیری و مقابله با تهدیدات به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود : فیلترینگ درخواست های broadcast فیلترینگ درخواست های ICMP ( برگرفته از Internet Control Message Protocol ) بهنگام سازی و نصب patches سرویس های نرم افزاری برای ایمن سازی شبکه از کجا می بایست شروع کرد ؟
برای ایمن سازی شبکه می بایست بر روی هر یک از دستگاه های استفاده شده در شبکه متمرکز و پس از بررسی چالش های امنیتی هر یک ، از راهکارهای خاصی به منظور ایمن سازی آنها استفاده نمود.
همانگونه که اشاره گردید در زیرساخت شبکه از روتر ، فایروال و سوئیچ استفاده می گردد که می بایست ضمن آشنائی با جایگاه آنها در یک شبکه با نحوه عملکرد و ایمن سازی آنها از منظر برنامه های وب نیز آشنا شویم .
در بخش سوم به بررسی موارد فوق خواهیم پرداخت .
اصول امنیت برنامه های وب (بخش سوم) در بخش اول به این موضوع اشاره گردید که به منظور ایجاد برنامه های وب ایمن ، می بایست از یک رویکرد جامع تبعیت و بر روی سه لایه متفاوت شبکه ، host و برنامه متمرکز گردید.
در بخش دوم با تمرکز بر روی شبکه ، انواع تهدیدات موجود بررسی گردید .
در این بخش ضمن بررسی عناصر موجود در زیر ساخت شبکه نظیر روتر ، فایروال ، سوئیچ با ملاحظات امنیتی در خصوص بکارگیری روتر بیشتر آشنا خواهیم شد .
عناصر موجود در زیرساخت شبکه زیر ساخت شبکه را می توان به سه لایه متفاوت دستیابی ، توزیع و هسته تقسیم نمود .
این لایه ها شامل تمامی سخت افزارهای مورد نیاز به منظور کنترل دستیابی به منابع داخلی و خارجی است .
روتر ،سوئیچ و فایروال مهمترین عناصر موجود در زیر ساخت یک شبکه می باشند .
روتر ، حلقه ارتباطی شبکه به دنیای خارج است و کانال بسته های اطلاعاتی به پورت ها و پروتکل های مورد نیاز در برنامه های وب را ایجاد می نماید .
مسئولیت روتر ارسال بسته های اطلاعاتی IP به شبکه هائی است که به آنها متصل شده است .
بسته های اطلاعاتی ممکن است درخواست های ارسالی سرویس گیرندگان به سرویس دهنده وب ، پاسخ به درخواست های ارسالی و یا درخواست های صادره توسط سرویس گیرندگان داخلی شبکه باشد .
پیکربندی روتر می بایست بگونه ای انجام شود تا ترافیک غیرضروری و غیر مجاز را بین شبکه ها فیلتر نماید .
همچنین ، روتر می بایست در مقابل پیکربندی مجدد غیرمطمئن حفاظت و از اینترفیس های مدیریتی ایمن به منظور پیکربندی مطمئن آن استفاده نمود .
با توجه به نقش کلیدی نرم افزار IOS در روتر ، می بایست همواره آخرین patch و نسخه های بهنگام شده بر روی آنها نصب گردد .
فایروال ، مسئولیت بلاک کردن تمامی پورت های غیرضروری را برعهده داشته و این امکان را فراهم می نماید که ترافیک صرفا" از طریق پورت های شناخته شده انجام پذیرد.
فایروال ها به منظور پیشگیری از حملات شناخته شده ، می بایست دارای امکانات مناسبی به منظور مانیتورینگ درخواست های ورودی باشند .
فایروال ها با همکاری نرم افزارهائی که از آنها به منظور تشخیص مزاحمین استفاده می گردد ، قادر به ایجاد یک محیط ایمن عملیاتی می باشند .
همانند روتر ، فایروال ها بر روی محیطی اجراء می گردند که مسئولیت مدیریت آن بر عهده یک سیستم عامل گذاشته شده است .
بنابراین لازم است که در فواصل زمانی خاص نرم افزارهای تکمیلی و بهنگام شده بر روی آنها نصب گردد .
همچنین ، مدیریت فایروال می بایست از طریق اینترفیس های ایمن انجام و پورت هائی که به وجود آنها نیاز نمی باشد را غیرفعال نمود .
از سوئیچ به منظور تقسیم شبکه به چندین سگمنت استفاده می گردد .
سوئیچ دارای کمترین نقش در خصوص ایمن سازی یک شبکه می باشد .
یکی از علل طراحی سوئیچ ، بهبود کارآئی و تسهیل در امر مدیریت شبکه است .
روتر و ملاحظات امنیتی آن اولین خط دفاعی در یک شبکه را روتر تشکیل می دهد .
روتر علاوه بر قابلیت روتینگ بسته های اطلاعاتی می تواند بگونه ای پیکربندی گردد تا بسته های اطلاعاتی را بر اساس نوع آنها شناسائی و آندسته از بسته های اطلاعاتی را که ممکن است زمینه بروز حملات و تهدیدات در یک شبکه را ایجاد نماید ، بلاک نماید .
نظیر ICMP ( برگرفته از Internet Control Message Protocol ) و یا SNMP ( برگرفته از Simple Network Management Protocol ) .
برای پیکربندی روتر با رعایت ملاحظات امنیتی ، اقدامات متعددی را می بایست در هر یک از گروه های زیر انجام داد : نصب آخرین نسخه های بهنگام شده و patch ارائه شده پروتکل ها دستیابی مدیریت سرویس ها تشخیص مزاحمین ممیزی و لاگ نمودن در ادامه به بررسی هر یک از موارد فوق خواهیم پرداخت .
نصب آخرین نسخه های بهنگام شده و patch ارائه شده با عضویت در خبرنامه شرکت هائی که از محصولات نرم افزاری و یا سخت افزاری آنها در زیرساخت فن آوری اطلاعات استفاده شده است ، می توان به سرعت از توصیه های امنیتی آنها آگاهی یافت .
شرکت های معتبر در صورت بروز مشکل در یک محصول سخت افزاری و یا نرم افزاری در اولین فرصت اقدام به ارائه patch مربوطه می نمایند و این موضوع را از طریق پست الکترونیکی به اطلاع مشترکان خود می رسانند .
توجه داشته باشید که همواره قبل از بکارگیری نسخه های بهنگام شده در یک محیط عملیاتی ، آنها را تست و پس از حصول اطمینان از صحت عملکرد اقدام به نصب نهائی آنها در محیط واقعی نمود .
پروتکل ها برخی از حملات نظیر DoS به دلیل وجود ضعف امنیتی در پروتکل ها اتفاق می افتد .
به عنوان نمونه ، مهاجمان می توانند با ارسال سیلابی از بسته های اطلاعاتی سرویس و یا سرویس های ارائه شده توسط یک سرویس دهنده را غیرفعال نمایند.
به منظور پیشگیری و پاسخ به موقع به این نوع از حملات می بایست اقدامات زیر را انجام داد : استفاده از فیلترینگ ورودی و خروجی : بسته های اطلاعاتی مشکوک می تواند بیانگر کنکاش در شبکه ، تهاجم و یا یک کسب آگاهی لازم از وضعیت شبکه موجود توسط یک مهاجم باشد .
بسته های اطلاعاتی دریافتی شامل یک آدرس داخلی می تواند نشاندهنده تلاش جهت نفوذ به شبکه و آنالیز آن باشد .
با این نوع بسته های اطلاعاتی می بایست در اولین محل ممکن برخورد نمود ( Perimeter network ) .
همچنین ، می بایست پیکربندی روتر بگونه ای انجام شود که صرفا" اجازه خروج بسته های اطلاعاتی با آدرس های IP داخلی معتبر را بدهد .
بررسی بسته های اطلاعاتی خروجی ، یک شبکه را در مقابل حملات از نوع DoS محافظت نخواهد کرد ولی این تضمین را ایجاد خواهد کرد که حمله ای با محوریت یکی از سرویس گیرندگان شبکه داخلی شکل نخواهد گرفت .
مشاهده ترافیک ICMP از شبکه داخلی : ICMP یک پروتکل stateless است که اجازه بررسی اطلاعات در دسترس هاست را از یک هاست به هاست دیگر فراهم می نماید .
از پیام های مبتتی بر ICMP در موارد متداول زیر استفاده می گردد : Echo request : مشخص می نماید که یک گره IP ( یک هاست و یا روتر ) بر روی شبکه در دسترس است .
Echo reply : پاسخ به یک درخواست ICMP echo Destination unreachable : به هاست اعلام می شود که دیتاگرام نمی تواند توزیع گردد .
Source quench : به هاست اعلام می شود که دیتاگرام ارسالی را با نرخ پائین تری ارسال نماید ( به دلیل شلوغی ) Redirect : به هاست یک مسیر روت بهتر اعلام می شود .
Time Exceeded : نشاندهنده این موضوع است که عمر مفید (TTL : Time to live ) یک دیتاگرام به اتمام رسیده است .
بلاک کردن ترافیک ICMP برروی روتر perimeter باعث حفاظت شبکه در مقابل حملاتی نظیر Cascading ping floods می گردد .
برای بلاک کردن این پروتکل دلایل قانع کننده متعددی وجود دارد .
علیرغم دید انتقادی امنیتی نسبت به این پروتکل ، از آن در موارد متعددی نظیر اشکال زدائی شبکه استفاده می گردد.
بنابراین لازم است که استفاده از پروتکل ICMP کاملا" کنترل شده باشد .
پیشگیری از پیام های TTL که اعتبار آنها به اتمام رسیده است با مقادیر صفر و یک : برای شمارش تعداد hop بین یک سرویس گیرنده و یک سرویس دهنده ، trace routing از مقادیر TTL صفر و یا یک استفاده می نماید .
trace routing ، به مفهوم جمع آوری اطلاعات توپولوژی شبکه است .
با بلاک کردن اینچنین بسته های اطلاعاتی ، از ارائه اطلاعات تکمیلی که بیانگر جزئیات شبکه موجود است پیشگیری می گردد .
عدم دریافت و یا فوروارد ترافیک directed broadcast : ترافیک هائی اینچنین قادر به شمارش تعداد هاست موجود بر روی یک شبکه می باشند و از آن به عنوان ابزاری جهت آماده سازی و تدارک حملات DoS استفاده می گردد .
بسته های اطلاعاتی که حاوی آدرس های مبداء زیر می باشند را می بایست بلاک نمود : دستیابی مدیریت پیکربندی روتر از چه مکانی و به چه صورت انجام می شود ؟
کدام پورت ها و اینترفیس ها فعال است و مدیران شبکه از چه شبکه و یا هاستی برای پیکربندی روتر استفاده می نمایند ؟
دستیابی به مکان پیکربندی روتر میبایست محدود و هرگز از اینترفیس های مدیریتی تحت وب بدون رمزنگاری و رعایت مسائل امنیتی نمی بایست استفاده گردد .
علاوه بر این رعایت موارد زیر نیز توصیه می گردد : غیرفعال کردن اینترفیس هائی که از آنان استفاده نمی گردد : صرفا" می بایست اینترفیس های مورد نیاز بر روی روتر فعال گردند .
ایجاد رمزهای قوی : از رمزهای عبور مناسب و قدرتمند به منظور استفاده در هر mode روتر می بایست استفاده گردد .
استفاده ترکیبی از حروف الفبائی ، اعداد و حروف ویژه به منظور تعریف یک رمز عبور مناسب توصیه می گردد .