واضح آرشیو وب فارسی:الف: مقايسه امنيت در ويندوز و لينوكس
۱۲ دي ۱۳۸۷
مقدمه
در چند ساله اخير يكياز مباحث داغ پيرامون مقايسات بين سيستمهاي عامل[1] لينوكس[2] و ويندوز[3]،بحث امنيت بوده است. كارشناسان از ديدگاهها مختلف به اين موضوع پرداخته اند و هريك در مورد اين مبحث نظرياتي داده اند. كاربران عادي نيز صرفنظراز ديدگاه كارشناسي مباحثي را پذيرفته اند كه با تصورات آنها - كه اغلب غير كارشناسانه نيز هست - بيشتر سازگاري داشته باشد.
هدف از اين مقاله كه گردآوري شده نظرات كارشناسان و كاربران در شبكه اينترنت بوده و از انجمنهاي گفتگو گرفته تا مقالات تخصصي را شامل ميشود، ارائه ديدگاهي است كه خوانندگان بتوانند بر اساس استدلال منطقي، نسبت به ميزان امنيت اين دو سيستم عامل قضاوت نمايند.
در اين مقاله سعي بر ارائه مطالبي در خصوص ويروسهاي كامپيوتري و امنيت دو سيستم عامل ويندوز و لينوكس داريم.
ويروس كامپيوتري[4] چيست؟
همانگونه كه از نامش پيداست و همگان ميدانند، ويروس كامپيوتري يك برنامه مخرب است (البته شايد هم غير مخرب!) كه دو خاصيت اساسي دارد:
الف- بطور خودكار و بدون اجازه و خواست كاربر اجرا ميشود
ب- بطور خودكار و بدون اجازه و خواست كاربر تكثير ميشود
يك ويروس كامپيوتري براي انجام دو مأموريت فوق احتياج به يك بستر دارد. اين بستر غالبا در پرونده هاي اجرائي[5] سيستمهاي عامل براي ويروسها فراهم ميشود. كه ممكن است از طريق پرونده هاي آلوده، رايانامه[6] آلوده يا طرق ديگر وارد سيستم شود.
نگاهي دقيقتر به مراحل اجراي يك پرونده اجرائي در سيستم عامل مياندازيم. اين كار در سه مرحله كلي صورت ميگيرد:
مرحله ۱: سيستم عامل در ابتدا نوع پروندهي مورد نظر را از نظر اجرائي بودن بررسي ميكند.
مرحله ۲: مجوزهاي اجرا[7]ي پرونده توسط كاربر، بوسيله سيستم بررسي مي شود.
مرحله ۳: در صورت اجرائي بودن پرونده و داشتن مجوز اجرا توسط كاربر، فرآيند اجراي آنرا به انجام مي رساند.
حال ببينيم هر يك از سيستمهاي عامل لينوكس و ويندوز چگونه مراحل فوق را به انجام مي رسانند:
الف - ويندوز:
مرحله ۱: نحوه شناسائي پرونده هاي اجرائي در ويندوز، «پسوند»[8] آنهاست. يعنيويندوز يك پرونده را كه پسوند exe يا com يا bat داشته باشد اجرائي فرض كرده و در صورتي كه exe يا com باشد آنرا بصورت دودوئي(binary) و اگر bat باشد آنرا بصورت فرمانهاي اجرائي اعلان دستور[9] سيستم، اجرا مي نمايد.
مرحله ۲: در حالت پيش فرض همه پرونده ها براي همه كاربران در ويندوز مجوز اجرا دارند. البته اين موضوع به نوع سيستم پرونده[10] نيز وابسته است و در صورتي كه شما از سيستم پرونده امن ويندوز(مانند NTFS) استفاده نكنيد اصلا هيچ نوع مجوزي وجود ندارد كه بررسي شود!!! يعنيهمه مجازند هركاري بكنند![11]
مرحله ۳: اگر يك پرونده از دو مرحله فوق رد شود و به اين مرحله برسد، حال تمام سيستم اعم از سخت افزار، نرم افزار، سرويسها و ... در اختيار او خواهند بود تا اجرا شده و خدمات مورد نياز كاربر را ارائه نمايد. در واقع ويندوز از اينجا به بعد هرچه برنامه اجرائي بخواهد در اختيارش قرار ميدهد. به اين دليل است كه بعضي پرونده ها و برنامه هاي غير مخرب نيز بعد از اجرا ممكن است عملكرد سيستم را متوقف[12] نمايند. البته در نسخه هاي جديد ويندوز (از 2000 به بعد) يك برنامه امنيتي در سيستم عامل و در لايه Application آن، قرار داده شده كه از خرابكاري پرونده هاي اصلي سيستم عامل جلوگيري بعمل آورد. اما اكثر مواقع اين برنامه امنيتي در محافظت از سيستم پرونده ناموفق عمل نموده است.
نتيجه: شما ميتوانيد هر پرونده اي را در سيستم عامل ويندوز بعنوان اجرائي به آن معرفي كنيد![13] بنابراين حتيدر بعضيموارد لازم نيست در آن پرونده ويروس وجود داشته باشد، اجراي كدهاي نامفهوم براي سيستم در بسياري موارد موجب مضرات فراوان ميشود كه ساده ترين آنها توقف عملكرد سيستم يا همان «هنگ كردن» معروف است.
ب- لينوكس:
مرحله ۱: لينوكس پرونده هاي اجرائي را از روي سرنام[14] داخل پرونده ها شناسائي ميكند كه قابل تغيير توسط كاربر نيستند[15]. در واقع داشتن يا نداشتن پسوند هيچ تغييري در رفتار لينوكس براي يك پرونده اجرائي نخواهد داشت. چرا كه يك پرونده اجرائي در لينوكس حتماً اجرائي است حتياگر پسوند آن jpg يا wav باشد!
مرحله ۲: مجوز اجرا براي كاربر از مهمترين بخشهاي يك پرونده در لينوكس است. بعبارت ديگر يك پرونده اگر هم از نظر سرنامهايش اجرائي باشد، مجوز اجرا توسط آن كاربر خاص بايد وجود داشته باشد تا پرونده اجرا شود. در حالت پيش فرض مجوز اجرا فقط براي پرونده هاي خاص و فقط براي مالك آن پرونده - كه آنرا ايجاد نموده - وجود دارد. همچنين در هنگام نسخه برداري از پرونده ها مجوزهاي اجرا حذف مي گردند.
مرحله ۳: حالا نوبت اجراي پرونده است. در صورتي كه پرونده قابل اجرا باشد و مجوز كافي براي اجراي آن توسط كاربر وجود داشته باشد، سيستم عامل تمام امكانات سيستم مانند سخت افزار، نرم افزار و سرويسها و ... را كه آن كاربر مجوز دسترسي به آنها را دارد در اختيار پرونده ميگذارد كه خدمات مورد نياز را به كاربر ارائه نمايد.
توضيح تكميلي: در سيستم عامل لينوكس همه چيز بصورت پرونده ديده ميشود و توسط يك ساختار يكپارچه پرونده[16] كنترل ميگردد. به اين صورت كه اطلاعات مربوط به پروسههاي[17] سيستم در مسيري بعنوان proc/ و پرونده هاي رابط سختافزارهاي[18] سيستم در مسيري بعنوان dev/ نگهداري شده و براي همه آنها حق دسترسي[19] تعريف ميشود. محتويات اين پوشه ها در زمان راه اندازي سيستم بصورت پويا[20] ايجاد شده و در زمان خاموش شدن سيستم از بين مي روند.
نتيجه : يك برنامه اجرائي امكان اجرا و همچنين تكثير خودكار در سيستم عامل لينوكس را نخواهد داشت.
نگاهي گذرا به ساختار داخلي سيستمهاي عامل ويندوز و لينوكس:
ويندوز: يك سيستم عامل تك كاربره[21] است! بله درست متوجه شديد سيستم عامل ويندوز يك سيستم عامل با طراحي تك كاربره و چند وظيفهاي[22] است كه كاربران مختلف را بصورت وظايف مختلف سيستم عامل مديريت ميكند. بنابراين، كاربران بعنوان وظايف سيستم عامل شناسائي شده و به آنها مانند ديگر وظايف (فقط با تقدم[23] بيشتر) پرداخته ميشود. به همين دليل است كه با ورود كاربران مختلف به يك سيستم، بار بسيار زيادي به آن سيستم وارد ميآيد و سيستم بطور چشمگيري كند ميشود.
از سوي ديگر ويندوز يك سيستم عامل طراحي شده بر پايه Micro Kernel است. (البته به گفته مقامات و كارشناسان مايكروسافت) معني اين ساختار اين است كه همه آنچه در سيستم است در خارج از هسته[24] سيستم عامل رخ ميدهد و هسته فقط پيامهاي مربوط به بخشهاي مختلف را به موقع به بخش ديگر ميرساند. اگر واقعا اينطور باشد ميزان توقف سيستم عامل و از كار افتادن سرويسها و خدمات تقريبا به صفر ميرسد، اما در عمل آنچه مي بينيم يك رابط گرافيكي سنگين است كه جزء لاينفك ويندوز بوده و بار زيادي را به سيستم تحميل ميكند و در صورتي كه كاربر نخواهد از محيط گرافيكي استفاده كند، خوب هيچ چاره اي ندارد، بايد استفاده كند!
لينوكس: لينوكس يك سيستم عامل چند كاربره[25] و چند وظيفه اي بوده و از ابتدا به اين صورت طراحي شده است. اين بدين معني است كه سيستم عامل براي هر كاربر به محض ورود به سيستم يك نشست[26] جديد ايجاد مينمايد و همه نيازمنديهاي كاربر در قالب آن نشست برآورده ميشود. حال اگر در اثر اجراي دستور يا برنامهاي مخرب، مشكلي ايجاد شود، خوب! هيچ جاي نگرانينيست. فقط نشست و پرونده هاي مربوط به آن كاربر دچار مشكل شده و آسيب ميبيند و به محيط كاربران ديگر و همچنين پرونده هاي سيستم هيچگونه آسيبي نميرسد. (البته اگر اين كاربر «مدير»[27] نباشد)
نكته ديگر اينكه طراحي لينوكس بر پايه Monolitic Kernel است. اين بدين معني است كه برخي از نيازهاي سيستم عامل مي تواند در هسته گنجانده شود و بصورت يكپارچه كنترل و هدايت شود. اين گونه است كه ميتوان كليه نيازها را در زمان درخواست و احتياج واقعي كاربر، فعال نموده وبراي آن، منابع[28] اختصاص داد و يا برخي نيازهاي ثابت را درون هسته گنجاند تا سيستم از سرعت و عملكرد بهتري برخوردار شود. لينوكس به دليل نوع طراحي هسته و سيستم پروندهاش رفتاري همانند يونيكس [29] را انجام ميدهد.
اما مبحث آخر، برخي ميگويند «چون لينوكس به اندازه زياد استفاده نميشود هنوز براي آن ويروس نوشته نشده است»! نظر اين افراد را به برخي آمارهاي جهاني كه به راحتي از طريق اينترنت قابل دسترس مي باشند جلب مي نمايم:
- پايداري[30] و قابليت اطمينان[31] اين سيستم عامل به حدي است كه بيش از ۷۰ درصد سرويس دهندههاي جهان بر روي آن كار ميكنند (www.netcraft.com)
- دلايل فوق و همچنين سرعت و انعطاف پذيري لينوكس باعث شده است تا بيش از ۷۵ درصد از برترين سوپركامپيوترهاي جهان از اين سيستم عامل استفاده نمايند.(www.top500.org)
- ۹۰ ٪ كاربران خانگي از ويندوز استفاده ميكنند.
آيا كساني كه ويروس مي نويسند خرابكاري بر روي ايستگاه كاري يك كاربر كه در خانه خود نشسته است را به خرابكاري بر روي سرويس دهنده هزاران كاربر ترجيح ميدهند؟!
مسلم است كه جواب منفي است. اما نوشتن ويروس براي ويندوز بسيار آسان و دست يافتني بوده و در مقابل ويروس نويسي براي سيستمهاي مانند يونيكس (مثل لينوكس) اگر ناممكن نباشد بسيار بسيار مشكل و دردسر ساز خواهد بود.
در نهايت با پيدا شدن يك حفره امنيتي در سيستم عامل متن باز[32] لينوكس، بيش از ۴۰۰ هزار برنامه نويس سراسر جهان در كمتر از يك ساعت آن مشكل را بر طرف مينمايند(والبته در بيشتر موارد به دليل باز بودن كد، قبل از انتشار حفره امنيتي و آسيب رسيدن به سيستمهاي عملياتي اين كار انجام مي شود) در صورتيكه حفره هائي در سيستم عامل ويندوز موجود است كه پس از گذشت چندصد روز هنوز مايكروسافت اقدام به رفع آن نكرده است.
بايد به اين نكته نيز توجه داشت كه هميشه در ويندوز ابتدا فاجعه اتفاق مي افتد و بعد وصله امنيتي - پس از مدتها - به دست كاربر ميرسد، اما در لينوكس بيش از ۹۵٪ موارد قبل از رخ دادن فاجعه، مشكل توسط برنامه نويسان سراسر جهان - كه تعدادشان ۱۰ برابر تعداد كل كاركنان شركت مايكروسافت است! - برطرف ميشود.
[1] Operating Systems
[2] GNU/Linux
[3] Microsoft Windows
[4] Computer Viruses
[5] Executable Files
[6] eMail
[7] Execute Permission
[8] Extension
[9] Command Prompt
[10] File System
[11] اين در نسخه هاي پائينتر ويندوز مانند ۹۵و ۹۶و۹۷و۹۸وME صدق ميكند و در صورت استفاده از سيستم پرونده FAT32 در نسخه هاي بالاتر
[12] HANG
[13] كافيست پرونده را تغيير نام داده و پسوندش را عوض كنيد
[14] header
[15] با كوچكترين تغيير، پرونده ديگر اجرائي نخواهد بود.
[16] File Hierarchy System
[17] Process
[18] Devices
[19] Permission
[20] Dynamic
[21] Single User
[22] Multi Tasking
[23] Priority
[24] Kernel
[25] Multi User
[26] Session
[27] root
[28] resource
[29] UNIX Like
[30] Stability
[31] Reliability
[32] Open Source
3771317
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."
پنجشنبه 12 دي 1387
این صفحه را در گوگل محبوب کنید
[ارسال شده از: الف]
[تعداد بازديد از اين مطلب: 178]