ACL:Списки контроля доступа в коммутаторах Extreme
Идеология списков контроля доступа в коммутаторах Extreme Networks несколько отличается от идеологии, принятой в коммутаторах производства Компании Cisco Systems. В данной статье речь пойдет о настройке ACL в коммутаторах Extreme и чем ACL в коммутаторах Extreme отличаются от ACL в Cisco.
В коммутаторах Extreme можно создать два типа списков контроля доступа:
- Статические
- Динамические
Динамические ACL
Динамические списки контроля доступа создаются используя CLI, их можно просмотреть в конфигурации, выполнив команду show configuration «acl».
Для создания динамического aclнужно выполнить команду:
create access-list < dynamic-rule > < conditions > < actions > {non-permanent}
Если в команде используется ключ non-permanent, список контроля доступа сотрется из конфигурации после перезагрузки коммутатора.
Динамические ACL могут применяться как к физическим портам так и к VLAN:
configure access-list add < dynamic_rule > [ [[first | last] {priority < p_number >} {zone < zone >} ] | [[before | after] < rule >] | [ priority < p_number > {zone < zone >} ]] [ any | vlan < vlanname > | ports < portlist > ] {ingress | egress}
Для удаления acl с порта или VLAN необходимо выполнить команду:
configure access-list delete < ruleName > [ any | vlan < vlanname > | ports < portlist > |
all] {ingress | egress}
Пример создания списка контроля доступа, фильтрующего пакеты BPDU Cisco PVST+ и применения этого acl на порты 11-21:
create access-list bpdu1 «ethernet-destination-address 01:00:0c:cc:cc:cd ;» «deny»
create access-list bpdu2 «ethernet-destination-address 01:80:C2:00:00:00 ;» «deny»
conf access-list add «bpdu1» first ports 11-21 ingress
conf access-list add «bpdu2» first ports 11-21 ingress
Статические ACL
Статические acl представляют собой файлы, редактируемые VI-подобным редактором или загружаемые с внешнего TFTP сервера.
Для создания или редактирования ACL необходимо выполнить команду:
edit policy < policy-name >
Для начала редактирования нужно нажать клавишу «i».
Команды, используемы для редактирования ACL:
dd — To delete the current line
yy — To copy the current line
p — To paste the line copied
:w — To write (save) the file
:q — To quit the file if no changes were made
:q! — To forcefully quit the file without saving changes
:wq — To write and quit the file
Правильность ACL можно и нужно проверить, используя команду:
check policy < policy-name >
Если уже примененный на порту, VLAN или в протоколе маршрутизации ACL изменился, необходимо выполнить команду:
refresh policy < policy-name >
Иначе, не смотря на то, что ACL уже изменен, будет использоваться его старая версия.
Просмотр ACL:
show policy {< policy-name > | detail}
Использование ACL
Списки контроля доступа можно использовать как для фильтрации сетевого трафика так и для контроля за распространением маршрутов в сетевых протоколах (BGP, OSPF итд).
Применение ACL на порту коммутатора или на VLAN:
configure access-list [any | ports < portlist > | vlan < vlanname >] {ingress |
egress}
Отмена ACL с порта коммутатора или с VLAN:
unconfigure access-list < policy-name > {any | ports < portlist > | vlan < vlanname >}
{ingress | egress}
Использование ACLв протоколах маршрутизации:
configure bgp import-policy [< policy-name > | none]
configure rip import-policy [< policy-name > | none]
Настройка списков контроля доступа
Каждое правило имеет следующий синтаксис:
entry < ACLrulename >{
if {
match-conditions;
} then {
action;
action-modifiers;
}
}
То есть каждое правило имеет условие совпадения (match-conditions) и действие (action и action-modifiers).
Например, правило, разрешающее трафик из IP подсети 10.203.134.0/24, с UDP порта 190 на UDP порты 1200 – 1250 IP адреса 140.158.18.16:
entry udpacl {
if {
source-address 10.203.134.0/24;
destination-address 140.158.18.16/32;
protocol udp;
source-port 190;
destination-port 1200 — 1250;
} then {
permit;
}
}
В ACL можно делать description и comment:
# this line is a comment
@description «This line is a description»
Match Conditions
Основные match-conditions представлены ниже:
- ethernet-source-address < mac-address >—Ethernet source address
- ethernet-destination-address < mac-address > < mask >—Ethernet destination address and mask
- source-address < prefix >—IP source address and mask
- destination-address < prefix >—IP destination address and mask
- source-port [< port > | < range]—TCP or UDP source port range
- destination-port [< port > | < range >]—TCP or UDP destination port range
Actions
Основные действия:
- permit—The packet is forwarded.
- deny—The packet is dropped.
Action Modifiers
Наиболее часто применяемые Action Modifiers описаны ниже:
- count < countername >—Increments the counter named in the action modifier
- byte-count < byte counter name >—Increments the byte counter named in the action modifier
- packet-count < packet counter name >—Increments the packet counter named in the action modifier
- log—Logs the packet header
- log-raw—Logs the packet header in hex format
- meter < metername >—Takes action depending on the traffic rate
- mirror—Sends a copy of the packet to the monitor (mirror) port (ingress only)
- mirror-cpu—Mirrors a copy of the packet to the CPU in order to log it (ingress only)
- qosprofile < qosprofilename >—Forwards the packet to the specified QoS profile
- redirect < ipv4 addr >—Forwards the packet to the specified IPv4 address
- redirect-port < port >—Overrides the forwarding decision and changes the egress port used. If the specified port is part of a load share group then this action will apply the load sharing algorithm.
Гораздо более подробно Match Conditions, Action и Action Modifiers описаны в главе 18 Concept Guide.
Wide Key ACLs
В коммутаторах Extreme Networksсуществует понятие Wide Key ACLs. Данная функция позволяет использовать 362 битные Match Conditions вместо стандартных 181 битных. Соответственно можно делать большие Match Conditions а так же использовать полные destination-source IPv6 Match Conditions.
Для включения или выключения Wide Key ACLs нужно выполнить команду:
configure access-list width [double | single] [slot < slotNo | all >]
Примеры списков контроля доступа
ACL, ограничивающий трафик в VLAN 100, накладывая на него meter voiceServiceMeter:
entry voiceService {
if {
vlan-id 100;
} then {
meter voiceServiceMeter;
}
}
ACL, зеркалирующий весь трафик VLAN 300:
entry voiceService {
if {
vlan-id 300;
} then {
mirror;
}
}
ACL, разрешеющий трафик на IP адрес 10.200.250.2 и запрещающий весь остальной трафик:
entry test_policy_4 {
if {
source-address 0.0.0.0/0;
destination-address 10.200.250.2/32;
} then {
permit;
count test_policy_permit;
}
}
# deny everyone else
entry test_policy_99 {
if {
} then {
deny;
count test_policy_deny;
}
}
Основные отличия от ACL в коммутаторах Cisco
Как известно, ACL в оборудовании Cisco имеют следующий вид:
access-list 2 permit 1.1.1.0 0.0.0.255
access-list 100 permit tcp 1.1.1.1 0.0.0.0 2.2.2.2 0.0.0.0 eq 23
ACL, использующиеся в коммутаторах Extreme отличаются от ACL в Cisco двумя моментами:
1. Синтаксис. ACL в Extreme иерархические, что с одной стороны более сложно в написании, с другой существенно расширяет возможности списков контроля доступа. Так, например, внутри ACLможно указать ключ mirror, и трафик будет зеркалироваться, или redirect, тогда трафик будет перенаправляться мехаизмами PBR (policy based routing). Внутри ACL Extreme можно применять политики QoS (ограничение полосы, перемаркировка итд.)
2. ACL в Extreme не имеют завершающего deny в конце правила. То есть, если пакет не совпал ни с одним правилом в ACL, пакет будет разрешен.
Каждый ACL, цель которого в итоге что-то запретить, должен завершаться правилом:
entry denyall {
if {
} then {
deny;
}
}
3. Списки контроля доступа в Extreme работают на аппаратном уровне, и даже такие действия как PBR и mirroring не загружают CPU коммутатора.