Antispoof ACL

Обратились намедни с вопросом, какой ACL нонче модно вешать на внешний интерфейс edge-маршрутизатора, дабы супостаты не влезли. Списки конечно имеются, но тему решил прогуглить, с целью актуализации и вот что вышло.

ACL которые можно найти в процессе поиска могут неслабо отличаться друг от друга, быть без объяснений откуда и почему именно так – поэтому мы начнём с источников.

Абсолютные лидеры в упоминаниях на RFC, по которым нужно ориентироваться в составлении ACL это:

  • RFC1918 – Address Allocation for Private Internets: перечисляет сети, которые считаются приватными (private), объясняет каким хостам следует назначать эти IP-адреса и просит  использовать их исключительно в пределах корпоративной локальный сети. Источник следующих префиксов:

10/8
172.16/12
192.168/16

  • RFC3330 – Special-Use IPv4 Addresses: основной источник для составления нашего Anti-spoofing ACL. Перечисляет глобальные и прочие специализированные блоки IP-адресов, которые Internet Assigned Numbers Authority (IANA) назначила под различные специальные цели. (не включает в себя список специальных IPv6-адресов – RFC5156). Источник следующих префиксов (исключая уже имеющиеся в RFC1918):

0/8 – описывает текущую сеть, используется например для DHCP Request. Раз текущую, значит гостей с таким IP мы точно не ждём – должен быть запрещён;
14/8 – несмотря на то, что в RFC сказано, что блок выдан Public-Data Networks, на этой странице сказано, что информация не совсем актуальна и в апреле 2010 блок был распределён руками APNIC. Легко проверяется, например с android-телефона утилитой Fing, что из этого блока действительно используются тысячи IP-адресов. Не требует запрета;
24/8 – ранее использовался для сетей кабельных операторов, но позже был перевыдан (reallocated) и распределён как обычный. Не требует запрета;
39/8 – некоторое время назад использовался для эксперимента, но в данный момент не является специальным и был рапределён. Не требует запрета;
127/8 – loopback, все мы его знаем и любой IP-адрес из данного блока предназначен для использования исключительно локальными сетевыми сервисами. Должен быть запрещён;
128.0/16 – был наделён правом называться “специальным” исключительно ввиду того, что является нижним цифровым блоком класса B в, давно устаревшей, системе классовой адресации. Переведён в разряд обычных (вероятно благодаря CIDR/VLSM) и был  распределён. Не требует запрета;
169.254/16 – так называемый Link-local адрес, которым может быть вам известен благодаря использованию на сетевых узлах ожидавших IP-адреса от DHCP, но не получивших его. Должен быть запрещён;
191.255/16 – верхний цифровой блок класса B, отчего уже не особенный, как и ранее упоминавшийся 128.0/16 и блок ниже. Не требует запрета;
192.0.0/24 – нижний цифровой блок класса C. Не требует запрета;
192.0.2/24 – блок выданный под так называемый Test-Net. Используется в документации, цифровой аналог места где нужен логический якорь, но в виде IP-адреса, а не example.com. Должен быть запрещён;
192.88.99/24 – используется для 6to4 Relay Anycast. Можно смело запрещать, если не используете IPv6, так как в этом случае вы не используете anycast, для нахождения ближайшего сервисного узла;
198.18.0/15 – небольшой блок, называемый Network Interconnect Device Benchmark Testing [RFC2544]. Должен быть запрещён;
223.255.255/24 – максимальный циферный блок класса C. Рапределён и не требует запрета;
224/4 – блок формально именуемый Класс D. Полностью выделен под мультикаст, предназначен для внутреннего использования. Должен быть запрещён, кроме отдельных адресов при случае связности на границе сети.
240/4 – зарезервировано для использования в будущем. Не распределено и потому ниодин легетимный хост не может иметь такой IP-адрес. Должен быть запрещён. Когда и если IANA будет готова разбить его на /8 и раздать региональным регистраторам, для распределения, блок должен быть разрешён за исключением IP-адреса 255.255.255.255, являющегося специальным адресом для “limited broadcast”.

К информации из обоих RFC добавим внимательное чтение сносок на странице актуальной информации от IANA и добавим ещё “гостей”:

192.0.0.0/24 – зарезервировано для IANA IPv4 Special Purpose Address Registry [RFC5736]
198.51.100.0/24 – зарезервировано для TEST-NET-2 (фактически для документации) [RFC5737]
203.0.113.0/24 – зарезервировано для TEST-NET-3 (фактически для документации) [RFC5737]

на данный момент мы имеем следующий список IP-адресов, которые легитимные источники иметь не должны, но могут:

10/8
172.16/12
192.168/16
0/8
127/8
169.254/16
192.0.2/24
192.88.99/24
198.18.0/15
224/4
240/4
192.0.0/24
198.51.100/24
203.0.113/24

Неплохо, да?
А теперь добавим сюда крайне редко указываемый источник, но всё же используемый в обязательном порядке

  • RFC2827 – Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing: который описывает ситуацию, когда IP-адрес источника идентичен IP-адресу узла назначения.

Таким образом, уже имеющийся список расширяется вашими “публичными” IP-адресами, в частности IP-адрес или целая подсеть(например для NAT pool) используемая вашим пограничным машрутизатором и другие блоки адресов выданные вам вышестоящим провайдером.

И, финальным аккордом, создадим Cisco standard ACL включающую все нелегитимные блоки:

 

SHARE: Tweet about this on TwitterShare on FacebookShare on VKShare on LinkedInShare on Google+Email this to someone