نکته: بدیهی است که (rwx) به معنای تعریف حداکثر سطح دسترسی برای کاربر یا گروههای کاربری است و ( – – – ) به معنای عدم امکان دسترسی به فایل یا دایرکتوری میباشد.
چند نکتهی مهم در مورد یونیکس و لینوکس:
اسامی فایلها در یونیکس و لینوکس میتوانند شامل هر نوع کاراکتری حتی کاراکترهای ascii بجز صفر و / باشند. همانطوریکه میدانید در سیستمهای مبتنی بر یونیکس بر خلاف ویندوز هر فایل حتماً نیاز به داشتن پسوند سه حرفی مشخص کننده نوع فایل ندارد و قابلیتها و نوع فایلهای بدون پسوند یا extension کاملاً وابسته به محتویات فایل است و نه به پسوند آن. بدیهی است که کاراکتر ( . ) جداکنندهی نام فایل و پسوند آن در ویندوز در محیط یونیکس و گنو/لینوکس یک کاراکتر از کاراکترهای تشکیلدهندهی نام فایل محسوب میگردد. و نکته ظریف اینجاست که در سیستمهای مبتنی بر یونیکس کلیهی فایلها و دایرکتوریهایی که با کاراکتر نقطه یا دات ( . ) آغاز گردند فایلها یا دایرکتوریهای پنهان hidden محسوب میگردند.
توجه داشته باشید که چون برخی برنامههای گرافیکی مثلاً برنامه openoffice کماکان از پسوند نام فایل برای ذخیرهسازی و تشخیص نوع فایل بهره میبرند گاهی لازم است پسوند فایلهای ایجاد شده توسط این برنامههای کاربردی حفظ گردد تا برنامه موصوف در شناسایی نوع فایل دچار مشکل نشود.
نکاتی در مورد امنیت در لینوکس
هنگامیکه مشغول تنظیمات سیستم خود هستید، باید حدس نیز بزنید که چه کسی ممکن است بتواند به سیستم شما دسترسی پیدا کند. شما مطمیناً میتوانید به برنامههایی، به صورت رایگان، دسترسی داشته باشید و افراد دید متفاوتی نیز به شما داشته باشند، اما اگر فردی با تجربهای بیشتر از شما داشته باشد، یک حفرهی امنیتی واضح خواهد دید که تا جایی که بتواند از آن بهرهبرداری مینماید؛ بنابراین برای این فرد مشکلی پیش نخواهد آمد بلکه در این میان شما ضرر کردهاید.
لینوکس/یونیکس یک سیستم عامل با قابلیت پیکربندی و انعطاف بالا میباشد که اگر حفرهای در آن پیدا شود، به راحتی ناپدید خواهد شد. کافیست از راهبر سیستم کمک بگیرید. غالب توزیعهای لینوکس قبل از اتصال به اینترنت و استفاده از آنها در شبکه، نیاز به پیکربندیهایی دارند. من، شخصاً، نمیتوانم تمام فایلهایی را، که ممکن است نیاز به ویرایش آنها داشته باشید، فهرست کنم؛ اما اگر از فایلهای Startup (یا لینکهای ردهت و دبیان) استفادهای نمیکنیم، آنها را باید حذف نماییم؛ اگر از این فایلها چیزی نمیفهمید، /etc/inetd.conf نقطهای دیگر برای شروع میباشد، بلافاصله اتصالات شبکه را حذف نموده و صفحهی راهنمای آن را بخوانید.
یک لیست اولیه از مواردی که باید چک شوند، عبارت است از: time، echo، nfs*، telnet*، smb (netbois)، ftp، login، pop3، nntp، tftp*، netstat، finger، http و … (* فایلها، پروتکلهای محبوب و عمومی هستند، اما میتوانند از نظر امنیتی بسیار ضعیف باشند)، اگر در شبکه هستید و خیالتان از این نظر راحت نیست، از راهبران سیستم بپرسید، آنها مطمئناً تجربیات بیشتری در این زمینه دارند و میدانند که از چه چیزی باید استفاده کنید و چه چیزهایی را نباید بکار ببرید.
تا این مرحله به سراغ شبکه رفتهاید و سرویسهای غیرضروری را حذف کردهاید؛ اکنون فایلهای پیکربندیتان را restart کنید (حال shutdown کنید، سپس با root وارد سیستم شوید و سپس با دستور init 3 وارد مود ۳ شوید یا Restart کنید.)؛ اکنون شما یاد گرفتهاید که پروتکلها چگونه کار میکنند، به چه فایلهایی دسترسی دارند، و از کنار کدام حفرههای امنیتی، به سلامت، گذشتهاند؛ به عنوان مثال اگر افرادی دارید که فقط از ویندوز برای اشتراک درایوها استفاده میکنند، میتوانید آنها را در گروهی قرار دهید که امکان سرویس telnet و ftp را نداشته باشند (برای مثال).
اضافهکردن کاربر جدید هرگز نباید آنطور که به نظر میآید راحت باشد، مگر اینکه شما به فرد مورد نظر اعتماد کامل داشته باشید؛ به عنوان مثال، یک گروه ‘smb’ روی سیستمام برای کاربران سمبا دارم، و این کاربران به سرویسهای telnet و ftp دسترسی ندارند. بنابراین هنگامیکه با افرادی خارج از مجموعه شخصی خودتان کار میکنید، طبق برنامهای که طرحریزی کردهاید دسترسیها، سرویسها و محدودیتهای این گروهها را تعیین نمایید.
گذشته از اینها، شاید بزرگترین مزیت لینوکس نسبت به سایر سیتسمعاملها این باشد که در ۹۹% اوقات، شما میتوانید کد منبع را داشته باشید. سؤالی که من در اینجا از شما میپرسم این است که اگر کد منبع برنامهای را فاش کنید، آیا منطقی به نظر میرسد که حفرههایی امنیتی (کلک) برای دسترسیهای شخصی خود در این کد باز داشته باشید؟ من که اینطور فکر نمیکنم…
به هرحال آگاهکردن افراد و اینکه چه کاری بهتر است انجام دهند و چه کاری انجام ندهند، میتواند کمک زیادی در این زمینه بکند و ضمناً افراد احساس رضایت نیز نمایند.
مقایسه امنیت در ویندوز و لینوکس
امنیت نرم افزاری به طور کلی یک مفهوم انتزاعی است که به پارامترهای فکری هر شخص وابسته است. چون درجه آسیب پذیری امنیتی، از خط به خط کدهای برنامه نویسی به وجود می آید. هر حوزه امنیتی از درجه حساسیت خاصی برخوردار است که ممکن است برای کاربران یک پایه فوق العاده مهم باشد یا بر عکس. در نتیجه تعابیر بسیار زیادی برای امنیت وجود دارد. مخصوصا اگر بخواهید درباره امنیت برنامه کامل و پیچیده ای مانند سیستم عامل ها و مثلا ویندوز و لینوکس صحبت کنید.
پارامترهای عینی متعددی برای درجه بندی امنیت وجود دارد که می توان از آن طریق باگ های برطرف شده یک مجموعه نرم افزاری خاص را محاسبه کرد. هنگامی که ویندوز و لینوکس با هم مقایسه می شوند، نقطه ضعف های امنیتی دیگری ظاهر می شوند که در این مقایسه دخیل هستند. اخیرا موسسه CERT گزارشی از اسیب پذیری های استاندارد این دو سیستم عامل را منتشر نمود که طی آن ۲۵۰ حفره امنیتی حساس برای ویندوز گزارش شده کخ ۳۹ حوزه آن در لیست خطرناک ترین نقاط ضعف امنیتی قرار دارند و برای لینوکس ردهت نیز ۴۶ حفره امنیتی گزارش شده است که سه حفره آن در لیست آسیب پذیری های امنیتی بسیار خطرناک قرار دارند. هزاران گزارش از مقایسه امنیتی میان لینوکس و ویندوز وجود دارد. اما مبنای این تحقیق CERT گزارش هایی بوده که توسط کاربران موسسات دولتی ارائه شده اند و در ان حفره های امنیتی خطرناک مشابهی گزارش شده است. رلایل قانع کننده ای برای ان تفاوت امنیتی میان دو سیستم عامل وجود دارد. به عنوان مثال مدل توسعه اپن سورس برنامه های لینوکس، امکان گزارش . شناسایی باگ های را در فاصله زمانی زودتری امکان پذیر می کند. این مزیتی است که در ویندوز از آن بی بهره است. دیگر پارامترها نامطلوب برای ویندوز، اعتماد بسیاری از کرنل برنامه های کاربردی ویندوز به (RPC )Remote Procedure ،متد توسعه جامعه کامپیوترهای خانواده اینتل،است. نتیجه این رویه،ضعف قوانین دیواره های آتش در مقایسه با سیستم عامل هایی مانند لینوکس است که در سطح بسیار کمتری از RPC استفاده می کنند. میان این دو سیستم عامل، تفاوت های امنیتی دیگر نیز وجود دارد که برای کاربران پایانه ای این سیستم عامل ها بروز خواهد کرد و در حوزه آسیب پذیری های مدیریتی سیستم گنجانده نمی شوند . برای مثال ویندوزها قطعا زمینه مساعدتری برای شیوع ویروس ها در سمت کاربران پایانه ای داراست که ایمنی سیستم به خود کاربر و استفاده از آنتی ویروس ها واگذار شده است. اخیرا ویندوز شاهد ربودن اطلاعات سیستم ها توسط ابزارهایی به نام Spyware یا جاسوس افزار بود که می توانند به صورت محرمانه و پنهانی اطلاعات شخصی شما را در سطح اینترنت پخش کنند که در وبگردی، از روی خطا یا اختیار آن ها را بر روی سیستم فعال می کنید. مایکروسافت جدیدا برای مقابله با این پدیده یک شرکت ضد ویروس و ضد جاسوس افزار را خریداری کرده است. امکان دارد که بتوان توسط مدیر سیستم یا کاربران ارشد، ویندوز لینوکس را به درستی مدیریت کرد. اما بسیاری از برنامه های کاربردی دیگر ویندوز با این سیستم یکپارچه نیستند و نیاز است توسط کاربران، با مجوزدهی صحیح مدیر سیستم، اجرا شوند. اما برنامه های کاربردی لینوکس غالبا نیازمندی های امنیتی را رعایت کرده و در نتیجه کمتر می توانند مورد سوء استفاده قرار گیرند. ویندوز تنها از طرف توسعه دهنده خود دچار مشکل است که دوست دارد یک سیستم ساده را خلق کند که برای استفاده کننده بسیار آسان باشد. اما این سایت با هزینه بسیار زیادی از ناحیه امنیت سیستم همراه است. این امتیاز حتی موجب سست شدن امنیت سیستم نسبت به نسخه های قدیمی تر می شود، ضعفی که لینوکس هنوز با آن مواجه نشده است. لینوکس نیز دارای ضعف های امنیتی است.
عموما سازندگان خودشان سخت افزار یا درایوهای مخصوص خود را برای سازگاری با ویندوز توسعه می دهند. اما در جامعه لینوکس غالبا از مهندسی معکوس برای ساخت این محصولات استفاده می شود. در سیستم عامل های اپن سورس، گاهی قدم اول همین مهندسی معکوس، غیرقابل پیش بینی خواهد بود. در برخی موارد، سازگاری یک سخت افزار با لینوکس، به کندی صورت می پذیرد که نسبت به ویندوز، شاید ماه ها و شاید تا دو سال به طول بینجامد. خوشبختانه با پشتیبانی شرکت هایی مانند IBM و Novell از استانداردهای اپن سورس، برخی از مشکلات پیچیده حل شده و پروسه سازگاری با لینوکس ساده تر شده است. فارغ از محیط های گرافیکی، رابط خط فرمان لینوکس برای بسیاری از کاربران سخت و پیچیده است و آنان درک درستی از آن ندارند. همین امر موجب می شود مدیران سیستم ها، از به کار گرفتن ابزارو مفاهیم پیچیده برای برقرای امنیت در سیستم اجتناب کنند. لینوکس اصولا دارای قابلیت های سیستم عاملی یک شبکه است و در نصب پیش فرض، بسیاری از برنامه های کاربردی شبکه فعال نیست. این موضوع می تواند آسیب پذیری های ناشناخته ای را به وجود آوردکه هر یک از آن ها تهدیدی امنیتی برای سیستم عامل محسوب شوند. خوشبختانه این موارد و بسیاری از نقاط ضعف دیگر لینوکس، با به کارگیری یک لایه سخت گیرانه امنیتی و ابزار ساده خط فرمان برای آسان کردن کار مدیر سیستم بهبود یافته است. یکی دیگر از امتیازات لینوکس، وجود تعداد بی شماری ابزار متنوع مبتنی بر لینوکس برای فراهم کردن امنیت در سیستم (Nessus ) امکان پویش شبکه، حفره های موجود بر روی سیستم راه دور، باگ های نرم افزاری اجرا شده بر روی شبکه و دیگر ابزار نصب شده موجود در سیستم را فراهم می کند. Nessus در سیستم هایی که به تازگی نصب شده اند، می تواند به کار گرفته شود. علاوه بر این قابلیت گزارشگیری از یک سیستم سرور را در یک دوره مشخص دارد. Nmap ابزار دیگری برای اسکن شبکه است که نسبت به Nessus کاربردهای کمتری دارد. این ابزار می تواند به صورت پیش فرض همراه لینوکس نصب شود. گذشته از سودمندی این ابزار برای هر کارشناس IT ، هنوز ابزاری به راحتی آن در پیکربندی لینوکس ارائه نشده است. متخصصان امنیتی در هنگام اتصال به یک شبکه اینترنت از فایروال نیز استفاده می کنند. فایروال ها به صورت بسته های افزودنی به سیستم سرور برای تامین امنیت بیشتر به کار گرفته می شوند. ابزاری مانند، ACID می توانند اطلاعات را آنالیز کرده و مطابق این اطلاعات مشخصه های یک را تشخیص دهد. ACID امکان گزارش از طریق ایمیل را دارد و از طریق یک رابط گرافیکی، تمامی اطلاعات یک بسته فعال شبکه را نمایش می دهد. استفاده از این ابزار برای هر شرکتی که در حوزه امنیت IT فعالیت می کند، توصیه می شود. ACID ممکن است گزارش های متناقض و ناصحیح بسیاری برای مدیر سیستم تولید کند و از این رو نیاز به تنظیم و پیکربندی همیشگی آن وجود دارد. فارغ از سیستم عاملی که استفاده می کنیدف عدم به کارگیری ابزار مناسب، می تواند یکپارچگی امنیتی کار شما را به خطر بیندازد. عدم پشتیبان گیری کافی ضعیف بودن رمزهای عبور، اشتراک گذاری حساب های کاربری و پروژه های امنیتی که توسط تیم بازرسی نادیده گرفته شوند، و بازبینی و نظارت ضعیف، از دیگر موارد نقض امنیت سیستم هستند.
نکات امنیتی در لینوکس (قسمت اول)
هدف این مرجع سریع، فراهم آوردن زمینههایی برای بهبود امنیت سیستم شما میباشد. اطلاعات بیشتر در مورد اطلاعات امنیتی، افزایش آگاهی و روشهایی که بتوان امنیت سیستم را بهتر نمود، از جمله مواردی است که در این مستند به آن پرداخته شده است. لازم به ذکر است که این مقاله، جایگزینی برای مستندات انبوهی که در زمینه
امنیت لینوکس وجود دارد، نخواهد بود.
در دنیای همواره در تغییر ارتباطات، اتصالات اینترنتی کمهزینه و تولید پرسرعت نرمافزار، مقوله امنیت بیش از پیش، اهمیت پیدا نموده است و در حال حاضر، یکی از نیازهای اساسی است، زیرا محاسبات عمومی، ذاتاً از امنیت بالایی برخوردار نیستند. هنگامیکه دادههای شما در اینترنت از نقطه A به نقطه B، میرود، در بین راه ممکن است از چندین نقطه دیگر عبور کند که این عمل به دیگر کاربران امکان قطع کردن مسیر و حتی تغییر دادههای شما میدهد. حتی کاربران دیگری نیز ممکن است از روی بدخواهی و عناد، دادههای سیستمتان را علیرغم میل شما، بدون اطلاعتان، تغییر دهند. همچنین دسترسی بدون اجازه به سیستم شما، ممکن است توسط مهاجمان، که آنها را با نام ‘cracker’-ها میشناسیم، صورت گیرد. این افراد با استفاده از اطلاعات بعدی، جعل هویت نموده، اطلاعات شما را دزدیده و حتی ممکن است به شما امکان دسترسی به اطلاعات سیستم خودتان را ندهند.
سیستم خود را، با نصب نگارشهای فعلی هر نرمافزار، به روز نگه دارید و همه اعلانهای امنیتی را جدی بگیرید. اگر بیشتر از یک نفر به سیستم/یا سیستمهای شما وارد شود، باید یک “خط مشی امنیتی” برای تعیین سطح امنیتی سیستم و میزان رسیدگی و نظارت روی آن، مد نظر داشته باشید.
کنترل دسترسی به فایلها و ویژگیهای آنها
نظارت بر دسترسی به فایلهای سیستم برای نگهداری تمامیت گروهها و دستهها مشکل است.
– سیستمتان را جهت شناسایی و تشخیص استفادههای غیر ضروری و بدون اجازه و امکانات دستورات setuid یا setgid بررسی کنید. برنامههای “Set-user-ID�? به عنوان کاربر ریشه، بدون توجه به اینکه چه کسی آنها را اجرا میکند، اجرا میشوند و یکی از عوامل عمده سرریزهای بافر هستند. بسیاری از برنامهها از نوع setuid و setgid هستند تا یک کاربر معمولی قادر به انجام عملیات باشد؛ در غیر این صورت به کاربر ریشه نیاز خواهد بود و اگر کاربرانتان نیازی به داشتن این دسترسیها نداشته باشند، این برنامهها ممکن است حذف شوند. همه برنامههای setuid و getuid را روی سیستم میزبان پیدا نموده و همه دسترسیهای این برنامهها را با دستور chmod تغییر داده یا حذف کنید:
root# find / -type f –perm +6000 –ls
59520 30 -rwsr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
59560 16 -r-sr-sr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
dave$ sudo /usr/sbin/lpc
root# chmod -s /usr/bin/chage /usr/bin/lpq
root# ls -l /usr/bin/lpq /usr/bin/chage
-rwxr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
-r-xr-xr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
– فایلهای قابل نوشتنی عمومی، به راحتی تغییر داده شده یا حذف میشوند. همه این فایلها را در سیستم خود پیدا کنید:
root# find / -perm -2 ! -type l -ls
در حالت معمول، فایلهای زیادی، شامل فایلهای شاخه /dev و /tmp، میتوانند به طور عمومی قابل نوشتن باشند. کلیه فایلهایی که مالکی ندارند و به گروهی متعلق نیستند را پیدا نموده و شناسایی کنید. این فایلها میتوانند نشانه دسترسی مهاجمی به سیستم شما باشند.
به نکات زیر توجه کنید