Курс по сетевым технологиям
A A A

 

Краткая теория

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

Запретить/разрешить мы можем на основе IP адресов, портов и задействованных протоколов. На этом принципе и работают списки управления доступом ACL (Access Control List).

Другим примером использования списков доступа является запрет поступающих на маршрутизатор пакетов протокола ICMP. Как мы знаем с помощью ICMP работают утилиты Ping, Traceroute/Tracert. С помощью данных утилит можно просканировать сеть, а это нежелательно с точки зрения политики безопасности каждой сети.

 

Списки доступа позволяют фильтровать трафик на входе и выходе интерфейса маршрутизатора.

 

И в чем же разница? 

Разница в том, что на входе весь поступающий трафик подвергается фильтрации. Нежелательные пакеты отбрасываются и уже только потом остальные  пакеты маршрутизируются:

Схема работы ACL для входящего потока

 

Когда ACL настроены на выходе интерфейса, то  трафик фильтруется сразу же после процесса маршрутизации:

Схема работы ACL для исходящего потока

 

Данная особенность может быть полезна при определенных обстоятельствах.

 

Так что же из себя представляют списки доступа и как они работают? 

Списки доступа содержат просто набор инструкций какие порты и адреса блокировать, а какие наоборот разрешить. Этих инструкций может от нескольких единиц до десятков.

При поступлении трафика проверка списка доступа начинается сверху вниз, то есть с первой инструкции. Как только будет найдено совпадение проверка списка прекратится и будет выполнено действие, указанное в инструкции (заблокировать или пропустить).

Внизу списка всегда следует неявная инструкция по блокировке всего трафика. Данная инструкция добавляется автоматически самой системой. В настройках она не видна, но нужно знать, что она есть.

 

 

Виды  ACL

Cisco IOS поддерживает 3 типа ACL: 

  • стандартные списки
  • расширенные списки
  • именованные списки

 

Стандартные списки позволяют проверять только IP адрес отправителя. Например,в нашем 1-ом примере доступ в интернет Алисе и Кате можно закрыть с помощью стандартного списка. В данном случае блокируется абсолютно весь трафик, проходящий через маршрутизатор. Стандартные списки доступа рекомендуется устанавливать как можно ближе к отправителю.

 

Расширенные списки позволяют фильтровать пакеты на основе адресов, портов и  протоколов получателя и отправителя.

Например, Алисе разрешается использовать электронную почту, но все еще запрещается использовать остальной доступ в интернет. Кате же разрешены звонки по интернет и запрещены все остальные службы интернет. 

Электронная почта работает по протоколам POP/SMTP (порты 110/ 25). Следовательно можно внести исключение в списки доступа исходя из выше описанных условий.

То же самое касается и IP телефонии - выбираем задействованный протокол и порт и вносим в список доступа. 

Расширенные списки рекомендуется устанавливать ближе к получателю.

Именованные списки являются теми же стандартными и расширенными ACL, однако предоставляют более гибкие возможности для редактирования (об этом немного позже).

 

 

Настройка ACL

Рассмотрим какие команды используются в каждом типе ACL,  а затем применим их на примере.

 

Стандартный список

Инструкция задается следующей командой:

Router(config)# access-list номер permit | deny IP_адрес_отправителя инвертированная_маска (wildcard mask)

 

Например, так

Router(config)# access-list 1 deny 192.168.1.0 0.0.0.255

Router(config)# access-list 1 permit 10.1.0.0  0.0.255.255

Router(config)# access-list 1 deny any

 

Номер списка принимает значения от 1 до 99. Цифры не означают приоритет или упорядоченность. Это просто номер списка. Затем следует команда permit (разрешить) или deny (запретить). С помощью инвертированной маски (wildcard mask) мы можем определить диапазон адресов, на которые будет распространяться запрет/разрешение. 

В первой команде мы запрещаем сеть 192.168.1.0/24, а во второй разрешаем сеть 10.1.0.0/16.

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

 

А как работает инвертированная маска (wildcard mask)? 

