Cisco Access Control List - конфигуриране

Уж сложна тема, а човек като му хване идеята всичко е толкова просто. Едно ръководство на руски език може да се вземе от YOUTUBE.COM. И така идеята е:


Pic01

Сложна схема, ще се постарая да дам някои пояснения. Имаме клиенти от различни отдели на дадена фирма свързани в Switch0 през различни VLAN-и. Имаме администратор на мрежата работещ през Laptop-PT, който достъпва оборудването през VLAN 16. Имаме и сървър с различни услуги който също е свързан в Switch0. По-долу ще дам табличка кой какви права ще има в мрежата, с какви IP адреси ще е и в кой VLAN ще работи.

Pic02

Няма за сега да обяснявам табличката, макар, че е достатъчно подробна. В процеса на работа всичко ще стане ясно. Да започнем с вкарването на определените клиентски машини в дефинираните им VLAN-и. Започваме с PC1. Това е компютър от Администрацията. Той ще има IP:10.99.1.2/28 и ще е във VLAN11 с име adm. Започваме с настройка на Switch0.

Switch>en Switch#configure terminal in Switch(config)#interface fastEthernet 0/1 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 11 Switch(config-if)#do show vlan VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5 Fa0/6, Fa0/7, Fa0/8, Fa0/9 Fa0/10, Fa0/11, Fa0/12, Fa0/13 Fa0/14, Fa0/15, Fa0/16, Fa0/17 Fa0/18, Fa0/19, Fa0/20, Fa0/21 Fa0/22, Fa0/23, Fa0/24 11 VLAN0011 active Fa0/1 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1 enet 100001 1500 - - - - - 0 0 11 enet 100011 1500 - - - - - 0 0 1002 fddi 101002 1500 - - - - - 0 0 1003 tr 101003 1500 - - - - - 0 0 1004 fdnet 101004 1500 - - - ieee - 0 0 1005 trnet 101005 1500 - - - ibm - 0 0 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ Remote SPAN VLANs ------------------------------------------------------------------------------ Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------

Имаме създаден VLAN11 с присъединен порт Fa0/1. По същата логика ще се създадат и другите VLAN-и.

Switch(config-if)#exit Switch(config)#interface fastEthernet 0/2 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 12 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/3 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 13 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/4 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 14 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/5 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 15 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/6 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 16 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/7 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 17 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/8 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 18 Switch(config-if)#exit Switch(config)#interface fastEthernet 0/23 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 16 Switch(config-if)#end Switch#show vlan VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/9, Fa0/10, Fa0/11, Fa0/12 Fa0/13, Fa0/14, Fa0/15, Fa0/16 Fa0/17, Fa0/18, Fa0/19, Fa0/20 Fa0/21, Fa0/22, Fa0/24 11 VLAN0011 active Fa0/1 12 VLAN0012 active Fa0/2 13 VLAN0013 active Fa0/3 14 VLAN0014 active Fa0/4 15 VLAN0015 active Fa0/5 16 VLAN0016 active Fa0/6, Fa0/23 17 VLAN0017 active Fa0/7 18 VLAN0018 active Fa0/8 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1 enet 100001 1500 - - - - - 0 0 11 enet 100011 1500 - - - - - 0 0 12 enet 100012 1500 - - - - - 0 0 13 enet 100013 1500 - - - - - 0 0 14 enet 100014 1500 - - - - - 0 0 15 enet 100015 1500 - - - - - 0 0 16 enet 100016 1500 - - - - - 0 0 17 enet 100017 1500 - - - - - 0 0 18 enet 100018 1500 - - - - - 0 0 1002 fddi 101002 1500 - - - - - 0 0 1003 tr 101003 1500 - - - - - 0 0 1004 fdnet 101004 1500 - - - ieee - 0 0 1005 trnet 101005 1500 - - - ibm - 0 0 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ Remote SPAN VLANs ------------------------------------------------------------------------------ Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------

Създадени VLAN-ите, присъединени съответните физически интерфейси. Сега трябва да създадем виртуалните интерфейси в рутера Router0 към съответния VLAN. Но първо да накараме физическия интерфейс Fa0/24 да застане в trunk на Switch0.

