نمایان
www.3manage.com
لایسنس آنتی ویروس

امنیت در لینوکس

امنیت در لینوکس

لینوکس: امنیت، امنیت، امنیت

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

لینوکس از ابتدا برای محیط‌های شبکه‌ای و چند کاربره طراحی شده است و همین باعث رعایت مسایل امنیتی از ابتدا در آن شده است، درحالی که ویندوز اینگونه نبوده و درحال حاضر نیز از نظر امنیتی دارای نقاط ضعف فراوانی است. مثلاً یک برنامه‌ی مخرب با استفاده از همین ضعف‌های امنیتی می‌تواند کل سیستم‌عامل را نابود کند، ولی در صورتی که مورد مشابهی در لینوکس وجود داشته باشد، حداکثر به دایرکتوری خانگی کاربر اجرا کننده آسیب خواهد رسید، نه کل سیستم‌عامل.

اینطور نیست که لینوکس فاقد هرگونه اشکال امنیتی باشد، خیر! ولی باز بودن کد منبع آن باعث می‌شود تا بسیاری از اشکالات امنیتی پیش از ایجاد خسارت و در مراحل توسعه و برنامه‌نویسی برنامه برملا شده و رفع شوند. در صورتی که اشکالی نیز در برنامه‌های منتشر شده یافت شود، بدلیل موجود بودن کد منبع سریعاً برطرف می‌گردد. در صورتی که در سیستم‌عامل ویندوز شما باید منتظر مایکروسافت بمانید و بمانید و بمانید. سیستم‌عامل ویندوز دارای اشکالات امنیتی بسیاری است که به راحتی هم کشف نمی‌شوند و هنگامی کشف می‌شوند که خسارات جبران ناپذیری در اثر حمله از طریق آن ضعف‌های امنیتی رخ دهد که امثال آنرا شاهد هستیم.

می‌توان ادعا کرد که تقریباً هیچ ویروسی برای لینوکس وجود ندارد و این درحالی است که سالیانه بیش از ۱۰۰۰ ویروس و کرم مختلف برای سیستم‌عامل ویندوز ایجاد می‌شود. این بخاطر عدم گسترده بودن لینوکس نیست، (حدود ۷۰ درصد از سایت‌های وب در جهان بر روی سیستم‌عامل لینوکس و سرویس‌دهنده‌ی وب آپاچی درحال اجرا هستند) بلکه بدلیل وجود حفره‌های امنیتی متعدد ویندوز و سیاست انحصارگرایی مایکروسافت است. یعنی چه؟ مایکروسافت طوری رفتار و سیاست‌گذاری کرده است که مشتریان خود را تنها به محصولات خودش عادت دهد. بسیاری از کاربران ویندوز از اینترنت اکسپلورر و آتلوک برای مرور وب و پست الکترونیک استفاده می‌کنند. من به عنوان یک ویروس‌نویس، می‌دانم که اگر ویروسی را برای کاربران ویندوز بنویسم، بر روی کامپیوترهای ۹۰ درصد آنها اثر خواهد کرد. چون اکثراً از IE و Outlook استفاده می‌کنند. ولی در لینوکس چطور؟ در لینوکس شما طیف وسیعی از انتخاب و عدم اجبار دارید. من از مرورگر موزیلا استفاده می‌کنم. دوستی دارم که Konqueror را ترجیح می‌دهد. دیگری از Opera استفاده می‌کند. من از Kmail استفاده می‌کنم. دوستم از Evolution، دیگری از Pine و بعدی از Mutt و برادرم هم از Mozilla Mail. من فقط می‌توانم برای یکی از اینها ویروس بنویسم چون روی بقیه کار نخواهد کرد و عملاً میزان اثر آن اندک خواهد بود. ضمناً هیچیک از ویروس‌هایی که برای ویندوز نوشته شده‌اند، بر روی لینوکس کار نمی‌کنند.

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

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

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

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

بطور کلی سه سطح دسترسی برای هر فایل یا دایرکتوری تعریف می‌شود که عبارتست از:

