آموزش مفاهیم پرکاربرد در امنیت اطلاعات (Information Security)

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

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

امنیت اطلاعات Information Security

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

  1. Confidentiality: محرمانه نگه داشتن دیتا
  2. Integrity : تضمین صحت اطلاعات
  3. Availability: ایجاد سطح دسترسی یا در دسترس بودن اطلاعات

این سه اصل باید حتما به عنوان سه ضلع یک مثلث حول محور Information باشد تا ما بتوانیم اصول نگهداری را رعایت کنیم.

  1. Asset: آن چیز با ارزشی که در شبکه ما وجود دارد و ما باید آن را حفظ کنیم.
  2. Threat: (حمله) چیزی که مورد تهاجم قرار میگیرد، در واقع Asset ما میباشد که توسط Threat مورد تهاجم قرار میگیرد.
  3. Threat agent: شخص یا چیزی که باعث ایجاد شدن یک تهاجم به شبکه ی ما می شود. در این جا Agent به عنوان نماینده می باشد.
  4. Vulnerability: نقاط یا جاهایی که یک شبکه نسبت به آنها آسیب پذیر می باشد. مسلما آن کسی که بخواهد شبکه ما را مورد تهاجم قرار دهد باید آن نقاط راشناسایی کند.

هکر کیست ؟ Hacker

دو تعریف برای اینگونه افراد گفته می شود.

  1. افرادی که باهوش هستند و از تکنیک های پیشرفته برای نفوذ به شبکه استفاده میکنند.
  2. افرادی هستند که قصد نفوذ و تخریب کردن سیستم ها را به صورت غیر مجاز دارند.
  • Script kiddies: افرادی هستند که هکینگ را تازه یاد گرفته اند و با تست کردن ابزار ها سعی میکنند که علوم هکینگ را آموزش ببینند و یاد بگیرند.
  • Spies: افراد و یا دسترسی هایی که هدف آنها به دست آوردن اطلاعات از یک فرد و یا یک سیستم خاص می باشد. (Spy - جاسوس)
  • Employees: کارکنانی که داخل یک مجموعه کار میکنند و اطلاعات آن مجموعه را در دسترس دارند و سعی میکنند که از آن اطلاعات سوء استفاده کنند. اکثر هک هایی که در دنیای امروز اتفاق میفتد توسط افرادی صورت میگیرد که داخل خود شبکه هستند.
  • Cybercriminals: هکر ها و افراد نفوذ گری که تنها به دنبال جمع آوری و به دست آردن منابع مادی می باشند.
  • Cyberterrorists: افرادی که به خاطر مقاصد نظامی و سیاسی شبکه ها را مورد نفوذ قرار می دهند و هدف دیگری را دنبال نمیکنند و در جنگ های سایبری شرکت ها و حکومت ها از این افراد استفاده میکنند که به منافع دلخواه خودشون دسترسی پیدا بکنند.

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

  • Layering: ما میتوانیم برای ایجاد امنیتدر شبکه خود از Layering استفاده کنیم. به این منظور ما برای امن کردن شبکه خود از تجهیزات مختلف در قسمت های مختلف شبکه استفاده میکنیم. به طور مثال اگر من برای ورودی شبکه خودم از یک Firewall استفاده کردم، از یک Firewall دیگر در جای دیگری از شبکه خود استفاده کنم و یا اینکه از یک IPS در یک جای دیگر استفاده کنم. چرا؟ زیرا اگر مثلا کسی توانایی عبور از Firewall را دارد بیاید یه سوئیج وصل شود تا IPS جلوی آن را بگیرد. در واقع امنیت خود را لایه بندی کنم و آن را مختص به یک سیستم خاص نکنم.
  • Limiting: تعریف کردن Permission و یا سطح دسترسی در شبکه می باشد. یعنی برای شبکه ی خود به نوعی سطح دسترسی ایجاد کنیم که افراد نتوانند به همه جا که فکر میکنند دسترسی داشته باشند. و باید به میزان کاری که میخواهند انجام دهند دسترسی داشته باشند.
  • Diversity: در این دسته با توجه به داده های شبکه و Device هایی که در لایه مختلف شبکه قرار میگیرند از Device های مختلف استفاده کنیم. (در واقع این مطلب به تناوب Layering می آید) به طور مثال یعنی ما یک Firewall لایه 7 داشته باشیم و همین طور یک فایروال لایه 3. در واقع تکنیک ها را بین لایه ها نقسیم بندی کنیم. چرا؟ زیرا زمانیکه هکر بخواهد به شبکه نفوذ کند دچار چالش می شود. درست است که این کار هکر را دچار مشکل و سختی میکند اما ممکن است که ما لازم به داشتن Administrator های مختلفی باشیم و یا اینکه با Device های زیادی روبرو شویم.

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

  • Simplicity: این تکنیک میگوید که طراحی شبکه را در داخل شبکه آنقدر برای خودمان سخت نکنیم تا در زمانیکه User میخواهد از محتوای شبکه استفاده کند به مشکل بربخورد. مثلا Password Length را آنقدر بزرگ و پیچیده تعیین کنیم که یوزر معمولی برای استفاده از آن دچار مشکل شود.

نکته: هر چه پارامترهای امنیتی شبکه را بیشتر کنیم Load شبکه نیز بالاتر می رود.