Switch#configure terminal Switch(config)#interface fastEthernet 0/24 Switch(config-if)#switchport mode trunk Switch(config-if)#end


Сега да се заемем с виртуалните интерфейси на Router0

Router>en Router#configure terminal Router(config)#interface fastEthernet 0/0 Router(config-if)#no shutdown Router(config-if)#exit Router(config)#interface fastEthernet 0/0.11 Router(config-subif)#encapsulation dot1Q 11 Router(config-subif)#ip address 10.99.1.1 255.255.255.240 Router(config-subif)#end Router#show ip interface brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset up up FastEthernet0/0.11 10.99.1.1 YES manual up up FastEthernet0/1 unassigned YES unset administratively down down Vlan1 unassigned YES unset administratively down down Router#

Създадохме виртуален интерфейс за VLAN11. Клиент PC1 пингва 10.99.1.1. Това го бяхме проиграли в предно упражнение, но за затвърдяване на знанията и тук. За другите няма да пояснявам, само ще покажа командите.

Router#configure terminal Router(config)#interface fastEthernet 0/0.12 Router(config-subif)#encapsulation dot1Q 12 Router(config-subif)#ip address 10.99.2.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.13 Router(config-subif)#encapsulation dot1Q 13 Router(config-subif)#ip address 10.99.3.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.14 Router(config-subif)#encapsulation dot1Q 14 Router(config-subif)#ip address 10.99.4.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.15 Router(config-subif)#encapsulation dot1Q 15 Router(config-subif)#ip address 10.99.5.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.16 Router(config-subif)#encapsulation dot1Q 16 Router(config-subif)#ip address 10.99.6.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.17 Router(config-subif)#encapsulation dot1Q 17 Router(config-subif)#ip address 10.99.7.1 255.255.255.240 Router(config-subif)#exit Router(config)#interface fastEthernet 0/0.18 Router(config-subif)#encapsulation dot1Q 18 Router(config-subif)#ip address 10.99.8.1 255.255.255.240 Router(config-subif)#end Router#show ip interface brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset up up FastEthernet0/0.11 10.99.1.1 YES manual up up FastEthernet0/0.12 10.99.2.1 YES manual up up FastEthernet0/0.13 10.99.3.1 YES manual up up FastEthernet0/0.14 10.99.4.1 YES manual up up FastEthernet0/0.15 10.99.5.1 YES manual up up FastEthernet0/0.16 10.99.6.1 YES manual up up FastEthernet0/0.17 10.99.7.1 YES manual up up FastEthernet0/0.18 10.99.8.1 YES manual up up FastEthernet0/1 unassigned YES unset administratively down down Vlan1 unassigned YES unset administratively down down

Всичко е създадено. Сега всеки вижда всеки. Може да се види от рутиращата таблица:

Router#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set 10.0.0.0/28 is subnetted, 8 subnets C 10.99.1.0 is directly connected, FastEthernet0/0.11 C 10.99.2.0 is directly connected, FastEthernet0/0.12 C 10.99.3.0 is directly connected, FastEthernet0/0.13 C 10.99.4.0 is directly connected, FastEthernet0/0.14 C 10.99.5.0 is directly connected, FastEthernet0/0.15 C 10.99.6.0 is directly connected, FastEthernet0/0.16 C 10.99.7.0 is directly connected, FastEthernet0/0.17 C 10.99.8.0 is directly connected, FastEthernet0/0.18

Ако погледнете нагоре в таблицата където съм описал кой до къде има достъп, ще разберете, че поставеното условие не е изпълнено. На помощ трябва да дойдат така наречените ACL листи. Чрез тях ще преконфигурираме условия и права на потребителите. Започваме с Администрацията. Отново сме на Router0. Самата команда е:

access-list <от 1 до 99> {permit|deny|remark} {address | any | host} [source-wildcard] [log]

Където: permit - разрешава, deny - забранява, address - разрешаваме или забраняваме мрежи, any - разрешаваме или забраняваме всичко, host - разрешаваме или забраняваме даден хост, source-wildcard - WildCard маска на мрежата. Може да изглежда сложно но на примера ще се разбере. И така настройваме Администрацията.

Router#configure terminal Router(config)#ip access-list standard adm-11 # Използваме standart ACL, за простота. ACL е adm-11 (Администрация VLAN11) Router(config-std-nacl)#deny 10.99.9.0 0.0.0.15 # Забраняваме на Администрацията да достъпва мрежа 10.99.9.0/28 Router(config-std-nacl)#permit any # Разрешаваме да достъпва всичко останало Router(config-std-nacl)#int fa 0/0.11 # Правилото се прилага на виртуален интерфейс Fa 0/1.11 (написан е в съкратен вид) отговарящ за VLAN11 Router(config-subif)#ip access-group adm-11 out # Правилото се отнася за adm-11, който дефинирахме и е за изходящия трафик Router(config-subif)# exit


Може да проверим какво създадохме чрез командата:

Router(config)#do show ip access-list Standard IP access list adm-11 10 deny 10.99.9.0 0.0.0.15 20 permit any

Имаме дефиниран ACL adm-11 със съответните правила 10 и 20. Внимание правилата се изпълняват по реда на създаване. Първо се изпълнява правило 10 после правило 20.В обратна последователност първо да разрешим после да забраним мрежата нищо нямаше да направим, защото правилото с разрешение щеше да е с поредност 10 и щеше да е с по-голяма тежест. Ако искаме да трием правила:

Router#configure terminal Router(config)#ip access-list standard adm-11 # Избираме access-list който ще модифицираме Router(config-std-nacl)#no 20 # Първо трием последното правило. В случая то има пореден номер 20. Router(config-std-nacl)#no 10 # След това трием предното правило. В случая е само едно и е с номер 10. Router(config-std-nacl)#end Router#show access-lists Standard IP access list adm-11

Празен access-list adm-11 Да върнем старото му състояние:

Router#configure terminal Router(config)#ip access-list standard adm-11 Router(config-std-nacl)#deny 10.99.9.0 0.0.0.15 Router(config-std-nacl)#permit any Router(config-std-nacl)#end

Всичко е наред. На практика първо забранихме мрежа 10.99.9.0/28 и след това позволихме всички други мрежи. Отново напомням да се помни последователността на условията които се налагат. За тест може да поставите клиент във VLAN 19 и да го пингнете от PC1. ВНИМАНИЕ!!! Не ping-вайте 10.99.9.1 защото това IP е присъединено на самия VLAN 19 и то ще отговори. (ACL правилата не действат на това IP). Сложете клиент примерно с IP:10.99.9.2 и него тествайте. Доста се забавихме на Администрацията но беше важно. Продължаваме с отдела кадри (ок). Отдел кадри има достъп до администрацията и може да работи на сървърите, но му е забранен достъпа до системните администратори. За разлика от администрацията която имаше достъп до навсякъде с изключение до системните администратори, тук ще подходим по-различен начин.

Router#configure terminal Router(config)#ip access-list standard ok-12 # Създаваме нов access-list който е стандартен и е с име ok-12 Router(config-std-nacl)#permit 10.99.1.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.8.0 0.0.0.15 # Разрешаваме на ok-12 да достъпва мрежи 10.99.1.0 и 10.99.8.0 (администрация и сървъри) Router(config-std-nacl)#deny any # Забраняваме достъпа до всичко останало. Горните правила обаче са с по-висок приоритет. Router(config-std-nacl)#int fa 0/0.12 # Присъединяваме ACL ok-12 към интерфейс FastEthernet0/0.12 Router(config-subif)#ip access-group ok-12 out # Казваме, че ACL ще важи само за изходящ трафик. Router(config-subif)#exit Router(config)#do sh ip access-list Standard IP access list adm-11 10 deny 10.99.9.0 0.0.0.15 20 permit any Standard IP access list ok-12 10 permit 10.99.1.0 0.0.0.15 20 permit 10.99.8.0 0.0.0.15 30 deny any

Вече има два ACL, adm-11 и ok-12 със съответните им правила. Забележете при ok-12 по-просто беше първо да се позволят мрежите после да се забрани всичко останало. Точно на обратно спрямо администрацията. Сега да се прехвърлим на клиентска машина от отдел кадри (PC2) и да тестваме:

