BGP protocol Border Gateway يكي از پروتكل هاي اصلي مسئول مسيريابي بسته ها از طريق اينترنت است ، بنابراين هنگامي كه اشتباه پيش برود ، ممكن است قطعي هاي قابل توجهي رخ دهد. به عنوان مثال ، در سال 2019 ، يك ISP كوچك يك پيكربندي غلط BGP ايجاد كرد كه متأسفانه در بالادست منتشر شد و بخش هاي بزرگي از Cloudflare و AWS را بصورت آفلاين بيش از يك ساعت در اختيار گرفت. همچنين ، يك سال قبل ، يك BGP به منظور رهگيري ترافيك يك ارائه دهنده مشهور كيف پول ارز رمزي ربوده شد و وجوه مشتريان مورد سرقت قرار گرفت.
BGPalerter ابزاري منبع باز براي نظارت بر شبكه BGP است كه مي تواند هشدارهايي را در مورد فعاليت BGP در زمان واقعي ارائه دهد ، از جمله قابليت مشاهده مسير و اعلام مسير جديد و همچنين فعاليت هاي بالقوه نامناسب مانند ربودن مسير يا وجود نشتي اطلاعات در مسير.
توجه: BGPalerter به طور خودكار اطلاعات مسيريابي شبكه را در دسترس عموم قرار مي دهد ، به اين معني كه ديگر نيازي به سطح دسترسي ممتاز يا ادغام شبكه (هايي) كه مايل به نظارت آن هستيد نميباشد. كليه نظارت ها كاملاً مطابق با قانون سوءاستفاده رايانه اي ، قانون كلاهبرداري كامپيوتري و ساير قوانين مشابه است. با اين حال ، توصيه مي شود هرگونه يافته مرتبط با اپراتور شبكه آسيب ديده را افشا كنيد.

در اين آموزش ،BGPalerter را نصب و پيكربندي مي كنيد تا شبكه هاي مهم خود را براي فعاليت هاي مشكوك پايش كنيد.
پيش نيازها
براي تكميل اين آموزش ، به موارد زير نياز داريد:
سرور مجازي Ubuntu 18.04 كه طبق راهنماي ستاپ اوليه سرور مجازي با اوبونتو 18.04 راه اندازي، و شامل يك كاربر غير ريشه sudo باشد.
يك يا چند شبكه يا دستگاهي كه مايل به نظارت بر آن هستيد، به عنوان مثال:
سرور مجازي كه نگهداري مي كنيد
o شبكه شركت تان
o ISP محلي تان
براي هر دستگاه يا شبكه بايد آدرس IP شخصي ، محدوده آدرس IP يا شماره سيستم خودمختاري را كه بخشي از آن است شناسايي كنيد. اين قسمت در مرحله 1 پوشانده شده است.
پس از آماده شدن ، به عنوان كاربر غير ريشه خود وارد سرور مجازي شويد.
مرحله 1 – شناسايي شبكه ها براي نظارت
در اين مرحله جزئيات مربوط به شبكه هايي كه مي خواهيد نظارت كنيد را مشخص مي كنيد.
BGPalerter مي تواند بر اساس آدرسهاي IP يا پيشوندهاي شبكه نظارت كند. همچنين مي تواند براساس شماره سيستم خودمختار (AS) ، كه يك شناساگر جهاني منحصر به فرد براي شبكه متعلق به يك نهاد اداري خاص است ، كل شبكه ها را رصد كند.
براي يافتن اين اطلاعات ، مي توانيد از سرويس جستجوي IP-to-ASN WHOIS ارائه شده توسط سرويس هوشمند تهديد Team Cymru استفاده كنيد. درواقع يك سرور WHOIS سفارشي است كه به دنبال جستجوي آدرس IP و اطلاعات مسيريابي شبكه است.
اگر قبلاً whois  را نصب نكرده ايد ، مي توانيد آن را با استفاده از دستورات زير نصب كنيد:
$ sudo apt update

$ sudo apt install whois

پس از تأييد اينكه Whois نصب شده است ، با انجام جستجوي آدرس IP سرور مجازي خود ، با استفاده از آرگومان -h براي تعيين سرور مجازي اختصاصي ، شروع به كار كنيد:
$ whois -h whois.cymru.com your-ip-address

با اين كار نتيجه اي مشابه زير حاصل مي شود ، كه نام و شماره AS را نشان مي دهد كه سرور مجازي شما بخشي از آن است. اين معمولاً به عنوان ارائه دهنده ميزبان سرور مجازي شما خواهد بود.
Output
AS | IP | AS Name
14061 | your-ip-address | vpsgol-ASN, US

