Публичное и приватное адресное пространство
Публичный IP
192.0.2.10
глобально уникален — маршрутизируется отовсюду
Приватные диапазоны
не маршрутизируются в публичном интернете
Почему частные диапазоны IP никогда не должны разрешаться публично
RFC 1918 выделил три диапазона IPv4 — 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16 — специально для использования внутри частных сетей, именно потому, что публичных адресов IPv4 не хватает, чтобы у каждого устройства в каждой частной сети был глобально уникальный. Эти диапазоны одновременно повторно используются внутри миллионов не связанных между собой сетей по всему миру. Ваш домашний роутер почти наверняка выдаёт адреса 192.168.x.x; так же делает практически любой другой.
Что значит, когда публичный домен разрешается в такой диапазон
Поскольку эти адреса имеют смысл только внутри той локальной сети, которая спрашивает, публичный домен, разрешающийся в один из них, — в лучшем случае ошибка конфигурации, а в худшем — намеренная попытка заставить обращённую к публике систему отправить запрос тому, что оказывается по этому адресу в её собственной внутренней сети. У публичного интернета нет единого представления о том, на что вообще указывает 10.0.0.5: это разная машина в зависимости от того, какая сеть спрашивает.
| Диапазон | Название | Почему блокируется |
|---|---|---|
| 10.0.0.0/8 | Частный (RFC 1918) | Повторно используется внутри миллионов не связанных сетей |
| 172.16.0.0/12 | Частный (RFC 1918) | То же, что выше |
| 192.168.0.0/16 | Частный (RFC 1918) | То же, что выше: распространённый диапазон домашних роутеров |
| 127.0.0.0/8 | Loopback | Указывает обратно на саму запрашивающую машину |
| 169.254.0.0/16 | Link-local | Включает 169.254.169.254, конечную точку облачных метаданных |
| 100.64.0.0/10 | Общее адресное пространство (RFC 6598) | Carrier-grade NAT: часто отсутствует в самодельных списках блокировки |
| 0.0.0.0/8 | Неопределённый | Не является настоящим маршрутизируемым адресом назначения |
| 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 | Диапазоны для документации | Зарезервированы для примеров, никогда не предназначены для рабочего использования |
- У законного публичного домена нет причин когда-либо разрешаться в адрес из частного диапазона: если вы такой видите, считайте это сигналом, который стоит расследовать, а не нормальным результатом.
- В IPv6 есть собственные эквивалентные частные и зарезервированные диапазоны — уникальные локальные адреса (fc00::/7) и link-local (fe80::/10), — которые требуют такого же обращения.
Отфильтровывать эти диапазоны в момент разрешения, а не полагаться на то, что домен, выглядящий публичным, всегда разрешается в публично выглядящий адрес, — базовое ожидание от любого инструмента, который разрешает домены от имени пользователя.
Диапазон, о котором забывает большинство списков блокировки
100.64.0.0/10 — «общее адресное пространство», определённое в RFC 6598 — не пользуется и близко такой известностью, как 10.0.0.0/8 или 192.168.0.0/16, хотя так же немаршрутизируем в публичном интернете. Он существует специально для carrier-grade NAT, позволяя провайдеру адресовать большое число клиентских соединений внутри сети, не расходуя публичное пространство IPv4 на каждое из них. Поскольку он новее и менее известен, чем классические диапазоны RFC 1918, именно его чаще всего не оказывается в самодельном списке блокировки — это именно тот пробел, который обнаруживается только тогда, когда кто-то намеренно направляет домен на адрес внутри него.
«Отказ в безопасную сторону» важен не меньше, чем сам список
Список блокировки хорош лишь настолько, насколько хорошо то, что происходит, когда адрес вообще не удаётся разобрать. Некорректный ввод, необычная запись или значение, которое чётко не соответствует ни одному известному диапазону, никогда не должны по умолчанию считаться «вероятно, нормальными»: безопасное поведение по умолчанию — отклонять всё, что нельзя уверенно классифицировать как публичное, а не отклонять только адреса, которые заведомо совпадают с известным плохим диапазоном. Именно такая установка «отказ в безопасную сторону» (fail closed) делает список блокировки устойчивым к диапазонам, о которых пока никто не подумал, а не только к хорошо известным, уже включённым в него.
Нужно проверить публичные DNS-адреса домена? Воспользуйтесь инструментом Domain IP Lookup.
Бесплатные инструменты по этой теме
Читайте также
SSRF превращает сервер в невольного прокси
Атакующий
готовит URL запроса
Уязвимый сервер
обманут SSRF, запрашивает его
169.254.169.254
эндпоинт метаданных
Учётные данные
возвращаются атакующему
Эндпоинты метаданных в облаке: скрытая поверхность атаки
Один на вид нерутируемый IP-адрес открывает облачным инстансам доступ к учётным данным и конфигурации и часто становится целью SSRF-атак.
Один и тот же адрес — четыре способа записи
SSRF-атаки: как злоумышленники используют DNS
Подделка запросов на стороне сервера часто начинается с обычного доменного имени, которое ваш сервер обманом заставили разрешить и запросить.
Один домен — два разных ответа
Первый запрос
разрешается в публичный IP
Проверка
пройдена — выглядит безопасно
Истекает TTL
через несколько секунд
Второй запрос
разрешается в 127.0.0.1
Что такое DNS rebinding и почему это важно
Домен, который сначала разрешается в безопасный адрес, а затем во внутренний: DNS rebinding превращает сам DNS в поверхность атаки.