Loading...

Безопасность · 8 мин чтения

Блокировка по ASN и стране: отрезаем сеть, а не адрес

Блокировка одного IP-адреса останавливает одну машину — но лишь до тех пор, пока за ней сохраняется этот адрес. Большая часть трафика, который стоит блокировать, работает не так: скрапер арендует новый адрес в тот же момент, когда вы заблокировали старый, — но арендует он его у того же провайдера, а провайдер — это один-единственный номер. В этом руководстве — что такое ASN, как найти нужный за конкретным запросом, когда блокировка страны — лучший ответ, и как настроить оба списка на cdn.com.tr, не заблокировав реальных клиентов.

Обновлено

Блокировка по ASN и стране: отрезаем сеть, а не адрес

Что такое ASN на самом деле

Интернет — это не одна сеть. Это десятки тысяч сетей, и каждой управляет кто-то, кто решает, как трафик входит и выходит. У каждой такой сети есть номер — её Autonomous System Number, — и в любой момент времени каждый публичный IP-адрес принадлежит ровно одной из них.

Именно этот номер и есть полезная единица. Хостинг-компания может держать сотни тысяч адресов, разбросанных по диапазонам, которые выглядят никак не связанными друг с другом, но все они сидят под одним ASN или горсткой таких. Мобильный оператор делает то же самое для своих абонентов. Поэтому когда вы спрашиваете «откуда на самом деле этот запрос», адрес говорит вам, какая машина, а ASN — какая организация поставила эту машину в интернет.

В этом различии — вся ценность. Недобросовестный клиент может тривиально сменить адрес — это одна кнопка в консоли облака, и ваш тщательно составленный список IP устареет в течение часа. А сменить ASN означает сменить поставщика.

Как найти сеть за конкретным запросом

Вы начинаете с адреса в логах и превращаете его в сеть. Быстрее всего — один запрос whois.

Один адрес, один запрос, одна сеть

# whois-сервис Team Cymru: адрес -> ASN, имя сети, страна
whois -h whois.cymru.com " -v 203.0.113.10"

Как прочитать ответ, прежде чем действовать

Запрос выдаёт вам ASN, организацию, которой он принадлежит, и страну регистрации. bgp.he.net показывает ту же информацию в браузере, плюс все диапазоны, которые эта сеть анонсирует, — на это стоит взглянуть прежде чем что-то блокировать: если организация — крупный провайдер для населения, размер её адресного пространства сразу же это выдаёт.

Делайте запрос по нескольким адресам, а не по одному. Закономерность считается закономерностью только тогда, когда один и тот же ASN повторяется снова и снова. Если пятьдесят подозрительных адресов относятся к пятидесяти разным сетям, перед вами не провайдер, которого можно заблокировать, — перед вами ботнет, и rate limit или правило WAF послужат вам куда лучше любого списка.

Смотрите и на то, что именно запрашивает трафик. Одна сеть, каждую ночь вытягивающая весь ваш каталог товаров, — это скрапер. Та же сеть, запрашивающая по одному URL на клиента, — это чья-то интеграция, и её блокировка обернётся звонком в поддержку, а не тихим улучшением.

IP, ASN, страна: три разных вопроса

Это не три уровня силы одного инструмента. Это ответы на разные вопросы, и выбор не того приводит к тому, что блокировка обходится дороже, чем сама проблема.

Блокировка IP отвечает на вопрос «именно эта машина — проблема». Она точна и по природе временна: используйте её для конкретного недобросовестного хоста, атаки в процессе или пока вы ещё разбираетесь, в чём закономерность.

Блокировка ASN отвечает на вопрос «ничего легитимного из этой сети до меня не доходит». Это часто верно для хостинг- и облачных провайдеров — ваши клиенты заходят с провайдеров и мобильных операторов, а скраперы, сканеры уязвимостей и скрипты подбора учётных данных работают на арендованных серверах. Блокировка сети переживёт смену их адресов — то, чего не может блокировка IP.

