Рейтинг@Mail.ru

NetCloud

Простыми словами о сетевых технологиях

Настройка ACL в Cisco

ACL (Access Control List) — это список управления доступом. Списки доступа позволяют сетевым инженерам идентифицировать пакеты различных типов.  Для этого в конфигурации ACL перечисляют значения, которые маршрутизатор Cisco может найти в заголовках IP, TCP, UDP и др. Например, список доступа может распознать пакет с IP-адресом отправителя 1.1.1.1, или пакеты IP-адрес получателя которых находится в подсети 10.1.1.0/24, или пакеты с портом получателя TCP 23 (Telnet). Чаще всего списки доступа применяют как фильтр пакетов.

ACL применяется на:

  1. Интерфейсе: для фильтрации пакетов
  2. Telnet: для ограничения доступа к маршрутизатору
  3. VPN: для определения трафика, подлежащего шифрованию
  4. QoS: для определения трафика, который необходимо обработать
  5. NAT: для определения IP-адресов, которые необходимо транслировать

Сами по себе списки доступа представляют из себя список выражений, которые что-то разрешают, либо запрещают. ACL применяется на определенном интерфейсе и на одном направлении (входящем или исходящем).  Таким образом, списки ACL могут быть применены к входящим на маршрутизатор пакетам раньше, чем он примет решение о их перенаправлении. Либо к исходящим пакетам, после того, как маршрутизатор примет решение о перенаправлении и направит пакет на данный интерфейс.

cisco-acl1

Рассмотрим простой пример. Когда из LAN1 (локальная внутренная сеть) приходит пакет на интерфейс f0/0 роутер проверяет входящий трафик по ACL строго в том порядке, в котором записаны выражения. Если ACL разрешает проходить пакету, то роутер отправляет на интерфейс f0/1. Перед отправкой пакета маршрутизатор проверяет исходящий трафик по ACL и только после этого принимает решение о его передаче в сторону ISP (Internet Service Proiver — провайдер).

При использовании ACL для фильтрации пакетов может быть выбрано только одно из двух действий. Команды конфигурации используют ключевые слова deny (запретить) и permit (разрешить), означающие соответственно отказ от пакета или разрешение его передачи.

Списки доступа ACL бывают двух видов:

  1. Стандартные (standart) — могут проверять только IP-адреса отправителей пакетов
  2. Расширенные (extended) — могут проверять адреса источников/получателей, тип протокола, UDP/TCP порты

ACL обозначаются порядковыми номерами (стандартные от 1 до 99, расширенные от 100 до 199), а также символьными именами.

Рассмотрим несколько важных правил, касающихся ACL:

  1. Нельзя разместить более одного списка доступа на интерфейс, протокол, направление;
  2.  ACL не действует на трафик сгенерированный самим маршрутизатором;
  3. Для фильтрации пакетов используется обратная WildCard-маска (например 0.0.255.255 соответствует 255.255.0.0)
  4. Как только обнаруживается соответствие пакета в одной из строк списка ACL, маршрутизатор предпринимает действие, указанное в этой строке списка, и прекращает дальнейшее сравнение
  5. В конце каждого списка доступа стоит неявное deny any — запретить все

Стандартные нумерованные списки доступа используют следующую глобальную команду:

access-list {1-99} {permit | deny} {address | any | host} {source-wildcard)

Каждый нумерованный список доступа ACL содержит одну или несколько команд access-list с любым номером из диапазона, представленного в строке синтаксиса выше. Помимо номера ACL, каждая команда содержит выбранное действие (permit или deny) и логику распознавания. Параметры команды access-list:

  1. permit — разрешить
  2. deny — запретить
  3. adress — запрещаем или разрешаем конкретную сеть (указываем ее Ip-адрес)
  4. any — запрещаем или разрешаем все
  5. host — запрещаем или разрешаем хост (указываем его Ip-адрес)
  6. source-wildcard — обратная маска

После создания списка доступа его необходимо применить на определенном интерфейсе:

ip access-group {номер или имя ACL} {in | out}

Где in — входящее направление, out — исходящее направление.

Перейдем теперь к практике. Для начала настроем простую сеть, в которой будут ноутбук администратора, компьютеры обычных пользователей и сервер. Необходимо сделать так. чтобы  доступ к серверу имел только администратор. Ip-план и схема прилагаются.

Категория хоста Ip-подсеть Номер VLAN
Администратор 172.16.0.0/24 2
Сервера 172.16.1.0/24 3
Пользователи 172.16.2.0/24 10

cisco-acl2

По  традиции для тех кто будет собирать эту схему Packet tracer я привожу полную конфигурацию всех устройств с описанием команд.

Switch>enable - переходим в расширенный режим
Switch#configure terminal - переходим в режим конфигурации
Switch(config)#vlan 2 - создаем vlan 2
Switch(config-vlan)#name Admin - название для vlan 2
Switch(config)#vlan 3 - создаем vlan 3
Switch(config-vlan)#name Server - название для vlan 3
Switch(config)#vlan 10 - создаем vlan 10
Switch(config-vlan)#name User's - название для vlan 10
Switch(config)#interface range fa0/1 - fa0/9 - настраиваем интерфейсы в сторону Пользователей
Switch(config-if-range)#description User's - описание интерфейса 
Switch(config-if-range)#switchport mode access - настраиваем порт на тегированный режим
Switch(config-if-range)#switchport access vlan 10 - тегируем кадры 10 VLAN
Switch(config-if-range)#exit
Switch(config)#interface fa0/10 - настраиваем интерфейсы в сторону Сервера
Switch(config-if)#description Server - описание интерфейса 
Switch(config-if)#switchport mode access - настраиваем порт на тегированный режим
Switch(config-if)#switchport access vlan 3 - тегируем кадры 3 VLAN
Switch(config-if)#exit
Switch(config)#interface fa0/20 - настраиваем интерфейсы в сторону Админа
Switch(config-if)#description Admin - описание интерфейса 
Switch(config-if)#switchport mode access - настраиваем порт на тегированный режим
Switch(config-if)#switchport access vlan 2 - тегируем кадры 2 VLAN
Switch(config-if)#exit
Switch(config)#interface fa0/24 - настраиваем интерфейсы в сторону Роутера
Switch(config-if)#description Router - описание интерфейса 
Switch(config-if)#switchport mode trunk - настраиваем порт на нетегированный режим
Switch(config-if)#switchport trunk allowed vlan 2-3,10 - пропускаем VLAN 2-3,10
Switch(config-if)#exit
Switch(config)#do write - сохраняем конфигурацию

Конфигурация для маршрутизатора:

Router>enable - переходим в расширенный режим
Router#configure terminal - переходим в режим конфигурации
Router(config)#interface fa0/0 - настаиваем порт в сторону Свича
Router(config-if)#description Switch - описание интерфейса
Router(config-if)#no shutdown - включаем интерфейс физически
Router(config-if)#exit
Router(config)#interface fa0/0.2 - настраиваем сабинтерфейс для подсети Админа
Router(config-subif)#description Admin - описание интерфейса
Router(config-subif)#encapsulation dot1q 2 - тегируем 2 VLAN'ом
Router(config-subif)#ip address 172.16.0.1 255.255.255.0 - задаем шлюз по-умолчанию для Админа
Router(config-subif)#exit
Router(config)#interface fa0/0.3 - настраиваем сабинтрфейс для подсети Серверов
Router(config-subif)#description Server - описание интерфейса
Router(config-subif)#encapsulation dot1q 3 - тегируем 3 VLAN'ом
Router(config-subif)#ip address 172.16.1.1 255.255.255.0 - задаем шлюз по-умолчанию для Серверов
Router(config-subif)#exit
Router(config)#interface fa0/0.10 - настраиваем сабинтрфейс для подсети Пользователей
Router(config-subif)#description User's - описание интерфейса
Router(config-subif)#encapsulation dot1q 10 - тегируем 10 VLAN'ом
Router(config-subif)#ip address 172.16.2.1 255.255.255.0 - задаем шлюз по-умолчанию для Серверов
Router(config-subif)#exit

Запускаем пинг с пользовательского компа до сервера





cisco-acl4

Как видим доступ есть. Нам же необходимо, чтобы доступ имел только админ. Для этого нам необходимо создать список доступа (пусть он будет иметь порядковый номер 10), в котором мы разрешим всем пакетам от администратора (172.16.0.100) доступ в подсеть серверов (172.16.1.0/24). После чего применим это правило на сабинтерфейсе fa0/0.3 (для серверов) для всех исходящих пакетов.

