Какие параметры контролирует расширенные списки доступа
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
🔥 Популярное
Настройка Site-To-Site IPSec VPN на Cisco
Настройка GRE туннеля на Cisco
Cisco ASA 5506-X: интерфейс BVI
Как скачать и установить Cisco Packet Tracer
👌 Похожее
Про CatOS (Catalyst Operating System)
Настройка Cisco Embedded Packet Capture
5 лайфхаков в консоли Cisco
Поиск и устранение неисправностей протокола EIGRP
Расширенные листы контроля доступа (Extended ACL)
На устройствах Cisco
В наших материалах по Cisco, посвященных конфигурации сетевых устройств мы часто встречаемся со стандартными листами (списками) контроля доступа. А теперь поговорим о расширенных. Расширенные листы могут также фильтровать трафик по следующим параметрам:
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Что делать?
Для начала необходимо создать лист. Сделаем это с помощью команды:
Синтаксис команды следующий:
Кстати, для расчета wildcard (обратной) маски, вы можете воспользоваться нашим калькулятором подсетей:
Следующим шагом необходимо применить наш свежесозданный лист на интерфейс и его направление (на вход или выход):
Параметры in и out определяют направление, на котором будет применен лист контроля доступа
Для нумерации расширенных листов контроля доступа необходимо использовать следующую нумерацию: со 100 до 199 и с 2000 до 2699
Пример настройки (сценарий №1)
В топологии указанной ниже, нам нужно разрешить пользователям из подсети 10.0.0.0/24 доступ к серверу S2 (адрес 192.168.0.1), но не к серверу S1 (адрес 172.16.0.1/24).
Для начала, напишем ACL и разрешим доступ к серверу S2. Сделаем это мы следующей командой:
Данная команда разрешает весь трафик из подсети 10.0.0.0 на хост 192.168.1.0. Затем, запретим доступ к серверу S1:
Наконец, применим данные листы контроля доступа на интерфейсе R1:
Пример настройки (сценарий №2)
Приведем иной пример использования расширенных листов контроля доступа: У нас снова есть сеть 10.0.0.0/24 и сервер S1, который слушает порт 80. Нам нужно разрешить пользователям доступ к веб-ресурсам на данном сервере, но также необходимо запретить какой-либо другой доступ, к примеру Telnet.
Для начала, нам нужно разрешить трафик из пользовательской подсети к веб-серверу на порту 80, что выполняется командой
Используя ключевое слово TCP, мы можем фильтровать пакеты по портам источника и назначения. В примере выше, мы разрешили путь трафику из подсети 10.0.0.0 на хост 172.16.0.1 на порт 80 (веб-порт).
Теперь нужно запретить Telnet трафик из подсети 10.0.0.0 в подсеть 172.16.0.1. Для этого нужен еще один аксес-лист, на этот раз с запрещающим выражением:
Далее, применим его на интерфейс с помощью следующих команд:
Как мы уже описывали в предыдущей статье, в конце каждого листа всегда есть всезапрещающее правило. После применения первого правила, весь остальной трафик ходить не будет.
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
ACL: списки контроля доступа в Cisco IOS
Сегодня я расскажу вам о том, как отфильтровать трафик в сети с помощью списков контроля доступа. Рассмотрим как они работают соответственно, что собой представляют, для чего предназначены. Позже я покажу как они настраиваются в Cisco IOS и выложу архив с лабораторными работами для закрепления ваших знаний.
Введение
ACL (Access Control List) — это набор текстовых выражений, которые что-то разрешают, либо что-то запрещают. Обычно ACL разрешает или запрещает IP-пакеты, но помимо всего прочего он может заглядывать внутрь IP-пакета, просматривать тип пакета, TCP и UDP порты. Также ACL существует для различных сетевых протоколов (IP, IPX, AppleTalk и так далее). В основном применение списков доступа рассматривают с точки зрения пакетной фильтрации, то есть пакетная фильтрация необходима в тех ситуациях, когда у вас стоит оборудование на границе Интернет и вашей частной сети и нужно отфильтровать ненужный трафик.
Вы размещаете ACL на входящем направлении и блокируете избыточные виды трафика.
Теория
Сам же ACL представляет собой набор текстовых выражений, в которых написано permit (разрешить) либо deny (запретить), и обработка ведется строго в том порядке в котором заданы выражения. Соответственно когда пакет попадает на интерфейс он проверяется на первое условие, если первое условие совпадает с пакетом, дальнейшая его обработка прекращается. Пакет либо перейдет дальше, либо уничтожится.
Ещё раз, если пакет совпал с условием, дальше он не обрабатывается. Если первое условие не совпало, идет обработка второго условия, если оно совпало, обработка прекращается, если нет, идет обработка третьего условия и так дальше пока не проверятся все условия, если никакое из условий не совпадает, пакет просто уничтожается. Помните, в каждом конце списка стоит неявный deny any (запретить весь трафик). Будьте очень внимательны с этими правилами, которые я выделил, потому что очень часто происходят ошибки при конфигурации.
Виды ACL
Динамический (Dynamic ACL)
Позволяет сделать следующее, например у вас есть маршрутизатор, который подключен к какому-то серверу и нам нужно закрыть доступ к нему из внешнего мира, но в тоже время есть несколько человек, которые могут подключаться к серверу.
Мы настраиваем динамический список доступа, прикрепляем его на входящем направлении, а дальше людям, которым нужно подключиться, подключаться через Telnet к данному устройству, в результате динамический ACL открывает проход к серверу, и уже человек может зайти скажем через HTTP попасть на сервер. По умолчанию через 10 минут этот проход закрывается и пользователь вынужден ещё раз выполнить Telnet чтобы подключиться к устройству.
Рефлексивный (Reflexive ACL)
Здесь ситуация немножко отличается, когда узел в локальной сети отправляет TCP запрос в Интернет, у нас должен быть открытый проход, чтобы пришел TCP ответ для установки соединения. Если прохода не будет — мы не сможем установить соединение, и вот этим проходом могут воспользоваться злоумышленники, например проникнуть в сеть. Рефлексивные ACL работают таким образом, блокируется полностью доступ (deny any) но формируется ещё один специальный ACL, который может читать параметры пользовательских сессий, которые сгенерированны из локальной сети и для них открывать проход в deny any, в результате получается что из Интернета не смогут установить соединение. А на сессии сгенерированны из локальной сети будут приходить ответы.
Ограничение по времени (Time-based ACL)
Обычный ACL, но с ограничением по времени, вы можете ввести специальное расписание, которое активирует ту или иную запись списка доступа. И сделать такой фокус, например пишем список доступа, в котором запрещаем HTTP-доступ в течении рабочего дня и вешаем его на интерфейс маршрутизатора, то есть, сотрудники предприятия пришли на работу, им закрывается HTTP-доступ, рабочий день закончился, HTTP-доступ открывается,
пожалуйста, если хотите — сидите в Интернете.
Настройка
Стандартный список доступа
Расширенный список доступа
Прикрепляем к интерфейсу
Именованные списки доступа
Ограничение доступа к маршрутизатору
R(config)#line vty 0 4 — переходим в режим настройки виртуальных линий.
R(config-line)#password
R(config-line)#login
R(config-line)#access-class 21 in — настраиваем логин и пароль, а также закрепляем список доступа с разрешенными IP-адресами.
Динамические списки доступа
R3(config)#username Student password 0 cisco — создаем пользователей для подключения через Telnet.
R3(config)#access-list 101 permit tcp any host 10.2.2.2 eq telnet
R3(config)#access-list 101 dynamic testlist timeout 15 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 — разрешаем подключаться к серверу по Telnet всем узлам.
R3(config)#interface serial 0/0/1
R3(config-if)#ip access-group 101 in — закрепляем 101 ACL за интерфейсом в входящем направлении.
R3(config)#line vty 0 4
R3(config-line)#login local
R3(config-line)#autocommand access-enable host timeout 5 — как только пользователь аутентифицируеться, сеть 192.168.30.0 будет доступна, через 5 минут бездействия сеанс закроется.
Рефлексивные списки доступа
R2(config)#ip access-list extended OUTBOUNDFILTERS
R2(config-ext-nacl)#permit tcp 192.168.0.0 0.0.255.255 any reflect TCPTRAFFIC
R2(config-ext-nacl)#permit icmp 192.168.0.0 0.0.255.255 any reflect ICMPTRAFFIC — заставляем маршрутизатор отслеживать трафик, который инициировался изнутри.
R2(config)#ip access-list extended INBOUNDFILTERS
R2(config-ext-nacl)#evaluate TCPTRAFFIC
R2(config-ext-nacl)#evaluate ICMPTRAFFIC — создаем входящую политику, которая требует, чтобы маршрутизатор проверял входящий трафик, чтобы видеть инициировался ли изнутри и связываем TCPTRAFFIC к INBOUNDFILTERS.
R2(config)#interface serial 0/1/0
R2(config-if)#ip access-group INBOUNDFILTERS in
R2(config-if)#ip access-group OUTBOUNDFILTERS out — применяем входящий и исходящий ACL на интерфейс.
Ограничение по времени
R1(config)#time-range EVERYOTHERDAY
R1(config-time-range)#periodic Monday Wednesday Friday 8:00 to 17:00 — создаем список времени, в котором добавляем дни недели и время.
R1(config)#access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq telnet time-range EVERYOTHERDAY — применяем time-range к ACL.
R1(config)#interface s0/0/0
R1(config-if)#ip access-group 101 out — закрепляем ACL за интерфейсом.
Поиск проблем
R#show access-lists
R#show access-lists — смотрим все списки доступа на маршрутизаторе.
Пример
Router#show access-lists
Extended IP access list nick
permit ip host 172.168.1.1 host 10.0.0.5
deny ip any any (16 match(es))
Standard IP access list nick5
permit 172.16.0.0 0.0.255.255
Мы видим что у нас есть два ACL (стандартный и расширенный) под названиями nick и nick5. Первый список разрешает хосту 172.16.1.1 обращаться по IP (это значит что разрешены все протоколы работающие поверх IP) к хосту 10.0.0.5. Весь остальной трафик запрещен показывает команда deny ip any any. Рядом с этим условием в нашем примере пишет (16 match(es)). Это показывает что 16 пакетов попали под это условие.
Второй ACL разрешает проходить трафик от любого источника в сети 172.16.0.0/16.
Практика
Я собрал лабораторные работы для Packet Tracer с 5 главы курса CCNA 4 по теме ACL. Если у вас есть желание закрепить знания на практике, пожалуйста — ссылка, зеркало — FTP. Размер — 865.14 KB.
Урок 39. Списки контроля доступа ACL (Access List Control)
Запретить/разрешить мы можем на основе IP адресов, портов и задействованных протоколов. На этом принципе и работают списки управления доступом ACL ( Access Control List ).
Другим примером использования списков доступа является запрет поступающих на маршрутизатор пакетов протокола ICMP. Как мы знаем с помощью ICMP работают утилиты Ping, Traceroute/Tracert. С помощью данных утилит можно просканировать сеть, а это нежелательно с точки зрения политики безопасности каждой сети.
Списки доступа позволяют фильтровать трафик на входе и выходе интерфейса маршрутизатора.
И в чем же разница?
Разница в том, что на входе весь поступающий трафик подвергается фильтрации. Нежелательные пакеты отбрасываются и уже только потом остальные пакеты маршрутизируются:
Когда ACL настроены на выходе интерфейса, то трафик фильтруется сразу же после процесса маршрутизации:
Данная особенность может быть полезна при определенных обстоятельствах.
Так что же из себя представляют списки доступа и как они работают?
Списки доступа содержат просто набор инструкций какие порты и адреса блокировать, а какие наоборот разрешить. Этих инструкций может от нескольких единиц до десятков.
При поступлении трафика проверка списка доступа начинается сверху вниз, то есть с первой инструкции. Как только будет найдено совпадение проверка списка прекратится и будет выполнено действие, указанное в инструкции (заблокировать или пропустить).
Внизу списка всегда следует неявная инструкция по блокировке всего трафика. Данная инструкция добавляется автоматически самой системой. В настройках она не видна, но нужно знать, что она есть.
Cisco IOS поддерживает 3 типа ACL:
Стандартные списки позволяют проверять только IP адрес отправителя. Например,в нашем 1-ом примере доступ в интернет Алисе и Кате можно закрыть с помощью стандартного списка. В данном случае блокируется абсолютно весь трафик, проходящий через маршрутизатор. Стандартные списки доступа рекомендуется устанавливать как можно ближе к отправителю.
Расширенные списки позволяют фильтровать пакеты на основе адресов, портов и протоколов получателя и отправителя.
Например, Алисе разрешается использовать электронную почту, но все еще запрещается использовать остальной доступ в интернет. Кате же разрешены звонки по интернет и запрещены все остальные службы интернет.
Электронная почта работает по протоколам POP/SMTP (порты 110/ 25). Следовательно можно внести исключение в списки доступа исходя из выше описанных условий.
Расширенные списки рекомендуется устанавливать ближе к получателю.
Именованные списки являются теми же стандартными и расширенными 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
Пример №2
Теперь у нас должны совпадать первые 2 октета полностью и первые 6 бит третьего октета. Поэтому маска у нас 0.0.3.255. А в настройках ACL мы укажем адрес 192.168.0.0. Можно, конечно, указать сразу 2 отдельные команды на каждый диапазон, с помощью маски мы можем сократить запись
Пример №3
После того, как список создан, необходимо определить направление (входящий или исходящий) трафика и на каком интерфейсе он будет фильтроваться:
Router(config-if)# ip access-group номер_применяемого_списка in | out
Алгоритм работы стандартного списка выглядит так:
Расширенный список доступа
Расширенные списки доступа имеют номера от 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
Router(config)#access-list 100 deny tcp any host 172.16.1.5 gt 5000
А вот эта команда запрещает весь TCP трафик от любого хоста на конкретный хост с адресом 172.16.1.5. Причем запрет действует при условии, что запросы идут на порты получателя от 5001 и выше.
В конце списка всегда следует неявная команда, запрещающая весь трафик.
Не забудь определить интерфейс и направление трафика для фильтрации.
Вот как выглядит алгоритм работы расширенных списков:
Для просмотра настроек используй следующие команды:
Router# show running-config
Router# show ip access-lists
Router# show ip access-lists interface название_интерфейса
Ничем не отличаются от стандартных и расширенных списков, однако позволяют гибко редактировать вновь созданные списки.
Именованный список позволяет использовать названия списков вместо их номеров. Все введенные команды нумеруются, что позволяет легко добавлять и удалять команды.
Синтаксис команд представлен ниже.
Для стандартных списков:
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 название
а затем укажи ее номер при удалении:
Ну а чтобы добавить команду достаточно тоже указать номер и затем саму команду.
Обращаю твое внимание, что удаление и добавление строк списка происходит в режиме настройки ACL, например так:
Router(config-ext-nacl)# 5 deny ip any any
Пример использования списков доступа
Сеть состоит из 3 частей:
Именно по этому принципу и строятся сети предприятий.
Задача у нас следующая:
Пункт №1 можно решить с помощью расширенного списка на маршрутизаторе LAN_Router
На самом деле в данном примере серверы не имеет доступа к внутренним компьютерам, потому что подключены к различным интерфейсам маршрутизатора Firewall. Данный маршрутизатор ничего не знает о сети 192.168.1.0/24, поэтому не может перенаправить пакеты серверов к маршрутизатору LAN_Router. Однако достаточно маленькой ошибки в конфигурации и внутренние компьютеры станут доступны не только для DMZ, но и для внешней сети.
Поэтому список доступа на маршрутизаторе LAN_router безусловно необходим.
А какие ошибки могут привести к тому, что сеть LAN будет доступна для DMZ?
Например, на маршрутизаторе Firewall при настройке статического маршрута может быть по ошибке указан интерфейс, ведущий к маршрутизатору LAN_Router.
Пункты №2 и №3 не требуют списков доступа. Достаточно настроить правильно маршрутизацию и NAT на маршрутизаторе Firewall
Пункт №4. Внутренние пользователи уже имеют доступ в зону DMZ, однако связь будет работать только в одну сторону, так как мы закрыли доступ еще в п.1.
Как же сделать так, чтобы внутренние пользователи имели полноценный доступ ко всем серверам и в то же время запретить серверам доступ во внутреннюю сеть?
Пункт №5 решается с помощью стандартного списка
Cisco IOS ACLs
В этой статье я бы хотел поговорить про возможности Cisco IOS Access Control Lists (ACLs). Тема многим из вас должна быть знакомой, поэтому мне хочется обобщить информацию по разным типам ACLs. Я кратко пробегусь по основам, а затем поговорим про специальные типы ACLs: time-based (на основе времени), reflexive (отражающие), dynamic (динамические). Итак, начнем…
Основы: Вспомнить все…
Быстренько пробежимся по основным понятиям, синтаксису, чтобы потом проще можно было перейти к более интересным вещам. ACL’ы на роутерах Cisco позволяют решать две группы задач:
ACL’ы можно отнести к брандмауэрам пакетной фильтрации (packet filtering firewall). Т.е. они позволяют выполнять фильтрацию пакетов по пяти параметрам:
ACL состоит из набора правил. В каждом правиле вы определяете параметры фильтрации (адреса, порты и т.д.) и действие, выполняемое над пакетом, если он соответствует всем критериям правила. Действий два: разрешить (permit) и запретить (deny). При разрешении пакет обрабатывается дальше, при запрете – сбрасывается. Правила проверяются последовательно, пока не будет найдено то, которому соответствует пакет. Над пакетом выполняется действие (permit/deny) и дальнейшая проверка правил прекращается. В конце любого ACL неявно находится правило, запрещающее весь трафик. Т.е. используется ограничивающий (restrictive) контроль доступа: запрещено все, что явно не разрешено.
Синтаксис
Два способа создания ACL:
Приведу несколько примеров стандартных ACL:
Первый ACL (1) разрешает трафик из сети 192.168.1.0/24. Второй (2) ACL разрешает весь трафик. Третий (3) разрешает трафик от хоста 10.1.1.1. И последний четвертый, в первой строке разрешает трафик от хостов 10.1.1.0 – 10.1.1.15, во второй строке разрешает трафик из сетей 192.168.0.0 – 192.168.31.0. Обращаю внимание, что здесь приведены примеры четырех разных ACL’а, а не 5 правил одного ACL.
И несколько расширенных ACL:
ACL 100 разрешает TCP-трафик из сети 10.1.1.0/24 в любые сети, порт назначения 80. Т.е. разрешаем веб-серфинг из локальной сети. ACL 101 разрешает UDP трафик с хоста 1.1.1.1, порт 500 на хост 2.2.2.2, порт 555. ACL 102 разрешает «пинги» откуда угодно, куда угодно. И, наконец, последний ACL 103 разрешает весь трафик.
Аналогичные стандартные и расширенные ACL’ы, но уже с использованием нового синтаксиса:
Редактирование ACL стало намного удобнее, начиная я IOS 12.3,. Если вы дадите команду:
Вы увидите список ACL’ов и их содержимое:
Обратите внимание, что строки ACL пронумерованы. Для добавления новых строк в определенную позицию, войдите в режим редактирования нужного ACL и перед вводом нового правила укажите номер строки:
Причем не играет роли, как вы создавали ACL – с помощью старого синтаксиса или по-новому, просто вместо имени ACL укажите его номер. Добавление и удаление строк выполняется абсолютно аналогично.
Для удаления строк используется команда no с указанием номера строки:
Вы можете выполнить перенумерацию строк:
В приведенном выше примере, для ACL с именем LIST103 будет выполнена перенумерация и номер первой строки будет 10, а последующие строки нумеруются с шагом 50. Т.е. 10, 60, 110, 160 …
И, наконец, после создания ACL его необходимо будет применить в соответствии с вашими целями и задачами. То что, касается фильтрации, то ACL применяется на интерфейсе. При применении надо будет указать направление фильтрации: in (вход) – трафик приходит с провода на интерфейс роутера, out (выход) – трафик с интерфейса уходит на провод. В примере, ACL применяется для фильтрации входящего трафика:
Все это, я надеюсь, известные вещи. Если есть какие-то вопросы, задавайте, я постараюсь ответить. Если вопросов наберется много, то можно будет сделать отдельный пост. Теперь давайте посмотрим на дополнительные возможности, которыми обладают ACL на роутерах Cisco.
Time-based ACLs
Начнем с ACLs, в которых вы можете использовать время, как дополнительный критерий, по которому будет фильтроваться или классифицироваться трафик. К примеру, в рабочее время веб-серфинг запрещен, а в обеденное время и после работы – пожалуйста. Что требуется для создания time-based ACL? Все очень просто:
В режиме конфигурирования «календаря» вы определяете временные диапазоны. Два типа диапазонов:
Слово active рядом с названием «календаря» говорит о том, что он активен, т.е. время «календаря» соответствует сейчас текущему времени на роутере.
Теперь давайте используем наш «календарь» в правилах ACL:
Как видите, вы можете использовать разные «календари» для разных правил одного ACL’а. «Календари» вы можете использовать только в расширенных ACL.
Reflexive ACL
Отражающие или зеркальные ACL позволяют несколько расширить возможности фильтрации. По сути, они превращают ACL из packet filtering в stateful inspection брандмауэр. Т.е. теперь роутер будет отслеживать состояние сессий, инициированных из внутренней сети компании, и создавать соответствующие возвратные правила.
Поясню на примере типичной ситуации. Есть внутренняя сеть 192.168.1.0/24. Разрешаем доступ из этой сети в интернет (http) – «зеленый» ACL. Т.е. с помощью этого ACL мы определяем политики выхода из внутренней сети во внешнюю сеть. С помощью второго, «красного» ACL мы защищаем внутреннюю сеть от вторжений извне. Но необходимо разрешить ответы на сессии, инициированные из внутренней сети, поэтому разрешаем возвратный трафик. Вроде бы все логично: разрешили запросы туда, разрешили ответы оттуда. Но при такой конфигурации, мы сильно раскрываем внутреннюю сеть. Любой TCP пакет с 80 порта беспрепятственно попадает во внутреннюю сеть. Добро пожаловать, атакам типа SYN Flood и прочим. Данная проблема легко решается с помощью stateful inspection firewall (CBAC или IOS Firewall), но что делать, если ваша редакция IOS не поддерживает этот функционал? На помощь приходят зеркальные ACL.
Идея состоит в том, что теперь из одного ACL (обычно, «зеленый» — внутренний), пакеты прошедшие проверку будет зеркалироваться или отражаться в правила специального временного ACL, который в свою очередь будет проверяться внешним («красным») ACL.
Посмотрите пример. Для определенных правил в «зеленом» ACL мы используем параметр reflect и указываем имя временного ACL (в примере, MIRROR), куда будут отражаться правила. В «красном» ACL мы проверяем временный зеркальный ACL: команда evaluate. Можете рассматривать эту команду, как возможность проверить один ACL внутри другого, т.е. команда будет заменена набором правил из временного ACL.
Пока не открыты сессии из внутренней сети, зеркальный ACL пустой, не содержит никаких правил:
Но как только будут открываться сессии, зеркальный ACL начнет заполняться:
В примере из внутренней сети с адреса 192.168.1.1 был запущен пинг на адрес 2.2.2.2, затем открыто telnet-соединение с внутреннего адреса 192.168.1.1 на внешний адрес 192.168.2.1. На примере telnet-соединения хорошо видна выполненная последовательность действий:
В общем, легким движением руки ACL почти превратился в stateful inspection firewall.
Dynamic (Lock-and-Key) ACLs
Следующая категория ACL – динамические. В основном, эти ACL используются для удаленных подключений к сети компании, но можете и использовать их тогда, когда подключение к различным ресурсам требует предварительной аутентификации. Представьте, что администраторам требуется постоянные подключения к сети компании, но подключаться они будут из разных мест, с разных IP-адресов. Идея динамических ACL, состоит в том, что человек должен сначала пройти аутентификацию и только в случае успеха будет применен ACL, разрешающий доступ к ресурсам сети. Алгоритм следующий:
Что требуется для конфигурации динамических ACL:
Пользователю требуется подключение к серверу 192.168.1.1 на порт 80 во внутренней сети. Адреса, с которых будет происходить подключение, нам не известны. Первым делом, создаем расширенный ACL, разрешающий telnet подключения к роутеру (адрес 1.1.1.1) и содержащий записи динамического ACL, затем применяем его на нужный интерфейс:
Следующим шагом настраиваем аутентификацию. Я буду использовать локальную аутентификацию, поэтому создаю пользователя root и включаю локальную аутентификацию на vty портах:
Команда autocommand access-enable активирует аутентификацию и включает записи динамического ACL. Параметр host является опциональным. При его использовании any в качестве IP-адреса источника в динамическом ACL будут заменены на адрес, с которого пользователь подключается. Параметр timeout определяет период бездействия в минутах для данной сессии, по умолчанию — бесконечен.
Как будет происходить процесс получения доступа в приведенном примере: