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

در چند سال اخیر یکی از مباحث داغ پیرامون مقایسه سیستم‌های عامل لینوکس و ویندوز٬ امنیت آن‌ها بوده است.کارشناسان از دیدگاه‌های مختلف به این مسئله پرداخته اند و هر یک نظرات خاص خود را داشته‌اند.کاربران عادی نیز صرف‌نظر از دیدگاه‌های کارشناسی٬ مباحثی را پذیرفته‌اند که با تصورات آن‌ها (که اغلب غیرکارشناسانه نیز هست) بیشتر سازگاری داشته باشد.هدف از این مقاله ارائه دیدگاهی است تا خوانندگان بتوانند بر اساس استدلال منطقی٬ نسبت به میزان امنیت این دو سیستم عامل قضاوت نمایند. البته در این مقاله کوشیده ایم امنیت را از نظر ویروس‌های کامپیوتری کالبد‌شکافی کنیم.بهتر است پیش از وارد شدن به بحث اصلی٬ تعریفی از ویروس های کامپیوتری ارائه دهیم.

ویروس کامپیوتری چیست؟

همان‌گونه که از نامش پیداست و همگان می‌دانند٬‌ ویروس کامپیوتری یک برنامه مخرب است (شاید هم غیر‌‌مخرب!) که دو خاصیت اساسی دارد: به صورت خودکار و بدون اجازه کاربر اجرا و تکثیر می شود.

یک ویروس کامپیوتری برای انجام دادن دو ماموریت فوق احتیاج به یک بستر دارد. این بستر غالبا در فایل ها و به خصوص فایل های اجرایی سیستم عامل برای ویروس فراهم می‌شود. ویروس ممکن است از طریق فایل‌های آلوده٬نامه های الکترونیکی آلوده٬ یا طرق دیگر وارد سیستم شود.نگاهی دقیق‌تر به مراحل اجرای یک فایل اجرایی در سیستم عامل می اندازیم. این کار در سه مرحله کلی صورت می گیرد:

مرحله یک: سیستم عامل در ابتدا نوع فایل موردنظر را از نظر اجرایی بودن بررسی می کند.

مرحله دو: مجوزهای اجرای فایل توسط کاربر٬ به وسیله سیستم بررسی می شود.

مرحله سه: در صورت اجرایی بودن فایل و داشتن مجوز اجرا توسط کاربر٬ فرآیند اجرای آن را به انجام می رساند.

حال ببینیم هر یک از سیستم عامل های لینوکس و ویندوز چگونه مراحل فوق را به انجام می رسانند:

ویندوز

مرحله یک: نحوه شناسایی فایل های اجرایی در ویندوز٬ پسوند آن‌ها است. یعنی ویندوز یک فایل را که پسوند exe ٬ com یا bat داشته باشد اجرایی فرض می کند. در صورتی که پسوند exe یا com باشد٬ آن را به صورت دودویی (binary) و اگر bat باشد آن را به صورت فرمان‌های اجرایی اعلان دستور سیستم٬ اجرا می‌کند.

مرحله دو: در حالت پیش‌فرض همه فایل‌ها برای همه کاربران در ویندوز مجوز اجرا دارند.البته این موضوع به نوع سیستم فایل ویندوز نیز وابسته است.در صورتی که شما از سیستم فایل امن ویندوز (مانند NTFS) استفاده نکنید اصلا هیچ نوع مجوزی وجود ندارد که بررسی شود٬ یعنی همه مجازند هر کاری بکنند.

مرحله سه: اگر یک فایل از دو مرحله فوق بگذرد و به این مرحله برسد٬ تمام سیستم اعم از سخت‌افزار٬ نرم‌افزار٬ سرویس‌ها و … در اختیار او خواهند بود تا اجرا شده و خدمات مورد نیاز کاربر را ارائه کند.در واقع ویندوز از اینجا به بعد هر چه برنامه اجرایی بخواهد در اختیارش قرار می‌دهد.به این دلیل است که برخی فایل‌ها و برنامه‌های غیرمخرب نیز بعد از اجرا ممکن است عملکرد سیستم را متوقف کنند.البته در نسخه های جدید ویندوز (از ۲۰۰۰ به بعد) یک برنامه امنیتی در سیستم عامل و در لایه Application آن قرار داده شده که از خرابکاری فایل‌های اصلی سیستم عامل جلوگیری به عمل آورد٬ اما در اکثر مواقع این برنامه امنیتی در محافظت از سیستم فایل ناموفق عمل نموده است.

