8 авг. 2010 г.

Пишем анти-спуфинг ACL

Написано дабы самому не забыть и товарищам почитать.


Итак, задача укрепить защиту маршрутизатора напрямую подключенного в Интернет.

Первым делом защитимся от спуфинга - исключим из обработки (попросту отбросим) все пакеты идущие от серых (частных) сетей. Серые сети это сети предназначенные для частного использования и не маршрутизируемые в сети Интернет. Данные сети описаны в RFC1918, это префиксы 10/8, 172.16/12, 192.168/16.

В сети Интернет имеется еще несколько диапазонов адресов, появление которых на интерфейсе подключенном к сети интернет, в нормальных условиях будет по меньшей мере необычным. Данные сети описаны в RFC3330.

Следует понимать, что RFC3330 описывает сети специального назначения. Некоторые из этих сетей успели поменять свое назначение на "Reserved but subject to allocation", т.е. зарезервированы, но могут быть предоставленны в пользование. В общем случае такие сети блокировать не стоит, так как в случае передачи этих сетей в пользование, вы не сможете обмениваться с этой сетью данными.

Итак, составим список сетей которые мы будем блокировать на внешнем интерфейсе:

  • 10.0.0.0/8 - описана в RFC1918;
  • 172.16.0.0/12 - описана в RFC1918;
  • 192.168.0.0/16 - описана в RFC1918;
  • 224.0.0.0/4 - RFC3330, Мультикастовые сети;
  • 127.0.0.0/8 - RFC3330, Лупбэк сеть;
  • 169.254.0.0/8 - RFC3330, RFC3927, Zeroconf адреса;
  • 192.0.2.0/24 - RFC3330, Сеть для тестирования и использования в публикациях;
  • 240.0.0.0/4 - RFC3330, Зарезервировано для будущего использования.


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

На основе полученного списка сетей, составим ACL.
В данном случае я буду использовать extended acl, просто для возможности в будущем фильтровать еще и по адресу назначения.

У меня получился такой список доступа:

#sho ip access-list
Extended IP access list AntiSpoof
10 deny ip host 0.0.0.0 any
20 deny ip 10.0.0.0 0.255.255.255 any
30 deny ip 172.16.0.0 0.15.255.255 any
40 deny ip 192.168.0.0 0.0.255.255 any
50 deny ip host 255.255.255.255 any
60 deny ip 224.0.0.0 15.255.255.255 any
70 deny ip 127.0.0.0 0.255.255.255 any
80 deny ip 169.254.0.0 0.0.255.255 any
90 deny ip 192.0.2.0 0.0.0.255 any
100 deny ip 240.0.0.0 15.255.255.255 any
110 permit ip any any

В данном списке доступа, кроме перечиленных выше префиксов, добавлено еще два хостовых адреса:

  • 0.0.0.0;

  • 255.255.255.255;



Также следует помнить, что на интерфейсах с настроенными туннелями IPSec, ACL повешенный на вход интерфейса проверяет сначала заголовок пакета IPSec, а затем этот же ACL проверяет заголовок шифрованного пакета. Таким образом упоминание в данном ACL частных сетей может нарушить функционирование туннеля.

После написания списка доступа, применяем его на вход на всех интерфейсах подключенных в сеть Интернет или в другие не безопасные сети:

#conf t
#int f0/0
#ip access-group AntiSpoof
#end


Такая настройка внешних интерфейсов поможет избежать атаки с подделаных адресов.


Источники:

  1. Cisco Systems: Infrastructure Protection Access Control Lists;

  2. Материалы сайта AntiCisco.ru

2 комментария:

Александр Альчиков комментирует...

Не совсем понятно направление применение ACL. Может надо было
ip access-group AntiSpoof in
?

Анонимный комментирует...

Написано же на вход, что непонятно?