در مرحله بعد ، مي توانيد براي شناسايي پيشوند / گستره شبكه اي كه سرور مجازي شما بخشي از آن است ، يك جستجو انجام دهيد. اين كار را با اضافه كردن آرگومان -p به درخواست خود انجام مي دهيد:
$ whois -h whois.cymru.com ” -p your-ip-address”

خروجي بسيار شبيه به دستور قبلي خواهد بود ، اما پيشوند آدرس IP را كه آدرس IP سرور مجازي شما به آن تعلق دارد نشان مي دهد:
utput
AS | IP | BGP Prefix | AS Name
14061 | your-ip-address | 157.230.80.0/20 | vpsgol-ASN, US

در آخر ، مي توانيد جزئيات بيشتري از AS را كه سرور مجازي شما بخشي از آن است ، جستجو كنيد ، از جمله منطقه جغرافيايي و تاريخ تخصيص.
در شماره AS كه با استفاده از دستورات قبلي مشخص كرده ايد جايگزين كنيد. شما از آرگومان -v براي فعال كردن خروجي طويل استفاده مي كنيد ، كه تضمين مي كند تمام جزئيات مربوطه نشان داده شده اند:
$ whois -h whois.cymru.com ” -v as14061″

خروجي اطلاعات بيشتري در مورد AS نشان مي دهد:
Output
AS | CC | Registry | Allocated | AS Name
14061 | US | arin | 2012-09-25 | vpsgol-ASN, US

شما جزئيات اصلي در مورد شبكه (هاي) را كه مي خواهيد نظارت كنيد شناسايي كرده ايد. يادداشتي از اين جزئيات را در جايي نگه داريد ، زيرا بعداً به آنها احتياج داريد. در مرحله بعد ، تنظيم BGPalerter را شروع مي كنيد.
مرحله 2 – ايجاد يك كاربر بدون امتيازت براي BGPalerter
در اين مرحله ، يك حساب كاربري جديد بدون امتيازات براي BGPalerter ايجاد خواهيد كرد ، زيرا اين برنامه نيازي به اجراي امتيازات sudo / root ندارد.
در مرحله اول ، يك كاربر جديد با رمز عبور غيرفعال ايجاد كنيد:
$ sudo adduser –disabled-password bgpalerter

نيازي به تنظيم گذرواژه يا كليدهاي SSH نيست ، زيرا از اين كاربر فقط به عنوان يك حساب كاربري براي اجرا / نگهداري BGPalerter استفاده خواهيد كرد.
با استفاده از su به كاربر جديد سوييچ كنيد:
$ sudo su bgpalerter

اكنون به عنوان كاربر جديد وارد سيستم مي شويد:
bgpalerter@droplet:/home/user$
براي رفتن به ديركتوري اصلي كاربر جديد خود از دستور cd استفاده كنيد:
bgpalerter@droplet:/home/user$ cd
bgpalerter@droplet:~$

يك كاربر جديد بدون امتيازت براي BGPalerter ايجاد كرده ايد. در مرحله بعد ، BGPalerter را روي سيستم خود نصب و پيكربندي خواهيد كرد.
مرحله 3 – نصب و پيكربندي BGPalerter
در اين مرحله BGPalerter را نصب و پيكربندي مي كنيد. اطمينان حاصل كنيد كه هنوز به عنوان كاربر جديد بدون امتيازات خود وارد سيستم شده ايد.
در مرحله اول ، براي اطمينان از دانلود جديدترين نسخه ، بايد آخرين نسخه BGPalerter را شناسايي كنيد. به صفحه BGPalerter Releases برويد و يك كپي از لينك دانلود براي جديدترين نسخه Linux x64 بگيريد.
اكنون مي توانيد يك كپي از BGPalerter را با استفاده از wget دانلود كنيد ، مطمئن شويد كه در لينك دانلود صحيح جايگزين مي كنيد:
$ wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64

پس از اتمام دانلود فايل ، آن را به عنوان قابل اجرا علامت گذاري كنيد:
$ chmod +x bgpalerter-linux-x64

در مرحله بعد ، با بررسي شماره نسخه ، بررسي كنيد كه BGPalerter دانلود و نصب شده است:
$ ./bgpalerter-linux-x64 –version

شماره نسخه فعلي را به خروجي مي فرستد:
Output
1.24.0

