داشتن امنیت یک امر کاملا حیاتی میباشد و ما علاوه بر اینکه بتوانیم پروتکل ها و سرویس ها را ارائه و پیاده سازی کنیم، باید از داشتن امنیت و استقامت آنها اطمینان حاصل سازیم. زیرا هر لحظه ممکن است آسیبی از این جانب به ما وارد شود. در این مقاله قصد داریم به تکنیک ها و روش های که موجب امن سازی پروتکل مسیریابیBGP میشوند پرداخته و انواع حملات و روش های جلوگیری آن را بررسی کنیم.
به مسیریابی بسته ها درون شبکهRouting گفته میشود. به این صورت که برای مثال وقتی یک Request از سمت شما به سمت وب سرور وب سایت کالی بویز ارسال میشود به آن مسیریابی و مسیرهای که Request طی میکند Routing گفته می شود.
در بحث Routing ما دونوع مختلف داریم. یک Static Routing و دو Dynamic Routing که در Static Routing ما به صورت دستی تعیین میکنیم برای مثال بسته ایی که قرار است به سمت مقصد خاصی که میخواهد برود از کدام مسیر برود ولی در Dynamic Routing اینکار برعهده پروتکل های میباشد که به صورت اتوماتیک اینکار را برای ما به انجام میرساند.
پروتکل های Dynamic Routing به دو دسته IGP و EGP تقسیم بندی می شود. به پروتکل های که مسیریابی را در یک AS (محیطی متشکل از چند روتر محلی) انجام میدهند IGP یا به اختصار Interior Getaway Protocol گفته میشود.
علاوه بر این EGP ها که مخفف Exterior Getaway Protocol میباشند و برعکس IGP هستند و وظیفه مسیریابی بسته ها بین AS ها را فراهم میسازند. برای درک بهتر و ساده تر، از این پروتکل ها برای مسیریابی درون اینترنت استفاده میشود. از جمله این پروتکل های EGP، پروتکل BGP وجود دارد.
پروتکل BGP مخفف Border Getaway Protocol میباشد یک Dynamic Routing از نوع EGP که به دو دسته eBGP و iBGP تقسیم بندی میشود:
از این رو پروتکل BGP با استفاده های بسیار ارزشمندی که دارد بدی هایی هم دارد که از جمله آنها به وجود آوردن آسیب پذیری های (MITM) در شبکه WAN را دارد. از جمله آسیب پذیری های مهم و خطرناک BGP میتوان به BGP Hijacking و یا Prefix Injection توجه کرد (هر دو یک حمله هستند با نام های متفاوت).
این حمله زمانی رخ میدهد که افراد بتوانند به طور غیرمجاز به ترافیک های درحال عبور در دنیای WAN با استفاده از پروتکل BGP دست یابند. به این صورت که با تزریق کردن مقدار های IP و Prefix های نامعتبر به سمت این پروتکل آن را وادار به تغییر جهت ترافیک خود دهند.
روتر ها دارای جدولی هستند تحت عنوان جدول Routing Table که اطلاعات مسیریابی هر روتر در آن نگهداری میشود. از این رو زمانی که یک Dynamic Routing در شبکه اجرا سازی میشود روتر ها اطلاعات جدول خود را تحت عنوان پیغام های Update به یک دیگر ارسال میکنند. افراد مهاجم میتوانند با ایجاد پیغام های جعلی Update این جدول را مورد حمله قرار دهند و مسیرهای موجود در آن را تغییر دهند.
روش های بسیاری برای جلوگیری از حمله BGP Hijacking وجود دارد که از جمله این روش ها عبارتند از:
برای مثال در Filtering زیر ما فقط AS های محلی خود را به سمت ISP هدایت میکنیم:
ip as-path access-list 1 permit ^$
router bgp 64502
neighbor 100.100.100.1 filter-list 1 out
برای مثال دوم فرض کنید سمت مشتری AS 64502 تعریف شده است و در سمت ISP این AS برابر با 64500 میباشد. ما میتوانیم محدودیت را در سمت ISP بر این قرار بگذاریم که از سمت آدرس 100.100.100.1 فقط AS 64502 اجازه عبور داشته باشد:
ip as-path access-list 1 permit ^64502$
router bgp 64500
neighbor 100.100.100.2 filter-list 1 in
همچنین یک راهکار جالب برای جلوگیری از Flooding به سمت BGP، میتوانیم محدودیت بر روی حداکثر Prefix را قرار دهیم. به این منظور که چه میزان Prefix از سمت مقابل ارسال شود و درصورت ارسال بیشاز حد تعیین شده جلسه ایجاد شده به حالت idle برود.
router bgp 64502
neighbor 100.100.100.1 maximum-prefix number
اگرچه ابزار Artemis نمیتواند جلوی حمله را بگیرد ولی توانایی اعلام و شناسایی حملات را برای ما فراهم میسازد و مطلع شدن از حمله یک امر بسیار مهم و کاربری میباشد.
این ابزار به عنوان یک سیستم تشخیص نفوذ تحت شبکه یا همان N-IDS شناخته میشود که به سرعت توانایی شناسایی حملات BGP Hijacking را دارد. همچنین این ابزار قدرتمند به صورت Open-Source ارائه شده است.
پروتکل BGPSec مخفف Border Getaway Protocol Security میباشد. این پروتکل که همواره شباهتی نسبت به پروتکل S-BGP و یا همان Secure BGP نیز دارد که در سال 1990 ارایه شد. در واقع این پروتکل یک افزونه قدرتمند امنیتی به منظور جلوگیری از حملات مختلف بر روی بستر پروتکل BGP میباشد.
این پروتکل وظیفه این را دارد که پیغام های Update درحال رد و بدل بین دو همسایه و یا روتر را بررسی کند و از صحیح بودن آنها مطمئن شود. این پروتکل از یکسری امضای دیجیتالی به منظور صحیح بودن بسته های ارسالی از سمت همسایه مقابل استفاده میکند.
قبل از پروتکل BGPSec مکانیزم امنیتی تحت عنوان RPKI وجود داشت که از تزریق AS ها و Prefix های نامعتبر از سمت افراد مختلف را محدود میکرد و بسته هارا رد میکرد، ولی RPKI هم به یک سری نکات امنیتی توجه نکرده بود و به سرنوشت خوده پروتکل BGP دچار شد و مهاجمان توانستند از آسیب پذیری RPKI با این عنوان که به AS های مجاز اعتماد میکرد و بسته ها را قبول میکرد استفاده کردند.
در اخر نیز این مکانیزم هم با شکست مواجه شد، اینجا بود که پروتکل BGPSec پا به میدان گذاشت و وظیفه این را دارد که از مسیر AS اطمینان کافی را حاصل سازد.
از این رو این پروتکل علاوه بر امضاهای دیجیتالی از روش ها و مکانیزم های زیادی از جمله رمزنگاری بسته ها، استفاده از Attribute های جدید و امنیتی و کنار گذاشتن Attribute های قدیمی پروتکل BGP که از جمله آنها استفاده از ASsec_Path به عنوان Attribute قدیمی پروتکل BGP یعنی AS_Path می باشد.