SRE at Asa Co. / Agah Group
داستان این BGP Hijack که این روزها میشنویم چیست؟
با سلام و عرض خستهنباشید خدمت همه دوستان عزیزم. به عنوان اولین پستم در ویرگول، دوست داشتم درمورد مبحثی که این روزها درموردش صحبتهای بسیاری میشود افراد گوناگونی بخاطرش محکوم میشوند، بنویسم. در اینجا میخوایم بررسی کنیم که واقعا قضیه از چه قرار است و داستان چیه. صرفا مطالب کوتاه و توئیتهای دیگری هم در این زمینه، بعد از این اتفاق، توی اینترنت انتشار پیدا کرد که کمی برای مردم این موضوع را توضیح دهد... اما اکثرا ناقص بوده ویا خیلی بد منظور را رسانده بودند... سعی میکنم تا تاجایی که امکان دارد از وجه تکنیکال موارد رو مطرح نکنم تا برای کسانی که کمتر با مفاهیم شبکه آشنا هستند، قابل درک باشد.
قضیه از چه قرار است؟
روز هشتممردادماه(به میلادی 2018/07/30) وبسایت BGPStream، اطلاعیهای انتشار داد که نشان میداد عمل Hijackingـی در مسیرهای BGP اتفاق افتاده است(لینک رویداد در وبسایت) :
حالا اصلا ببینیم که BGP چیه؟ وبسایت نامبرده کارش چیه و اصلا این اتفاقی که پیشاومده چی هستش؟ چرا این اتفاق افتاده؟ و در نهایت این اتفاق چه عواقبی در پیش داره؟
خطاب به دوستانمتخصص: بنده سعی دارم که تاجایی که امکان داره موارد فنی رو ساده و کوتاه بیان کنم، به همین دلیل از خیلی از پیشنیازهای نالازم(در این مقاله) و شرحهای پیچیده میگذرم و سعی میکنم که خیلی ساده فقط منظور رو برسونم... چراکه این مقاله مقالهای تکنیکال نیست. پس درمورد یکسری موارد، زیاد سخت نگیرید، چون نمیخوام بیشازحد کاربر رو گیج کنم ?.
مسیریابی
پروتکل BGP که اختصار Border Gateway Protocol میباشد، روتینگ پروتکل مربوط به مسیریابی اینترنت است. حالا این یعنی چی؟
اگر مسیریابی رو بخوایم به زبان ساده بخوایم شرح بدیم: توی زیرساخت مربوط به شبکه، هر کامپیوتری دارای یک IP Address هستش.این کامپیوترها با استفاده از کابلهای شبکه به تجهیزاتی به اسم سوئیچ متصل میشوند. فرض کنید 6 ساختمان داریم و در داخل هر ساختمان یک سوئیچ قرار دادهایم. توی هر ساختمان، 20 کامپیوتر به هر سوئیچ متصل هستند. بلفرض IP Rangeـه مربوط به هرکدام از ساختمانها متفاوت ازیکدیگر هستند، پس داخل هر ساختمان یک دستگاه به اسم روتر قرار میدهیم که سوئیچهای ما آنها متصل شوند و روترها هم به یکدیگر متصل میشوند.
پس هرکدوم از روترهای ما دارای یک رنج آیپی مخصوص به خودش است و وقتی کامپیوتر ما میخواهد پکتی به شبکهای خارجاز شبکه خودش ارسال کند(مقصدی که نمیشناسد و در IP Rangeـه او قرار ندارد)، میآید و بسته را به Default Gatewayـه خود یعنی روتر ساختمانش تحویل میدهد. روتر ما با اساس یکسری معیارهایی که برای خودش دارد(به این معیارها Metric گفته میشود)، تصمیم میگیرد که بسته را از چه مسیری به مقصد برساند که بهینهترین مسیر باشد؟(از نظر کوتاهی مسیر،سرعت مسیر و...).
مثلا فرض کنید که روتر ساختمان 1 میخواد به ساختمان 6 بستهای ارسال کنه. همچنین فرض کنید که روترهای ما بصورت زیر(رنگ قرمز) کابل کشی شدهاند؛ کدوم مسیر برای رسیدن به مقصد بهتر و کوتاهتره؟ مسیر اول یا دوم؟
مسلما مسیر دوم بهتره!
پروتکلی که تصمیمگیریهای مربوط به این مسیریابیهای خودکار رو انجام میده، بهش میگن روتینگ پروتکل.هر روتر به روترهای همسایه مسیرهایی که یاد داره رو اعلام میکنه و این اعلام کردن به روتر همسایش کمک میکنه که مسیر مقصدش رو پیدا کنه و بهینهترین مقصد روهم پیدا کنه.
این اعلام کردن مسیرهایی که یاد داره رو، بهش میگن Advertise(تبلیغ) کردن، یعنی اینکه این مقصدی رو که میخوای بهش برسی رو من بلدم، باید از اینجا بری... این نکته رو تو ذهنتون داشته باشین، در ادامه باهاش کار داریم ?.
پروتکل BGP
حالا باید گفت که ما روتینگ پروتکلهای گوناگونی داریم، مثل RIP،OSPF،EIGRP و... ؛ اما تنها پروتکلی که در سطح اینترنت بکاربرده میشه و قابلیت Handle کردنه این حجم مسیر رو داره، پروتکل BGP هستش.
مثالی که من زدم رو، سعی کنید مقیاسش رو بیشتر کنید و هر کشور رو مثل همون ساختمانها فرضبگیرید...حالا میتونیم درمورد مواردی که میخوایم راحتتر صحبت کنیم...
فرض کنید که تمامی سرورهای مربوط به تلگرام در لندن قرار گرفتن و دارای یک رنج خاصی IP آدرس میباشند. روترهای Service Providerهای لندن به تمامی روترهای همسایهاشان اطلاع میدهند و میگویند هرموقع خواستید به این مقصد(IPـه تلگرام) برسید، باید بستههایتان را به ما تحویل بدید(میشه همون Advertise کردنی که درموردش صحبت کردیم...).(که روترهای مرزی و اصلی هم به همین صورت مسیریابی رو مرحله به مرحله انجام میدن که بسته رو به سرور مقصدش برسونن).
حالا اتفاقی که افتاده اینه که روترهای مخابرات ایران به همسایه های خودشون در کشورهای دیگه، اعلام کردن که من مقصد شما(تلگرام) رو بلدم کجاس، باید به من تحویل بدید تمام بستههاتون رو.
که اصطلاحا گفته میشه که Routeـه مربوط به تلگرام رو Advertise کردن و بجای روترهای لندن، خودشون رو بهعنوان مقصد معرفی کردهاند و چون در شبکه خودشون این مسیر رو به عنوان بهترین مسیر(بهترین Metric)معرفی کردند(در ادامه درموردش توضیح دادم)، وقتی بصورت جهانی Advertise میشود، باعث میشود نسبت به مسیرهای دیگر اولویت داشته باشند... در پروتکل BGP، به این عمل BGP Hijacking میگویند.
در نتیجه؟
در نتیجه تمامی BGP Peerهای شرکت مخابرات(همسایه های بروی بستر BGP در کشورهای دیگه)، اشتباها بستههای مربوط به تلگرام را به ایران و این ISP تحویل میدهد و در ترافیکهای خارجاز ایران اختلال ایجاد میشود.
حالا کار BGPStream در اینجا چیه؟
خیلی ساده میشه گفت که این سایت، همسایههایBGPرو(که بهشون BGP Peer گفته میشه) Monitor میکنه و موارد اینچنینی از قبیل Hijacking،Leaking و... رو متوجه میشه و اطلاع میده.
چرا این اتفاق پیشاومده؟ آیا دولت اینکار را انجام دادهاست؟
باید خدمتتون عرض کنم که به احتمال بسیار زیاد خیر! انجام عمدی اینکار بسیار احمقانه است و عواقبش بدتر از فوایداش است! ویا اینکه اگر واقعا مقصود فیلترینگ بودهاست، اینکار باید روی همه ISPها انجام شود، نه صرفا یک ISP. شواهد بسیاری نشوندهندهی این هستش که این مشکل سهوا و از روی اشتباه و عدم دانشفنی لازم پیشاومده که ناشی از عدم وجود یک سیستم استاندارد Change Management هستش. بدلیل درخواست دولت از ISPها برای فیلتر کردن تلگرام، این شرکت قصد اینکار رو داشته و برای اینکار تعدای مسیر غیرمعتبر ایجاد کرده(که از داخل ایران، بستهها نتونن به مقصد برسن)... در انتها اشتباها اون مسیرهارو Advertise کردهاند و باعث ایجاد این مشکل شدهاند.
طبق خبری که دوستان اعلام کردن، ظاهرا وزیر ارتباطات در نشتی اعلام کردن که که Routeـی به Null 0 در روتر(برای فیلتر تلگرام)اعمال شدهبوده(روتینگ پروتکل قبلی OSPF بوده - این RP برای شبکه های IGP(داخلی) استفاده میشود) و درهنگام تغییر Routing Protocol به BGP، کارشناسها حواسشون نبوده و این Routeهارو بجای شبکه داخلی، به بیرون شبکه Redistribute کردن؛ یعنی بجای Redistribute به iBGP ، به eBGP توزیع کردهاند.(معنیش همون چیزی میشه که در پاراگراف قبلی مطرح کردم).
عموما برای اینگونه Routeها که با این اهداف ایجاد میشوند،بصورت دستی بهترین Metricها سِت میشوند که این مسیرهای جعلی، نسبت به ترافیکهای اصلی اولیت بیشتری داشته باشند.
روشهای دیگری هم برای اولیت دادن به مسیر وجود دارد، مثل خبر سالهای گذشته(در یک مورد مشابه در ایران) اینه که Routeـی که توسط ایران Advertise شده، Specificتر بوده است و خب در مباحث مربوط به Routing در شبکه، اینهم یکی از دلایلی است که یک مسیر نسبت به یک مسیر اولویت بیشتری پیدا میکند.(برای درک این مورد باید یکم بیشتر با موارد روتینگ و سابنتینگ آشنا باشین که توضیحشون از حوصله این مطلب خارجه...اما بخوایم ساده توضیحش بدیم: فرض کنید که درداخل روتر ما، یک لیستی هستش که برای یک مقصد مسیرهای متفاوتی رو داره... هرمسیری که بیشتر جزئی بشه، اولویت بیشتری نسبت به مسیرهای کلیتر داره)
مثلا ممکنه بگیم که برای رفتن به مقصد 192.168.0.0 باید از این مسیر A برین(فرض کنین 0 به این معنا هستش که بجای 0، هر عدد دیگری بود فرقی نداره)؛ اما اگر میخواید به 192.168.1.0 برین، از مسیر B برین... خب چون Routeـه دوم جزئیتر هستش...وقتی بستهای بخواد به مقصد شبکه مربوط به 196.168.1.0 بره، مسیر B انتخاب میشه.
توی سناریو ماهم به همین صورت بوده و مسیری که تبلیغشده دارای سابنت جزئیتری بوده(سابنت اصلی/17 بوده و سابنت تبلیغشده /24 بوده)و در نتیجه نسبت به ترافیکهای دیگه اولویت داشته.(کل منظور این قسمت این بود که لازم نیست همیشه Metricهارو تغییر بدیم. اینگونه موارد هم میتونه باعث اولویت دادن به مسیر بشه)
سناریوی دیگر
طبق توئیت زیر:
احتمال میرود که رنجآیپی ای که توسط مخابرات Advertiseشده...رنج مربوط به CDNـه تلگرام در ایران بوده که از قبلا در سیستم وجود داشته و در روند تغییر توپولوژی، اشتباها دوباره Advertise شده(و چون دیگر CDNـی درایران که مربوط به تلگرام باشد وجود ندارد، احتمالا این بلوک IP، به یک Locationـه دیگر اختصاص داده شده است... در نتیجه Advertise کردنش توسط ایران، باعث اشتباه و BGP Hijacking میشود)
حالا چی میشه؟
همونطور که میشه تشخیص داد، این عمل یک جرم بینالمللی هستش(چه سهوا چه عمدا) که مسلما جریمههای سنگینی درپی خواهد داشت و درصورت شکایت شرکت Telegram، ممکنه که این موضوع خیلی جدیتر پیگیری بشه. شایعههایی هم شنیده میشه که ممکنه برای جریمه چند روزی اینترنت ایران قطع شه!(که البته درحد همون شایعه هستش...)
ویرایش: گزارش رسمی این واقعه، 13ام مرداد در وبسایت " سازمان تنظیم مقررات و ارتباطات رادیویی " منتشر شد. خوشبختانه تقریبا حدسو گمانهای ما درست بود و حالا میبایستی منتظر باشیم و ببینیم چه عواقبی در انتظار سازمان میباشد.
ویرایش 2: در ادامه این مبحث مقالهای درمورد "امنیت در BGP و جلوگیری از هایجک" در وبلاگ خودم نوشتم که اگر علاقهمند بودید خوشحال میشم مطالعه کنید.لینک مطلب
امیدوارم که این مطلب براتون مفید واقع شده باشه / اگر سوالی براتون پیش اومد، حتما در کامنتها بپرسید.
همچنین این مطلب رو برای دوستان خودتون هم به اشتراک بذارید تا بیشتر متوجه این موضوع بشن.
پایان
مطلبی دیگر از این انتشارات
چگونه CSP را دور بزنیم؟
مطلبی دیگر از این انتشارات
نصب Redis بر روی Centos 6
مطلبی دیگر از این انتشارات
درباره فیلترینگ اینترنت ایران