اصول امنيت برنامه های وب
اينترنت و به دنبال آن وب ، دنيای نرم افزار را دستخوش تحولات فراوانی نموده است . ظهور نسل جديدی از برنامه های كامپيوتری موسوم به "برنامه های وب " از جمله اين تحولات عظيم است . پس از ارائه سرويس وب در سال 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 ، مهاجمان اين هدف را دنبال می نمايند كه بتوانند امكان استفاده و در دسترس بودن برنامه برای كاربران مجاز را غيرممكن و عملا" آن را از كار بيندازند .
• نقاط آسيب پذير (vulnerability) : ضعف های موجود در يك سيستم می باشند كه پتانسيل اوليه بروز يك رويداد مخرب را فراهم می نمايند . ضعف در طراحی ، پيكربندی اشتباه ، استفاده از روش های كدينگ غيرايمن مهمترين دلايل ايجاد يك ضعف در سيستم می باشند . ضعف در بررسی صحت داده ورودی توسط كاربر ، نمونه ای از يك لايه آسيب پذير در يك برنامه است كه می تواند زمينه بروز يك تهاجم را فراهم نمايد .
• تهاجم (attack) : عملياتی است كه محوريت آن سوء استفاده از نقاط آسيب پذير و پتانسيل های بروز يك رويداد مخرب می باشد . ارسال ورودی مخرب به يك برنامه و يا flooding يك شبكه به منظور از كار انداختن يك سرويس ، نمونه هائی در اين زمينه می باشد .
يك تهديد پتانسيل بروز يك رويداد مخرب را فراهم می نمايد كه می تواند به سرمايه های يك سازمان آسيب برساند
در حالی كه در يك تهاجم موفقيت آميز از نقاط آسيب پذير موجود در سيستم استفاده می گردد .
پس از آسنائی با تهديدات ، می بايست با بكارگيری مجموعه ای از اصول امنيتی اقدام به طراحی سيستم نمود . در ادامه ، پياده كنندگان می بايست از روش های ايمن به منظور نوشتن كدهای مطمئن ، مستحكم و قابل اعتماد استفاده نمايند . پس از طراحی و پياده سازی برنامه ، می بايست از يك شبكه ايمن ، يك host مطمئن و يك پيكربندی مناسب بر روی سرويس دهنده ، استفاده گردد .
ايجاد يك برنامه وب ايمن ، مستلزم اقدامات امنيتی چند جانبه ای است كه موفقيت در تمامی آنان ، ايمن بودن برنامه های وب را تضمين خواهد كرد . ايمن سازی شبكه ، host و برنامه ، رئوس مثلث امنيتی ايجاد برنامه های وب ايمن را تشكيل می دهند .
وجود يك نقطه آسيب پذير در شبكه به يك مهاجم اجازه می دهد تا كنترل يك host و يا برنامه را بدست بگيرد .
وجود يك نقطه آسيب پذير در host به يك مهاجم اجازه می دهد تا بتواند كنترل يك شبكه و يا برنامه را بدست بگيرد .
وجود يك نقطه آسيب پذير در برنامه به يك مهاجم اجازه می دهد تا كنترل يك host و يا شبكه را بدست بگيرد .
ايمن سازی شبكه ، شامل حفاظت از دستگاه های شبكه ای و داده مبادله شده بر روی آنها می باشد . روتر ، فايروال و سوئيچ عناصر اوليه زيرساخت يك شبكه را تشكيل می دهند .
يك برنامه وب بر روی يك زيرساخت شبكه ای ايمن فعاليت و به كاربران خود سرويس های لازم را ارائه می نمايد . برای ايمن سازی شبكه ، علاوه بر اين كه شبكه می بايست در مقابل حملات مبتنی بر TCP/IP از خود محافظت نمايد ، بلكه لازم است اقدامات متعدد ديگری نيز در اين رابطه انجام شود . ايجاد اينترفيس های مديريتی ايمن، استفاده از رمزهای عبور قدرتمند ، حصول اطمينان از صحت ترافيك ارسالی از جمله اقدامات ديگر در خصوص ايجاد يك شبكه ايمن می باشد . بدين منظور لازم است كه پورت ها و پروتكل های استفاده شده در هر لايه به دقت بررسی و در صورتی كه وجود آنها غيرضروری تشخيص داده شود و يا استفاده از آنها زمينه بروز تهديداتی را فراهم می نمايد ، می بايست در همان لايه با آنان برخورد و از يك راهكار مناسب امنيتی استفاده گردد .
وجود ضعف امنيتی در يك شبكه زمينه بروز تهديدات متعددی را فراهم می نمايد . بدون شناسائی اينگونه تهديدات ، امكان مقابله منطقی با آنان وجود نخواهد داشت .
مهمترين تهديدات در يك شبكه عبارتند از :
• جمع آوری اطلاعات
• sniffing
• spoofing
• session hijacking
• DoS ( برگرفته از Denial of Service )
با آگاهی از ماهيت هر يك از تهديدات فوق و نحوه تاثير آنها بر روی عملكرد شبكه ، می توان امكانات حفاظتی و تدافعی مناسبی را در يك شبكه پيش بينی و پياده سازی نمود.
در ادامه به بررسی مختصر هر يك از تهديدات فوق خواهيم پرداخت .
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• پيكربندی ضعيف دستگاه های شبكه ای
• استفاده غيرايمن از سرويس هائی كه به وجود آنها در يك شبكه نياز نمی باشد .
• استفاده از Tracert به منظور تشخيص توپولوژی شبكه
• استفاده از Telnet به منظور باز نمودن پورت ها و جمع آوری اطلاعات اوليه
• استفاده از پويشگرهای پورت به منظور تشخيص وضعيت پورت ها
• استفاده از درخواست های broadcast برای شمارش تعداد host موجود بر روی يك subnet
• استفاده از امكاناتی كه اطلاعات اضافه ای را در خصوص پيكربندی نظير نام و شماره نسخه نرم افزار ارائه نمی نمايد .
• استفاده از فايروال ها به منظور پوشش سرويس هائی كه نمی بايست در معرض ديد و استفاده عموم قرار داده شوند .
• ضعف امنيت فيزيكی
• ضعف رمزنگاری در زمان ارسال داده حساس و مهم
• وجود سرويس هائی كه با يكديگر به صورت متن معمولی ( رمز نشده ) ارتباط برقرار می نمايند .
• استفاده از الگوريتم های ضعيف رمزنگاری
پيشگيری و مقابله با تهديدات
به منظور پيشگيری و مقابله با اين نوع حملات می توان از روش های زير استفاده نمود :
• استفاده از يك سيستم امنيت فيزيكی مناسب به منظور پيشگيری از نصب دستگاه های مخرب بر روی شبكه
• رمزنگاری اطلاعات حساس و ترافيك برنامه بر روی شبكه
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• ضعف در فيلترينگ بسته های اطلاعاتی ورودی و خروجی : ترافيك ورودی و خروجی شبكه به درستی كنترل و فيلتر نمی گردد (ingress & egress filtering )
• ضعف در امنيت فيزيكی
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• مبادله اطلاعات به صورت رمزنشده
• رمزنگاری Session
• استفاده از روش Stateful inspection در سطح فايروال
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• ضعف در پيكربندی روتر و سوئيچ
• باگ در سرويسهای نرم افزاری
• ارسال سيلابی از بسته های اطلاعاتی نظير حملات cascading broadcast
• بسته های اطلاعاتی SYN flood
• سوء استفاده از برخی سرويس ها
• فيلترينگ درخواست های broadcast
• فيلترينگ درخواست های ICMP ( برگرفته از Internet Control Message Protocol )
• بهنگام سازی و نصب patches سرويس های نرم افزاری
بدون آناليز صحيح تهديدات ، امكان ايجاد يك محيط و يا شبكه ايمن وجود نخواهد داشت .
همانگونه كه اشاره گرديد در زيرساخت شبكه از روتر ، فايروال و سوئيچ استفاده می گردد كه می بايست ضمن آشنائی با جايگاه آنها در يك شبكه با نحوه عملكرد و ايمن سازی آنها از منظر برنامه های وب نيز آشنا شويم .
با توجه به اين كه رويكرد فوق با ماهيت و يا روح نرم افزار چندان سازگار نمی باشد ، تلاش های گسترده ای در جهت ايجاد محتويات پويا انجام و متعاقب آن ، فن آوری های متعددی ايجاد گرديد . به عنوان نمونه ، با پياده سازی فن آوری 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 ، مهاجمان اين هدف را دنبال می نمايند كه بتوانند امكان استفاده و در دسترس بودن برنامه برای كاربران مجاز را غيرممكن و عملا" آن را از كار بيندازند .
تعاريف اوليه برخی از اصطلاحات امنيتی : تهديدات ، نقاط آسيب پذير و حملات
• نقاط آسيب پذير (vulnerability) : ضعف های موجود در يك سيستم می باشند كه پتانسيل اوليه بروز يك رويداد مخرب را فراهم می نمايند . ضعف در طراحی ، پيكربندی اشتباه ، استفاده از روش های كدينگ غيرايمن مهمترين دلايل ايجاد يك ضعف در سيستم می باشند . ضعف در بررسی صحت داده ورودی توسط كاربر ، نمونه ای از يك لايه آسيب پذير در يك برنامه است كه می تواند زمينه بروز يك تهاجم را فراهم نمايد .
• تهاجم (attack) : عملياتی است كه محوريت آن سوء استفاده از نقاط آسيب پذير و پتانسيل های بروز يك رويداد مخرب می باشد . ارسال ورودی مخرب به يك برنامه و يا flooding يك شبكه به منظور از كار انداختن يك سرويس ، نمونه هائی در اين زمينه می باشد .
يك تهديد پتانسيل بروز يك رويداد مخرب را فراهم می نمايد كه می تواند به سرمايه های يك سازمان آسيب برساند
در حالی كه در يك تهاجم موفقيت آميز از نقاط آسيب پذير موجود در سيستم استفاده می گردد .
چگونه می توان يك برنامه وب ايمن را ايجاد نمود ؟
پس از آسنائی با تهديدات ، می بايست با بكارگيری مجموعه ای از اصول امنيتی اقدام به طراحی سيستم نمود . در ادامه ، پياده كنندگان می بايست از روش های ايمن به منظور نوشتن كدهای مطمئن ، مستحكم و قابل اعتماد استفاده نمايند . پس از طراحی و پياده سازی برنامه ، می بايست از يك شبكه ايمن ، يك host مطمئن و يك پيكربندی مناسب بر روی سرويس دهنده ، استفاده گردد .
ايجاد يك برنامه وب ايمن ، مستلزم اقدامات امنيتی چند جانبه ای است كه موفقيت در تمامی آنان ، ايمن بودن برنامه های وب را تضمين خواهد كرد . ايمن سازی شبكه ، host و برنامه ، رئوس مثلث امنيتی ايجاد برنامه های وب ايمن را تشكيل می دهند .
ايمن سازی شبكه ، host و برنامه
وجود يك نقطه آسيب پذير در شبكه به يك مهاجم اجازه می دهد تا كنترل يك host و يا برنامه را بدست بگيرد .
وجود يك نقطه آسيب پذير در host به يك مهاجم اجازه می دهد تا بتواند كنترل يك شبكه و يا برنامه را بدست بگيرد .
وجود يك نقطه آسيب پذير در برنامه به يك مهاجم اجازه می دهد تا كنترل يك host و يا شبكه را بدست بگيرد .
ايمن سازی شبكه
ايمن سازی شبكه ، شامل حفاظت از دستگاه های شبكه ای و داده مبادله شده بر روی آنها می باشد . روتر ، فايروال و سوئيچ عناصر اوليه زيرساخت يك شبكه را تشكيل می دهند .
يك برنامه وب بر روی يك زيرساخت شبكه ای ايمن فعاليت و به كاربران خود سرويس های لازم را ارائه می نمايد . برای ايمن سازی شبكه ، علاوه بر اين كه شبكه می بايست در مقابل حملات مبتنی بر TCP/IP از خود محافظت نمايد ، بلكه لازم است اقدامات متعدد ديگری نيز در اين رابطه انجام شود . ايجاد اينترفيس های مديريتی ايمن، استفاده از رمزهای عبور قدرتمند ، حصول اطمينان از صحت ترافيك ارسالی از جمله اقدامات ديگر در خصوص ايجاد يك شبكه ايمن می باشد . بدين منظور لازم است كه پورت ها و پروتكل های استفاده شده در هر لايه به دقت بررسی و در صورتی كه وجود آنها غيرضروری تشخيص داده شود و يا استفاده از آنها زمينه بروز تهديداتی را فراهم می نمايد ، می بايست در همان لايه با آنان برخورد و از يك راهكار مناسب امنيتی استفاده گردد .
وجود ضعف امنيتی در يك شبكه زمينه بروز تهديدات متعددی را فراهم می نمايد . بدون شناسائی اينگونه تهديدات ، امكان مقابله منطقی با آنان وجود نخواهد داشت .
تهديدات
مهمترين تهديدات در يك شبكه عبارتند از :
• جمع آوری اطلاعات
• sniffing
• spoofing
• session hijacking
• DoS ( برگرفته از Denial of Service )
با آگاهی از ماهيت هر يك از تهديدات فوق و نحوه تاثير آنها بر روی عملكرد شبكه ، می توان امكانات حفاظتی و تدافعی مناسبی را در يك شبكه پيش بينی و پياده سازی نمود.
در ادامه به بررسی مختصر هر يك از تهديدات فوق خواهيم پرداخت .
جمع آوری اطلاعات
نقاط آسيب پذير
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• پيكربندی ضعيف دستگاه های شبكه ای
• استفاده غيرايمن از سرويس هائی كه به وجود آنها در يك شبكه نياز نمی باشد .
حملات
• استفاده از Tracert به منظور تشخيص توپولوژی شبكه
• استفاده از Telnet به منظور باز نمودن پورت ها و جمع آوری اطلاعات اوليه
• استفاده از پويشگرهای پورت به منظور تشخيص وضعيت پورت ها
• استفاده از درخواست های broadcast برای شمارش تعداد host موجود بر روی يك subnet
پيشگيری و مقابله با تهديدات
• استفاده از امكاناتی كه اطلاعات اضافه ای را در خصوص پيكربندی نظير نام و شماره نسخه نرم افزار ارائه نمی نمايد .
• استفاده از فايروال ها به منظور پوشش سرويس هائی كه نمی بايست در معرض ديد و استفاده عموم قرار داده شوند .
sniffing
نقاط آسيب پذير
• ضعف امنيت فيزيكی
• ضعف رمزنگاری در زمان ارسال داده حساس و مهم
• وجود سرويس هائی كه با يكديگر به صورت متن معمولی ( رمز نشده ) ارتباط برقرار می نمايند .
• استفاده از الگوريتم های ضعيف رمزنگاری
حملات
پيشگيری و مقابله با تهديدات
به منظور پيشگيری و مقابله با اين نوع حملات می توان از روش های زير استفاده نمود :
• استفاده از يك سيستم امنيت فيزيكی مناسب به منظور پيشگيری از نصب دستگاه های مخرب بر روی شبكه
• رمزنگاری اطلاعات حساس و ترافيك برنامه بر روی شبكه
Spoofing
نقاط آسيب پذير
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• ضعف در فيلترينگ بسته های اطلاعاتی ورودی و خروجی : ترافيك ورودی و خروجی شبكه به درستی كنترل و فيلتر نمی گردد (ingress & egress filtering )
حملات
پيشگيری و مقابله با تهديدات
session Hijacking
نقاط آسيب پذير
• ضعف در امنيت فيزيكی
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• مبادله اطلاعات به صورت رمزنشده
حملات
پيشگيری و مقابله با تهديدات
• رمزنگاری Session
• استفاده از روش Stateful inspection در سطح فايروال
DoS
نقاط آسيب پذير
• ماهيت غيرايمن ذاتی پروتكل TCP/IP
• ضعف در پيكربندی روتر و سوئيچ
• باگ در سرويسهای نرم افزاری
حملات
• ارسال سيلابی از بسته های اطلاعاتی نظير حملات cascading broadcast
• بسته های اطلاعاتی SYN flood
• سوء استفاده از برخی سرويس ها
پيشگيری و مقابله با تهديدات
• فيلترينگ درخواست های broadcast
• فيلترينگ درخواست های ICMP ( برگرفته از Internet Control Message Protocol )
• بهنگام سازی و نصب patches سرويس های نرم افزاری
بدون آناليز صحيح تهديدات ، امكان ايجاد يك محيط و يا شبكه ايمن وجود نخواهد داشت .
برای ايمن سازی شبكه از كجا می بايست شروع كرد ؟
همانگونه كه اشاره گرديد در زيرساخت شبكه از روتر ، فايروال و سوئيچ استفاده می گردد كه می بايست ضمن آشنائی با جايگاه آنها در يك شبكه با نحوه عملكرد و ايمن سازی آنها از منظر برنامه های وب نيز آشنا شويم .