امنیت در سیستم های توزیع شده - Security in Distributed Systems
امنیت در سیستم های توزیع شده به دلیل پیچدگی هایی که در ارتباطات, تراکنش ها و مدیریت داده ها در در سیستم وجود دارد یکی از چالش های مهم و اصلی در طراحی و پیاده سازی این سیستم ها می باشد. باید تهدیدات و نیازمندی های سیستم را برای اطمینان از امنیت بشناسیم.
تهدیدات امنیتی و راهکارهای مقابله
1- احراز هویت (Authentication): احراز هویت تضمین می کند که فقط کاربران یا سرویس های معتبر اجازه دسترسی به سیستم دارند. انواع مکانیسم های احراز هویت:
مبتنی بر رمز (Password-based): کاربر برای دسترسی به سیستم باید یک رمز عبور منحصر به فرد وارد کند که قبلا ثبت شده است. هرچند آن یکی از رایج ترین روش های احراز هویت می باشد اما آسیب پذیری هایی مانند بروت فورس و... دارد.
مبتنی بر توکن (Token-based): کاربر به جای استفاده از رمز عبور در هر درخواست پس از احراز هویت یک توکن دریافت می کند که برای درخواست های بعدی از آن استفاده می کند.
چند مرحله ای (Multi-factor Authentication (MFA)): کاربر حداقل باید دو مرحله از اعتبار سنجی را پشت سر بگذارد. این مراحل می تواند شامل:
رمزعبور: چیزی که کاربر می داند.
کد امنیتی: چیزی که کاربر دارد.
شناسایی چهره یا اثر انگشت: چیزی که کاربر می باشد.
مبتنی برای سرتیفیکت (Certificate-based): کاربر با استفاده از یک دیجیتال Certificate که از طریق PKI ایجاد شده است احراز هویت می شود. این Certificate ها شامل اطلاعاتی مانند هویت کاربر و public key می باشد که توسط یک مرجع امضا شده اند.
احراز هویت بیومتریک (Biometric Authentication): از ویژگی های فیزیکی منحصر به فرد هر شخص استفاده می شود. مانند تشخیص چهره, اثر انگشت و صدا استفاده می شود
احراز هویت یکپارچه (Single Sign-On (SSO)): کاربر تنها با یک بار احراز هویت می متواند به مجموعه از سرویس ها مختلف دسترسی داشته باشد.
2- کنترل Authorization: پس از احراز هویت مشخص می شود که کاربر/سیستم به چه منابعی می توانند دسترسی داشته باشند.
روش ها:
مبتنی بر نقش (Role-Based Access Control (RBAC)): دسترسی به منابع بر اساس نقش های تعیین شده برای کاربران مدیریت می شود. در این روش هر کاربر یک یا چند نقش دارد و هر نقش مجموعه ای از مجوزهای دسترسی.
لیست های کنترل دسترسی (Access Control Lists (ACLs)): برای هر منبع یک لیست از مجوزها تعریف می شود که تعریف می کند که کدام از کاربران/سیستم ها به چه منبع و عملیاتی دسترسی دارند.
مبتنی بر ویژگی ها (Attribute-Based Access Control (ABAC)): دسترسی کاربران به منابع بر اساس ویژگی هایی مانند شهر, اطلاعا, زمان, کار, سن و... مشخص می شود.
مبتنی بر سیاست (Policy-Based Access Control): در این روش دسترسی ها بر اساس سیاست های امنیتی تعریف شده توسط مدیران مشخص می شود. مجموعه ای از قوانین و معیارهای مختلف.
3- رمزگذاری (Encryption): استفاده از الگوریتم های رمزگذاری برای حفاظت از داده ها برای انتقال و ذخیره سازی بسیار مهم می باشد. تبدیل داد ها به فرمی که فقط افراد یا سیستم های مجاز بتوانند آن را بخوانند.
انواع روش ها:
رمزگذاری متقارن (Symmetric Encryption): از یک کلید واحد برای رمزگذاری و رمزگشایی داده ها استفاده می شود.
رمزگذاری نامتقارن (Asymmetric Encryption): از دو کلیک عمومی و خصوصی استفاده می شود. کلید عمومی برای رمزگذاری و کلید خصوصی برای رمزگشایی داده ها.
4- یکپارچگی داده ها (Data Integrity): داده ها در هنگام انتقال و ذخیره سازی نباید به هر دلیلی دچار تغییر شوند. در سیستم های توزیع شده با توجه به اینکه انتقال و پردازش داده ها در قسمت های مختلف اتفاق می افتد ممکن است داده ها خراب شده یا مورد حمله قرار بیگیرند که برای جلوگیری از این اتفاق از روش های زیر استفاده می شود:
هشینگ (Hashing): یک مقدار هش از داده ها محاسبه و به همراه آن ها ارسال می شود که دریافت کننده می تواند با محاسبه هش داده ها را تایید کند. اگر مقدار هش با مقدار اصلی یکسان نباشد نشان دهنده تغییر یا خرابی داده ها می باشد.
امضاهای دیجیتال (Digital Signatures): تضمین می کنند که داده توسط فرستنده ارسال شده و در مسیر تغییر نکرده اند. این امضاها معمولا با رمزگذاری نامتقارن ایجاد می شوند.
5- حملات دیداس (Distributed Denial of Service): در این حمله تعداد زیادی از درخواست های مخرب به یک سیستم ارسال می شود تا با اشباع کردن منابع سیستم قادر به خدمات نباشد. یکی از مرسوم ترین حملات می باشد
راهکارهای مقابله:
استفاده (WAF (Web Application Firewall)): برای شناسایی و بلوکه کردن ترافیک مشکوک کمک می کند.
استفاده (Load Balancing): توزیع درخواست ها به سرورها به جلوگیری از اشباع یک سرور کمک می کند.
استفاده (Rate Limiting): با محدود کردن تعداد درخواست ها از یک آدرس IP در بازه زمانی های مشخص کمک می کند.
6- حملات مرد میانی (Man-in-the-Middle (MITM)): در این حمله مهاجم با قرار گرفتن میان ارتباط سرویس ها داده ها را شنود کرده یا تغییر می دهد بدون آنکه سرویس ها متوحه شوند. با استفاده از TLS/SSL و Mutual Authentication می توان از این حملات جلوگیری کرد.
در پایان, باید بدانیم که فکر کردن به امنیت را نباید تا بعد از طراحی عقب بندازیم, بلکه باید در core تمام تصمیم گیری های معماری ما باشد. همچنین باید توجه کرد که امنیت یک فرایند مداوم است و همیشه باید مورد بررسی و بهبود قرار بگیرد.