Блокировка страны отвечает на вопрос «мы не обслуживаем этот рынок». Это самая грубая из трёх и единственная, что выражает бизнес-правило, а не техническое наблюдение: магазин, который доставляет только в две страны, сервис по лицензии, ограниченной одной страной. Как самостоятельная мера безопасности она слаба, потому что атакующий переходит на сервер где-то ещё за секунды, а реальный клиент в поездке за границей — нет.

Правило, которое работает: блокируйте страну по бизнес-причинам, блокируйте ASN по поведенческим, блокируйте IP, пока ещё выбираете между первым и вторым.

Что edge делает со списком

Оба списка применяются на edge, и именно поэтому они дёшевы. Edge определяет страну и ASN адреса посетителя по локальной базе — MaxMind GeoLite2, которая автоматически обновляется на наших edge-узлах, поэтому в пути запроса нет никакого сетевого запроса и вам нечего поддерживать в актуальном состоянии.

Если адрес совпадает со списком, запрос тут же получает фирменную страницу 403 с Reference ID. Ваш источник вообще не видит это соединение: ни занятого воркера, ни запроса к базе данных, ни трафика с вашего сервера. В этом разница между блокировкой на edge и блокировкой внутри приложения, и именно поэтому блокировка держится ровно тогда, когда это важнее всего — под нагрузкой.

Reference ID значит больше, чем кажется. Когда кто-то говорит вам, что не может достучаться до вашего сайта, этот ID — способ найти его точный запрос в логах и ответить «ваша сеть в блок-листе» вместо того, чтобы гадать целый день.

Настройка в панели

Откройте Delivery rules → Security presets в панели — /management/cdn/advanced-management. Там рядом расположены два менеджера: Country Blacklist Manager и ASN Blacklist Manager.

Для страны выберите её из списка и сохраните. Для сети введите ASN обычным числом: 12735, а не AS12735; несколько сетей перечисляются через запятую в одном списке (12735, 47331). Список вмещает до 200 записей, а 0 намеренно отклоняется — см. оговорки ниже.

Затем проверьте с чего-то, что действительно приходит из заблокированной сети, а не с вашего собственного соединения: хост внутри этого облака, прокси или коллега на этом операторе. Правильный результат — фирменная страница 403 оттуда и обычный 200 отовсюду ещё. Блокировка достаточно незаметна, чтобы обмануть вас мыслью, будто она не сработала, потому что ваш собственный запрос почти никогда не идёт из только что заблокированной сети.

То же самое через API

Оба списка доступны через REST API с bearer-токеном — это то, что вам нужно, если вы храните их в системе контроля версий или подключаете к собственному обнаружению злоупотреблений. Вызов обновления устанавливает список ровно таким, каким вы его отправили, поэтому сначала прочитайте текущий список и отправляйте полный список, а не только добавление.

Прочитайте текущий список, затем замените его

# что сейчас в списке
curl -s -H "Authorization: Bearer $TOKEN" \
  https://cdn.com.tr/api/accounts/<account-uuid>/asn_blacklist

# заменить список ровно этими двумя сетями
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"listType":"blacklist","asns":[12735,47331]}' \
  https://cdn.com.tr/api/accounts/<account-uuid>/asn_blacklist_update

Оговорки, которые решают, хорошая ли это идея

Провайдеры для населения и мобильные операторы — это миллионы людей. ASN одного мобильного оператора может покрывать значительную долю телефонов целой страны. Блокируя его, вы блокируете не атакующего, а целый сегмент рынка, и в тикетах поддержки слово ASN не прозвучит ни разу.

CDN, VPN и корпоративные прокси скрывают настоящий источник. Когда запрос приходит через другой CDN или VPN, ASN, который вы видите, принадлежит этому посреднику. Блокируя его, вы отсекаете всех, кто пользуется этим сервисом, включая заботящихся о приватности клиентов и удалённых сотрудников на корпоративном VPN.

