Настройка ACL-списков для сети небольшо офиса в CPT
ACL (Access Control List) – это список контроля доступа, механизм фильтрации трафика, работающий на сетевом оборудовании (маршрутизаторах, коммутаторах, межсетевых экранах). В своей основе ACL представляет собой упорядоченный набор правил, который анализирует проходящие через устройство пакеты и принимает решение: разрешить передачу или запретить.
Главная задача ACL – управление трафиком и обеспечение первого, базового уровня сетевой безопасности. Несмотря на то, что ACL оперирует чаще всего на уровнях L3 (IP-адреса) и L4 (порты протоколов), он не анализирует содержимое самого соединения, а действует как строгий страж на входе, проверяя заголовки пакетов на соответствие заданным критериям.
Зачем нужны ACL?
В первую очередь для защиты периметра сети, ограничения доступа к критически важным ресурсам и снижения нагрузки на сетевое оборудование путём отсеивания нежелательного трафика на раннем этапе.
Списки контроля доступа позволяют сетевым администраторам реализовать политику безопасности, точечно определяя, какой узел или подсеть имеет право взаимодействовать с тем или иным сервером или сегментом сети. Без использования ACL любое устройство, находящееся в сети, потенциально могло бы обращаться к любому другому устройству, что создает огромные риски несанкционированного проникновения, распространения вредоносного ПО или утечки данных.
Таким образом, ACL формирует фундамент, на котором строится комплексная система сетевой защиты.
Применяются ACL для широкого спектра задач, выходящих далеко за рамки простой блокировки. Вот основные сценарии использования:
- фильтрация трафика – классическая функция межсетевого экрана. ACL может блокировать нежелательные протоколы (например, Telnet или ICMP-запросы извне), запрещать доступ с определенных IP-адресов из «черных списков» или ограничивать возможность подключения к административным интерфейсам самого оборудования;
- разграничение доступа – на коммутаторах ACL помогают изолировать отделы компании друг от друга в рамках одной физической сети, позволяя, к примеру, бухгалтерии обращаться к серверу финансов, а отделу маркетинга — нет, даже если они находятся в разных VLAN, маршрутизируемых через один узел;
- оптимизация работы протоколов маршрутизации – с помощью ACL можно фильтровать объявления маршрутов в протоколах динамической маршрутизации (OSPF, EIGRP, BGP), запрещая распространение служебной информации в определённые участки сети;
- классификация трафика для QoS – ACL является инструментом для захвата интересующего трафика (например, SIP-телефонии или видеоконференций), чтобы впоследствии применить к нему политики качества обслуживания – повысить приоритет или зарезервировать полосу пропускания;
- ограничение широковещательного шторма – настройка списков доступа на портах коммутатора позволяет ограничить количество широковещательных запросов в секунду, предотвращая деградацию производительности сети из-за активности некорректно работающего сетевого интерфейса;
- трансляция сетевых адресов (NAT) – ACL определяет, какой внутренний трафик подлежит трансляции во внешнюю сеть, что делает настройку NAT гибкой и управляемой.
Технически выделяют два основных типа ACL. Стандартные списки доступа фильтруют пакеты исключительно по IP-адресу источника (заголовок L3), нумеруются в диапазонах 1-99 и 1300-1999. Они просты в настройке, но недостаточно гибки, так как блокируют узел целиком.
Расширенные ACL (нумерация 100-199 и 2000-2699) гораздо детальнее – они анализируют адреса источника и назначения, а также протокол (TCP, UDP, ICMP) и порты (например, 80 для HTTP или 443 для HTTPS).
Именно расширенные списки применяются повсеместно на границах сети и для межзонового взаимодействия, так как позволяют, скажем, разрешить веб-трафик к серверу, но запретить возможность подключаться к нему по RDP.
Важно понимать логику выполнения: правила в ACL обрабатываются строго последовательно, сверху вниз, и как только пакет совпадает с каким-либо критерием, дальнейшая обработка останавливается.
В конце любого списка находится неявный запрет «deny any», который уничтожает весь трафик, не подпавший ни под одно из разрешающих правил. Поэтому при создании ACL критически важны правильный порядок строк и наличие хотя бы одного явного разрешения для легитимного трафика.
Подключения между устройствами
| Наименование узла | Интерфейс | IP-адрес | Маска подсети | Шлюз по умолчанию |
|---|---|---|---|---|
| RTR | Se0/3/0 | 10.10.10.2 | 255.255.255.252 | – |
| RTR | Gi0/0 | – | – | – |
| RTR | Gi0/0.10 | 192.168.10.1 | 255.255.255.0 | – |
| RTR | Gi0/0.20 | 192.168.20.1 | 255.255.255.0 | – |
| RTR | Gi0/0.99 | 172.16.99.1 | 255.255.255.0 | – |
| RTR-ISP | Se0/3/0 | 10.10.10.1 | 255.255.255.252 | – |
| RTR-ISP | Gi0/0 | 8.0.0.1 | 255.0.0.0 | – |
| RTR-ISP | Gi0/1 | 200.200.200.1 | 255.255.255.0 | – |
| Global DNS | NIC | 8.8.8.8 | 255.0.0.0 | 8.0.0.1 |
| CLI | NIC | 200.200.200.200 | 255.255.255.0 | 200.200.200.1 |
| SW-R | Fa0/1 | VLAN 10 | – | – |
| SW-R | Fa0/2 | VLAN 20 | – | – |
| SW-R | Fa0/10 | trunk | – | – |
| SW-R | Gi0/1-2 | EtherChannel | – | – |
| SW-L | Fa0/1 | VLAN 10 | – | – |
| SW-L | Fa0/2 | VLAN 20 | – | – |
| SW-L | Fa0/24 | VLAN 99 | – | – |
| SW-L | Gi0/1-2 | EtherChannel | – | – |
| SW-FARM | Fa0/1 | VLAN 99 | – | – |
| SW-FARM | Fa0/2 | VLAN 99 | – | – |
| SW-FARM | Fa0/24 | VLAN 99 | – | – |
| DHCP | NIC | 172.16.99.67 | 255.255.255.0 | 172.16.99.1 |
| WEB | NIC | 172.16.99.80 | 255.255.255.0 | 172.16.99.1 |
| PC-L0 | NIC | DHCP | DHCP | DHCP |
| PC-L1 | NIC | DHCP | DHCP | DHCP |
| PC-R0 | NIC | DHCP | DHCP | DHCP |
| PC-R1 | NIC | DHCP | DHCP | DHCP |
Топология сети