Работа инвертированной маски основана на следующем принципе.

На тех битовых позициях, где установлен 0 IP адрес устройства должен совпадать с адресом, указанным в настройках ACL.

На тех битовых позициях, где установлена 1 IP адрес устройства может не совпадать с адресом, указанным в настройках ACL, то есть может принимать любые значения. Поясню сказанное на примерах.

 

Пример №1

Необходимо разрешить доступ диапазону адресов 192.168.1.0 - 192.168.1.255. Так как первые 3 октета должны совпадать полностью, а четвертый может принимать любые значения, то используем маску 0.0.0.255. Вот как это выглядит на рисунке

Пример работы Wildcard mask

 

 

Пример №2

К диапазону 192.168.1.0-192.168.1.255 добавим еще один диапазон 192.168.2.0 - 192.168.2.255.

Теперь у нас должны совпадать первые 2 октета полностью и первые 6 бит третьего октета. Поэтому маска у нас 0.0.3.255. А в настройках ACL мы укажем адрес 192.168.0.0. Можно, конечно, указать сразу 2 отдельные команды на каждый диапазон, с помощью маски мы можем сократить запись

Пример работы Wildcard mask

 

 

Пример №3

Необходимо разрешить/запретить диапазон 200.40.0.4 - 200.40.0.7. У нас совпадают полностью первые 3 октета и первые 6 бит четвертого октета:

Пример работы Wildcard mask

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

Router(config-if)# ip access-group номер_применяемого_списка in | out

 

in - входящий трафик

out - исходящий трафик

 

Алгоритм работы стандартного списка выглядит так:

Алгоритм работы стандартного ACL

 

 

Расширенный список доступа 

Расширенные списки доступа имеют номера от 100 до 199.

Команды имеют довольно широкий набор опций, поэтому покажу наиболее общий пример команды:

Router(config)#access-list номер permit | deny протокол IP_адрес_отправителя инвертированная_маска порт_отправителя IP_адрес_получателя инвертированная_маска порт_получателя

 

И вот пример:

