Список управления доступом ACL (Access Control List) — это механизм фильтрации кадров/пакетов на основе информации в заголовках L2/L3/L4, в зависимости от типа используемого ACL.
Каждый ACL содержит определенное количества записей, начинающихся с permit «разрешить» или deny «запретить». Каждый пакет, проходящий через ACL, сначала проверяется по первой записи. Если он соответствует условиям разрешения/запрета, он передается (при условии «разрешить») или отклоняется (при условии «запретить»). Если он не соответствует условиям первой записи, он сравнивается со второй записью, затем с третьей до первого совпадения. Пакет, который не соответствует ни одному из условий, будет переслан.
Существует 3 типа ACL:
- IP Access List — фильтрация на основе информации уровней 3 и 4.
- MAC Access List — фильтрация на основе информации уровня 2.
- MAC-IP Access List — фильтрация на основе информации уровней 2, 3 и 4
Чтобы определить тип ACL необходимо использовать соответствующий номер:
<1-99> IP standard access list
<100-299> IP extended access list
<700-799> MAC standard access list
<1100-1199> MAC extended access list
<3100-3299> MAC-IP extended access list
<5000-5099> Multicast source control access list
<6000-7999> Multicast destination control access list
Стандартный IP ACL
ACL 1-99 позволяют фильтровать только по IP-адресу источника.
Пример:
Включаем функцию firewall для работы списков доступа:
SW1(config)#firewall enable
Создаём список доступа из двух правил:
SW1(config)#access-list 1 permit 192.168.1.0 0.0.0.255 SW1(config)#access-list 1 deny any-source
При определении адресов в ACL мы используем не маску подсети, wildcard (обратную маску). Это инверсия маски, поэтому для маски 255.255.255.0 обратная маска будет иметь вид 0.0.0.255
Настраиваем на порту 1/0/1 фильтровать входящий трафик в соответствии с ACL 1:
SW1(config)#int ethernet 1/0/1 SW1(config-if-ethernet1/0/1)#ip access-group 1 in
Расширенные списки доступа IP
ACL 100-299 позволяют фильтровать трафик на основе информации, содержащейся в заголовках уровня 3 и уровня 4.
Пример ACL, который не позволит пользователю с IP-адресом 192.168.1.10 заходить по telnet на коммутатор.
SW1(config)#access-list 100 deny tcp host-source 192.168.1.10 host-destination 192.168.1.33 d-port 23 SW1(config)#int ethernet 1/0/1 SW1(config-if-ethernet1/0/1)#ip access-group 100 in
Расширенные списки доступа MAC
ALC 1100-1199 позволяют фильтровать трафик на основе информации, содержащейся в заголовках уровня 2.
Пример ACL, который будет отфильтровывать весь трафик, кроме трафика с определённым адресом источника:
SW1(config)#access-list 1100 permit host-source-mac 3c-97-0e-d1-ad-29 any-destination-mac SW1(config)#access-list 1100 deny any-source-mac any-destination-mac SW1(config-if-ethernet1/0/1)#mac access-group 1100 in SW1(config-if-ethernet1/0/2)#mac access-group 1100 in
Списки доступа MAC-IP
ACL 3100-3299 самые обширные из списков ACL, которые позволяют фильтровать трафик на основе заголовков L2, L3 и L4.
Пример ACL, который разрешает доступ по Telnet к коммутатору с определенного IP- и MAC-адреса:
SW1(config)#access-list 3100 permit host-source-mac 3c-97-0e-d1-ad-29 any-destination-mac tcp host-source 192.168.1.10 host-destination 192.168.1.33 d-port 23 SW1(config)#access-list 3100 deny any-source-mac any-destination-mac ip any-source anydestination SW1(config-if-ethernet1/0/1)#mac-ip access-group 3100 in
Привязка списков доступа к VLAN
Назначение ACL для VLAN позволяет фильтровать входящие пакеты на всех портах в этом VLAN.
Пример ACL, разрешающего только ping от ПК до коммутатора:
SW1(config)#access-list 110 permit icmp host-source 192.168.1.10 host-destination 192.168.1.33 SW1(config)#access-list 110 deny ip any-source any-destination
Назначение ACL на VLAN-интерфейс 1:
SW1(config)#vacl ip access-group 110 in vlan 1
Привязка ACL к VTY
Пример ACL, разрешающего только трафик из сети 10.0.0.0/24:
SW1(config)#access-list 1 permit 10.0.0.0 0.0.0.255 SW1(config)#access-list 1 deny any-source
Назначение ACL на VTY
SW1(config)#authentication ip access-class 1 in telnet SW1(config)#authentication ip access-class 1 in ssh