قبل از اجراي صحيح BGPalerter ، بايد شبكه هايي را كه مي خواهيد نظارت كنيد را در يك فايل پيكربندي مشخص كنيد. فايل prefixes.yml را در ويرايشگر متن مورد علاقه خود ايجاد و باز كنيد:
$ nano ~/prefixes.yml

در اين فايل پيكربندي ، هر يك از آدرس هاي IP اختصاصي ، محدوده آدرس IP و شماره AS را كه مي خواهيد نظارت كنيد تعيين مي كنيد.
مثال زير را اضافه كنيد و مقادير پيكربندي را مطابق نياز با استفاده از اطلاعات شبكه اي كه در مرحله 1 مشخص كرده ايد تنظيم كنيد:
~/prefixes.yml
your-ip-address/32:
description: My Server
asn:
– 14061
ignoreMorespecifics: false

157.230.80.0/20:
description: IP range for my Server
asn:
– 14061
ignoreMorespecifics: false

options:
monitorASns:
‘14061’:
group: default

شما مي توانيد بسياري از محدوده هاي آدرس IP يا شماره AS را به صورت مورد نظر خود نظارت كنيد. براي نظارت بر آدرسهاي IP اختصاصي ، آنها را با استفاده از / 32 براي IPv4 و / 128 براي IPv6 نمايش دهيد.
مقدار injoreMorespecifics براي اين استفاده ميشود كه كنترل كند آيا BGPalerter بايد فعاليت را براي مسيرهايي كه خاص تر (كوچكتر) از مسيري كه مشاهده مي كنيد ، هستند ناديده بگيرد يا خير. به عنوان مثال ، اگر شما يك / 20 را رصد مي كنيد و يك تغيير مسير براي يك / 24 در داخل آن تشخيص داده مي شود ، به نظر مي رسد خاص تر باشد. در بيشتر موارد ، نبايد اين موارد را ناديده بگيريد ، اما اگر در حال نظارت بر شبكه بزرگي با پيشوندهاي مشتري نماينده متعدد هستيد ، اين كار ممكن است به كاهش نويز پس زمينه كمك كند.
اكنون مي توانيد براي اولين بار BGPalerter را براي شروع نظارت بر شبكه هاي خود اجرا كنيد:
$ ./bgpalerter-linux-x64

اگر BGPalerter با موفقيت شروع شود ، خروجي مشابه زير را مشاهده خواهيد كرد. توجه داشته باشيد كه بعضي اوقات ممكن است چند دقيقه طول بكشد تا مانيتورينگ شروع شود:
Output
Impossible to load config.yml. A default configuration file has been generated.
BGPalerter, version: 1.24.0 environment: production
Loaded config: /home/bgpalerter/config.yml
Monitoring 157.230.80.0/20
Monitoring your-ip-address/32
Monitoring AS 14061

BGPalerter تا زماني كه با استفاده از Ctrl + C آن را متوقف كنيد ، ادامه خواهد يافت.
در مرحله بعد برخي از هشدارهايي را كه BGPalerter مي تواند ايجاد كند ، تفسير مي كنيد.
مرحله 4 – تفسير هشدارهاي BGPalerter
در اين مرحله ، چند نمونه از هشدارهاي BGPalerter را مرور مي كنيد. BGPalerter هشدارهايي را به عنوان منبع اصلي خروجي و همچنين به صورت اختياري براي هر نقطه انتهايي گزارش اضافي ارسال مي كند كه مي تواند در config.yml پيكربندي شود ، همانطور كه در مستندات BGPalerter شرح داده شده است.
به طور پيش فرض ، BGPalerter در مورد موارد زير هشدار مي دهد:
ربوده شدن مسير: هنگامي اتفاق مي افتد كه AS پيشوندي را كه مجاز به آن نيست اعلام كند و باعث مي شود ترافيك به اشتباه هدايت شود. اين مسئله مي تواند يك حمله عمدي باشد يا يك خطاي پيكربندي تصادفي.
از دست رفتن ديد در مسير: وقتي اكثر روترهاي BGP در اينترنت قادر به مسيريابي با اطمينان هستند ، يك مسير قابل مشاهده است. از دست دادن ديد به عدم امكان دسترسي شبكه شما مربوط مي شود ، به عنوان مثال اگر همتاي BGP شما متوقف شده باشد.
اطلاعيه هاي زير پيشوند جديد: زماني اتفاق ميافتد كه AS شروع به اعلام پيشوند مي كند كه از آنچه پيش بيني مي شود كوچكتر باشد. اين مي تواند حاكي از تغيير پيكربندي عمدي ، پيكربندي غلط تصادفي يا در برخي موارد نشانگر حمله باشد.
فعاليت در AS: معمولاً به اطلاعيه هاي جديد مسير اشاره مي كند. اگر BGPalerter هنوز از آن آگاهي نداشته باشد ، به صورت “new” در نظر گرفته مي شود.
در زير برخي از هشدارهاي مثال ، همراه با توضيحي كوتاه از معناي آنها آمده است:
Alert #1
The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540

