نکته: پیشنیاز این مقاله آشنایی نسبتا خوبی با پروتکل BGP میباشد در این صورت ممکن است مفاهیم استفاده شده در مقاله را متوجه نشوید
بیاید بحثمان را با یک سوال شروع کنیم؛ آیا BGP امن است؟!
در جواب به این سوال میبایستی گفت خیر، پروتکل BGP امن نیست این پروتکل در تمام مسیر های موجود که داده ها میتوانند طی کنند بهترین مسیر یا انتخاب میسازد، به مرور حملات مختلفی و اشکالات زیادی در آن به وجود آمده هست
این حمله زمانی رخ میدهد که مهاجمان بتوانند به طور مخرب به Traffic های اینترنت دست بیابند، اینکار با استفاده از تزریق آدرس های IP و Prefix های(به اصطلاح Prefix Injection) آن در داخل جدول Routing موجب مسیریابی نادرست Traffic ها به سمت دیگری میشوند(به سمت فرد مهاجم برای مثال). در این حمله فرد مهاجم توانایی پیاده سازی یک حمله MITM در سطح WAN را پیدا خواهد کرد. این حمله زمانی رخ میدهد که دو AS دو آدرس IP به همراه Prefix Length های یکسان را تبلیغ میکنند و از این رو BGP برای انتخاب بهترین مسیر، مسیری را انتخاب میسازد که AS Path آن کمتر باشد. حمله BGP Hijacking بر روی بستر شرکت ها و سرویس های مختلف و بزرگ دنیا پیاده سازی شده است برای مثال در روز یکشنبه 24 فوریه سال 2008 این حمله بر روی YouTube به علت پیکربندی های نادرست از سمت ISP پیاده سازی شد و این بستر را دچار اختلال کرد
برای درک بهتر حمله BGP Hijacking به مثال تصویر زیر توجه کنید که ماشین ها از مسیر اصلی اتوبان خارج شده و به سمت مسیر فرعی دیگری هدایت میشوند، دقیقا حمله BGP Hijacking به همین شکل است که Route هارا از مسیر اصلی خود خارج و به سمت یک مسیر نادرست هدایت کند
این حمله به همسایه های خود و شبکه های به هم پیوسته اعتماد زیادی دارد و تقریبا جلوگیری از این حمله یک کار غیرممکن میباشد. اما گذشته از این حرفا روش های برای جلوگیری از حمله وجود دارد؛ برای مثال یکی از این روش ها استفاده از IP Prefix Filtering میباشد
برای مثال در 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
اگر در سمت مشتری نیازی به استفاده از Default-Route نباشد میبایست Sequence آن را از حالت پیشفرض(10) تقییر دهد
ip prefix-list filter_default_route seq 10 deny 0.0.0.0/0
ip prefix-list filter_default_route seq 20 permit 0.0.0.0/0 le 32
router bgp 64502
neighbor 100.100.100.1 prefix-list filter_default_route in
علاوه بر راهکار های بالا میتوانید از ابزار های Open-Source مختلف برای کشف این حملات استفاده کنید یکی از ابزار های موفق در این زمینه Artemis می باشد.
نویسنده: امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو
متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider میباشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود