Security Plus CEH
Security Plus CEH
خواندن ۱۶ دقیقه·۲ سال پیش

چند نوع کنترل دسترسی وجود دارد ؟ انواع ACL و مکانیزم پیاده سازی

پیاده سازی کنترل های دسترسی با توجه به نیازمندی های هر سیستم به اشکال مختلفی انجام می شود . اما بصورت کلی کنترل های دسترسی به دو دامنه اصلی تقسیم بندی می شوند : کنترل های دسترسی تجمیع شده یا متمرکز شده ( Centralized ) و کنترل های دسترسی توزیع شده یا تجمیع نشده ( Distributed یا Decentralized ) .در این مقاله بصورت خلاصه به بررسی مکانیزم هایی که در این نوع از سیستم های کنترل دسترسی بکار می رود و ارائه توضیحات خواهیم پرداخت .

پیاده سازی کنترل های دسترسی با توجه به نیازمندی های هر سیستم به اشکال مختلفی انجام می شود . اما بصورت کلی کنترل های دسترسی به دو دامنه اصلی تقسیم بندی می شوند : کنترل های دسترسی تجمیع شده یا متمرکز شده ( Centralized ) و کنترل های دسترسی توزیع شده یا تجمیع نشده ( Distributed یا Decentralized ) .در این مقاله بصورت خلاصه به بررسی مکانیزم هایی که در این نوع از سیستم های کنترل دسترسی بکار می رود و ارائه توضیحات خواهیم پرداخت .

کنترل های دسترسی متمرکز یا تجمیع شده (Centralized Access Control )

کاربرانی که از سرویس های Dial-Up استفاده می کنند از سرویس احراز هویتی به نام RADIUS استفاده می کنند که مخفف Remote Authentication and Dial-In User Service می باشد . RADIUS قابلیت احراز هویت و رمزهای عبور پویا (Dynamic Passwords ) را در یک سرور با همدیگر ترکیب کرده است . همچنین کاربران می توانند از قابلیتی به نام callback نیز استفاده کنند .

در قابلیت callback کاربر پس از اینکه یه سرور احراز هویت توسط لینک های Dial-Up متصل شد و رمز عبور و نام کاربری خود را وارد کرد ، بایستی منتظر بماند ، شماره تلفن تماس گیرنده یا Caller ID مربوطه به کاربر به سرور متقل می شود و سرور احراز هویت به پایگاه داده خود نگاه می کند و بررسی می کند که آیا این شماره تلفن جزو شماره تلفن های مجاز برای اتصال به سرویس مذکور می باشد یا خیر .

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

اشکال این سیستم در این است که کاربر برای اینکه بتواند به سرور متصل شود بایستی همیشه در یک محل ثابت که شماره تلفن آن در سرور احراز هویت وارد شده است قرار داشته داشته باشد و محل فیزیکی آن مشخص باشد . یکی از تهدیداتی که در سیستم callback وجود دارد این است که یک cracker می تواند callback سرور را به سمت شماره تلفن مورد نظر خود ارسال کند و در نهایت به سیستم دسترسی پیدا کند .

یکی دیگر از شیوه های احراز هویت دسترسی از راه دور استفاده از پروتکل CHAP که مخفف Challenge Handshake Authentication Protocol می باشد ، است . CHAP از رمز عبور در برابر کسانی که استراق سمع می کنند محافظت کرده و همچنین قابلیت رمزنگاری ارتباط را نیز در خود دارا می باشد .برای نرم افزارهای کاربردی تحت شبکه می توان از پروتکل TACACS که مخفف Terminal Access Controller Access Control System می باشد استفاده کرد ، این پروتکل برای کاربر یک ID و یک رمز ایستا برای دسترسی تحت شبکه می دهد . نسخه جدیدتر این پروتکل که +TACACS نام دارد ز قابلیت های رمزنگاری قویتری استفاده می کند و در این پروتکل از قابلیت های Two-Factor یا احراز هویت چندگانه و همچنین Token و رمز های پویا استفاده می شود .

کنترل های دسترسی غیر متمرکز یا توزیع شده (Distributed /Decentralized Access Control )

یکی از بهترین راهکار هایی که برای کنترل دسترسی به منابع اطلاعاتی در سیستم های اطلاعاتی در محیط های توزیع شده کاربرد دارد استفاده از پایگاه های داده یا database ها می باشد. بصورت ویژه مدل رابطه ای یا Relational model توسط شخصی به نام E.F.Codd از شرکت IBM طارحی و توسعه داده شد . این مدل بیشتر برای ارائه امنیت اطلاعات ایجاد شده است . سایر مدل های پایگاه داده شامل مدل هایی مانند مدل سلسله مراتبی یا موروثی ( Hierarchical ) ، مدل شبکه ، مدل شیء گرا ( Object- Oriented ) و وابسته به شیء ( Object-relational ) هستند .