اين هشدار شواهدي از ربودن مسير را نشان مي دهد ، جايي كه جايي كه AS64496 ، 203.0.113.0/24 را اعلام كرده است ولي پيش بيني مي شود اين مسير توسط AS65540اعلام شود. اين يك نشانگر قوي از تنظيم نادرست منجر به نشت مسير يا ربوده شدن عمدي توسط يك مهاجم ميباشد.
Alert #2
The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers

اين هشدار نشان مي دهد كه شبكه 203.0.113.0/24 ديگر قابل مشاهده نيست. كه ممكن است به دليل يك مشكل مسيريابي در بالادست باشد يا يك روتر دچار نقص برق شده باشد.
Alert #3
A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 annou

اين هشدار نشان مي دهد كه پيشوند خاص تري در جايي كه پيش بيني نشده است اعلام شده است ، براي مثال با اعلام يك / 25 هنگامي كه فقط يك / 24 انتظار مي رود. به احتمال زياد يك پيكربندي نادرست است ، اما در برخي موارد مي تواند شواهدي از ربودن مسير باشد.
Alert #4
AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of

در نهايت ، اين هشدار نشان مي دهد كه AS64496 پيشوندي را اعلام كرده است كه BGPalerter هنوز از آن چيزي نمي داند. اين امر مي تواند به اين دليل باشد كه شما به طور قانوني پيشوند جديد را اعلام مي كنيد ، يا مي تواند نشان دهنده پيكربندي غلط باشد و منجر به اين شود كه به طور اتفاقي پيشوند متعلق به شخص ديگري را اعلام كنيد.
در اين مرحله ، شما چندين نمونه از هشدارهاي BGPalerter را مرور كرديد. در مرحله بعد ، BGPalerter را پيكربندي مي كنيد تا به طور خودكار در بوت اجرا شود.
مرحله 5 – شروع BGPalerter در Boot
در اين مرحله آخر ، BGPalerter را پيكربندي مي كنيد تا در بوت اجرا شود.
اطمينان حاصل كنيد كه هنوز به عنوان كاربر جديد بدون امتيازت در سيستم هستيد و سپس ويرايشگر crontab را باز كنيد:
$ crontab -e

در مرحله بعد ، ورودي زير را در انتهاي فايل crontab اضافه كنيد:
crontab
@reboot sleep 10; screen -dmS bgpalerter “./bgpalerter-linux-x64”

هر بار كه سيستم شما بوت مي شود ، يك بخش screen جداشده با نام “bgpalerter” ايجاد مي كند و BGPalerter را در داخل آن شروع مي كنيد.
ويرايشگر crontab را ذخيره كرده و از آن خارج شويد. اكنون مي توانيد سيستم خود را ريبوت كنيد تا مطمئن شويد كه BGPalerter به درستي از بوت شروع مي شود.
ابتدا بايد از كاربر BGPalerter خود خارج شويد:
$ logout

سپس با ريبوت عادي سيستم ادامه دهيد:
$ sudo reboot

پس از ريبوت سيستم ، دوباره به سرور مجازي خود وارد شويد و براي دسترسي دوباره به كاربر BGPalerter خود ، از su استفاده كنيد:
$ sudo su bgpalerter

سپس مي توانيد در هر زمان به بخش وصل شويد تا خروجي BGPalerter را مشاهده كنيد:

$ screen -r bgpalerter

در اين مرحله آخر ، شما BGPalerter را پيكربندي كرده ايد تا در بوت اجرا شود.
نتيجه
در اين مقاله BGPalerter را تنظيم كرده ايد و از آن براي نظارت بر شبكه براي تغييرات مسيريابي BGP استفاده مي كنيد.
اگر مي خواهيد BGPalerter كاربر پسندتر شود ، مي توانيد آن را براي ارسال هشدار به كانال Slack از طريق يك webhook پيكربندي كنيد:
Configure Slack Reporting for BGPalerter
اگر مي خواهيد در مورد خود BGP اطلاعات بيشتري كسب كنيد ، اما به يك محيط توليد BGP دسترسي نداريد ، ميتوانيد از DN42 براي آزمايش BGP در يك محيط امن و منزوي بهره ببريد:
Decentralized Network 42