Router(config)#access-list 10 permit host 172.16.0.100 - создаем список доступа, в котором разрешаем хосту админа
Router(config)#interface fa0/0.3 - настраиваем сабинтерфейс для Серверов
Router(config-subif)#ip access-group 10 out - применяем настройки списка доступа на сабинтерфейсе

Тестируем настройки. Запускаем пинг с пользовательского компьютера в сторону сервера.

cisco-acl5Пишет Destination host unreachable — хост назначения недоступен.

Запускаем пинг с компьютера администратора.

cisco-acl6

Пинг идет — значит ACL настроили правильно. Что происходит когда мы пингуем сервер с ноутбука администратора? Пакет сначала поступает на саибинтерфейс  fa0/0.2 маршрутизатора. На данном интерфейсе не настроены списки доступа значит пакет проходит далее. Роутер смотрит в свою таблицу маршрутизации и видит что подсеть серверов находится на сабинтерфейсе fa0/0.3. Перед отправкой пакета маршрутизатор видит, что к данному интерфейсу прикреплен ACL 10. В данном списке доступа всего одна запись — разрешить отправку пакетов только хосту 172.16.0.100 (ноут админа). Маршрутизатор смотрит в Ip-пакет и видит адрес отправителя 172.16.0.100 после чего отправляет пакет в подсеть серверов. Ip-пакет с любым отличным от 172.16.0.100 будет отбрасываться, так как в конце ACL 10 стоит неявный deny any — запретить все.

Теперь перейдем к расширенным спискам доступа. Пользователям в нашей сети необходимо иметь доступ к файловому хранилищу и веб-сайту. Мы же ранее полностью ограничили им доступ к серверу. Необходимо исправить ситуацию и в этом нам помогут расширенные списки доступа. Расширенные списки доступа могут проверять Ip-адреса источника/отправителя, тип протокола, UDP/TCP-порты. В нашей ситуации необходимо будет проверять номера портов. Если пользователь обращается к серверу по разрешенному порту, то маршрутизатор пропускает такой пакет. Разрешенные порты: 80 (HTTP — доступ к веб-сайту), 21 (FTP — доступ к файловому хранилищу). Протоколы HTTP и FTP работают поверх TCP. Также для распознавания доменных имен на нашем сервере поднят DNS. DNS-сервер работает на порту 53.

Размещать расширенный список доступа будем на сабинтерфейсе fa0/0.3. Но на этом интерфейсе уже размещен список доступа. Вспоминаем правило: Нельзя разместить более одного списка доступа на интерфейс. Так что придется удалить созданный ранее список доступа. Правило, созданное для администратора перенесем в новый расширенный список с именем Server-out.

Конфигурация для маршрутизатора:

Router(config)#no access-list 10 permit host 172.16.0.100 - удаляем предыдущий список доступа
Router(config)#interface fa0/0.3 - настраиваем сабинтерфейс для Серверов
Router(config-subif)#no ip access-group 10 out - удаляем предыдущие настройки списка доступа
Router(config-subif)#exit
Router(config)#ip access-list extended Server-out - создаем расширенный список доступа
Router(config-ext-nacl)#permit ip host 172.16.0.100 host 172.16.1.2 - даем админу полный доступ к серверу
Router(config-ext-nacl)#permit tcp any host 172.16.1.2 eq 80 - разрешаем любому хосту доступ по HTTP к серверу
Router(config-ext-nacl)#permit tcp any host 172.16.1.2 eq 21 - разрешаем любому хосту доступ по FTP к серверу
Router(config-ext-nacl)#permit tcp any host 172.16.1.2 eq 53 - разрешаем любому хосту доступ по DNS к серверу
Router(config-ext-nacl)#exit
Router(config)#interface fa0/0.3
Router(config-if)#ip access-group Server-out out

С компьютера админа пинг до сервера есть:

test-static100

С компьютера пользователя пинга нет:

test-static101

Проверим с компьютера пользователя проходят ли DNS-запросы до сервера. Для этого запустим утилиту nslookup — которая определяет Ip-адрес до доменному имени.

test-static103

DNS-запросы проходят без проблем. Проверим доступ к нашему условному Web-сайту через браузер:

test-static104

Напоследок подключимся к FTP-серверу:

test-static105

Подключение прошло успешно!