یکسری از حملاتی وجود دارند که شبکه ی ما را تحدید میکنند که این حملات بر مبنای نرم افزار هایی که در شبکه و یا در سرور های ما موجود می باشد انجام میگیرد و یا اینکه Software-Based Attacks هستند. این مواردی که گفته شد در قالب کلمه ای به نام malware مطرح می شود که یک اسم کلی می باشد. دسته ای از malware ها که ابتدایی و شناخته شده می باشد Viruses نام دارد.

  • Viruses: نوع ابتدایی و شناخته شده از malware ها هستند که با زبان ها برنامه نویسی خاصی نوشته میشوند و اهدافی که ویروس ها دنبال میکنند معمولا بر حسب آنچیزی که نویسنده ی آن از آن می خواهد نعیین میگردد و رفتار خاصی را دنبال نمیکنند.
  • Worm: تفاوت عمده ی Worm ها با ویروس ها در کند شدن سیستم ها می باشد که توسط Worm ها اتفاق میفتد. معمولا از دسته ویروس هایی هستند که هدف اصلی که دنبال میکنند کند کردن سیستم ها می باشد.
  • Trojan Horse یا just Trojan: فایل ها یا نرم افزار های سالمی هستند که زمانیکه ما آنرا در سیستم خود نصب میکنیم هیچ اتفاق خاصی نمیفتد اما برنامه نویس کد این نرم افزار ها را باز کرده و یکسری کدهای مورد نظر خودش را که میخواسته در آن جاسازی کرده و بعد از یک بازه ی زمانی که ما آن را در سیستم خود نصب میکنیم شروع میکند به تاثیر گذاری بر روی سیستم ما.
  • مانند اسب تروا: زمانیکه سربازان نتوانستند داخل قلعه شوند اسبی با چوب ساخته و خود داخل آن رفتند و هنگامیکه در شب همه به خواب رفتند کار خود را انجام دادند.
  • Rootki: کدهای مخربی هستند که بیشتر در سیستم های لینوکسی تعریف میشوند و بر روی Core و یا هسته ی اصلی لینوکس قرار میگیرند و شناسایی آن توسط افراد مبتدی تقریبا غیر ممکن می باشد.
  • Logic bomb: کد های مخرب جاسازی شده در سورس برنامه ها هستند که میتواند Worm، ویروس و ... باشد.
  • Keylogger: ابزارهایی هستند که به صورت نرم افزاری و یا سخت افزاری ساخته میشوند و هدف آنها برداشتن دیتا از روی سیستم هایی هست که بر روی آنها نصب شده است. معمولا Keylogger های سخت افزاری را در بین داکت ها و در مسیر کابل ها جاگذاری میکنند. زیرا بعد از بسته شدن و راه اندازی کسی دیگر در اثر بروز مشکل به سراغ آنها نمیرود. Keylogger های نرم افزاری نیز معمولا به صورت Bind شده در داخل فایل های سیستمی قرار میگیرند و آیکون و یا چیز خاصی ندارند. معمولا این سیستم به این صورت می باشد که یک ایمیلی توسط هکر در آن تعریف میشود که اطلاعات دیتای ما که در داخل سیستم موجود می باشد را در زمانیکه آنلاین میشویم برای آن ایمیل ارسال میکند. جلوگیری از آن سخت است اما برای آنکه چک کنیم که در سیستم خود Keylogger داریم یا خیر میتوانیم ترافیک اینترنت خود را در زمانیکه فعالیتی نداریم چک کنیم (با استفاده از دستور netstat -na در قسمت CMD)

نکته: بسته به سیستم هایی که ما در شبکه استفاده میکنیم، هر چقدر کد نوشته شده برای سیستم بیشتر باشد آن سیستم آسیب پذیر تر می باشد. و این امری طبیعی است. با توجه به جدول زیر میتوانیم این امر را مشاهده کنیم.

وب سایت توسینسو
  • Security patch: Patch ها معمولا زمانی به کار میروند که ما میخواهیم قابلیتی را به سیسیتم اضافه کنیم و یا یک راه نفوذی راببندیم.
  • Hotfix: یکسری Patch های خاص که در یک قالب نرم افزاری بیشتر تعریف می شوند در قالب Hotfix هستند که معمولا با فایل های اجرایی معرفی می شوند و چند کار برای یک محصول خاص را انجام می دهند. مثلا ما یک برنامه ای را نوشته و تحویل مشتری داده و مشتری آن را استفاده کرده و در سیستم کارکرد آن مشکلی به وجود آمده است. ما از سیستم کارکرد آن مشکل را متوجه شده و برای رفع آن Hotfix را طراحی میکنیم. Hotfix مانند Patch نیست که فقط برای یک کار خاص باشد و ممکن است که چند کار و یا Option بر روی آن اعمال شود که یک کار اتفاق بیفتد و یک جلوی یک مشکل گرفته شود. در واقع بعد از Patch قرار میگیرد. اگر امنیتی باشد که برای پوشاندن راه نفوذ است.
  • Service pack: معمولا همه ی Package ها را جمع کرده و در یک بازه ی زمانی بر روی سایت منتشر میکنند و یا در قالب ورژن بعدی نرم افزار Bind و منتشر می شود.

نظرات