Немаршрутизируемые в Интернет адреса (bogon networks) и безопасность
После прочтения заметки о даркнетах , у многих, наверное, возник вопрос: а какие именно IP-адреса не должны маршрутизироваться в Интернет и почему? И немалая часть публики, естественно, может ответить на этот вопрос, не задумываясь, но я, на всякий случай, перечислю список наиболее статичных диапазонов, которые IETF предписывает не использовать в глобальной сети Интернет. Зарезервированные диапазоны также называются Bogon/bogus networks. Официальный перечень описан в RFC6890 , RFC5735 и некоторых других. Также по ссылкам (english) доступны описание и перечень bogon подсетей от Team Cymru.
Диапазон описан в RFC1122 , RFC3330 и RFC1700 как «Этот хост в этой сети» (this host on this network), хотя, учитывая варианты применения, правильнее было бы назвать его как «любой адрес». В частности, IP-адрес 0.0.0.0 используется для:
— обозначения в конфигурационных файлах серверов и выводе netstat информации о том, что определенный сервис «слушает» запросы на всех IP-адресах данного сервера;
— конфигурации маршрута по умолчанию на активном сетевом оборудовании;
— использования в качестве src address в запросах на получение IP-адреса (DHCPDISCOVER);
— обозначения IP-адреса в суммаризованных событиях безопасности IDS/IPS/WAF/etc (например, TCP Host Sweep — обозначение dst host в случае инициации коннектов к большому количеству IP-адресов).
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Три вышеописанных диапазона не маршрутизируются в Интернет, поскольку зарезервированы под организацию локальных сетей ИТ-инфраструктуры компаний. Описаны изначально в RFC1918 . При этом любая организация вправе использовать любой из вышеописанных диапазонов для IP-адресного плана либо все вместе на свое усмотрение. Для взаимодействия с внешними ресурсами и партнерами во избежание пересечения адресного пространства должен использоваться NAT.
100.64.0.0/10
В соответствии с RFC6598 , используется как транслируемый блок адресов для межпровайдерских взаимодействий и Carrier Grade NAT. Особенно полезен как общее свободное адресное IPv4-пространство RFC1918, необходимое для интеграции ресурсов провайдеров, а также для выделения немаршрутизируемых адресов абонентам. Конечно, в последнем случае никто не мешает использовать RFC1918 — на откуп сетевым архитекторам.
127.0.0.0/8
В случае, если сервису необходим для работы функционирующий сетевой стек, который не будет давать сбоев при отключении от сети, используются loopback-адреса. Выделение 127.0.0.0/8 под внутренние loopback-адреса определено в RFC1122 . В отличие от адресов RFC1918 и RFC6598, адреса для loopback не должны присутствовать и обрабатываться ни в одной сети, только во внутренней таблице маршрутизации хоста.
169.254.0.0/16
В соответствии с RFC3927 , определен как Link-Local для автоматической конфигурации. Думаю, каждый человек хоть раз в жизни, но успел столкнуться с ситуацией, когда ПК, не получив IP-адрес от DHCP-сервера, присваивает сам себе непонятный и нигде не прописанный ранее IP, начинающийся на 169.254. Это и есть реализация рекомендаций из RFC3927.
192.0.0.0/24
Блок не встречается в повседневной жизни, поскольку зарезервирован под IANA для нужд IETF в соответствии с RFC6890 .
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
Эти три подсети, в соответствии с RFC5737 , зарезервированы для описания в документах. Многие, думаю, сталкивались с ситуацией, когда для статьи в журнале либо презентации на конференции нужно показать некоторое адресное пространство, которое, с одной стороны, не должно ассоциироваться с локальными RFC1918-адресами и как бы показывать Интернет, но, в то же время, и не принадлежать никому, чтобы не было лишних вопросов со стороны владельца адресов. Для этого и были выделены три подсети /24 по принципу «дарю, пользуйтесь».
192.88.99.0/24
Частный случай из подсети 192.0.0.0/24, описанной выше, но заслуживает отдельного описания из технологического интереса. В связи с необходимостью взаимодействия новых IPv6-облаков между собой в преобладающем IPv4-транзите необходим NAT 6to4. При этом некоторые межконтинентальные сервисы, наиболее критичные из которых — корневые сервера DNS, используют технологию anycast. Наверное, это тема для отдельной заметки, но вкратце: подсеть, выделенная под anycast, может терминироваться в любой автономной системе для обеспечения отказоустойчивости. В RFC3068 был выделен пул адресов 192.88.99.0/24 для NAT 6to4 сервисов, использующих anycast. Как видим, выделен был этот пул еще в 2001 году, после чего, нахлебавшись проблем на практике, в 2015 году издается RFC7526 , отменяющий RFC3068, но при этом подсеть 192.88.99.0/24 остается зарезервированной под нужды IETF.
198.18.0.0/15
Диапазон выделен под лаборатории нагрузочного тестирования (Benchmarking) в соответствии с RFC2544 и уточнением в RFC6815 , что данный диапазон не должен быть досутпен в Интернет во избежание конфликтов. Опять же, никто при этом не отменяет использование RFC1918, но для больших сетей с крупными лабораториями лишний блок /15 явно не помешает.
224.0.0.0/4
Этот диапазон в исторической классификации еще называется как Class D. Выделен под Multicast, уточнение специфики работы которого тоже вроде как отдельная заметка. В RFC5771 подробно расписано использование подсетей внутри блока, но суть остается той же: эти адреса не закреплены ни за каким провайдером, и, соответственно, через Интернет не должны светиться.
240.0.0.0/4
В соответствии с RFC1122 , данный диапазон IP-адресов, исторически также известный как Class E, зарезервирован под использование в будущем. Юмор ситуации в том, что RFC1122 издавался еще в августе 1989 года, сейчас 2016 год, IPv4-адреса закончились, но для IETF будущее еще не наступило, потому что из всей большой подсети /4 до сих пор используется только один адрес. Но, наверное, если посчитать статистику по всем подсетям всех организаций мира, этот адрес окажется в лидерах, потому что сервисы, использующие broadcast, обращаются к адресу 255.255.255.255, который и принадлежит описанному диапазону.
- Bogus адрес указан как destination — необходим анализ хоста-источника на заражение/компрометацию/hacktools.
- Src ip из зарезервированного диапазона (bogus) — необходим анализ причин спуфинга источника трафика, а также применение рекомендаций BCP38 на портах включения источника.
- Проверить наличие blackhole для bogon networks на своей сети.
Мой блог о сетях
Так зачем же фильтровать bogon?! Естественно, что частные сети прячутся от интернета средствами компании или провайдером. А свободные диапазоны пусты и безжизненны.
Поэтому если к вам вдруг прилетает пакет с сорсом из этих списков, ничего хорошего он принести не может, ему просто неоткуда взять хорошее. Голосов из ниоткуда в природе принято бояться и в дом не пускать 🙂
А bogon IP часто пользуют злые хакеры для своих вредоносных атак, это в любой книжке по сетевой безопасности написано.
Списки свободных на данный момент диапазонов IP привожу ниже:
- 0.0.0.0 255.0.0.0
- 5.0.0.0 255.0.0.0
- 10.0.0.0 255.0.0.0
- 23.0.0.0 255.0.0.0
- 37.0.0.0 255.0.0.0
- 39.0.0.0 255.0.0.0
- 100.0.0.0 255.0.0.0
- 102.0.0.0 254.0.0.0
- 104.0.0.0 254.0.0.0
- 106.0.0.0 255.0.0.0
- 127.0.0.0 255.0.0.0
- 169.254.0.0 255.255.0.0
- 172.16.0.0 255.240.0.0
- 179.0.0.0 255.0.0.0
- 185.0.0.0 255.0.0.0
- 192.0.0.0 255.255.255.0
- 192.0.2.0 255.255.255.0
- 192.168.0.0 255.255.0.0
- 198.18.0.0 255.254.0.0
- 198.51.100.0 255.255.255.0
- 203.0.113.0 255.255.255.0
- 224.0.0.0 224.0.0.0
Свежий список bogon network можно взять тут: Тыц!
Межсетевой экран:Лженастройки и ошибки при настройке файрвола
На написание этой статьи меня навело то, что регулярно, два — три раза в неделю ко мне приходят письма с просьбой оценить настройку файрвола. Как правило, основная масса таких настроек содержит одни и те же ошибки, которые я решил собрать в этой статье. Условно их можно разделить на следующие категории:
- Лженастройки. Как правило, такие правила никак не влияют на работоспособность сети. Только замусоривают конфигурацию и этим затрудняют ее дальнейший анализ. Иногда могут и навредить. Основной признак этой категории — использование каких-то замысловатых параметров. Иногда такие правила называют «фуфломицином».
- Правила пустышки. Как правило ничего не делают. Ни хуже, ни лучше. Разве, что потребляют ресурсы процессора на обработку бессмысленных правил. Принципиальное отличие от лженастроек это отсутствие использования замысловатых параметров. Такие правила очень хорошо описываются определением «масло масляное».
- Ошибки. Название говорит само за себя. Условно можно разбить на подкатегории:
- Результат, который дают такие настройки не соответствует тому, что изначально ожидалось.
- Отсутствие понимания того как должен быть настроен файрвол. В результате получается то, что хотели получить изначально, но могут быть проблемы или уязвимости.
Лженастройки
Эту категорию лженастроек я характеризую так: «Эта статья в Интернет выглядит умной. Я тоже хочу внедрить у себя такое». Администраторы берут какие-то настройки и абсолютно не понимая, что это, зачем это и с чем это едят копируют настройки к себе. Чаще всего встречаются следующие чудо-настройки.
BOGON
Описание
Эта настройка находится в топе по популярности среди всевозможных лженастроек файервола. Выглядит она следующим образом: вначале делается список адресов с названием «BOGON» и после этого в файерволе этот самый «BOGON» запрещают для входящего интерфейса.
Через консоль это выглядит примерно так:
/ip firewall address list add address=0.0.0.0/8 list=BOGON add address=10.0.0.0/8 list=BOGON add address=100.64.0.0/10 list=BOGON add address=127.0.0.0/8 list=BOGON add address=169.254.0.0/16 list=BOGON add address=172.16.0.0/12 list=BOGON add address=192.0.0.0/12 list=BOGON add address=192.0.2.0/24 list=BOGON add address=192.168.0.0/16 list=BOGON add address=198.18.0.0/15 list=BOGON add address=198.51.100.0/24 list=BOGON add address=203.0.113.0/24 list=BOGON add address=217.67.177.164 list=BOGON add address=224.0.0.0/3 list=BOGON /ip firewall filter add action=drop chain=input in-interface=WAN src-address-list=BOGON
Развенчание мифа
Прежде всего определимся, что такое «BOGON». BOGON — это IP-адреса, которые не должны встречаться в таблицах маршрутизации в Интернет. Этим термином описываются частные и зарезервированные диапазоны адресов. Список этих сетей описывается в RFC 1918, RFC 5735 и RFC 6598. Обратите внимание, что речь идет именно про таблицы маршрутизации устройств у Интернет-провайдеров, а не про все подряд таблицы маршрутизации. Такие адреса часто могут использоваться при DDoS атаках в качестве IP-адреса источника. Помимо просто BOGON есть еще и FULLBOGON про которые почему-то забывают.
У таких сетей есть один очень важный нюанс, который я еще ни разу не встречал что бы учитывали: Ни BOGON, ни FULLBOGON списки не являются статическими. Диапазоны IP-адресов могут, как добавляться, так и убираться из этих списков. Поэтому BOGON-список актуальный сегодня завтра может оказаться неактуальным и файервол начнет блокировать легитимный трафик.
Здесь я люблю задавать вопрос. Почему Вы решили заблокировать сеть 192.0.2.0/24, но при этом не стали блокировать 192.0. 3 .0/24 или 192.0. 4 .0/24 или 192.0. 5 .0/24? На этот вопрос обычно не могут ответить. Более знающие ссылаются на rfc1166 в котором говорится, что сеть 192.0.2.0/24 зарезервирована для «TEST-NET-1», которая может быть использована в документации или в примерах. На встречный вопрос: «Чем не устраивает нормально закрытый файервол?» как правило ответить уже не могут, т. к. нормальной закрытый файрвол скорее всего уже используется и с этим вопросом приходит понимание, что такое правило это «масло маслянное».
Идем дальше. Допустим, каким-то образом мы получили динамические «BOGON» и «FULLBOGON» списки, которые всегда будут находиться в актуальном состоянии. Может быть тогда блокирование этих самых БОГОНОВ будет иметь смысл? Возможно тогда и будет иметь, но куда проще настроить файервол правильно так, чтобы не требовалось создавать дополнительные правила. Для этого нам достаточно настроить файервол в нормально закрытом режиме и заблокировать invalid-трафик.
/ip firewall filter add action=accept chain=input connection-state=established,related #правило №1 в цепочке input add action=drop chain=input connection-state=invalid #правило №2 в цепочке input . add action=drop chain=input #последнее правило в цепочке input # для последнего правила часто дополнительно указывают входящим WAN-интерфейс, но это зависит от конкретных настроек, которые хочет задать администратор сети
Правило, блокирующее invalid-трафик обязательно должно идти вторым сразу за правилом, которое разрешает established и related трафик. Если сделать, например, так:
/ip firewall filter add action=accept chain=input connection-state=established,related add action=accept chain=input protocol=icmp add action=drop chain=input connection-state=invalid
то мы рискуем получить уязвимость в виде возможности посылать на нас нелегитимный ICMP-трафик. И произойдет это следующим образом:
- Первый вредоносный пакет у которого в качестве источника будет указан адрес из любой сети, в т. ч. и из BOGON, будет обработан на втором правиле, которое разрешает ICMP-трафик. Простым языком: кто-то будет слать якобы ответ на ping-запросы, которые на самом деле не отправлялись.
- Все дальнейшие пакеты будут обработаны самым первым правилом, которое разрешает established & related трафик.
- До правила блокирующего invalid трафик дело уже не дойдет. А именно оно должно было бы остановить атаку не зависимо от того откуда идет атака из BOGON сети или из какой-то другой.
Резюме
Для того, чтобы не получить проблемы с BOGON-сетями достаточно настроить файрвол в нормально закрытом режиме. При этом в настройке BOGON-сети напрямую могут никак не участвовать.
Блокировка TCP-соединений по флагам
Эта лженастройка имеет много разных вариаций. В общих чертах она выглядит как попытка заблокировать что-то на основании флага TCP-соединения с помощью опции «tcp-flag». У этой лженастройки файрвола на MikroTik много разных вариаций. Обычно их объединяет то, что есть несколько правил в которых обязательно будет встречаться что-то на подобие:
. protocol=tcp tcp-flags=fin,syn . protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack . protocol=tcp tcp-flags=fin,syn,rst,psh,ack,urg
Правила пустышки
В основной своей массе эти правила сводятся к одному: разрешению того, что и так не запрещено.
Описание
Эта категория лженастроек не делает ничего кроме бессмысленного потребления ресурсов маршрутизатора. Выглядит это все примерно так:
/ip firewall filter add action=accept chain=input protocol=icmp add action=accept chain=input dst-port=161 protocol=udp src-address-list=zabbix add action=accept chain=input dst-port=8291 protocol=tcp add action=accept chain=input port=500,1701,4500 protocol=udp add action=accept chain=input protocol=ipsec-esp . Далее нет ни одного запрещающего правила
Развенчание мифа
С пакетом, который попадает в файервол с таким набором правил происходит одно из двух:
- Пакет попадает под действие одного из правил и оказывается разрешенным.
- Пакет не попадает под действие ни одного из правил и так как нет запрещающего правила, то пакет оказывается разрешенным.
Т. е. в любом случае пакет оказывается разрешенным.
Резюме
Рекомендую сделать файервол нормально закрытым. Т. е. в зависимости от конкретной конфигурации в конце должно быть правило, запрещающее все, что отдельно не разрешено. Использовать нормально открытый файервол нельзя, т. к. в этом случае устройство оказывается уязвимым.
Ошибки
Использование нормально открытого файервола
Описание
Очень часто неопытные инженеры используют нормально открытый файервол. Например, для цепочки Input правила могут выглядеть так:
/ip firewall filter add action=drop chain=input dst-port=53 protocol=tcp add action=drop chain=input dst-port=53 protocol=udp add action=drop chain=input dst-port=22 protocol=tcp add action=drop chain=input dst-port=80 protocol=tcp add action=drop chain=input . add action=drop chain=input . add action=drop chain=input . add action=drop chain=input . . Прочие запрещающие правила
Проблема
В приведенном выше примере для цепочки Input используется нормально открытый файервол и блокируется то, что по мнению администратора представляет риск. Действительно держать 53-ий порт (DNS) открытым для Интернета это очень большой риск попасть на атаку типа «DNS Resolve» и получить загрузку процессора службой DNS под 100%.
Проблема в том, что при использовании нормально открытого файервола администратор устанет запрещать. Даже, если предположить, что администратор на 100% знает все, что надо запретить, то такую схему лучше не использовать потому, что значительно увеличится количество правил, через которые будет проходит пакет. А чем большее количество правил будет пройдено пакетом, тем выше будет нагрузка на процессор устройства.
Решение
Сделать файервол нормально закрытым. Т. в нем должно быть запрещено все кроме того, что разрешено и будет небольшой «белый» список доступных сервисов. Например, так:
/ip firewall filter add action=accept chain=input connection-state=established,related #правило №1 в цепочке input add action=drop chain=input connection-state=invalid #правило №2 в цепочке input add action=accept chain=input protocol=icmp add action=accept chain=input dst-port=8291 protocol=tcp add action=accept chain=input port=500,1701,4500 protocol=udp add action=accept chain=input protocol=ipsec-esp add action=drop chain=input in-interface=WAN #последнее правило в цепочке input
Правила комментариями, которые выделены #синим цветом , должны идти именно в этом порядке.
- Первое правило снижает нагрузку на процессор, т. к. 99% трафика будет проходить через него.
- Второе правило блокирует invalid трафик. Что будет если его поместить хотя бы на одну позицию ниже описано в этой статье выше.
- Последнее правило блокирует все, что явным образом не разрешено правилами, расположенными между вторым и последним правилом.
Неверный порядок правил
Мне часто присылают какое-то одно правило и спрашивают почему оно не работает. При анализе настроек файервола надо учитывать, что правила обрабатываются по порядку и порядок правил играет роль. Поэтому вполне возможна ситуация, когда мы имеем запрещающее правило и оно не работает потому, что выше есть правило, которое разрешает этот трафик. Либо наоборот: что-то, что разрешено не работает, т. к. выше есть запрещающее правило. Разберем ряд таких ситуаций.
Пример №1
Пример ситуации, когда блокирующее правило не сработает:
/ip firewall filter . add action=accept chain=input protocol=tcp . add action=drop chain=input dst-port=22 .
В этой ситуации правило, которое блокирует SSH-трафик (22-ой порт TCP) не сработает потому, что выше есть правило, которое разрешает любой TCP-трафик.
Пример №2
Еще один пример ситуации, когда блокирующее правило не сработает:
/ip firewall filter . add action=accept chain=forward dst-address=192.168.15.0/24 . add action=drop chain=forward in-interface=Guest out-interface=LAN .
Если рассматривать эту конфигурацию в отрыве от остальных настроек, то кажется, что трафик из «Guest» в «LAN» должен быть заблокирован, но если посмотреть конфигурацию целиком, то можно обнаружить, что сеть 192.168.15.0/24 принадлежит интерфейсу LAN:
/ip address add address=192.168.15.254/24 interface=LAN network=192.168.15.0
Таким образом мы получаем, что у нас есть разрешающее правило выше запрещающего.
Пример №3
Пример ситуации, когда разрешающее правило не сработает потому, что выше есть запрещающее правило.
/ip firewall filter . add action=drop chain=forward in-interface=DMZ out-interface=LAN . add action=accept chain=forward dst-port=80,443 protocol=tcp
В этом примере есть правило, которое разрешает TCP-трафик с портом назначения 80 и 443. Если рассматривать правило отдельно от остальных, то можно предположить, что из DMZ можно будет попасть в LAN с таким видом трафика. Но по факту это сделать не получится, т. к. выше есть запрещающее правило, которое блокирует любой трафик из DMZ в LAN.
Некорректное использование FastTrack
Многие читали про то, что с помощью FastTrack можно в разы увеличить производительность маршрутизатора. Как правило эту возможность используют в таком виде:
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related
Но при этом зачастую не учитывают, что при использовании этой возможность игнорируется огромный объем настроек. Какой именно можно оценить посмотрев на то, как проходит FastTrack по схеме прохождения трафика:
Из приведенной схемы можно увидеть, что до многих настроек дело просто не доходит. Как результат можно получить такие симптомы, как у меня не работает приоритезация трафика и многое другое.
FastTrack можно и нужно использовать, но не для всего подряд, а точечно выделяя какой-то конкретный вид трафика и пропуская этот выделенный трафик через FastTrack.
Полезные материалы по MikroTik
Углубленный курс "Администрирование сетевых устройств MikroTik" Онлайн-курс по MikroTik с дипломом государственного образца РФ. Много лабораторных работ с проверкой официальным тренером MikroTik. С нуля и до уровня MTCNA.
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik. Подписывайтесь
BOGON – IP адреса

Bogons получается от bogus – барабашка.
Это бесхозные диапазоны IP, которые не были занесены в системы IANA и RIPE’a под ответственность конкретных провайдеров. Официально эти блоки прописаны для частного и специального использования. По идее, весомая часть существующих bogons’ов не должны роутиться с инетом, находясь в пользовании закрытой от внешнего мира сети.
Однако отдельные блоки выбиваются в Сеть, обычно для осуществления DDoS-атак, рассылки спама и запуска веба со стремным контентом. Оригинальное предназначение бесхозного пространства более полно раскрывается в RFC 1466. Злостными пакетами с bogons’ов формируется до 60% распределенных «атак на интернет». Так что фильтрация богусов – не совет, а даже приказ!
Существуют динамические публичные базы, куда вносятся новые зловредные пространства, откуда не должны вырываться пакеты в открытую сеть. Для пополнения ручками подойдет одна из многочисленных баз, вроде www.completewhois.com/bogons. Для тотальной же автоматизации процесса подойдет www.cymru.com/Bogons. Это экспериментальная база, которая позволяет на лету освежать список bogons’ов. Можно заставить роутер регулярно обращаться туда за свежими добавками.