C:\>ping 10.99.1.2 Pinging 10.99.1.2 with 32 bytes of data: Reply from 10.99.1.2: bytes=32 time<1ms TTL=127 Reply from 10.99.1.2: bytes=32 time=1ms TTL=127 Reply from 10.99.1.2: bytes=32 time<1ms TTL=127 Reply from 10.99.1.2: bytes=32 time<1ms TTL=127 C:\>ping 10.99.8.2 Pinging 10.99.8.2 with 32 bytes of data: Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 C:\>ping 10.99.3.2 Pinging 10.99.3.2 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out.

Супер, всичко работи както трябва. Отдел кадри има достъп до администрацията и сървърите и няма достъп до всичко останало. Нататък няма да обяснявам, можете да се ориентирате по таблицата. Ще покажа само командите които използвам. Само едно уточнение. Ще комбинирам производсвен отдел, творчески отдел, клиенти и медиен отдел, защото имат еднакви права и ограничения. Ще ги кръстя просто отдел (OTD)

Router#configure terminal Router(config)#ip access-list standard OTD Router(config-std-nacl)#permit 10.99.3.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.4.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.5.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.6.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.8.0 0.0.0.15 Router(config-std-nacl)#deny any Router(config-std-nacl)#int fa 0/0.13 Router(config-subif)#ip access-group OTD out Router(config-subif)#int fa 0/0.14 Router(config-subif)#ip access-group OTD out Router(config-subif)#int fa 0/0.15 Router(config-subif)#ip access-group OTD out Router(config-subif)#int fa 0/0.16 Router(config-subif)#ip access-group OTD out Router(config-subif)#end


Да пробваме примерно с клинет от отдел творчески (PC4).

C:\>ping 10.99.3.2 Pinging 10.99.3.2 with 32 bytes of data: Reply from 10.99.3.2: bytes=32 time=1ms TTL=127 Reply from 10.99.3.2: bytes=32 time<1ms TTL=127 Reply from 10.99.3.2: bytes=32 time<1ms TTL=127 Reply from 10.99.3.2: bytes=32 time<1ms TTL=127 C:\>ping 10.99.5.2 Pinging 10.99.5.2 with 32 bytes of data: Reply from 10.99.5.2: bytes=32 time<1ms TTL=127 Reply from 10.99.5.2: bytes=32 time<1ms TTL=127 Reply from 10.99.5.2: bytes=32 time<1ms TTL=127 Reply from 10.99.5.2: bytes=32 time<1ms TTL=127 C:\>ping 10.99.6.2 Pinging 10.99.6.2 with 32 bytes of data: Reply from 10.99.6.2: bytes=32 time<1ms TTL=127 Reply from 10.99.6.2: bytes=32 time<1ms TTL=127 Reply from 10.99.6.2: bytes=32 time<1ms TTL=127 Reply from 10.99.6.2: bytes=32 time=1ms TTL=127 C:\>ping 10.99.8.2 Pinging 10.99.8.2 with 32 bytes of data: Reply from 10.99.8.2: bytes=32 time<1ms TTL=127 Reply from 10.99.8.2: bytes=32 time<1ms TTL=127 Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 Reply from 10.99.8.2: bytes=32 time=1ms TTL=127 C:\>ping 10.99.1.2 Pinging 10.99.1.2 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out.

Всичко е точно. Сега да дефинираме права и задължения на менажерите.

Router#configure terminal Router(config)#ip access-list standard kl-17 Router(config-std-nacl)#permit 10.99.1.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.2.0 0.0.0.15 Router(config-std-nacl)#permit 10.99.8.0 0.0.0.15 Router(config-std-nacl)#deny any Router(config-std-nacl)#int fa 0/0.17 Router(config-subif)#ip access-group kl-17 out Router(config-subif)#exit


Да проверим от клиентска машина на менажериите (PC7). Всичко е точно. С това завършваме упражнението. Упражнението беше голямо и сложно но надявам се че всичко стана ясно. От друга страна самото упражнение беше и просто. По-сложено щеше да бъде ако включвахме достъп до Интернет, достъп до DMZ и т.н.