امنیت BGP یا BGPSec

آرش حاتمی

آرش حاتمی

DevOps - Network Eng

tooltip

BGPSec سعی ‌میکند اطمینان ‌خاطر دهد که BGP Update دریافت شده توسط هر Peer به درستی مسیری را ارائه‌ میکند که پیغام از فرستنده تا گیرنده طی کرده است.

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

پروتکل BGP چیست ؟

پیش از پرداختن به مبحث امنیت BGP بیاید در این مورد صحبت کنیم که از ابتدا چه مشکل / مشکلاتی وجود داشت و چه اتفاق هایی افتاد که امنیت این پروتکل زیر سوال رفت و متخصصان به فکر روش هایی جهت افزایش سطح امنیت آن افتادند.

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

یکی از مشکلات رایجی که در این پروتکل به وجود می آید BGP Hijacking می باشد.

BGP Hijacking

همانطور که گفته شد BGP وظیفه مسیریابی و اتصال و انتقال ترافیک های بین دو شبکه ( سامانه های خودگران یا Autonomous System - AS ) را بر عهده دارد. حال اگر شبکه ی واسطی در این بین به وجود آید که ترافیک مبدا به آنجا رفته و سپس به مقصد ارسال شود در اصل یک حمله ی BGP Hijacking اتفاق استفاده است و کل ترافیک قربانی در اختیار حمله کننده قرار خواهد گرفت. در ساده ترین حالت ممکن پس از تغییر جداول مسیردهی اینترنتی و موفقیت آمیز بودن حمله ، سرعت تبادل اطلاعات به شدت پایین می آید زیرا دیگر مسیر فعلی ، بهینه ترین مسیر نخواهد بود !!

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

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

امنیت BGP

یکی از ساده ترین راه ها جهت ایمن کردن این پروتکل ، اعتبار سنجی مسیر ها می باشد. به این صورت که بررسی میکند آیا مسیر ارائه شده به شبکه مقصد ، همان مسیر درخواست شده است یا نه. این افزونه امنیتی در سال 2017 ارائه شد و تکمیل کننده راه ها و پروتکل های ارائه شده پیشین مانند RPKI می باشد.

جهت آشنایی بیشتر با RPKI این مطلب را مشاهده کنید : فریموورک RPKI چیست ؟

با استفاده از RPKI می توانیم دامنه آدرس های IP یک AS را با شماره AS ( یا همان ASN ) جفت کنیم. این فریموورک در واقع از گواهینامه های رمزنگاری و اعتبارسنجی TLS/SSL برای بررسی صحت آدرس های IP و پیشوند آن ها استفاده می کند. این گواهی نامه ها هرساله عوض می شوند و بر خلاف گواهینامه های رایج HTTPS که اکثر شما با آن آشنایی دارید شامل هیچ اطلاعات شناسایی نمی باشند. RPKI در واقع همانند TLS عمل می کند. مجموعه ای از گواهینامه ها بیا ارائه دهنده ها و کاربران دست به دست شده و اعتبار سنجی بازه آدرس های IP انجام می شود. روشی موثر و به نظر خیلی عالی برای رمزنگاری بازه های آی پی بین تو شبکه. ولی این همه چیز نیست.

tooltip

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

ولی در این طرف ، افزونه ی امنیتی BGPSec این مشکلات را ندارد. تمام روندی که در این بین اتفاق می افتد امضای دیجیتالی منابع و مسیر ها قبل از معرفی به همسایگی است. در واقع هر AS کافی است یک ویژگی یا صفت ( attribute ) به داده های ارسالی خودش اضافه کند تا شبکه بعدی که در همسایگی آن وجود دارد این مقدار را دریافت کرده و بررسی کند که آیا مسیر دریافتی همان مسیر درخواست شده و ارسال شده از مبدا بوده یا نه.

در یک اینترنت کامل و امن ، تمام شبکه های موجود می بایست این روش را انجام دهند تا بحث اعتبارسنجی مسیر ها در تمام اینترنت انجام شود ، بنابراین مزایای استفاده از BGPSec زمانی محقق می شود که تعداد کمتری شبکه غیر BGPSec در اینترنت وجود داشته باشد. در حال حاضر PIR ها ( Public Interest Registry ) از چند سال پیش خدمات RPKI خود را راه اندازی کرده اند و سازنده های تجهیزات شبکه نیز مانند Cisco, Juniper, Quagga و ... نیز تجهیزات خود را برای کار با این فریموورک راه اندازی کرده اند ولی جامعه جهانی و اینترنت مسلما تمایل بیشتری برای کار با BGPSec داشته و راهی طولانی برای ایمن کردن کامل اینترنت در پیش داریم زیرا همانطور که در قبل اشاره شد ، جهت هرچه ایمن تر کردن این شبکه بزرگ اطلاعات باید تمام شبکه های کوچک BGPSec را پیاده سازی کنند.

اسناد فنی

در حال حاضر چیزی نزدیک به 41 سند RFC ( سندی که در اینترنت منتشر می شود و اساس استاندارد های فنی لازم را شرح می دهد ) با دسته بندی SIDR ( Secure Inter-Domain Routing ) وجود دارد که پس از سال 2017 و انتشار BGPSec تنها 7 مورد از آن ها به امور امنیتی BGPSec و RPKI اختصاص داده شده است.

  • RFC 8205 : توضیحات پروتکل BGPSec
  • RFC 8206 : ملاحظات BGPSec برای انتقال AS ها به این پروتکل
  • RFC 8207 : اسناد عملیاتی BGPSec
  • RFC 8208 : الگوریتم‌ها، کلیدها و امضاهای BGPSec
  • RFC 8209 : گواهی‌نامه‌های BGPSec
  • RFC 8210 : معرفی RPKI
  • RFC 8211 : اقدامات مربوط به RPKI

نتیجه

اکنون که 2 سال از معرفی BGPSec می گذرد ، هیچ بهانه ای برای اپراتور های شبکه وجود ندارد تا منابع خود را رمزنگاری نکرده و از این طریق به ایجاد بستری امن و پایداری برای سیستم مسیریابی اینترنت جهانی کمک نکنند. در این شرایط ، داشتن بستری امن برای انتقال اطلاعات نیازمند کمک تمامی مجموعه های دخیل می باشد. از یک شبکه کشوری کوچک گرفته تا یک PIR بین قاره ای.

منابع