نتیجه: شما می توانید هر فایلی را در سیستم عامل ویندوز به عنوان اجرایی به آن معرفی کنید! بنابراین حتی در برخی موارد لازم نیست در آن فایل ویروسی وجود داشته باشد٬ اجرای کدهای نامفهوم برای سیستم در بسیاری موارد موجب ضررهای فراوانی می‌شود که ساده‌ترین آن‌ها توقف عملکرد سیستم یا همان هنگ کردن معروف است.

لینوکس

مرحله یک: لینوکس فایل‌های اجرایی را از روی سرنام داخل فایل‌ها شناسایی می‌کند که قابل تغییر توسط کاربر نیستند. در واقع داشتن یا نداشتن پسوند هیچ تغییری در رفتار لینوکس برای یک فایل اجرایی نخواهد داشت. چون یک فایل اجرایی در لینوکس حتما اجرایی است٬ حتی اگر پسوند آن jpg یا wav باشد. (توضیح : اگر دقت کرده باشید در لینوکس می توانید پسوند فایل‌ها را پاک کنید و هم‌چنان آن فایل به صورت قبل اجرا می شود.در حالی که همین فایل در ویندوز قابل اجرا نیست چون ویندوز از روی پسوند نوع فایل را تشخیص می دهد.)

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

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

نکته: در سیستم عامل لینوکس همه چیز به صورت فایل دیده می‌شود و توسط یک ساختار یکپارچه فایل (File Hierarchy System) کنترل می‌گردد.به این صورت که اطلاعات مربوط به پروسه‌های سیستم در دایرکتوری به عنوان proc/ و فایل‌های رابط سخت‌افزارهای سیستم در دایرکتوری به عنوان dev/ نگهداری شده و برای همه آن‌ها حق دسترسی تعریف می‌شود.محتویات این فایل‌ها در زمان راه‌ اندازی سیستم به صورت پویا ایجاد شده و در زمان خاموش شدن سیستم از بین می روند.

نتیجه: یک برنامه اجرایی امکان اجرا و همچنین تکثیر خودکار در سیستم عامل لینوکس را نخواهد داشت.

نگاهی گذرا به ساختار داخلی سیستم عامل‌های ویندوز و لینوکس

ویندوز

یک سیستم عامل تک کاربره (Single User) است.سیستم عامل ویندوز یک سیستم عامل با طراحی تک کاربره و چند وظیفه‌ای است که کاربران مختلف را به صورت وظایف مختلف سیستم عامل مدیریت می‌کند.بنابراین کاربران به عنوان وظایف سیستم عامل شناسایی شده و به آن‌ها مانند دیگر وظایف (فقط با تقدم بیشتر) پرداخته می شود.به همین دلیل است که با ورود کاربران مختلف به سیستم٬ بار بسیار زیادی به آن سیستم وارد می‌آید و سیستم به صورت چشمگیری کند می‌شود.

از سوی دیگر ویندوز یک سیستم عامل طراحی شده بر پایه Micro Kernel است (البته به گفته مدیران و کارشناسان مایکروسافت).یعنی همه آن چه در سیستم است در خارج از هسته سیستم عامل رخ می دهد و هسته فقط پیام‌های مربوط به بخش‌های مختلف را به موقع به بخش دیگر می‌رساند. اگر واقعا این طور باشد٬ میزان توقف سیستم عامل و از کار افتادن سرویس‌ها و خدمات تقریبا به صفر می‌رسد. اما در عمل آن‌چه می‌بینیم یک رابط گرافیکی سنگین است که جز جدانشدنی ویندوز بوده و بار زیادی را به سیستم تحمیل می‌کند.در صورتی که کاربر نخواهد از محیط گرافیکی استفاده کند٬ هیچ چاره ای ندارد٬ باید استفاده کند!

