Списки доступа (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
|
Команды отображения информации
| 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
|
Полный вывод выполненных конфигураций
| 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
|