Router(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 eq 80 10.1.1.0 0.0.0.255 eq 443


Данная  команда разрешает TCP трафик от хостов с диапазоном 192.168.1.0/24 на хосты с диапазоном 10.1.1.0/24. Причем порты отправителя должны быть равны  80, а порты получателя - 443. Если все  эти условия соблюдаются, то пакет пропускается, если нет, то  переходит к следующей команде.



Router(config)#access-list 100 deny tcp  any host 172.16.1.5 gt 5000

 

А вот эта команда запрещает весь TCP трафик от любого хоста на конкретный хост с адресом 172.16.1.5. Причем запрет действует при условии, что запросы  идут на порты получателя от 5001 и выше.  

В конце списка всегда следует неявная команда, запрещающая весь трафик.  

Не забудь определить интерфейс и направление трафика для фильтрации. 

 

Вот как выглядит алгоритм работы расширенных списков:

Принцип работы расширенного ACL

 

Для просмотра настроек используй следующие команды:

Router# show running-config

 

Конфигурация с ACL

 

Router# show ip access-lists

 

Установленные команды стандартного списка

 

Router# show ip access-lists interface название_интерфейса


ACL назначен интерфейсу

 

Именованные списки 

Ничем не отличаются от стандартных и расширенных списков, однако позволяют гибко редактировать вновь созданные списки.

Стандартные и расширенные списки редактировать нельзя. К примеру, нельзя в середину списка вставить команду или удалить ее. Для этого нужно сначала деактивировать список на самом интерфейсе, а затем полностью его удалить и настроить заново. 

Именованный список позволяет использовать названия списков вместо их номеров. Все введенные команды нумеруются, что позволяет легко добавлять и удалять команды. 

Синтаксис команд представлен ниже.

 

Для стандартных списков:

Router(config)# ip access-list standard название

Router(config-std-nacl)# permit host IP_адрес_отправителя

Router(config-std-nacl)# deny IP_адрес_отправителя инвертированная_маска

 

Для расширенных списков:

Router(config)# ip access-list extended название

Router(config-ext-nacl)# permit ip IP_адрес_отправителя инвертированная_маска IP_адрес_получателя инвертированная_маска

Router(config-ext-nacl)# deny tcp  IP_адрес_отправителя инвертированная_маска порт_отправителя  IP_адрес_получателя инвертированная_маска порт_получателя

  

Чтобы удалить ненужную команду достаточно узнать ее номер. Чтобы узнать номер введи команду:

Router# show ip access-list название

Именованный список доступа LAN

 

а затем укажи ее номер при удалении:

Router(config-ext-nacl)# no 10 - этого уже достаточно

 

Ну а чтобы добавить команду достаточно тоже указать номер и затем саму команду.

Обращаю твое внимание, что удаление и добавление строк списка происходит в режиме настройки ACL, например так:

Router(config-ext-nacl)# 5 deny ip any any

 

 

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

Рассмотрим сеть:

Простой пример корпоративной сети

 

Сеть состоит из 3 частей:

  • Внутренняя сеть - основная инфраструктура локальной сети любого предприятия.
  • Демилитаризованная зона DMZ - в ней располагаются сервера, которые доступны из интернета. Доступ во внутреннюю сеть из этой зоны закрыт из соображений безопасности.
  • Внешняя сеть - связывается напрямую с провайдером. Обычно состоит из маршрутизаторов и сетевых экранов (firewalls).

 

Именно по этому принципу и строятся сети предприятий.

 

Задача у нас следующая:

  1. Всем серверам из DMZ запретить доступ во внутреннюю сеть
  2. Всем серверам из DMZ разрешить двустороннюю связь в интернет
  3. Пользователям из интернета разрешить доступ на серверы в DMZ, учитывая протокол взаимодействия и порты TCP/UDP
  4. Разрешить доступ внутренним пользователям на серверы DMZ
  5. Запретить Алине и Саше доступ в интернет и DMZ, то есть они могут работать только во внутренней сети.

 

Пункт №1 можно решить с помощью расширенного списка на маршрутизаторе LAN_Router

Расширенный ACL для пункта №1


На самом деле в данном примере серверы не имеет доступа к внутренним компьютерам, потому что подключены к различным интерфейсам маршрутизатора Firewall. Данный маршрутизатор ничего не знает о сети 192.168.1.0/24, поэтому не может перенаправить пакеты серверов к маршрутизатору LAN_Router. Однако достаточно маленькой ошибки в конфигурации и внутренние компьютеры станут доступны не только для DMZ, но и для внешней сети.

Поэтому список доступа на маршрутизаторе LAN_router безусловно необходим.

 

А какие ошибки могут привести к тому, что сеть LAN будет доступна для DMZ? 

Например, на маршрутизаторе Firewall при настройке статического маршрута может быть по ошибке указан интерфейс, ведущий к маршрутизатору LAN_Router. 

Или на маршрутизаторе LAN_Router будет выполнена команда redistribute connected. В данный момент между 2-мя маршрутизаторами настроен EIGRP. Если выполнить вышеназванную команду, то маршрутизатор Firewall узнает о сети LAN.

 

Пункты №2  и №3 не требуют списков доступа. Достаточно настроить правильно маршрутизацию и NAT на маршрутизаторе Firewall

NAT для пунктов №2 и №3

 

Пункт №4. Внутренние пользователи уже имеют доступ в зону DMZ, однако связь будет работать только в одну сторону, так как мы закрыли доступ еще в п.1.

 

Как же сделать так, чтобы внутренние пользователи имели полноценный доступ ко всем серверам и в то же время запретить серверам доступ во внутреннюю сеть? 

Решение простое - достаточно настроить NAT на маршрутизаторе LAN_Router. Тогда только внутренние пользователи смогут подключаться к серверам, а сервера уже не смогут из-за активированного списка доступа. Однако это не единственное решение

Настройки NAT для пункта №1


Пункт №5 решается с помощью стандартного списка

Стандартный ACL для пункта №5

На этом все.