لینوکس

یک سیستم عامل چند کاربره (Multi User) و چند وظیفه ای بوده و از ابتدا به این صورت طراحی شده است.این به این معنی است که سیستم عامل برای هر کاربر به محض ورود به سیستم یک نشست (Session) جدید ایجاد می‌کند و همه نیازمندی‌های کاربر در قالب آن نشست برآورده می‌شود. حال اگر در اثر اجرای دستور یا برنامه‌ای مخرب٬ مشکلی ایجاد شود٬ هیچ جای نگرانی نیست٬ فقط نشست و فایل‌های مربوط به آن کاربر دچار مشکل شده و آسیب می‌می بیند و به محیط کاربران دیگر و همچین فایل‌های سیستم هیچ‌گونه آسیبی نمی‌رسد (البته اگر کاربر ریشه (root) نباشد).

نکته دیگر این که طراحی لینوکس بر پایه Monolithic Kernel است.یعنی برخی از نیازهای سیستم عامل می‌تواند در هسته گنجانده شود به صورت یکپارچه کنترل و هدایت شود.این گونه است که می توان کلیه نیازها را در زمان درخواست و احتیاج واقعی کاربر فعال نموده و برای آن٬ منابع اختصاص داد یا برخی نیازهای ثابت را درون هسته گنجاند تا سیستم از سرعت و عملکرد بهتری برخوردار شود.لینوکس به دلیل نوع طراحی هسته و سیستم فایل رفتاری همانند یونیکس انجام می‌دهد.

آیا برای لینوکس ویروس وجود دارد؟

برخی می‌گویند : “چون لینوکس به اندازه زیاد استفاده نمی شود٬ هنوز برای آن ویروس نوشته نشده است” (توضیح : یا چون لینوکس کاربر زیادی ندارد کسی زحمت ویروس نوشتن به خود نمی دهد).

پایداری (Stability) و قابلیت اطمینان (Reliability) این سیستم عامل به حدی است که بیش از هفتاد درصد سرویس ‌دهنده‌های جهان روی آن کار می کنند (منبع : Netcraft | Internet Research, Anti-Phishing and PCI Security Services). دلایل فوق و همچنین سرعت و انعطاف‌پذیری لینوکس باعث شده است تا بیش از ۷۵ درصد از برترین سوپرکامپیوترهای جهان از این سیستم عامل استفاده کنند (منبع : Home | TOP500 Supercomputer Sites). البته نود درصد کاربران خانگی از ویندوز استفاده می‌کنند.

آیا کسانی که ویروس می‌نویسند خرابکاری روی ایستگاه کاری یک کاربر که در خانه خود نشسته است را به خرابکاری روی سرویس دهنده هزاران کاربر ترجیح می‌دهند؟

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

در نهایت با پیدا شدن یک حفره امنیتی در سیستم عامل اپن سورس لینوکس٬ بیش از چهارصد هزار برنامه نویس در سراسر جهان در کمتر از یک ساعت آن مشکل را برطرف می کنند (البته در بیشتر موارد به دلیل در دسترس بودن کد٬ قبل از انتشار حفره امنیتی و آسیب رسیدن به سیستم‌های عملیاتی این کار انجام می‌شود).در حالی که حفره‌هایی در سیستم عامل ویندوز موجود است که پس از گذشت چند صد روز هنوز شرکت سازنده اقدام به رفع آن نکرده است. (توضیح : یک نمونه برای IE)

باید به این نکته نیز توجه داشت که همیشه در ویندوز ابتدا فاجعه اتفاق می‌افتد و بعد وصله امنیتی (پس از گذشت مدت زمانی در خور توجه) به دست کاربر می‌رسد.اما در لینوکس بیش از ۹۵ درصد موارد قبل از رخ دادن فاجعه٬ مشکل توسط برنامه نویسان سراسر جهان (که تعدادشان ده برابر تعداد کل کارکنان شرکت مایکروسافت است!) برطرف می شود.