Автор выбрал COVID-19 Relief Fund для получения пожертвования в рамках программы Write for DOnations.
BGP (таблица пограничного межсетевого протокола) — один из ключевых протоколов, отвечающих за маршрутизацию пакетов через Интернет, поэтому когда он работает неправильно, могут возникать серьезные перебои с Интернетом. Например, в 2019 году небольшой интернет-провайдер создал неправильную конфигурацию BGP, которая, к сожалению, распространилась на более высокие уровни и вывела большие сегменты Cloudflare и AWS оффлайн более чем на час. Кроме того, годом ранее был осуществлен захват BGP, чтобы перехватить трафик к известному провайдеру криптовалютных кошельков и похитить средства ничего не подозревающих клиентов.
BGPalerter — сетевое средство мониторинга с открытым исходным кодом, которое может предоставлять уведомления в реальном времени об активности BGP, включая видимость маршрутов и новые сообщения о маршрутах, а также потенциально опасную деятельность — например, перехваты маршрутов или утечки маршрутов. BGPalerter автоматически принимает общедоступную информацию о маршрутизации, т.е. ему не нужен какой-либо уровень привилегированного доступа или интеграции с сетью/сетями, которые вы хотите отслеживать.
Примечание: BGPalerter автоматически принимает общедоступную информацию о маршрутизации, т.е. ему не нужен какой-либо уровень привилегированного доступа или интеграции с сетью/сетями, которые вы хотите отслеживать. Весь мониторинг полностью соответствует Закону о компьютерных злоупотреблениях, Закону о мошенничестве с использованием компьютеров и иным аналогичным законам. Тем не менее, рекомендуется ответственно относиться к передаче любой соответствующей информации пострадавшему сетевому оператору.
В этом обучающем руководстве вы установите и настроите BGPalerter для мониторинга ваших важных сетей на предмет потенциально подозрительной деятельности.
Для данного обучающего руководства вам потребуется следующее:
Сервер Ubuntu 18.04, настроенный согласно руководству по первоначальной настройке сервера с Ubuntu 18.04, включая пользователя без прав root с привилегиями sudo.
Одна или несколько сетей и устройств, которые вы хотите отслеживать, например:
Для каждого устройства или сети вам потребуется идентифицировать либо отдельный IP-адрес, диапазон IP-адресов, либо номер автономной системы в этом диапазоне. Эти действия рассматриваются в шаге 1.
Подготовив все вышеперечисленное, войдите на сервер в качестве пользователя без прав root, чтобы начать подготовку.
На этом шаге вы узнаете соответствующие данные о сетях, которые вы хотите отслеживать.
BGPalerter может выполнять мониторинг на основе отдельных IP-адресов или сетевых префиксов. Он также может отслеживать целые сети на основе номера автономной системы — уникального в глобальном масштабе идентификатора сети, принадлежащего конкретному административному объекту.
Для нахождения этой информации вы можете использовать службу пооиска 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, в котором находится ваш сервер. Как правило, это будет AS вашего хостинг-провайдера — например, DigitalOcean.
OutputAS | IP | AS Name
14061 | your-ip-address | DIGITALOCEAN-ASN, US
Далее вы можете выполнить поиск для определения префикса/диапазона сети, в которой находится ваш сервер. Это можно сделать, добавив к запросу аргумент -p
:
- whois -h whois.cymru.com " -p your-ip-address"
Вывод будет очень похож на предыдущую команду, но теперь он будет показывать префикс IP-адреса, к которому относится IP-адрес вашего сервера:
OutputAS | IP | BGP Prefix | AS Name
14061 | your-ip-address | 157.230.80.0/20 | DIGITALOCEAN-ASN, US
В итоге, вы сможете найти дополнительные сведения об AS, в котором находится ваш сервер, включая географический регион и дату распределения.
Подставьте номер AS, который вы определили с помощью предыдущих команд. Вы используете аргумент -v
для активации вывода подробной информации с отображением всех соответствующих данных:
- whois -h whois.cymru.com " -v as14061"
При этом будет показана дополнительная информация об AS:
OutputAS | CC | Registry | Allocated | AS Name
14061 | US | arin | 2012-09-25 | DIGITALOCEAN-ASN, US
Вы определили ключевую информацию о сетях, которые вы хотите отслеживать. Запишите эти данные, т.к. они потребуются вам позднее. Далее вы начнете настройку 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 в своей системе.
На этом шаге вы установите и настроите BGPalerter. Убедитесь, что вы все еще в системе под именем своего нового непривилегированного пользователя.
Сначала вам нужно определить последний выпуск BGPalerter, чтобы убедиться, что вы загружаете актуальную версию. Перейдите на страницу Выпуски BGPalerter и скопируйте ссылки на загрузку самой последней версии 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
В результате будет выведен текущий номер версии:
Output1.24.0
Чтобы корректно запустить BGPalerter, необходимо сначала определить сети, которые вы хотите отслеживать в файле конфигурации. Создайте и откройте файл prefixes.yml
в предпочитаемом текстовом редакторе:
- nano ~/prefixes.yml
В этом файле конфигурации вы укажете каждый пользовательский IP-адрес, диапазоны IP-адресов и номера AS, которые вы хотите отслеживать.
Добавьте следующий пример и измените значения конфигурации, как необходимо, используя сетевую информацию, которую вы определили на шаге 1:
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
для IPvv6.
Значение ignoreMorespecifics
используется, чтобы контролировать, должен ли BGPalerter игнорировать деятельность на маршрутах, более специфичных (меньших) по сравнению с тем, который вы отслеживаете. Например, если вы отслеживаете /20
, и изменение маршрутизации обнаружено в нем для /24
, то это считается более специфичным маршрутом. В большинстве случаев их не нужно игнорировать, но если вы отслеживаете большую сеть с несколькими префиксами делегированных пользователей, то это может снизить фоновый шум.
Теперь вы можете запустить BGPalerter в первый раз, чтобы начать отслеживать свои сети:
- ./bgpalerter-linux-x64
Если BGPalerter запущен успешно, то вы увидите примерно следующий результат. Обратите внимание, что запуск мониторинга может занять несколько минут:
OutputImpossible 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.
На этом шаге вы рассмотрите несколько типовых предупреждений BGPalerter. BGPalerter будет выдавать предупреждения в основном потоке выдачи, а также, опционально, в любые дополнительные конечные точки отчетности, которые можно настроить в файле config.yml
, как указано в документации BGPalerter.
По умолчанию BGPalerter отслеживает и предупреждает о следующем:
Route hijacks: выдается в случае, когда AS объявляет запрещенный префикс, вызывая ошибочную маршрутизацию трафика. Это может быть либо преднамеренным нападением, либо случайной ошибки в конфигурации.
Потеря видимости маршрута: маршрут считается видимым, когда большинство маршрутизаторов BGP в Интернете может надежно создавать маршруты к нему. Потеря видимости указывает на потенциальную недоступность вашей сети — например, если ваш BGP peering прекращает работать.
Новые объявления субпрефиксов заключаются в том, что AS начинает объявлять префикс, который меньше ожидаемого. Это может свидетельствовать об изменении целевой конфигурации, случайной ошибочной конфигурации или, в некоторых случаях — о нападении.
Деятельность в рамках вашего AS: обычно используется для новых сообщений о маршрутах. Трафик считается «новым», если BGPalerter еще не знает о нем.
Ниже представлены некоторые примеры предупреждений, а также краткое описание их значения:
The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540
Это предупреждение свидетельствует о захвате маршрута, т.к. AS64496 объявил 203.013.0/24
, хотя ожидается, что этот маршрут будет объявлен AS65540. Это надежный показатель ошибочной конфигурации, приводящей к утечке маршрута, либо преднамеренного захвата злоумышленником.
The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers
Это предупреждение говорит о том, что сеть 203.013.0/24
стала невидимой. Это может быть связано с проблемой исходящей маршрутизации, либо произошел сбой питания маршрутизатора.
A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 announced by AS64496
Это предупреждение показывает, что был объявлен более специфичный префикс там, где это не ожидалось — например, /25
, когда ожидалось только /24
. Скорее всего, это ошибочная конфигурация, но в некоторых случаях это может свидетельствовать о захвате маршрута.
AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of announced prefixes
Помимо этого, данное предупреждение показывает, что AS64496 объявил префикс, который BGPalerter еще не знает. Это может быть связано с тем, что вы обоснованно объявляете новый префикс, или может говорить об ошибочной конфигурации, из-за которой вы случайно объявили чужой префикс.
На этом шаге вы рассмотрели несколько примеров предупреждений BGPalerter. Далее вы настроите BGPalerter для автоматического запуска во время начальной загрузки.
На этом последнем шаге вы настроите BGPalerter для запуска во время начальной загрузки.
Убедитесь, что вы все еще в системе под именем нового непривилегированного пользователя, затем откройте crontab:
- crontab -e
Добавьте следующую строку внизу файла crontab:
@reboot sleep 10; screen -dmS bgpalerter "./bgpalerter-linux-x64"
При каждой загрузке системы будет создаваться отдельная экранная
сессия с именем bgpalerter, в которой будет запускаться BGPalerter.
Сохраните изменения и закройте редактор crontab. Теперь можно перезагрузить систему, чтобы убедиться, что BGPalerter корректно запускается во время начальной загрузки.
Сначала нужно выйти из вашего пользователя BGPalerter:
- logout
Затем перезагрузите систему, как обычно:
- sudo reboot
После перезагрузки системы снова войдите на сервер и при помощи su
еще раз получите доступ к вашему пользователю BGPalerter:
- sudo su bgpalerter
Затем можно в любой момент присоединиться к сессии для просмотра вывода BGPalerter:
- screen -r bgpalerter
На этом последнем шаге вы настроили BGPalerter для запуска во время начальной загрузки.
В этой статье вы настроили BGPalerter и использовали его для отслеживания сетей с целью внесения изменений в маршрутизацию BGP.
Если хотите сделать BGPalerter более удобным для пользователя, то можно настроить его для отправки предупреждений через канал Slack посредством веб-хука:
Если хотите узнать больше о самой системе BGP, но у нас нет доступа к производственной среде BGP, то вам может пригодиться DN42 для экспериментов с BGP в безопасной изолированной среде:
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.