Перейти к содержанию

Списки доступа (ACL)

Access Control Lists позволяет фильровать входящий трафик на портах коммутатора. Каждое правило определяет, какие пакеты будут разрешены, а какие запрещены. Дополнительно можно ограничивать скорость, перенаправлять трафик на другой порт, зеркалировать или логировать срабатывания.

Для каждого порта можно задать действие по умолчанию для всего входящего трафика. Параметры настройки порта:

  • Action
    • permit - пакеты проходят дальше;
    • deny - пакеты отбрасываются;
  • Rate Limiter ID
    • 1-16 (ссылка на предварительно настроенный ограничитель);
    • disable;
  • Port Redirect
    • перенаправить трафик на указанный порт;
    • disable;
  • Mirror - включить/отключить зеркалирование;
  • Logging - включить/отключить логирование срабатываний;
  • Shutdown - при срабатывании правила отключить порт;
  • State - включен/отключен порт (при shutdown автоматически становится disable);
  • Counter - счетчик числа срабатываний.

Rate Limiters задаются отдельно и затем привязываются к порту или ACE.

  • Всего доступно 16 ограничителей;
  • Единицы измерения:
    • pps - кратно 10;
    • kbps - кратно 25.

Для привязки rate limiter к порту, в настройках порта надо указать: access-list rate-limiter <1-16>.

Если требуется фильтрация не по всему трафику порта, а по отдельным полям пакета, используются ACE.

Условия соответствия при использовании ACE:

  • Ingress Port - конкретный порт или все порты;
  • Source MAC - MAC-адрес отправителя;
  • Destination MAC - MAC-асдрес получателя;
  • EtherType - тип протокола;
  • VLAN ID - номер VLAN;
  • Priority - приоритет.

При добавлении более одного правила они анализируются в порядке добавления (сверху вниз). Когда правило добавляется, оно помещается в конец списка. Существует возможность указать место правила в иерархии. Это делается путём указания правила, после которого должно быть вставлено новое правило. Пример команды, которая поставит правило с номером 25 перед правилом с номером 15: access-list ace 25 vid 102 next 15.

Особенность реализации

  • В данной реализации Policy ID для всех пакетов всегда равен 0. Все ACL-правила применяются именно к этому значению. Настройка других Policy ID не требуется и не поддерживается в текущей реализации.

Назначение применяемой команды/конфигурации

Команды в режиме глобальной конфигурации

access-list ace <1-512> action { deny | filter | permit }
access-list ace <1-512> dmac-type { any | broadcast | multicast | unicast }
access-list ace <1-512> frame-type { any | arp | etype | ipv4 |
ipv4-icmp | ipv4-tcp | ipv4-udp | ipv6 | ipv6-icmp | ipv6-tcp | ipv6-udp }
access-list ace <1-512> ingress { any | interface }
access-list ace <1-512> logging
access-list ace <1-512> mirror
access-list ace <1-512> next { <1-512> | last }
access-list ace <1-512> policy <0-255>
access-list ace <1-512> rate-limiter { <1-16> | disable }
access-list ace <1-512> redirect { disable | interface }
access-list ace <1-512> shutdown
access-list ace <1-512> tag { any | tagged | untagged }
access-list ace <1-512> tag-priority { 0-1 | 0-3 | 2-3 | 4-5 | 4-7 | 6-7 | <0-7> | any }
access-list ace <1-512> vid { <1-4095> | any }
access-list ace update <1-512> action { deny | filter | permit }
access-list ace update <1-512> dmac-type { any | broadcast | multicast | unicast }
access-list ace update <1-512> frame-type { any | arp | etype | ipv4 |
ipv4-icmp | ipv4-tcp | ipv4-udp | ipv6 | ipv6-icmp | ipv6-tcp | ipv6-udp }
access-list ace update <1-512> ingress { any | interface }
access-list ace update <1-512> logging
access-list ace update <1-512> mirror
access-list ace update <1-512> next { <1-512> | last }
access-list ace update <1-512> policy <0-255>
access-list ace update <1-512> rate-limiter { <1-16> | disable }
access-list ace update <1-512> redirect { disable | interface }
access-list ace update <1-512> shutdown
access-list ace update <1-512> tag { any | tagged | untagged }
access-list ace update <1-512> tag-priority { 0-1 | 0-3 | 2-3 | 4-5 | 4-7 | 6-7 | <0-7> | any }
access-list ace update <1-512> vid { <1-4095> | any }
access-list rate-limiter 10pps 0
access-list rate-limiter 25kbps 0
access-list rate-limiter <1-16> 10pps <0-500000>
access-list rate-limiter <1-16> 25kbps <0-400000>