Настройка сети
В качестве маршрутизаторов используйте модель 2911. Обязательно подключите дополнительный модуль HWIC-2T для использования Serial-подключения.
Создайте топологию в соответствии с изображением выше. Только после этого необходимо приступать к настройке!
На RTR-ISP:
Router>enable
Router#config terminal
Router(config)#hostname rtr-isp
rtr-isp(config)#interface gi0/0
rtr-isp(config-if)#no shutdown
rtr-isp(config-if)#ip address 8.0.0.1 255.0.0.0
rtr-isp(config-if)#exit
rtr-isp(config)#interface gi0/1
rtr-isp(config-if)#no shutdown
rtr-isp(config-if)#ip address 200.200.200.1 255.255.255.0
rtr-isp(config-if)#exit
rtr-isp(config)#interface serial0/3/0
rtr-isp(config-if)#no shutdown
rtr-isp(config-if)#ip address 10.10.10.1 255.255.255.252
rtr-isp(config-if)#exit
rtr-isp(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.2
rtr-isp(config)#do write
На RTR:
Router>enable
Router#config terminal
Router(config)#hostname rtr
rtr(config)#access-list 1 permit any
rtr(config)#ip nat inside source list 1 interface serial0/3/0 overload
rtr(config)#interface serial0/3/0
rtr(config-if)#no shutdown
rtr(config-if)#ip address 10.10.10.2 255.255.255.252
rtr(config-if)#ip nat outside
rtr(config-if)#exit
rtr(config)#interface gi0/0
rtr(config-if)#no shutdown
rtr(config-if)#exit
rtr(config)#interface gi0/0.10
rtr(config-if)#encapsulation dot1q 10
rtr(config-if)#ip address 192.168.10.1 255.255.255.0
rtr(config-if)#ip helper-address 172.16.99.67
rtr(config-if)#ip nat inside
rtr(config-if)#exit
rtr(config)#interface gi0/0.20
rtr(config-if)#encapsulation dot1q 20
rtr(config-if)#ip address 192.168.20.1 255.255.255.0
rtr(config-if)#ip helper-address 172.16.99.67
rtr(config-if)#ip nat inside
rtr(config-if)#exit
rtr(config)#interface gi0/0.99
rtr(config-if)#encapsulation dot1q 99
rtr(config-if)#ip address 172.16.99.1 255.255.255.0
rtr(config-if)#ip nat inside
rtr(config-if)#exit
rtr(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.1
rtr(config)#do write
На SW-L:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-l
sw-l(config)#vlan 10
sw-l(config-vlan)#exit
sw-l(config)#vlan 20
sw-l(config-vlan)#exit
sw-l(config)#vlan 99
sw-l(config-vlan)#exit
sw-l(config)#interface fa0/1
sw-l(config-if)#switchport access vlan 10
sw-l(config-if)#switchport mode access
sw-l(config-if)#exit
sw-l(config)#interface fa0/2
sw-l(config-if)#switchport access vlan 20
sw-l(config-if)#switchport mode access
sw-l(config-if)#exit
sw-l(config)#interface fa0/10
sw-l(config-if)#switchport mode trunk
sw-l(config-if)#exit
sw-l(config)#interface range gi0/1-2
sw-l(config-if-range)#shutdown
sw-l(config-if-range)#switchport mode trunk
sw-l(config-if-range)#channel-protocol lacp
sw-l(config-if-range)#channel-group 1 mode active
sw-l(config-if-range)#exit
sw-l(config)#interface port-channel 1
sw-l(config-if)#switchport mode trunk
sw-l(config-if)#exit
sw-l(config)#interface range gi0/1-2
sw-l(config-if-range)#no shutdown
sw-l(config-if-range)#exit
sw-l(config)#do write
На SW-R:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-r
sw-r(config)#vlan 10
sw-r(config-vlan)#exit
sw-r(config)#vlan 20
sw-r(config-vlan)#exit
sw-r(config)#vlan 99
sw-r(config-vlan)#exit
sw-r(config)#interface fa0/1
sw-r(config-if)#switchport access vlan 10
sw-r(config-if)#switchport mode access
sw-r(config-if)#exit
sw-r(config)#interface fa0/2
sw-r(config-if)#switchport access vlan 20
sw-r(config-if)#switchport mode access
sw-r(config-if)#exit
sw-r(config)#interface fa0/24
sw-r(config-if)#switchport access vlan 99
sw-r(config-if)#switchport mode access
sw-r(config-if)#exit
sw-r(config)#interface range gi0/1-2
sw-r(config-if-range)#shutdown
sw-r(config-if-range)#switchport mode trunk
sw-r(config-if-range)#channel-protocol lacp
sw-r(config-if-range)#channel-group 1 mode passive
sw-r(config-if-range)#exit
sw-r(config)#interface port-channel 1
sw-r(config-if)#switchport mode trunk
sw-r(config-if)#exit
sw-r(config)#interface range gi0/1-2
sw-r(config-if-range)#no shutdown
sw-r(config-if-range)#exit
sw-r(config)#do write
На SW-FARM:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-farm
sw-farm(config)#vlan 99
sw-farm(config-vlan)#exit
sw-farm(config)#interface range fa0/1-2
sw-farm(config-if-range)#switchport access vlan 99
sw-farm(config-if-range)#switchport mode access
sw-farm(config-if-range)#exit
sw-farm(config)#interface fa0/24
sw-farm(config-if)#switchport access vlan 99
sw-farm(config-if)#switchport mode access
sw-farm(config-if)#exit
sw-farm(config)#do write
Настройка IP-конфигурации на Global DNS:

Настройка IP-конфигурации на CLI:

Настройка IP-конфигурации на WEB:

Настройка IP-конфигурации на DHCP:

Настройка DHCP службы на этом же устройстве:

Дальше нужно вписать в соответствии и нажать кнопку «Add»:

И для VLAN 20:

Должно по итогу быть так:

После этого нужно проверить на каждому из PC!
На PC-L0:

На PC-L1:

На PC-R0:

На PC-R1:

Также можно проверить, что все узлы из локальной сети могут «гулять» в условный Интернет:
На PC-L0:

На PC-R1:

На WEB:

Как видно, все работает. Пора ломать. Точнее – настраивать политики безопасности и формировать ACL-списки для контроля прохождения трафика.
Локальная сети закрыта NAT-ом, однако необходимо сделать следующие: внешний CLI должен иметь доступ к веб-серверу через механизм проброса портов. То есть при обращении к граничному маршрутизатору сети по IP-адресу и порту (10.10.10.2:8080) должна открываться веб-страница.
На RTR:
rtr>enable
rtr#config terminal
rtr(config)#ip nat inside source static tcp 172.16.99.80 80 10.10.10.2 8080
rtr(config)#do write
Проверка на CLI:


1-я проблема решена!
Пользователи из VLAN 10 и 20 имеют прямой доступ к VLAN 99, в котором находятся сервера. Это проблема. Необходимо ограничить весь доступ к серверам, однако сохранить работоспособность службы HTTP и DHCP для VLAN-ов.
На RTR:
rtr(config)#ip access-list extended CLIENTS-TO-SERVERS
rtr(config-ext-nacl)#permit udp 192.168.10.0 0.0.0.255 host 172.16.99.67 eq 67
rtr(config-ext-nacl)#permit udp 192.168.20.0 0.0.0.255 host 172.16.99.67 eq 67
rtr(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 host 172.16.99.80 eq 80
rtr(config-ext-nacl)#permit tcp 192.168.20.0 0.0.0.255 host 172.16.99.80 eq 80
rtr(config-ext-nacl)#deny ip 192.168.10.0 0.0.0.255 172.16.99.0 0.0.0.255
rtr(config-ext-nacl)#deny ip 192.168.20.0 0.0.0.255 172.16.99.0 0.0.0.255
rtr(config-ext-nacl)#permit ip any any
rtr(config-ext-nacl)#exit
rtr(config)#interface gi0/0.10
rtr(config-subif)#ip access-group CLIENTS-TO-SERVERS in
rtr(config-subif)#exit
rtr(config)#interface gi0/0.20
rtr(config-subif)#ip access-group CLIENTS-TO-SERVERS in
rtr(config-subif)#exit
rtr(config)#do write
Проверка на PC-L0:

ICMP-запросы (пинги) не проходят. Как дела обстоят с HTTP и DHCP?


Теперь проверка DHCP:


При этом выход в Интернет никуда не делся:

Как видно, работает! То же самое сделайте на PC-R1. Если работает, значит, ACL-списки были корректно настроены и базовые политики безопасности в сети небольшого офиса были внедрены.