چند وقت پیش مقاله ای در دو هفته نامه عصر شبکه دیدم که خیلی منطقی به این سوال پاسخ داده بود.این مطلب را بدون کوچکترین تغییری تایپ کردم که در ادامه می خوانید. (البته بخش هایی با عنوان توضیح به متن اضافه شده اند.)
این نوشته آقای محمد تشکری در شماره ۷۳ دو هفته نامه عصر شبکه (پانزدهم مرداد ماه) در صفحه ۴۶ چاپ شده است.
در چند سال اخیر یکی از مباحث داغ پیرامون مقایسه سیستمهای عامل لینوکس و ویندوز٬ امنیت آنها بوده است.کارشناسان از دیدگاههای مختلف به این مسئله پرداخته اند و هر یک نظرات خاص خود را داشتهاند.کاربران عادی نیز صرفنظر از دیدگاههای کارشناسی٬ مباحثی را پذیرفتهاند که با تصورات آنها (که اغلب غیرکارشناسانه نیز هست) بیشتر سازگاری داشته باشد.هدف از این مقاله ارائه دیدگاهی است تا خوانندگان بتوانند بر اساس استدلال منطقی٬ نسبت به میزان امنیت این دو سیستم عامل قضاوت نمایند. البته در این مقاله کوشیده ایم امنیت را از نظر ویروسهای کامپیوتری کالبدشکافی کنیم.بهتر است پیش از وارد شدن به بحث اصلی٬ تعریفی از ویروس های کامپیوتری ارائه دهیم.
ویروس کامپیوتری چیست؟
همانگونه که از نامش پیداست و همگان میدانند٬ ویروس کامپیوتری یک برنامه مخرب است (شاید هم غیرمخرب!) که دو خاصیت اساسی دارد: به صورت خودکار و بدون اجازه کاربر اجرا و تکثیر می شود.
یک ویروس کامپیوتری برای انجام دادن دو ماموریت فوق احتیاج به یک بستر دارد. این بستر غالبا در فایل ها و به خصوص فایل های اجرایی سیستم عامل برای ویروس فراهم میشود. ویروس ممکن است از طریق فایلهای آلوده٬نامه های الکترونیکی آلوده٬ یا طرق دیگر وارد سیستم شود.نگاهی دقیقتر به مراحل اجرای یک فایل اجرایی در سیستم عامل می اندازیم. این کار در سه مرحله کلی صورت می گیرد:
مرحله یک: سیستم عامل در ابتدا نوع فایل موردنظر را از نظر اجرایی بودن بررسی می کند.
مرحله دو: مجوزهای اجرای فایل توسط کاربر٬ به وسیله سیستم بررسی می شود.
مرحله سه: در صورت اجرایی بودن فایل و داشتن مجوز اجرا توسط کاربر٬ فرآیند اجرای آن را به انجام می رساند.
حال ببینیم هر یک از سیستم عامل های لینوکس و ویندوز چگونه مراحل فوق را به انجام می رسانند:
ویندوز
مرحله یک: نحوه شناسایی فایل های اجرایی در ویندوز٬ پسوند آنها است. یعنی ویندوز یک فایل را که پسوند exe ٬ com یا bat داشته باشد اجرایی فرض می کند. در صورتی که پسوند exe یا com باشد٬ آن را به صورت دودویی (binary) و اگر bat باشد آن را به صورت فرمانهای اجرایی اعلان دستور سیستم٬ اجرا میکند.
مرحله دو: در حالت پیشفرض همه فایلها برای همه کاربران در ویندوز مجوز اجرا دارند.البته این موضوع به نوع سیستم فایل ویندوز نیز وابسته است.در صورتی که شما از سیستم فایل امن ویندوز (مانند NTFS) استفاده نکنید اصلا هیچ نوع مجوزی وجود ندارد که بررسی شود٬ یعنی همه مجازند هر کاری بکنند.
مرحله سه: اگر یک فایل از دو مرحله فوق بگذرد و به این مرحله برسد٬ تمام سیستم اعم از سختافزار٬ نرمافزار٬ سرویسها و … در اختیار او خواهند بود تا اجرا شده و خدمات مورد نیاز کاربر را ارائه کند.در واقع ویندوز از اینجا به بعد هر چه برنامه اجرایی بخواهد در اختیارش قرار میدهد.به این دلیل است که برخی فایلها و برنامههای غیرمخرب نیز بعد از اجرا ممکن است عملکرد سیستم را متوقف کنند.البته در نسخه های جدید ویندوز (از ۲۰۰۰ به بعد) یک برنامه امنیتی در سیستم عامل و در لایه Application آن قرار داده شده که از خرابکاری فایلهای اصلی سیستم عامل جلوگیری به عمل آورد٬ اما در اکثر مواقع این برنامه امنیتی در محافظت از سیستم فایل ناموفق عمل نموده است.
نتیجه: شما می توانید هر فایلی را در سیستم عامل ویندوز به عنوان اجرایی به آن معرفی کنید! بنابراین حتی در برخی موارد لازم نیست در آن فایل ویروسی وجود داشته باشد٬ اجرای کدهای نامفهوم برای سیستم در بسیاری موارد موجب ضررهای فراوانی میشود که سادهترین آنها توقف عملکرد سیستم یا همان هنگ کردن معروف است.![]()
لینوکس
مرحله یک: لینوکس فایلهای اجرایی را از روی سرنام داخل فایلها شناسایی میکند که قابل تغییر توسط کاربر نیستند. در واقع داشتن یا نداشتن پسوند هیچ تغییری در رفتار لینوکس برای یک فایل اجرایی نخواهد داشت. چون یک فایل اجرایی در لینوکس حتما اجرایی است٬ حتی اگر پسوند آن jpg یا wav باشد. (توضیح : اگر دقت کرده باشید در لینوکس می توانید پسوند فایلها را پاک کنید و همچنان آن فایل به صورت قبل اجرا می شود.در حالی که همین فایل در ویندوز قابل اجرا نیست چون ویندوز از روی پسوند نوع فایل را تشخیص می دهد.)
مرحله دو: مجوز اجرا برای کاربر از مهمترین بخشهای یک فایل در لینوکس است.به عبارت دیگر یک فایل اگر هم از نظر سرنامها اجرایی باشد٬ مجوز اجرا توسط آن کاربر خاص باید وجود داشته باشد تا فایل اجرا شود. در حالت پیشفرض مجوز اجرا فقط برای فایلهای خاص و فقط برای مالک آن فایل (که آن را ایجاد نموده) وجود دارد.همچنین در هنگام نسخه برداری از فایلها مجوزهای اجرا حذف میگردند.
مرحله سه: حالا نوبت اجرای فایل است.در صورتی که فایل قابل اجرا باشد و مجوز کافی برای اجرای آن توسط کاربر وجود داشته باشد٬ سیستم عامل تمام امکانات سیستم مانند سختافزار٬ نرمافزار٬سرویسها و … را که آن کاربر مجوز دسترسی به آنها را دارد٬ در اختیار فایل میگذارد که خدمات مورد نیاز مورد نیاز را به کاربر ارائه کند.
نکته: در سیستم عامل لینوکس همه چیز به صورت فایل دیده میشود و توسط یک ساختار یکپارچه فایل (File Hierarchy System) کنترل میگردد.به این صورت که اطلاعات مربوط به پروسههای سیستم در دایرکتوری به عنوان proc/ و فایلهای رابط سختافزارهای سیستم در دایرکتوری به عنوان dev/ نگهداری شده و برای همه آنها حق دسترسی تعریف میشود.محتویات این فایلها در زمان راه اندازی سیستم به صورت پویا ایجاد شده و در زمان خاموش شدن سیستم از بین می روند.
نتیجه: یک برنامه اجرایی امکان اجرا و همچنین تکثیر خودکار در سیستم عامل لینوکس را نخواهد داشت.
نگاهی گذرا به ساختار داخلی سیستم عاملهای ویندوز و لینوکس














