Создание расширенного ACL
Расширенный ACL позволяют фильтровать трафик по большому количеству критериев. В этой статье поговорим о настройке расширенного ACL. Рекомендую сначала почитать общую статью об ACL и статью о стандартном ACL, если вы этого ещё не сделали.
Итак, расширенный ACL может быть именованный и нумерованный. В любом случае, он позволяет фильтровать трафик по следующим параметрам:
- Адрес отправителя
- Адрес получателя
- TCP/UDP порт отправителя
- TCP/UDP порт получателя
- Протоколу, завёрнутому в ip (отфильтровать только tcp, только udp, только icmp, только gre и т.п.)
- Типу трафика для данного протокола (например, для icmp отфильтровать только icmp-reply).
- Отделить TCP трафик, идущий в рамках установленной TCP сессии от TCP сегментов, которые только устанавливают соединение. Подробнее об этом можно прочитать в статье «Что делает established в ACL»
- И др.
Нумерованный расширенный ACL
Нумерованный расширенный ACL должен иметь номер с 100-го по 199 или с 2000 по 2699. Причём номер относится ко всему ACL (ко всем его строчкам).
Например, чтобы запретить web трафик с адреса 192.168.0.1 надо написать следующий стандартный ACL:
R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#access-list 110 deny tcp host 192.168.0.1 any eq 80 R1(config)#access-list 110 permit ip any any
Первая строчка запрещает tcp-трафик с указанного адреса на 80-ый порт, вторая – разрешает остальной трафик. access-list 110 – обозначает принадлежность строчки к ACL с номером 110, далее идёт действие (permit – разрешить, deny – запретить, либо remark – комментарий «для себя»). Потом идёт протокол (в CCNA рассматриваются только три протокола tcp, udp и ip). Потом идёт информация об отправителе пакета (адрес, возможно, wildcard маска, возможно, порт отправителя), за тем – то же самое про получателя. В нашем примерев первой строчки порт отправителя не задан, то есть трафик, который будет запрещён может отправляться с любого порта отправителя, порт же получателя должен быть 80.
Применяется такой ACL на интерфейс следующим образом:
R1(config)#interface fa0/0 R1(config-if)#ip access-group 110 in
В этом примере мы применили ACL 110 на интерфейс Fa0/0 для фильтрации входящего трафика.
Нумерованный ACL нельзя отредактировать можно только добавить строчку в конец. В нашем примере добавлять строчку в конец не имеет смысла, так как permit ip any any разрешает весь трафик и дальше проверка не производится. Единственный способ отредактировать нумерованный ACL – вывести кусок конфига с ним, скопировать в блокнот существующий ACL, отредактировать его, удалить старый, вставить новый. Допустим, нам надо добавить в ALC 110 запрет трафика ещё и из второй половины сети 192.168.0.0, с портов выше 1024 на порт 80 . Эта строчка должна встать по логике вещй между первой и второй. Выводим конфиг (весь, или только часть, с acl):
R1#show running-config … ! access-list 110 deny tcp host 192.168.0.1 any eq 80 access-list 110 permit ip any any ! …
Копируем то что касается ACL 110 блокнот, добавляем туда нужную строчку, затем удаляем старый ACL:
R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#no access-list 110
И вставляем новый:
R1(config)#access-list 110 deny tcp host 192.168.0.1 any eq 80 R1(config)#access-list 110 deny tcp 192.168.0.128 0.0.0.127 gt 1024 any eq 80 R1(config)#access-list 110 permit ip any any
На всякий случай, повторно применяем на интерфейсе новый ACL
R1(config)#interface fa0/0 R1(config-if)#ip access-group 110 in
Именованный расширенный ACL
Именованные ACL создаются иначе.
R1(config)# R1(config)#ip access-list extended MY_ACL R1(config-ext-nacl)#deny tcp host 192.168.0.1 any eq 80 R1(config-ext-nacl)#permit ip any any R1(config-ext-nacl)#end %SYS-5-CONFIG_I: Configured from console by console
Мы создали ACL с именем MY_ACL, который делает то же самое, что и ACL 110 из предыдущего примера. В качестве аргумента команды ip access-list необходимо указать не только имя, но и тип ACL (standard – стандартный и extended – расширенный), так как маршрутизатор не может сам определить тип. В случае использования нумерованного, тип определялся по номеру (с 100-го по 199 или с 2000 по 2699). Внутри именованного ACL уже не надо упоминать имени или номера, так как мы попадаем в режим редактирования конкретного ACL (config-ext-nacl) и все строчки ACL вводим сразу начиная со слова deny, permit или remark.
Применяется именованный ACL так же как и нумерованный:
R1(config)#interface fa0/0 R1(config-if)#ip access-group MY_ACL in
В отличие от нумерованного, именованный ACL можно редактировать построчно каждой строчке именованного ACL назначается номер со сдвигом 10, то есть строки нумеруются 10,20,30,40, и т.п. Благодаря этому, можно вставить строчку между существующими. Например, если мы зайдём в редактирования ACL MY_ACL:
R1(config)#ip access-list extended MY_ACL
И добавим очередную строчку начиная с числа 15
R1(config-ext-nacl)#15 deny tcp host 192.168.0.2 any eq 80
То такая строчка вставится между 10 и 20-ой (между первой и второй) строками старого ACL.
Кроме того, можно удалять строчки по одной. Для этого так же необходимо зайти в режим редактирование ACL и воспользоваться командой no с номером удаляемой строки:
R1(config)#ip access-list extended MY_ACL R1(config-ext-nacl)#no 15 R1(config-ext-nacl)#no 10
Чтобы удалить весь ACL, надо выполнить команду:
R1(config)#no ip access-list extended MY_ACL
Добавить комментарий