مدل های پایگاه داده وابسته به شیء ( relational ( و رابطه ای از قابلیت query گرفتن پشتیبانی می کنند و این در حالی است که فایل سیستم های قدیمی و شیء گراها این قالیت را پشتیبانی نمی کنند . مدل های object-oriented و object-relational برای مدیریت داده های پیچیده بسیار بهتر از سایر مدل های هستند . به دلیل اینکه بیشتر تحقیقات و مطالعات و توسعه ها در زیمنه امنیت اطلاعات بر روی پایگاه داده های رابطه ای یا relational متمرکز شده اند ، در این قسمت بیشتر بر روی مدل رابطه ای یا relational تاکید می کنیم .

امنیت پایگاه های داده رابطه ای ( relational )

مدل پایگاه داده رابطه ای از سه قسمت تشکیل شده است :

  • ساختارهای داده که به table یا relation معروف هستند
  • قوانین تمامیت و صحت داده بر روی مقدارهای دارای مجوز و همچنین ترکیب مقادیر در table ها
  • عملیات هایی که بر روی داده ها در table ها انجام می شود

یک پایگاه داده را می توان مجموعه ای ماندگار از مقادیر داده ای به هم وابسته نامید . ماندگاری و ثبات داده ها به وسیله حفظ تمامیت و صحت اطلاعات و همچنین استفاده از رسانه های ذخیره سازی غیر فرار ( non-volatile ) ایجاد می شود . توضیحات پایگاه داده یک الگو و ساختار است و زبان توضیحات داده ها یا Data Description Language که به اختصار DDL نامیده می شود این الگو ها را تعیین می کند .

یک سیستم مدیریت پایگاه داده یا Database Management System که به اختصار DBMS می نامیم ، نرم افزاری است که نگهداری و ایجاد دسترسی به پایگاه داده را مدیریت می کند . برای ایجاد امنیت بیشتر شما می توانید به DBMS بگویید که صرفا برخی از افراد بتوانند عملیات های تعیین شده و خاصی را بر روی پایگاه داده انجام دهند . برای مثال شما به عنوان مدیر DBMS به یک کاربر خاص جازه دسترسی یکی از جدول های پایگاه داده را می دهید و این در حالی است که این کاربر ختی نمی تواند داده های مربوط به جداول دیگر را مشاهده کند و در حیقیت هیچ نوع اطلاعات دیگری برای این فرد قابل دسترسی نمی باشد .

یک رابطه ( relation ) پایه و اساس یک پایگاه داده رابطه ای است و به وسیله دو جدول مقدار دهی شده نمایش داده می شوند . سطرهای جدول نمایانگر رکوردها یا مقادیر چند گانه هستند و ستون های جدول نمایانگر خاصیت های داده های جدول یا attribute های جدول هستند . تعداد سطرهای جدول در این رابطه به عنوان کاردینال یا عدد اصلی و تعداد ستون های جدول به عنوان درجه جدول عنوان می شوند.محدوده این رابطه مجموعه ای از مقادیر مجازی است که یک خاصیت می تواند در خود جای بدهد .برای مثال ، یک رابطه می تواند مانند جدول 2.2 به نام PARTS وجود داشته باشد و یا ELECTRICAL ITEMS در جدول 2.3 .

ELECTRICAL ITEMS
ELECTRICAL ITEMS


جدول 2.3 : Electrical Items Relations

در هر جدول یک کلید اصلی لازم است ، یک کلید اصلی در حقیقت یک شناسه منحصر به فرد در یک جدول است که بدون هیچ ابهامی به یک رکورد و یا مقدار چند تایی در جدول اشاره می کند. یکی کلید اصلی زیرمجموعه ای از کلیدهای کاندید موجود در جدول می باشد. یک کلید کاندید یک خاصیت یکتای شناسایی در یک جدول از داده های موجود می باشد. در جدول 2.2. برای مثال کلید اصلی می تواند PART Number باشد .

اگر location در PART در جدول 2.2. یکتا باشد ، این کلید می تواند به عنوان کلید اصلی نیز مورد استفاده قرار بگیرد. پس از آن Part Numbers و Locations به عنوان کلیک کاندید و کلید اصلی نیز از یکی از این خاصیت ها گرفته می شود .حال تصور کنید که مقادیر Part Numbers در جدول 2.2 به عنوان کلید های اصلی هستند . اگر یک خاصیت در یک رابطه مقداری مشابه مقدار کلید اصلی با یک رابطه دیگر را در خود داشته باشد ، به این خاصیت کلید خارجی یا Foreign Key گفته می شود . یک کلید خارجی حتما نبایست کلید اصلی رابطه ای باشد که خودش در آن قرار دارد . برای مثال خاصیت E2C491 در Part Number در جدول 2.3 یک کلید خارجی است زیرا مقدار آن یا مقدار خاصیت کلید اصلی در جدول 2.2 مشابه است .

صحت موجودیت ها و ارجاع ها ( Entity and Referential Integrity )

صحت موجودیت ها و ارجاع ها را نیز با همین مثال می توان مطرح ساخت ، اگر ما Part Number را از جدول 2.2 به عنوان کلید اصلی خود در نظر بگیریم ، سپس هر سطر در این جدول بایستی یک خاصیت Part Number را داشته باشد . اگر خاصیت Part Number مقدار تهی یا NULL را داشته باشد ، در این حالت صحت موجودیت ( Entity ) دچار مشکل خواهد شد . مشابه همین حالت ، صحت ارجاع ها نیز نیازمند این است که هر خاصیت کلید خارجی ، رابطه مرجع بایستی یک مقدار چند تایی یا همان مقدار به عنوان کلید اصلی در اختیار داشته باشد . بنابراین اگر خاصیت E2C491 از جدول 2.3 یک کلید خارجی از جدول 2.2 باشد ، بنابراین E2C491 بایستی یک کلید اصلی در جدول 2.2 باشد که بتواند صحت ارجاع را نگهداری کند. همخوانی کلید خارجی با کلید اصلی بسیار مهم است زیرا نمایانگر ارجاع ها از یک رابطه به رابط ای دیگر و همچنین برقراری ارتباطات بین این رابطه ها می باشد.

عملیات های رابطه ای پایگاه داده ( Relational Database Operations )

چندین عملیات مختلف در یک رابطه برای ایجاد ارتباط ها و انجام عملیات بر روی داده ها استفاده می شود . 5 عدد از این عملیات ها اصلی هستند و سایر عملیات ها می توانن در قالب همین 5 عملیات اصلی تشریح شوند . بعدها در خصوص عملیات های بیشتری که بر روی داده ها انجام می شود بصورت مفصل صحبت خواهیم کرد . این عملیات ها به شرح زیر می باشند :

  • Select یا انتخاب (عملیات اصلی)
  • Project یا پروژه (عملیات اصلی)
  • Union یا اتحاد (عملیات اصلی )
  • Difference یا تفاوت ( عملیات اصلی)
  • Product یا تولید ( عملیات اصلی)
  • Join یا عضویت
  • Intersection یا اشتراک
  • Divide یا تقسیم
  • Views یا چهره

برای بهتر روشن شدن موضوع ، عملیات Select یک رابطه جدید را بر اساس یک فرمول تعیین می کند . برای مثال ، تمامی تجهیزات الکترونیکی که ارزش آنها بیش از 300 هزار تومان است در جدول 2.2 انتخاب شوند . عملیات Join مقادیر چند تایی که دارای شماره های برابری هستند را با استفاده از یک سری خاصیت های مشترک انتخاب یا Select می کند .

برای مثال در جدول 2.2 و 2.3 Serial Numbers و Locations می توانند با استفاده از نقطه مشترک Part Number با یکدیگر ترکیب یا Join شوند .عملیات Union یا اتحاد یک رابطه جدید از بین سایر رابطه ها ایجاد می کند ، برای مثال برای رابطه هایی که ما X و Y می نامیم ، یک رابطه جدید متشکل از مقادیر چندگانه ای که ممکن است در X و یا Y یا هر دوی آنها باشد را شامل می شود .

یکی از مهمترین عملیات ها که مربوط به کنترل دسترسی به اطلاعات پایگاه داده می باشد عملیات View می باشد . عملیات View متشکل از عملیات های Join ، Project و Select می باشد. یک View یا چهره در یک قالب فیزیکی وجود ندارد و در واقع یک جدول مجازی می باشد که از سایر جداول موجود برگرفته شده است . ( یک رابطه که در ابتدا در جدول وجود داشته است را رابطه پایه یا Base Relation می نامیم ) .

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

بنابراین زمانی که فردی درخواست دسترسی به اطلاعات موجود در یک پایگاه داده را دارد ، در واقع محتویات View ای که برای دسترسی این فرد تعیین شده است به وی نمایش داده می شود . سپس View اطلاعاتی را که شخص قرار نیست مشاهده کند را از دید وی مخفی می کند. در این روش در واقع View به ما در جهت پیاده سازی ساختار Least Privilege کمک می کند.

در برنامه نویسی وقتی یک query از پایگاه داده رابطه ای گرفته می شود یک فرآیند بهینه سازی نیز انجام خواهد شد . این فرآیند شامل طراحی و ایجاد query و همچنین انتخاب بهترین ( کم هزینه ترین ) طرح می باشد. یک طرح query از دستورالعمل های پیاده سازی که به یکایک عملیات های سطح پایین در آن query مرتبط است ، تشکیل شده است.

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

این کنترل امنیتی از بدست آوردن اطلاعات آماری پایگاه داده توسط مهاجمین با استفاده از زیاد کردن یا مساوی کردن اندازه Query با سایز استاندارد جلوگیری می کند ، در این نوع حمله مهاجم اندازه query خو درا که بصورت استاندارد M فرض می شود را افزایش داده و اطلاعات آماری موجود در پایگاه داده را با استفاده از اندازه query M+1 بدست می آورد . یک bind نیز به همراه یک طرح برای ایجاد یک query استفاده می شود .

یک bind طرح را ایجاد کرده و آنرا مرمت و یا رفع ایراد می کند.متغیر های bind محل مقادیر اصلی یک query در SQL یا Structured Query Language هستند که به سمت پایگاه داده مستقر در سرور ارسال می شوند. شرح وضعیت SQL برای تجزیه و تحلیل به سمت سرور ارسال می شود ، سپس مقادیر در محل های اصلی خود قرار می گیرند و بصورت تفکیک شده برای سرور ارسال می شوند . همین مرتبط کردن تفکیک شده در واقع ماهیت اصلی کار متغیر bind را نشان می دهد.

عادی سازی داده ها یا Data Normalization

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

  • حذف کردن گروه های تکراری به وسیله قرار دادن آنها در جدول های مختلف
  • حذف کردن داده های اضافی ( در بیش از یک جدول انجام می شود)
  • حذف خاصیت های یک جدول که به کلید اصلی موجود در آن جدول وابسته نیستند

زبان Query ساختار یافته یا Structured Query Language) SQL )