no access-list ace <1-512>
no access-list rate-limiter [<1-16>]

Команды в режиме настройки интерфейса

access-list action { deny | permit }
access-list logging
access-list mirror
access-list policy <0-255>
access-list port-state
access-list rate-limiter <1-16>
access-list redirect interface { * | GigabitEthernet | 25GigabitEthernet }
access-list shutdown

no access-list logging
no access-list mirror
no access-list policy 
no access-list port-state
no access-list rate-limiter
no access-list redirect
no access-list shutdown

Команды отображения информации

1
2
3
4
5
6
7
8
show access-list ace statistics [ <1-512> | interface | rate-limiter ]
show access-list ace-status [ aps | arp-inspection | cfm | conflicts | dhcp | dhcp6-snooping | erps | ip | ip-source-guard | ipmc | ipv6-source-guard | link-oam | loop-protect | mrp | static ]
show access-list interface [ * | GigabitEthernet | 25GigabitEthernet ] [ ace | rate-limiter ]
show access-list interface ace statistics
show access-list interface rate-limiter [ <1-16> | ace ]
show access-list rate-limiter <1-16> [ ace | interface ]
show access-list rate-limiter ace statistics
show access-list rate-limiter interface [ * | GigabitEthernet | 25GigabitEthernet ] [ ace ]

Команды очистки

clear access-list ace statistics

Пример конфигурирования

Шаг 1. Создание правила, которое запрещает устройству с MAC bc-24-11-96-d3-49 отправлять любые ARP-запросы/ответы через порт 25GigabitEthernet 1/1.

# configure terminal
(config)# access-list ace 10 ingress interface 25GigabitEthernet 1/1 frame-type arp smac bc-24-11-96-d3-49 action deny

Шаг 2. Создание правила, которое запрещает устройству с MAC bc-24-11-96-d3-49 отправлять любые IP пакеты через порт 25GigabitEthernet 1/1.

(config)# access-list ace 11 ingress interface 25GigabitEthernet 1/1 frame-type etype smac bc-24-11-96-d3-49 action deny

Шаг 3. Включение ACL на порту 25GigabitEthernet 1/1

(config)# interface 25GigabitEthernet 1/1
(config-if)# access-list port-state

Шаг 4. Разрешение прохождения всего остального трафика, который не попадает под ACL.

(config-if)# access-list action permit

Шаг 5. Включение логирования срабатывания ACL.

(config-if)# access-list logging

Полный вывод выполненных конфигураций

1
2
3
4
5
6
7
8
9
configure termainal
!
access-list ace 10 ingress interface 25GigabitEthernet 1/1 frame-type arp smac bc-24-11-96-d3-49 action deny
access-list ace 11 ingress interface 25GigabitEthernet 1/1 frame-type etype smac bc-24-11-96-d3-49 action deny
!
interface 25GigabitEthernet 1/1
 access-list port-state
 access-list action permit
 access-list logging

Изучение состояния устройства

Просмотр конфигурации

# show access-list ace-status
User
----
S   : static
IPSG: ipSourceGuard
IP6SG: ipv6SourceGuard
IP  : IP
IPMC: ipmc
CFM : Connectivity Fault Management
APS : Automatic (Linear) Protection Switching
ERPS: Ethernet Ring Protection Switching
MRP: Media Redundancy Protocol
ARPI: arpInspection
UPnP: upnp
DHCP: dhcp
D6SN: dhcp6Snooping
LOOP: loopProtect
LOAM: linkOam
Test: test

User ID   Frame   Action Rate L.  Mirror   CPU    Counter Conflict
---- --   ------  ------ -------- -------- ------ ------- -------
IP   1    IPv4    Permit Disabled Disabled Yes          0 No
S    10   ARP     Deny   Disabled Disabled No           0 No
S    11   EType   Deny   Disabled Disabled No           0 No
Switch 1 access-list ace number: 3


# show access-list interface 25GigabitEthernet 1/1

25GigabitEthernet 1/1 :
-----------------------
  action is permit
  policy ID is 0
  rate limiter ID is disabled
  redirect is disabled
  mirror is disabled
  logging is enabled
  shutdown is disabled
  port-state is enabled
  counter is 7