۱ – (Read permission (r یا مجوز خواندن: مجوز خواندن محتوای یک فایل را به یک کاربر می‌دهد و برای دایرکتوریها امکان لیست کردن محتویات داخل دایرکتوری را برای کاربر فراهم می‌سازد.

۲ – (Write permission (wیا مجوز ایجاد تغییرات: امکان ایجاد تغییرات در محتوای فایلها را به کاربر اهدا می‌کند. برای دایرکتوریها این گرینه امکان ایجاد فایل جدید در دایرکتوری یا حذف فایلهای موجود در آن را برای کاربر مهیا می‌سازد حتی اگر این کاربر یا گروه کاربری مالک یا ایجادکننده‌ی اصلی فایل یا دایرکتوری نباشد.

۳ –( eXecute permission (x یا مجوز اجرا: این مجوز در مورد فایلهای اجرایی امکان اجرای فایل را به یک کاربر می‌دهد و در مورد یک دایرکتوری این گزینه امکان ورود به داخل دایرکتوری را به کاربر یا گروه خاص می‌دهد. توجه داشته باشید که این گزینه را با گزینه Read‌ اشتباه نگیرید، چون صرفاً با داشتن مجوز execute‌ و بدون داشتن مجوز read کاربر یا گروه می‌تواند وارد دایرکتوری خاصی شوند ولی امکان خواندن محتویات داخلی آن دایرکتوری بهیچ عنوان برایشان فراهم نخواهد بود.

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

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

ذکر این نکته‌ی بسیار مهم خالی از لطف نیست که حفظ و حراست از اطلاعات حیاتی سیستم مثل کلمه‌ی عبور کاربر ریشه یکی از مهمترین جنبه‌های امنیت سیستمهای مبتنی بر یونیکس می‌باشد.

بیایید تا با ذکر یک مثال در مورد یک فایل و یک دایرکتوری به بررسی موضوع بپردازیم:

در این مثال فرض شده که در مسیر جاری یک فایل به نام a_file و یک دایرکتوری به نام a_directory وجود دارد و با اجرای فرمان ls –l‌ در خط فرمان این اطلاعات بدست آمده است:

$ ls -l

total 1

-rw-r—– 1 mehrdad users 0 Jul 8 14:11 a_file

drwxr-xr– 2 mohsen users 1024 Jul 8 14:11 a_directory/

نتایج فرمان ls –l‌ را ازچپ به راست بررسی می‌کنیم:

ستون اول فرمانls –l ‌:

۱ – ده کاراکتر اول نشان‌دهنده‌ی نوع فایل و سطوح دسترسی آن است و اولین کاراکتر که در مورد سطر اول ( – ) و در مورد سطر دوم ( d ) می‌باشد، نشان میدهد که مورد موجود در سطر اول یک فایل معمولی و مورد موجود در سطر دوم یک دایرکتوری است.

البته انواع دیگری از فایل وجود دارد که با کاراکتری غیر از ( – ) مشخص می‌گردند و برای مطالعه‌ی بیشتر می‌توانید به مراجع موجود مراجعه کنید. نه کاراکتر بعدی نشان‌دهنده‌ی سطوح دسترسی تعریف شده می‌باشند و به ترتیب هر سه کاراکتر از چپ به راست شامل سطوح دسترسی متعلق به مالک، owner‌، و سطوح دسترسی گروهها، groups‌، و سطوح دسترسی برای سایرین،others،‌ خواهد بود.

به عنوان نمونه سه کاراکتر مربوط به owner‌ و groups‌ و others‌ در مورد یک فایل موجود در مثال بالابصورت زیر تعریف شده است:

برای مالک: owner = (r w-) ، یعنی اینکه امکان خواندن r‌ و نوشتن w‌ و اجراکردنx ‌وجود دارد.

برای گروهها( – -group = (r یعنی اینکه امکان خواندن فایل برای کاربران عضو کلیه گروههای کاربری موجود وجود دارد ولی هیچ کابری در گروههای موجود نمی‌تواند فایل را تغییر داده (یا حذف کند) و یا در صورت اجرایی بودن فایل آنرا اجرا نماید.

برای دیگران: others = ( – – – ) سه کاراکتر dash به این معناست که سایر کاربران یعنی آنهایی که در هیچ گروه کاربری موجود تعریف نشده‌اند هیچیک از امکانات دسترسی موجود را نخواهند داشت. (نکته امنیتی مهم)

ستون دوم در فرمان ls -l‌:

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

ستون سوم در فرمان ls -l‌:

این ستون نمایش‌دهنده‌ی نام مالک فایل و نام گروه مالک آن می‌باشد.

ستون چهارم در فرمان ls -l‌:

این ستون نمایش‌دهنده‌ی اندازه و حجم فایل یا دایرکتوری و تاریخ و ساعت آخرین تغییرات اعمال‌شده بر آن و در نهایت ستون پنجم نتایج فرمان ls -l‌ شامل نام فایل یا دایرکتوری می‌باشد.

 

نکته: بدیهی است که (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، می‌توانند به طور عمومی قابل نوشتن باشند. کلیه فایلهایی که مالکی ندارند و به گروهی متعلق نیستند را پیدا نموده و شناسایی کنید. این فایلها می‌توانند نشانه دسترسی مهاجمی به سیستم شما باشند.

root# find / -nouser -o -nogroup

– با استفاده از دستورات lsattr و chattr، راهبران سیستم، می‌توانند ویژگیهای فایلها و شاخه‌ها را، شامل امکان کنترل حذف و دستکاری، تغییر دهند. این دو دستور، چیزی فراتر از آنچه که chmod دارد، فراهم می‌کنند. استفاده از ویژگی “append-only�? و “immutable�? می‌تواند در ممانعت از حذف فایلهای log، یا جای‌گیری اسبهای تروجان در بالای فایلهای باینری مؤثر باشد. دستور chattr برای اضافه و حذف ویژگیها به کار می‌‌رود و دستور lsattr برای فهرست کردن آنها.

در فایلهای log، تنها بوسیله پیوست کردن به آنها است که می‌توان از آنها محافظت نمود. یکبار که داده‌ای در آن نوشته شود، دیگر پاک نمی‌شود. بنابراین در حالیکه نیاز به تغییراتی برای اسکریپتهای متغیر log شما خواهد بود، این قابلیت محافظهای اضافی دیگری در برابر کراکرهایی که می‌خواهند آنرا پاک کنند، بوجود می‌آورد. هر بار که تغییر کند، آنها باید به حالت تغییرناپذیر (immutable) تغییر وضعیت دهند. فایلهای مناسب برای این اعمال تغییرات /bin/login، /bin/rpm، /etc/shadow می‌باشد و سایرین نیز نباید به طور مداوم آنها را تغییر دهند.

# chattr +i /bin/login

# chattr +a /var/log/messages

# lsattr /bin/login /var/log/messages

—-i— /bin/login

—–a– /var/log/messages

– دلیلی وجود ندارد که کاربران بتوانند برنامه‌های setuid را از فهرست خانگی خود اجرا نمایند. از گزینه nosuid در /etc/fstab برای قسمتهایی که برای افرادی غیر از کاربر ریشه، قابل نوشتن می‌‌باشند، استفاده نمایید. همچنین ممکن است بخواهید از nodev و noexec در پارتیشن home کاربر و var، استفاده کنید، که از اجرای برنامه‌ها و ایجاد دستگاه‌های بلوکی یا کاراکتری، جلوگیری به عمل می‌آورد.

فرهنگ لغات فنی امنیت

– Buffer Overflow: این شرایط هنگامی رخ می‌دهد که کاربر یا پردازه‌ای بخواهد داده‌های بیشتری در بافر ذخیره یک برنامه، در حافظه، جای دهد و سپس بخواهد داده‌های واقعی برنامه را با دستورالعملهایی- که معمولاً توسط کاربر ریشه، پوسته‌ای روی سرور فراهم می‌آورد- بازنویسی نماید.

– Cryptography: علمی وابسته به ریاضیات که با تبدیل داده‌ها و انتقال آن- به گونه‌ای که مفهوم آن پیچیده و مبهم شود- سر و کار دارد. این داده‌های انتقال یافته از تغییرات و تبدیلات ناشناخته و یا استفاده غیر مجاز، مصون می‌مانند.

– Denial of Service: هنگامی رخ می‌دهد که یک فایل یا منبع توسط مهاجمانی مورد هدف قرار گیرد و مانع استفاده آن منبع توسط کاربران مجاز و قانونی‌اش شود. آنها تهدید می‌کنند که داده‌ها را در دسترس عموم قرار خواهند داد.

– IP Spoofing: حمله‌ای که در آن یک host را به host دیگری مبدل می‌کنند. از این حمله به این منظور استفاده می‌شود که مقصد داده‌ها را از یک میزبان به میزبان دیگر، ردیابی نمایند. از اینرو مهاجمان مانع رسیدن داده به مقصد واقعی‌اش می‌شوند. این حملات از نوع one-way است.

– Port Scanning: فرآیندی است که طی آن، پورتهای فعال روی یک سیستم، تعیین می‌گردند. این امکان، عموماً، یکی از عوامل آگاه‌کننده از وجود یک حمله می‌باشد.

 

– Packet Filtering: یکی از روشهای کم کردن ترافیک شبکه است که بین واسطهای فایروال، در سطح شبکه، حرکت می‌کند. سپس داده‌های شبکه طبق اطلاعات موجود در بسته داده‌ها تحلیل می‌شوند و طبق خط مشی امنیتی فایروال، دسترسی داده شده یا سلب می‌‌گردد.

– Proxy Gateway: به اینها مدخلها (دروازه‌ها)ی برنامه‌های کاربردی نیز اطلاق می‌‌شود که از طرف برنامه‌ای دیگر عمل می‌کنند. یک host با یک کارگزار پراکسی نصب شده، هم یک کارخواه (client) است و هم یک کارگزار و به عنوان یک دریچه بین مقصد نهایی و کارخواه عمل می‌کند. کارگزارهای پراکسی، عموماً، کوچک هستند، برنامه‌های نوشته‌شده‌ی تک-منظوره دقیقی‌اند که فقط خدمات مشخصی را از آن عبور می‌دهند. این قابلیت، معمولاً، با packet filter-ها ترکیب می‌شود.

– Set User-ID (setuid)/Set Group-ID (setgid): فایلهایی که هر کسی، خواه مالک آنها، خواه گروه‌های مربوطه، می‌تواند آنها را اجرا نماید. اینها فایلهایی هستند که غالبا توسط مهاجمین، مورد حمله قرار می‌گیرند. زیرا از این طریق می‌توانند به امتیازات کاربر ریشه دسترسی پیدا کنند.

– Trojan Horse: برنامه‌ای که خود را به جای یک برنامه بی‌خطر، جا می‌زند؛ در حالیکه واقعاً اینطور نیست. یک برنامه ممکن است توسط یک برنامه‌نویس بداندیش که ظاهراً، قصد انجام کار مفیدی دارد، با توابع مخفی آسیب‌رسان آلوده شود و از امتیازات کاربری برای اجرای آن بهره‌برداری کند.

– Vulnerebility: شرایطی که قابلیت به مخاطره انداختن امنیت سیستم را دارد. این شرایط مستقل از کامپیوتر، سطح ارتباط شبکه و سرعت پردازش رخ می‌دهد.

امنیت هسته

گزینه‌های زیادی برای پیکربندی هسته، به منظور بهبود امنیت سیستم، بوسیله شبه فایل سیستم /proc موجود می‌باشد. معدود فایلهایی در /proc/sys وجود دارند که به طور مستقیم با امنیت سیستم در ارتباطند. اگر شامل a 1 باشد، فعال و اگر a 0، غیر فعال خواهد بود. بسیاری از گزینه‌ها در /proc/sys/net/ipv4 در دسترس می‌باشند.

– icmp_echo_ignore_all: تمامی درخواستهای ICMP ECHO را نادیده می‌گیرد. فعال کردن این گزینه، مانع از پاسخگویی host، به درخواستهای ping خواهد شد.

– icmp_echo_ignore_broadcasts: درخواستهای ICMP echo را بوسیله یک آدرس مقصد broadcast/multicast نادیده می‌گیرد. شبکه شما ممکن است به عنوان وسیله‌ای برای ممانعت از حملات فراوان بسته‌های سرویس به دیگر میزبانها استفاده شود.

– ip_forward: این گزینه، IP بسته‌های ارسالی را بین واسطها، فعال یا غیر فعال می‌نماید. مقدار پیش‌فرض، به این بستگی دارد که یا کرنل یا host یا router، پیکربندی شوند.

– ip_masq_debug: اشکال‌زدایی تغییر و جعل شدن IP را فعال یا غیر فعال می‌کند.

– tcp_syncookies: از حملات SYN جلوگیری می‌کند. هنگامی که صف پس‌افت (backlog) SYN از سرریزهای یک سوکت رخ می‌دهد، syncookie-ها را می‌فرستد.

– rp_filter: تعیین می‌کند که آیا تایید آدرس منبع فعال است یا خیر. این گزینه را برای همه مسیریابها فعال کنید تا از حملات IP spoofing، علیه شبکه داخلی، جلوگیری شود.

– secure_redirects: این گزینه ICMP را جهت هدایت پیغامهایی که فقط برای مدخلهای فهرست شده در فهرست مدخل پیش‌فرض وجود دارد، بپذیرید.

– log_martians: بسته‌های با آدرسهای غیرممکن را به log هسته، گزارش می‌دهد.

– accept_source_route: تعیین می‌کند که آیا بسته‌های مسیر منبع ،پذیرفته یا رد شده‌اند. این ویژگی باید غیر فعال باشد، مگر اینکه دلایل خاصی فعال‌سازی آنرا ایجاب کند.

فایل /etc/sysctl.conf در لینوکس ردهت، به طور پیشفرض، شامل تنظیمات کمی می‌باشد و هنگام راه‌اندازی و آغاز به کار سیستم، پردازش می‌شود. برنامه /sbin/sysctl می‌تواند برای کنترل این پارامترها به کار رود. همچنین می‌توان مقادیر آنها را با استفاده از /bin/echo پیکربندی نمود. به عنوان مثال، برای غیرفعال کردن IP ارسالی، به عنوان کاربر ریشه، دستور زیر را اجرا نمایید:

echo “۰�? > /proc/sys/net/ipv4/ip_forward

این دستور، باید در فایل راه‌انداز سیستم یا /etc/sysct1.conf در ردهت، نوشته شود تا بعد از هر راه‌اندازی، رخ دهد. اطلاعات بیشتر در فایل proc.txt در شاخه Documentation هسته موجود می‌باشد.

نکات امنیتی عمومی:

– از AutoRPM در ردهت و apt-get در دبیان می‌توان به منظور دانلود و نصب بسته‌های دیگر روی سیستم استفاده نمود. هنگامی‌که از سرورهای تولید به‌روزرسانی استفاده می‌کنید، دقتهای لازمه را به عمل آورید.

– تغییر و تبدیلIP، یک جعبه لینوکسی، با چندین واسط را قادر می‌سازد تا به عنوان یک مدخل (دروازه) در شبکه‌های راه دور، برای host-های متصل به جعبه لینوکسی روی واسط شبکه داخلی، عمل نماید.

– بسته nmap را برای تعیین پتانسیل کانالهای ارتباطی، نصب کنید. nmap می‌تواند نگارش سیستم‌عامل راه دور را مشخص کند، پویشهای نهانی را با دستکاری ICMP، TCP و UDP انجام دهد و حتی قابلیت تعیین نام کاربری راه دوری را که در حال اجرای سرویسی می‌باشد، دارد. با دستوری مشابه زیر، آغاز کنید:

# nmap 192.168.1.1

– محافظ رمز عبور LILO برای کارگزارهای محیطهای عمومی می‌باشد تا هنگامیکه LILO، پارامترهای هسته خط فرمان را در زمان بالا آمدن سیستم، ارسال می‌کند، اجازه نیاز باشد. آرگومانهای password و restricted را به /etc/lilo.conf، اضافه نموده، سپس با اطمینان، /sbin/lilo را مجدداً اجرا کنید:

image = /boot/vmlinuz-2.2.17

label = Linux

read-only

restricted

password = your-password

– وصله هسته OpenWall، مجموعه کاربردی و مفیدی از بهبودهای امنیتی هسته است که کمک می‌کند تا از سرریزهای بافر جلوگیری به عمل آید، اطلاعات موجود در /proc را برای یک کاربر معمولی، محدود می‌کند و سایر تغییرات. برای این کار نیاز به کامپایل کرنل دارید.

– از درستی ساعت سیستم، اطمینان حاصل کنید. زمانهای نوشته شده در فایلهای log، باید درست باشد تا رخدادهای امنیتی، بتوانند با سیستمهای راه دور، مرتبط شوند. ضبط و بایگانیهای نادرست، باعث می‌شود که ساختن یک خط زمانی (خط عمر) غیر ممکن شود. در ایستگاه‌های کاری، کافی است که یک گزینه ورودی corntab، اضافه کنیم:

۰-۵۹/۳۰ * * * * root /usr/sbin/ntpdate -su time.timehost.com

– ابزار سخت کردن لینوکس Bastille را نصب و اجرا کنید. Bastille یک دنباله از اسکریپتهای پوسته است که بسیاری از آسیبهایی را که در عملیات نصب لینوکس به طور پیش‌فرض، معمول و متداول هستند، حذف می‌کند. قابلیتها و ویژگیهای آن، شامل فیلتر کردن بسته‌های اولیه، غیرفعال کردن سرویسهای غیرضروری شبکه‌ای، نظارت بر دسترسی به فایلها و غیره می‌باشد.

– دستور sudo را به گونه‌ای پیکربندی نمایید که به جای استفاده از su، دستورهای مجاز و متداول از طرف یک کاربر معمولی نیز اجرا شوند. راهبر رمز عبور خود را برای اجرای دستورات خاص، دارد. فایل /etc/sudoers کاربرانی را کنترل می‌کند که برنامه‌هایی را اجرا می‌نمایند. برای اینکه به Dave، امکان دستکاری در چاپگر را روی magneto بدهیم باید:

Cmnd_Alias LPCMDS = /usr/sbin/lpc, /usr/bin/lprm dave magneto = LPCMDS

Dave دستور sudo را با فرمان تاییدشده، اجرا نموده و رمز عبور خود را با اعلانی که می‌گیرد، وارد می‌کند:

dave$ sudo /usr/sbin/lpc

Password: <PASSWORD>

lpc>

– رمز عبور مناسبی برای خود انتخاب کنید. شناسه‌های بلااستفاده را نیز، با استفاده از /usr/bin/passwd -l غیر فعال کنید. اگر توزیع شما این امکان را می‌دهد، در حین نصب، از رمز عبور MD5 استفاده کنید.

– فیلتر کردن بسته‌ها صرفاً، منحصر به firewall نیست. با استفاده از ipchains، می‌توانید محافظتهای زیادی از هر سیستم لینوکسی، در برابر تهدیدهای بیرونی (خارجی)، فراهم آورید. برای بلوکه کردن دسترسی به سرویس خاصی، حین برقراری ارتباطات بیرونی به شبکه محلی شما، می‌توانید دستور زیر را امتحان کنید:

# ipchains -I input -p TCP -s 192.168.1.11 telnet -j DENY -l

اگر قرار باشد ارتباطی خارجی به ۱۹۲٫۱۶۸٫۱٫۱۱ برقرار شود، این دستور، مانع دسترسی به پورت telnet، روی سیستم شما می‌‌شود.

شناسایی حملات شبکه‌ای

دستگاه‌ها و ابزارهای شناسایی حملات در هر شبکه‌ای ضروری و مهم می‌باشند. اینترنت به طور دائم، در حال توسعه یافتن است ؛ از اینرو آسیب‌پذیریهای و بهره‌برداریهای جدید، نیز هر روزه پیدا می‌شوند. این ابزارها زمینه شناسایی و حضور یک مهاجم را فراهم آورده و آمادگی مقابله در برابر این حملات را به کاربران می‌دهد.

یکی از ابزار شناسایی حملات شبکه‌ای، با نام snort، تحلیلهای ترافیک بلادرنگ (real-time) را انجام داده و به دنبال رخدادهای تغییرشکل دهنده که قابلیت حملات شبکه‌ای را دارند، می‌باشد.

بر مبنای محتویات ترافیک شبکه، چه در سطح IP و چه در برنامه‌های کاربردی، اعلانی (اخطاری) تولید خواهد شد. به راحتی پیکربندی شده و از روشهای مرسوم، برای قواعد تولید و توسعه استفاده می‌کند، و زمان کمی نیز صرف نصب آن می‌شود. Snort، در حال حاضر قابلیت این را دارد که حدود ۱۱۰۰ نمونه از آسیب‌پذیریهای بالقوه را شناسایی کند. ویژگیهایی که این ابزار دارد به شرح زیر می‌باشد:

شناسایی و اعلان بر مبنای الگوهای تطبیق کننده برای تهدیدهای شامل سرریز بافر، پویشهای مخفی پورت، حملات CGI، رسیدگیهای SMB و پرس و جوهای NetBIOS، NMAP و دیگر پویشگرهای پورت، آسیب‌پذیریهای سیستمی نهانی و معروف، DDoS Client-ها و غیره.

می‌‌تواند در یک ایستگاه کاری موجود، برای نظارت روی یک ارتباط DSL خانگی، و یا روی یک سرور اختصاصی برای نظارت روی یک وب‌سایت حقوقی، به کار گرفته شود.

نتیجه‌گیری کلی

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

نکات امنیتی در لینوکس (قسمت آخر)

چک کردن درستی بسته‌های نرم‌افزاری

دستور md5sum برای محاسبه یک finger-print، ۱۲۸ بیتی استفاده می‌شود که شدیداً به محتویات فایلی که به کار گرفته شده، بستگی دارد. این دستور همچنین برای مقایسه در برابر مجموع از قبل تولیدشده‌ای به کار می‌رود تا تعیین کند که آیا فایل تغییری نموده یا خیر. معمولاً برای اطمینان از تمامیت و درستی بسته‌های به‌روز شده، نیز که توسط یه فروشنده خاص، توزیع می‌گردد، استفاده می‌شود.

# md5sum package-name

995d4f40cda13eacd2beaf35c1c4d5c2 package-name

رشته اعداد، برای مقایسه در مقابل MD5 checksum، منتشر شده توسط تولیدکننده بسته، می‌تواند به کار رود. این رشته تمامیت بسته نرم‌افزاری را قبل از نصب آن، با بلاتغییر نمودن آن، تضمین می‌کند.

نصب و پیکربندی OpenSSH

OpenSSH جایگزینی برای سرویسهای telnet و ftp است که استراق سمع و ربودن ارتباط را نیز حذف می‌نماید و همه ارتباطات بین میزبانها را رمزگذاری می‌کند.

· بسته نرم‌افزاری OpenSSH و OpenSSL را نصب کنید:

 

openssh-.rpm

openssh-.rpm

openssh-.rpm

openssh-.rpm

· زوج کلیدهای خصوصی و عمومی را تولید کنید:

OpenSSH از رمزنگاری کلید عمومی برای فراهم آوردن اختیارات امنیتی استفاده می‌کند. در ابتدا کلید عمومی، که با سیستمهای راه دور به اشتراک گذارده می‌شود، و کلید خصوصی که فقط برای سیستم محلی حفظ می‌شود، به منظور پیکربندی OpenSSH تولید می‌شود.

orion$ ssh-keygen

Generating RSA keys: …ooooooO….ooooooO

Key generation complete.

Enter file in which to save the key (/home/dave/.ssh/identity):

Created directory ‘/home/dave/.ssh’.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/dave/.ssh/identity.

Your public key has been saved in /home/dave/.ssh/identity.pub.

The key fingerprint is:

ac:42:11:c8:0d:b6:7e:b4:06:6a:a3:a7:e8:2c:b0:12 dave@orion

· کلید عمومی را برای میزبان راه دور کپی نمایید:

host2$ mkdir -m 700 ~dave/.ssh

host2$ cp /mnt/floppy/identity.pub ~dave/.ssh/authorized_keys

· به سیستم میزبان راه دور وارد شوید:

کلاینت SSH (/usr/bin/ssh)، جایگزین drop-in-ی برای rlogin و rsh می‌باشد و می‌توان از آن برای ورود ایمن به یک میزبان راه دور، استفاده نمود:

orion$ ssh host2

Enter passphrase for RSA key ‘dave@orion’:

Last login: Sat Aug 15 17:13:01 2000 from orion

No mail.

host2$

· فایلها را در میزبان راه دور، کپی کنید:

بسته نرم‌افزاری OpenSSH، همچنین شامل scp، است که جایگزینی امن و بهبود یافته برای rcp می‌باشد. این قابلیت به شما امکان کپی ایمن فایلها را در سرتاسر شبکه، می‌دهد.

 

orion$ scp /tmp/file.tar.gz host2:/tmp

Enter passphrase for RSA key ‘dave@orion:

file.tar.gz 100% |***************************| 98304 00:00

همچنین با SSH، امکان کپسوله کردن پروتکلهای ناامن پیش‌پا‌افتاده مثل IMAP و POP، برای ممانعت از انتقال رمزهای عبور به سرور ایمیل شما، وجود دارد. به علاوه، ابزار کمکی انتقال فایل rsync، می‌تواند از SSH، به منظور همزمان کردن ایمن (سنکرون) دو میزبان یا پشتیبان گرفتن از داده‌ها در یک log-سرور استفاده کند. SSH، حتی می‌تواند برای ارتباط امن دو زیرشبکه در اینترنت، با ایجاد یک VPN، به کار رود.

امنیت آپاچی

· آپاچی را به منظور پیروی کردن از فقط واسط محلی، محدود کرده و فایل /etc/httpd/conf/httpd.conf را برای خواندن پیکربندی نمایید:

Listen 127.0.0.1:80

· دستورهای زیر را برای غیرفعال کردن دسترسی پیش‌فرض به کلیه فایل سیستم، انجام دهید، مگر اینکه به طور صریح، اختیاری به فردی داده شده باشد. در صورتیکه فایل index.html وجود نداشته باشد و شامل server-side نباشد، این دستور، انتشار ایندکسها را غیر فعال می‌کند. غیرفعال کردن symlink-ها ممکن است روی کارایی سایتهای بزرگ تاثیراتی بگذارد.

Options None

AllowOverride None

Order deny,allow

Deny from all

· دستورات زیر را برای کنترل دسترسی به سرور، از آدرسهای محدود در /etc/httpd/conf/access.conf به منظور خواندن، دنبال کنید:

# Deny all accesses by default

Order deny,allow

# Allow access to local machine

Allow from 127.0.0.1

# Allow access to entire local network

Allow from 192.168.1.

# Allow access to single remote host

Allow from 192.168.5.3

# Deny from everyone else

Deny from all

· دستورات زیر را دنبال کنید تا داشتن اختیارات رمز عبور را به هنگام دسترسی به فهرست معینی در /etc/httpd/conf/access.conf برای افراد، مستلزم کنید:

 

 

Order Deny,Allow

Deny from All

Allow from 192.168.1.11

AuthName “Private Information�?

AuthType Basic

AuthUserFile /etc/httpd/conf/private-users

AuthGroupFile /etc/httpd/conf/private-groups

require group

فایل private-groups را با داشتن قالب زیر ایجاد کنید:

group-name: user1 user2 user…

مدخل رمز عبور را برای کاربران موجود در لیست فوق ایجاد نمایید:

# htpasswd -cm /etc/httpd/conf/private-users user1

New password:

Re-type new password:

Adding password for user user1

حال با اطمینان، آپاچی را دوباره راه‌اندازی نموده و آنرا امتحان کنید. گزینه –c را از htpasswd، بعد از اضافه شدن اولین کاربر، حذف کنید. مطمئن شوید که فایل رمز عبوری که ایجاد کرده‌اید، برای پیشگیری از دانلود فایل، در DocumentRoot واقع نشده است.

پیکربندی TCP Wrapper-ها

به طور مکرر، از سرویسهایی که در /etc/inetd.conf لیست شده‌اند، برای کنترل دسترسیها و نظارت بر آنها استفاده کنید. سرویس in.ftpd، ممکن است با دستور زیر، غیرفعال شده باشد:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

قبل از اینکه دائمون in.telnetd فعال شود، ابتدا، tcpd، تعیین می‌کند که آیا سورس، یک میزبان مجاز می‌باشد یا خیر؟ هر گونه تلاشی برای برقراری ارتباط، به syslogd فرستاده می‌شود. همه سرویسها باید طبق پیش‌فرض که در /etc/hosts.deny است، با دستور زیر، غیر فعال شوند:

ALL: ALL

برای ارسال یک ایمیل به راهبر و اعلان عدم برقراری ارتباط دستور زیر باید اجرا شود:

ALL: ALL: /bin/mail \

-s “%s connection attempt from %c�? admin@mydom.com

سرویسهای تعیین شده در /etc/hosts.allow را با استفاده از نام آنها فعال کنید:

sshd: magneto.mydom.com, juggernaut.mydom.com

in.ftpd: 192.168.1.

انتهای دوره، نشان می‌دهد که به سرتاسر شبکه باید اختیارات مورد نیاز را داد. از tcpdchk برای تغییر فایلهای دسترسی‌تان استفاده کنید. یک مدخل syslog برای تلاشهای ناموفق ایجاد خواهد شد. کنترل دسترسی به ترتیب زیر، انجام می‌شود:

· دسترسی هنگامی داده می‌شود که یک جفت دائمون/کلاینت با یک مدخل در فایل /etc/hosts/allow مطابقت داشته باشد.

· در صورتی که شرط فوق برقرار نباشد، هنگامی که یک جفت دائمون/کلاینت با مدخلی در فایل /etc/hosts.deny تطبیق داشته باشد، دسترسی غیرمجاز اعلام خواهد شد.

· در هر حالت دیگری، دسترسی مجاز اعلام خواهد شد.

با یک کنترل دسترسی که موجود نیست، همچون یک فایل خالی برخورد می‌شود. بنابراین، اگر هیچ فایل کنترلی حاضر نباشد، این کنترل غیرفعال خواهد شد.

مطالب مرتبط

دانلود تحقیق  سیستم عامل های موبایل
دانلود تحقیق تحلیل سیستم واحد توزیع واحد تولیدی
دانلود تحقیق بررسی اثربخشی داستان گویی در فرآیند یادگیری با تکیه بر درس ریاضی پایه هفتم
دانلود تحقیق تجارت الکترونیک در صنعت نفت و گاز‎
دانلود تحقیق پیام رسانی امن خودرو به خودرو و امنیت ارتباطات در VANET
دانلود تحقیق بررسی مسائل امنیتی در مدل های خدمات در رایانش ابری‎
دانلود تحقیق مبانی تجارت الکترونیک‎
دانلود تحقیق داده کاوی و کاربرد آن در تشخیص بیماری ها ( دیابت )

یک نظر بگذارید

دسته‌ها
اين سايت را حمايت مي کنم