این زبان در IBM طراحی و ایجاد شد ، SQL یک زبان استاندارد برای اعمال تغییرات و ایجاد رابطه در پایگاه های داده است. DDL یا Data Definition Language در SQL در یک جدول مسئول ایجاد و یا حذف View ها و رابطه ها است . دستورات SQL شامل Select، Update، Delete،Insert ، Grant و Revoke هستند. دو دستور آخر که Grant و Revoke هستند در کنترل های دسترسی و در اختیار گذاشتن و یا گرفتن دسترسی افراد به منابع مورد استفاده قرار می گیرند.

معمولا مالک یا Owner یک شیء در پایگاه داده می تواند سطوح دسترسی افراد به منبع اطلاعاتی خود را به دیگران تخصیص دهد یا به اصطلاح دیگران را Grant کند که به شیء مورد نظر دسترسی داشته باشند. اگر مالک یک شیء در پایگاه داده به دیگران قابلیت انتقال دسترسی ها یا Grant را ندهد ، مثلا اگر کاربر محمد نصیری به شیء A دسترسی مجاز را برای کاربر B ندهد ، طبیعتا کاربر B نیز قادر نخواهد بود دسترسی مناسب را در اختیار سایر کاربران قرار دهد .

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

پایگاه های داده شیء گرا یا Object Oriented Databases ) OODB )

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

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

پایگاه های داده وابسته به شیء یا Object Relational Databases

پایگاه های داده وابسته به شیء در واقع حاصل ازدواج پایگاه داده شیء گرا و رابطه گرا هستند ، در این نوع پایگاه داده خاصیت های این دو نوع پایگاه داده با همدیگر ترکیب شده است . این مدل در سال 1992 و با ارائه شدن محصول UniSQL/X به عنوان یک سیستم پایگاه داده رابطه ای متحد و شیء گرا معرفی شد.

شرکت Hewlett Packard که ما آنرا به نام HP می شناسیم بعد ها محصولی به نام OpenODB ( بعدا به Odapter تغییر نام داد ) را معرفی کرد که سیستم مدیریت پایگاه داده این نوع پایگاه داده را بطور عظیمی متجول کرد .

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

آموزش امنیت شبکهآموزش سکیوریتی پلاسآموزش Securityآموزش CEHآموزش اسپلانک
شاید از این پست‌ها خوشتان بیاید