Хостинговые ASN несут и нужный вам трафик. Вебхуки платёжных систем, мониторинг доступности, превью ссылок из мессенджеров, интеграции партнёров и краулеры поисковых систем — всё это работает на арендованных серверах. Прежде чем блокировать облачного провайдера целиком, выясните, какие из ваших собственных интеграций там живут.

ASN 0 заблокировать нельзя. Это то, что база возвращает, когда адрес не относится ни к одной известной сети, — то есть это вообще не сеть. Блокировка ASN 0 означала бы блокировку «всего, что мы не смогли определить». Трафик, который сводится к нему, нужно обрабатывать по поведению — rate limit или правилом WAF, а не списком.

Сети переходят из рук в руки. ASN — не постоянное описание того, кто за ним стоит. Список, который никто не проверял два года, — это список, который вы уже не понимаете.

Разумный порядок эскалации

Когда обнаруживается что-то недобросовестное, тянитесь к самой дешёвой мере, которая соответствует форме проблемы, — и сначала честно опишите эту форму: сколько адресов, сколько сетей, с какой скоростью и что именно они запрашивают.

Это описание и выбирает инструмент. Много запросов от немногих клиентов — это rate limit. Вредоносные на вид запросы, пусть даже немногочисленные, — это правило WAF. Огромный объём отовсюду одновременно — это поглощение DDoS. Только устойчивый, целенаправленный трафик из одной опознаваемой сети — повод для блокировки ASN, а рынок, который вы решили не обслуживать, — повод для блокировки страны.

Затем сделайте блокировку максимально узкой из тех, что работают, запишите, зачем вы её добавили, и через неделю посмотрите, во что она вам обошлась. Запись без указанной причины — та самая, которую никто не решится убрать и через два года, и в каждом блок-листе такие рано или поздно накапливаются.

Частые вопросы

Как найти ASN IP-адреса?

Отправьте запрос с адресом в whois-сервис Team Cymru или посмотрите его на bgp.he.net в браузере. Оба способа дают ASN, организацию, которой он принадлежит, и анонсируемые ею диапазоны. Проверяйте несколько адресов, а не один — единичный запрос говорит вам, где находится одна машина, но не о том, есть ли закономерность, которую стоит блокировать.

Хорошая ли это защита — блокировать страну?

Сама по себе — нет. Она выражает бизнес-правило — мы не обслуживаем этот рынок — и с этим справляется хорошо. Как защита она слаба: атакующий арендует сервер там, откуда вы разрешаете доступ, и возвращается за минуты, а ваш клиент в отпуске оказывается заблокирован и не может ничего объяснить.

Остановит ли блокировка ASN упорного атакующего?

Она поднимает цену атаки, а не устраняет проблему полностью. Против скраперов, сканеров и скриптов подбора учётных данных, работающих на дешёвых арендованных серверах, она очень эффективна, потому что смена адреса означает поиск нового провайдера. Против ботнета на домашних подключениях она бесполезна — такие запросы приходят из тысяч обычных провайдеров, и различить их можно только по поведению.

Что на самом деле видит заблокированный посетитель?

Фирменную страницу 403 с Reference ID, отданную edge. Это не таймаут и не ошибка браузера, поэтому тот, кого заблокировали по ошибке, может точно рассказать, что он увидел, а Reference ID приведёт вас прямиком к его запросу в логах.

Можно ли заблокировать неизвестные сети или ASN 0?

Нет. ASN 0 — это то, что база сообщает, когда адрес не принадлежит ни одной известной ей сети, то есть это не организация, которую можно заблокировать, а пробел в данных. Запросы, которые попадают туда, — задача для rate limiting или правила WAF, которые оценивают, что делает клиент, а не откуда он пришёл.

Могу ли я случайно заблокировать Google или своего платёжного провайдера?

Да, и это самый распространённый способ, которым список ASN наносит вред. Краулеры, мониторинг доступности, вебхуки платёжных систем и превью ссылок из мессенджеров — всё это приходит из облачных сетей. Прежде чем блокировать хостинг-провайдера, проверьте, какие из ваших собственных интеграций там работают, а после сохранения следите, не перестала ли какая-то интеграция тихо вызывать вас.