Ip access list extended: списки контроля доступа в Cisco IOS / Хабр
списки контроля доступа в Cisco IOS / Хабр
Сегодня я расскажу вам о том, как отфильтровать трафик в сети с помощью списков контроля доступа. Рассмотрим как они работают соответственно, что собой представляют, для чего предназначены. Позже я покажу как они настраиваются в Cisco IOS и выложу архив с лабораторными работами для закрепления ваших знаний.
Введение
ACL (Access Control List) — это набор текстовых выражений, которые что-то разрешают, либо что-то запрещают. Обычно ACL разрешает или запрещает IP-пакеты, но помимо всего прочего он может заглядывать внутрь IP-пакета, просматривать тип пакета, TCP и UDP порты. Также ACL существует для различных сетевых протоколов (IP, IPX, AppleTalk и так далее). В основном применение списков доступа рассматривают с точки зрения пакетной фильтрации, то есть пакетная фильтрация необходима в тех ситуациях, когда у вас стоит оборудование на границе Интернет и вашей частной сети и нужно отфильтровать ненужный трафик.
Вы размещаете ACL на входящем направлении и блокируете избыточные виды трафика.
Теория
Функционал ACL состоит в классификации трафика, нужно его проверить сначала, а потом что-то с ним сделать в зависимости от того, куда ACL применяется. ACL применяется везде, например:
- На интерфейсе: пакетная фильтрация
- На линии Telnet: ограничения доступа к маршрутизатору
- VPN: какой трафик нужно шифровать
- QoS: какой трафик обрабатывать приоритетнее
- NAT: какие адреса транслировать
Для применения ACL для всех этих компонентов нужно понять как они работают. И мы в первую очередь будем касаться пакетной фильтрации. Применительно к пакетной фильтрации, ACL размещаются на интерфейсах, сами они создаются независимо, а уже потом они прикручиваются к интерфейсу. Как только вы его прикрутили к интерфейсу маршрутизатор начинает просматривать трафик. Маршрутизатор рассматривает трафик как входящий и исходящий. Тот трафик, который входит в маршрутизатор называется входящим, тот который из него выходит — исходящий. Соответственно ACL размещаются на входящем или на исходящем направлении.
Из вашей частной сети приходит пакет на интерфейс маршрутизатора fa0/1, маршрутизатор проверяет есть ли ACL на интерфейсе или нет, если он есть, то дальше обработка ведется по правилам списка доступа строго в том порядке, в котором записаны выражения, если список доступа разрешает проходить пакету, то в данном случае маршрутизатор отправляет пакет провайдеру через интерфейс fa0/0, если список доступа не разрешает проходить пакету, пакет уничтожается. Если списка доступа нет — пакет пролетает без всяких ограничений. Перед тем как отправить пакет провайдеру, маршрутизатор ещё проверяет интерфейс fa0/0 на наличие исходящего ACL. Дело в том, что ACL может быть прикреплен на интерфейсе как входящий или исходящий. К примеру у нас есть ACL с правилом запретить всем узлам в Интернете посылать в нашу сеть пакеты.
Так на какой интерфейс прикрепить данную ACL? Если мы прикрепим ACL на интерфейс fa0/1 как исходящий, это будет не совсем верно, хотя и ACL работать будет. На маршрутизатор приходит эхо-запрос для какого-то узла в частной сети, он проверяет на интерфейсе fa0/0 есть ли ACL, его нет, дальше проверяет интерфейс fa0/1, на данном интерфейсе есть ACL, он настроен как исходящий, всё верно пакет не проникает в сеть, а уничтожается маршрутизатором. Но если мы прикрепим ACL за интерфейсом fa0/0 как входящий, то пакет будет уничтожатся сразу как пришел на маршрутизатор. Последнее решение является правильным, так как маршрутизатор меньше нагружает свои вычислительные ресурсы. Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю. Это нужно для того, чтобы не гонять пакеты по всей сети зря.
Сам же ACL представляет собой набор текстовых выражений, в которых написано permit (разрешить) либо deny (запретить), и обработка ведется строго в том порядке в котором заданы выражения. Соответственно когда пакет попадает на интерфейс он проверяется на первое условие, если первое условие совпадает с пакетом, дальнейшая его обработка прекращается. Пакет либо перейдет дальше, либо уничтожится.
Ещё раз, если пакет совпал с условием, дальше он не обрабатывается. Если первое условие не совпало, идет обработка второго условия, если оно совпало, обработка прекращается, если нет, идет обработка третьего условия и так дальше пока не проверятся все условия, если никакое из условий не совпадает, пакет просто уничтожается. Помните, в каждом конце списка стоит неявный deny any (запретить весь трафик). Будьте очень внимательны с этими правилами, которые я выделил, потому что очень часто происходят ошибки при конфигурации.
ACL разделяются на два типа:
- Стандартные (Standard): могут проверять только адреса источников
- Расширенные (Extended): могут проверять адреса источников, а также адреса получателей, в случае IP ещё тип протокола и TCP/UDP порты
Обозначаются списки доступа либо номерами, либо символьными именами. ACL также используются для разных сетевых протоколов. Мы в свою очередь будем работать с IP. Обозначаются они следующим образом, нумерованные списки доступа:
- Стандартные: от 1 до 99
- Расширенные: от 100 до 199
Символьные ACL разделяются тоже на стандартные и расширенные. Расширенные напомню могут проверять гораздо больше, нежели стандартные, но и работают они медленнее, так как придется заглядывать внутрь пакета, в отличии от стандартных где мы смотрим только поле Source Address (Адрес отправителя). При создании ACL каждая запись списка доступа обозначается порядковым номером, по умолчанию в рамках десяти (10, 20, 30 и т.д). Благодаря чему, можно удалить конкретную запись и на её место вставить другую, но эта возможность появилась в Cisco IOS 12.3, до 12.3 приходилось ACL удалять, а потом создать заново полностью. Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление. Объясняю: если у нас есть маршрутизатор и у него есть интерфейс, мы можем на входящее направление для IP-протокола разместить только один список доступа, например под номером 10. Ещё одно правило, касающееся самих маршрутизаторов, ACL не действует на трафик, сгенерированный самим маршрутизатором.
Для фильтрации адресов в ACL используется WildCard-маска. Это обратная маска. Берем шаблонное выражение: 255.255.255.255 и отнимаем от шаблона обычную маску.
255.255.255.255-255.255.255.0, у нас получается маска 0.0.0.255, что является обычной маски 255.255.255.0, только 0.0.0.255 является WildCard маской.
Виды 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-доступ открывается,
пожалуйста, если хотите — сидите в Интернете.
Настройка
Сами ACL создаются отдельно, то есть это просто некий список, который создается в глобальном конфиге, потом он присваивается к интерфейсу и только тогда он и начинает работать. Необходимо помнить некоторые моменты, для того, чтобы правильно настроить списки доступа:
- Обработка ведется строго в том порядке, в котором записаны условия
- Если пакет совпал с условием, дальше он не обрабатывается
- В конце каждого списка доступа стоит неявный deny any (запретить всё)
- Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю
- Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление
- ACL не действует на трафик, сгенерированный самим маршрутизатором
- Для фильтрации адресов используется WildCard маска
Стандартный список доступа
Router(config)#access-list <номер списка от 1 до 99> {permit | deny | remark} {address | any | host} [source-wildcard] [log]
- permit: разрешить
- deny: запретить
- remark: комментарий о списке доступа
- address: запрещаем или разрешаем сеть
- any: разрешаем или запрещаем всё
- host: разрешаем или запрещаем хосту
- source-wildcard: WildCard маска сети
- log: включаем логгирование пакеты проходящие через данную запись ACL
Расширенный список доступа
Router(config)#access-list <номер списка от 100 до 199> {permit | deny | remark} protocol source [source-wildcard] [operator operand] [port <порт или название протокола> [established]
- protocol source: какой протокол будем разрешать или закрывать (ICMP, TCP, UDP, IP, OSPF и т.д)
- deny: запретить
- operator:
A.B.C.D — адрес получателя
any — любой конечный хост
eq — только пакеты на этом порте
gt — только пакеты с большим номером порта
host — единственный конечный хост
lt — только пакеты с более низким номером порта
neq — только пакеты не на данном номере порта
range — диапазон портов - port: номер порта (TCP или UDP), можно указать имя
- established: разрешаем прохождение TCP-сегментов, которые являются частью уже созданной TCP-сессии
Прикрепляем к интерфейсу
Router(config-if)#ip access-group <номер списка или имя ACL> {in | out}
- in: входящее направление
- out: исходящее направление
Именованные списки доступа
Router(config)#ip access-list {standard | extended} {<номер ACL> | <имя ACL>}
Router(config-ext-nacl)# {default | deny | exit | no | permit | remark}
- standard: стандартный ACL
- extended: расширенный ACL
- default: установить команду в значение по умолчанию
Ограничение доступа к маршрутизатору
R(config)#line vty 0 4
— переходим в режим настройки виртуальных линий.R(config-line)#password <пароль>
— настраиваем логин и пароль, а также закрепляем список доступа с разрешенными IP-адресами.
R(config-line)#login
R(config-line)#access-class 21 in
Динамические списки доступа
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
— закрепляем 101 ACL за интерфейсом в входящем направлении.
R3(config-if)#ip access-group 101 inR3(config)#line vty 0 4
— как только пользователь аутентифицируеться, сеть 192.168.30.0 будет доступна, через 5 минут бездействия сеанс закроется.
R3(config-line)#login local
R3(config-line)#autocommand access-enable host timeout 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 ICMPTRAFFICR2(config)#ip access-list extended INBOUNDFILTERS
— создаем входящую политику, которая требует, чтобы маршрутизатор проверял входящий трафик, чтобы видеть инициировался ли изнутри и связываем TCPTRAFFIC к INBOUNDFILTERS.
R2(config-ext-nacl)#evaluate TCPTRAFFIC
R2(config-ext-nacl)#evaluate ICMPTRAFFICR2(config)#interface serial 0/1/0
— применяем входящий и исходящий ACL на интерфейс.
R2(config-if)#ip access-group INBOUNDFILTERS in
R2(config-if)#ip access-group OUTBOUNDFILTERS out
Ограничение по времени
R1(config)#time-range EVERYOTHERDAY
— создаем список времени, в котором добавляем дни недели и время.
R1(config-time-range)#periodic Monday Wednesday Friday 8:00 to 17:00R1(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
— закрепляем ACL за интерфейсом.
R1(config-if)#ip access-group 101 out
Поиск проблем
R#show access-lists {ACL номер | имя} — смотрим информацию о списке доступа.
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.
Литература
CCNA Exploration: Accessing the WAN (5 chapter)
Урок 39. Списки контроля доступа ACL (Access List Control)
Краткая теория
Списки управления доступом являются частью комплексной системы безопасности сети. Они позволяют запретить/разрешить определенным хостам доступ к ресурсам сети. Например, в корпоративной сети администраторы могут запретить доступ в интернет определенным пользователям, а остальным наоборот — разрешить.
Запретить/разрешить мы можем на основе IP адресов, портов и задействованных протоколов. На этом принципе и работают списки управления доступом ACL (Access Control List).
Другим примером использования списков доступа является запрет поступающих на маршрутизатор пакетов протокола ICMP. Как мы знаем с помощью ICMP работают утилиты Ping, Traceroute/Tracert. С помощью данных утилит можно просканировать сеть, а это нежелательно с точки зрения политики безопасности каждой сети.
Списки доступа позволяют фильтровать трафик на входе и выходе интерфейса маршрутизатора.
И в чем же разница?
Разница в том, что на входе весь поступающий трафик подвергается фильтрации. Нежелательные пакеты отбрасываются и уже только потом остальные пакеты маршрутизируются:
Когда 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. Вот как это выглядит на рисунке
Пример №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 отдельные команды на каждый диапазон, с помощью маски мы можем сократить запись
Пример №3
Необходимо разрешить/запретить диапазон 200.40.0.4 — 200.40.0.7. У нас совпадают полностью первые 3 октета и первые 6 бит четвертого октета:
После того, как список создан, необходимо определить направление (входящий или исходящий) трафика и на каком интерфейсе он будет фильтроваться:
Router(config-if)# ip access-group номер_применяемого_списка in | out
|
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
|
Данная команда разрешает 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 и выше.
В конце списка всегда следует неявная команда, запрещающая весь трафик.
Не забудь определить интерфейс и направление трафика для фильтрации.
Вот как выглядит алгоритм работы расширенных списков:
Для просмотра настроек используй следующие команды:
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 название
|
а затем укажи ее номер при удалении:
Router(config-ext-nacl)# no 10 — этого уже достаточно
|
Ну а чтобы добавить команду достаточно тоже указать номер и затем саму команду.
Обращаю твое внимание, что удаление и добавление строк списка происходит в режиме настройки ACL, например так:
Router(config-ext-nacl)# 5 deny ip any any
|
Пример использования списков доступа
Рассмотрим сеть:
Сеть состоит из 3 частей:
- Внутренняя сеть — основная инфраструктура локальной сети любого предприятия.
- Демилитаризованная зона DMZ — в ней располагаются сервера, которые доступны из интернета. Доступ во внутреннюю сеть из этой зоны закрыт из соображений безопасности.
- Внешняя сеть — связывается напрямую с провайдером. Обычно состоит из маршрутизаторов и сетевых экранов (firewalls).
Именно по этому принципу и строятся сети предприятий.
Задача у нас следующая:
- Всем серверам из DMZ запретить доступ во внутреннюю сеть
- Всем серверам из DMZ разрешить двустороннюю связь в интернет
- Пользователям из интернета разрешить доступ на серверы в DMZ, учитывая протокол взаимодействия и порты TCP/UDP
- Разрешить доступ внутренним пользователям на серверы DMZ
- Запретить Алине и Саше доступ в интернет и DMZ, то есть они могут работать только во внутренней сети.
Пункт №1 можно решить с помощью расширенного списка на маршрутизаторе LAN_Router
На самом деле в данном примере серверы не имеет доступа к внутренним компьютерам, потому что подключены к различным интерфейсам маршрутизатора 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
Пункт №4. Внутренние пользователи уже имеют доступ в зону DMZ, однако связь будет работать только в одну сторону, так как мы закрыли доступ еще в п.1.
Как же сделать так, чтобы внутренние пользователи имели полноценный доступ ко всем серверам и в то же время запретить серверам доступ во внутреннюю сеть?
Решение простое — достаточно настроить NAT на маршрутизаторе LAN_Router. Тогда только внутренние пользователи смогут подключаться к серверам, а сервера уже не смогут из-за активированного списка доступа. Однако это не единственное решение
Пункт №5 решается с помощью стандартного списка
На этом все.
Комментарии для сайта Cackle
access list на маршрутизаторах Cisco
Read this article in English
Рассмотрим создание и использование списков доступа (access lists) на примере схемы подключения малого офиса к сети Интернет с помощью маршрутизатора Cisco 881. Команды для настройки маршрутизаторов других серий (1841, 2800, 3825…) или коммутаторов 3 уровня (серии 3500, 4800…) будут аналогичными. Различия могут быть лишь в настройках интерфейсов.
В распоряжении имеем:
- несколько компьютеров и серверов в локальной сети офиса
- маршрутизатор Cisco 881
- коммутатор (используется для организации локальной сети офиса, без дополнительных настроек)
Задача: ограничить соединения, проходящие через маршрутизатор.
Списки доступа (access lists) сами по себе не являются какими-то правилами, ограничивающими доступ. Эти строки лишь указывают определенный трафик. Эффект от них появляется тогда, когда в настройках определенной функции маршрутизатора указывается ссылка на соответствующий список доступа.
Логика устройства такова, что сначала мы показываем маршрутизатору трафик, который нам интересен, а затем указываем что маршрутизатор должен с ним сделать. Например, в одном случае список доступа будет указывать адрес, с которого возможен удаленный доступ к маршрутизатору по протоколу SSH, а в другом будет указывать маршрут, который будет распространен с помощью протокола динамической маршрутизации.
Ограничение удаленного доступа к маршрутизатору
Пример access list, который используется для ограничения удаленного доступа к консоли маршрутизатора только с определенных ip адресов. В нашем случае – адрес рабочей станции администратора.
Создаем список доступа ACL_REMOTE_ACCESSR-DELTACONFIG(config)#
ip access-list standard ACL_REMOTE_ACCESS
permit ip host 192.168.0.100
Привязываем access list для ограничения доступа к удаленному управлению маршрутизатором только с адреса 192.168.0.100R-DELTACONFIG(config)#
line vty 0 4
access-class ACL_REMOTE_ACCESS in
Важно!
Будьте осторожны и внимательно все проверьте перед применением. Ошибку можно будет исправить только подключившись консольным кабелем или сбросив настройки маршрутизатора до заводских.
Ограничение доступа в Интернет
Для ограничения доступа из локальной сети офиса в Интернет необходим соответствующий список доступа, а также привязка его к одному из интерфейсов маршрутизатора.
Допустим, что нужно ограничить выход пользователей в сеть Интернет следующим образом:
- разрешить доступ прокси серверу (http и https)
- разрешить доступ DNS серверу (TCP 53 и UDP 53)
- полный доступ администратору сети
- разрешить протокол ICMP для всех рабочих станций для работы команды Ping.
Создаем следующий список доступа ACL_INSIDE_IN и последовательно вводим правила доступа:R-DELTACONFIG(config)#
ip access-list extended ACL_INSIDE_IN
доступ DNS сервера в Интернетpermit udp host 192.168.0.201 any eq 53
permit tcp host 192.168.0.201 any eq 53
доступ Прокси сервера в Интернетpermit tcp host 192.168.0.202 any eq 80
permit tcp host 192.168.0.202 any eq 443
полный доступ администратораpermit ip host 192.168.0.100 any
разрешение Ping для всей локальной сетиpermit icmp 192.168.0.0 0.0.0.255 any
запрет иных подключенийdeny ip any any log
Важно!
Обратите внимание на то, как записана строчка правила для протокола ICMP (Ping). В списках доступа на маршрутизаторах Cisco маска подсети пишется в обратном виде: не 255.255.255.0, а 0.0.0.255
После привязываем список доступа ко внутреннему интерфейсу Vlan 1 в направлении «внутрь маршрутизатора» (параметр in). Собственно, направление привязки всегда считается относительно устройства Cisco. Для удобства интерфейс и направление трафика указано в названии самого списка доступа: ACL_INSIDE_IN — фильтр трафика, входящего во внутренний интерфейс.R-DELTACONFIG(config)#
interface Vlan 1
ip access-group ACL_INSIDE_IN in
С этого момента доступ наружу будет осуществляться в соответствии с примененным access list при условии, что корректно настроена трансляция адресов (NAT). Как это делается описано в статье про настройку доступа в интернет с помощью маршрутизатора Cisco.
Проверка работы access list
Проверить работу списка доступа можно посмотрев статистику срабатываний правил. После привязки списка доступа ACL_INSIDE_IN к интерфейсу Vlan 1 запустите Ping с любой из рабочих станций сети до любого адреса в Интернет (например до www.yandex.ru), а затем выполните из привилегированного режима (знак # рядом с названием устройства) команду show access-lists. Результат должен показывать количество срабатываний каждой из строк списка доступа:R-DELTACONFIG#sh access-lists
Extended IP access list ACL_INSIDE_IN
…
60 permit icmp any any (4 estimate matches)
70 deny ip any any log
Важные аспекты использования списков доступа (access list)
- Список доступа состоит из строк – правил, показывающих определенный трафик
- Список доступа, привязанный к интерфейсу, ограничивает проходящие через этот интерфейс пакеты.
- Список доступа может быть привязан к интерфейсу в одном из направлений: входящем или исходящем.
- В списках доступа может быть указан или только источник соединения (standard, пример ограничения доступа по SSH) или источник и назначение соединения(extended, пример ограничения доступа в Интернет).
- Не может быть привязано более одного списка доступа к одному интерфейсу в одном направлении. Все необходимые правила должны быть указаны только в одном привязанном списке доступа.
Ограничение доступа из сети Интернет
Создаем список доступа ACL_OUTSIDE_IN для внешнего интерфейса. В нем указываем лишь то, что внешний интерфейс должен отвечать на ping, а все остальные запросы отклонять.R-DELTACONFIG(config)#
ip access-list extended ACL_OUTSIDE_IN
permit icmp any interface //разрешение Ping
deny ip any any log //запрет иных подключений
Привязываем список доступа ко внешнему интерфейсу.R-DELTACONFIG(config)#
interface FastEthernet 4
ip access-group ACL_OUTSIDE_IN in
Важно!
Все новые правила, которые потребуются для доступа изнутри или снаружи, следует добавлять в соответствующие списки доступа ДО строчкиdeny ip any any log
Если какая-то строчка с разрешением окажется в списке после запрещающей, то она не будет хоть как-то влиять на трафик, так как маршрутизатор обрабатывает строки access list последовательно до первого совпадения.
Для изменения access list удобно зайти в сам список доступа, добавить все нужные разрешения, а после этого удалить последнюю строку (deny ip any any log) и тут же ее добавить. Выполняя это нехитрое правило запрещающая строка всегда будет в самом конце списка, а все правила будут идти в порядке добавления снизу вверх. Для наглядности разрешим доступ к маршрутизатору извне по протоколу http (TCP порт 80)R-DELTACONFIG(config)#
ip access-list extended ACL_OUTSIDE_IN
permit tcp any interface eq 80
no deny ip any any log
deny ip any any log
Разрешение ответного трафика
После привязки списка доступа ACL_OUTSIDE_IN пропадает весь доступ из локальной сети ко всем ресурсам по любым протоколам кроме Ping. Это происходит из-за того, что фильтрующие трафик правила применяются и на внутреннем (ACL_INSIDE_IN) и на внешнем (ACL_OUTSIDE_IN) интерфейсах.
Для того, чтобы проходили все обратные пакеты на запросы из локальной сети указываем протоколы для функции Inspect.R-DELTACONFIG(config)#
ip inspect name Internet http
ip inspect name Internet https
ip inspect name Internet dns
ip inspect name Internet icmp
Привязываем правило инспектирования ко внешнему интерфейсу.R-DELTACONFIG(config)#
interface FastEthernet 4
ip inspect Internet out
Список разрешенных для инспекции служб можно расширить в будущем.
Надеюсь, что статья поможет Вам лучше понять принцип работы списков доступа. К сожалению эту достаточно простую тему очень сложно описать простым языком. Если у Вас возникли вопросы или какой-то момент остался неясным, напишите мне на адрес [email protected] или оставьте свой вопрос в комментариях.
Важно!
Не забудьте сохранить конфигурацию на всех устройствах командой write или copy run start. Иначе после перезагрузки все изменения будут потеряны.R-DELTACONFIG-1#write
Building configuration...
[OK]
Перейти к оглавлению
Cisco ACL для продвинутых. Расширенные списки доступа
Итак, продолжаем разбираться с ACL. На сей раз, у нас расширенные ACL. Топологию возьмём от предыдущей статьи, надеюсь, вы её изучили досконально. Если это не так, то очень рекомендую прочесть, чтобы материалы этой статьи были более понятными.
Прежде всего начну с того, что такое расширенные ACL. Расширенные ACL позволяют помимо адреса источника указать протокол, адрес назначения и порты. А так же особые параметры определённого протокола. Лучше всего учиться на примерах, поэтому сформируем новую задачу, усложнив предыдущую. Кстати, кому-то может интересно будет после этого заняться вопросами распределения трафика по приоритетам, советую вот QoS Classification and Marking хорошую статью, правда на английском. Ну а пока, вернемся к нашей задаче:
Задача.
- Разрешить echo-запросы с узлов сети 192.168.0.0/24 на сервер.
- С сервера – запретить echo-запросы во внутреннюю сеть.
- Разрешить WEB-доступ на сервер с узла 192.168.0.11.
- Разрешить FTP доступ с узла 192.168.0.13 на сервер.
Комплексная задача. Решать её будем тоже комплексно. Прежде всего разберу синтаксис применения расширенного ACL.
Параметры расширенного ACL
<номер от 100 до 199> <действие permit, deny> <протокол> <источник> <порт> <назначение> <порт> <опции>
Номера портов указываются только у протоколов TCP / UDP, разумеется. Так же могу иметь место приставочки eq (номер порта равный указанному), gt / lt (номер порта больше/меньше указанного), neq (номер порта не равен указанному), range (диапазон портов).
Именованные ACL
Кстати, списки доступа можно не только нумеровать, но и именовать! Возможно этот способ покажется вам более удобным. В этот раз сделаем именно так. Эти команды выполняются в контексте глобального конфигурирования и синтаксис выглядит так:
Router(config)#ip access-list extended <имя>
Итак, начинаем формировать правила.
- Разрешаем пинги с сети 192.168.0.0/24 на сервер. Итак, echo-запросы – это протокол ICMP, в качестве адреса источника выберем нашу подсеть, адресом назначения – адрес сервера, тип сообщения – на входящем интерфейсе echo, на выходе – echo-reply.
Router(config-ext-nacl)#permit icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echoОпаньки, а что это у нас с маской подсети? Да, это фишка ACL. Так называемая WildCard-маска. Вычисляется как обратная маска от привычной. Т.е. 255.255.255.255 – маска подсети. В нашем случае подсеть 255.255.255.0, после вычитания остаётся как раз 0.0.0.255.Думаю, это правило в пояснении не нуждается? Протокол icmp, адрес источника – подсеть 192.168.0.0/24, адрес назначения – host 10.0.0.100, тип сообщения – echo (запрос). Кстати, нетрудно заметить, что host 10.0.0.100 эквивалентно 10.0.0.100 0.0.0.0.Применяем это правило на интерфейс.Router(config)#ip access-list extended INT_IN
Router(config)#int fa0/0
Ну как-то так. Теперь, если проверить пинги – легко заметить, что всё отлично работает. Тут, правда нас ждёт один сюрприз, который всплывёт чуть позже. Пока не буду раскрывать. Кто догадался – молодец!
Router(config-if)#ip access-group INT_IN in - С сервера – запрещаем все echo-запросы во внутреннюю сеть (192.168.0.0/24). Определяем новый именованный список, INT_OUT и вешаем его на интерфейс, ближайший к серверу.
Router(config)#ip access-list extended INT_OUT
Router(config-ext-nacl)#deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo
Router(config-ext-nacl)#exit
Router(config)#int fa0/1
Router(config-if)#ip access-group INT_OUT in
Поясняю, что мы сделали. Создали расширенный список доступа с именем INT_OUT, в нём запретили протокол icmp с типом echo с хоста 10.0.0.100 на подсеть 192.168.0.0/24 и применили на вход интерфейса fa0/1, т.е. ближайший к серверу. Пробуем послать ping с сервера.SERVER>ping 192.168.0.11
Pinging 192.168.0.11 with 32 bytes of data:
Reply from 10.0.0.1: Destination host unreachable.
Reply from 10.0.0.1: Destination host unreachable.
Reply from 10.0.0.1: Destination host unreachable.
Reply from 10.0.0.1: Destination host unreachable.
Ping statistics for 192.168.0.11:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)
Ну, вроде сработало как надо. Для тех, кто не знает, как посылать пинги – кликаем на интересующем нас узле, например сервере. Переходим на вкладку Desktop (Рабочий стол), там Command Prompt (Командная строка).А теперь, обещанный прикол. Попробуйте послать ping с хоста, как в первом пункте.PC>ping 10.0.0.100
Pinging 10.0.0.100 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.Вот тебе раз. Только что же всё работало! Почему перестало? Это обещанный сюрприз. Объясняю, в чём проблема. Да, первое правило никуда не делось. Оно действительно разрешает отправку echo запроса на узел сервера. Но где разрешение на прохождение echo-ответов? Его нет! Запрос посылаем, а ответ принять не можем! Почему же всё работало раньше? Тогда у нас не было ACL на интерфейсе fa0/1. А раз нет ACL, то всё разрешено. Придётся создавать правило на разрешение приёма icmp-ответов.
В список INT_OUT добавим
Router(config-ext-nacl)#permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply
То же добавим и в список INT_IN.
Router(config-ext-nacl)#permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply
Вот теперь не придраться. Всё проходит великолепно!
- Разрешаем WEB-доступ на сервер с узла *.11.Поступаем аналогично! Тут, правда, нужно немного знать, как происходят обращения по протоколам 4-го уровня (TCP, UDP). Клиентский порт выбирается произвольным > 1024, а серверный – соответствующий службе. Для WEB – это 80 порт (протокол http).А что по поводу WEB-сервера? По умолчанию, на сервере уже установлена WEB-служба, можно посмотреть в настройках узла. Обратите внимание, чтобы стояла галочка.А подключиться к серверу можно выбрав ярлык “Веб браузер” на “Рабочем столе” любого узла. Конечно же сейчас доступа не будет. Поскольку у нас на интерфейсах маршрутизатора висят ACL-ы, и в них нет разрешающих правил для доступа. Чтож, давайте создадим.В список доступа INT_IN (который на интерфейсе fa0/0) добавим правило:
Router(config-ext-nacl)#permit tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq 80
То есть мы разрешаем протокол TCP с нашего узла (порт произвольный, > 1024) на адрес сервера, порт HTTP.И, разумеется, обратное правило, в список INT_OUT (который на интерфейсе fa0/1):
Router(config-ext-nacl)#permit tcp host 10.0.0.100 eq 80 host 192.168.0.11 established
То есть разрешаем TCP с порта 80 сервера на хост *.11, и соединение уже должно быть установлено! Можно вместо established указать так же gt 1024, работать будет так же хорошо. Но смысл немного иной.
В комментах ответьте, что будет более безопасным?
- Разрешаем FTP-доступ с узла *.13 на сервер.Тоже абсолютно ничего сложного!Разбираем, как происходит взаимодействие по протоколу FTP. В будущем, я планирую посвятить целый цикл статей работе разных протоколов, поскольку это очень полезно при создании точных (снайперских) правил ACL. Ну а пока:Действия сервера и клиента:+ Клиент пытается установить связь и посылает пакет (в котором находится указание, что будет вестись работа в пассивном режиме) на 21 порт сервера со своего порта X (X > 1024, свободный порт)+ Сервер посылает ответ и сообщает номер своего порта для образования канала данных Y (Y > 1024) на порт клиента X, извлечённого из заголовка TCP-пакета.+ Клиент инициирует связь для передачи данных по порту X+1 на порт сервера Y (взятого из заголовка предыдущей транзакции). Как-то так. Немного сложно звучит, но нужно только разобраться!В список INT_IN добавляем правила:
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq 21
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024А в список INT_OUT добавляем правила:
permit tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024
permit tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024Проверяем из командной строки, командой ftp 10.0.0.100, где авторизуемся по учётным данным cisco:cisco (взято из настроек сервера), там вводим команду dir и увидим, что данные как и команды – передаются успешно.
Вот примерно и всё, что касается расширенных список доступа.
Итак, посмотрим наши правила:
Router#sh access
Extended IP access list INT_IN
permit icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echo (17 match(es))
permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply
permit tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq www (36 match(es))
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq ftp (40 match(es))
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024 (4 match(es))
Extended IP access list INT_OUT
deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo (4 match(es))
permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply (4 match(es))
permit tcp host 10.0.0.100 eq www host 192.168.0.11 established (3 match(es))
permit tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024 (16 match(es))
permit tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024 (3 match(es))
Списки контроля доступа (ACL) в Cisco
ACL (Access Control List) — это набор текстовых выражений, которые что-то разрешают, либо что-то запрещают. Обычно ACL разрешает или запрещает IP-пакеты, но помимо всего прочего он может заглядывать внутрь IP-пакета, просматривать тип пакета, TCP и UDP порты. Также ACL существует для различных сетевых протоколов (IP, IPX, AppleTalk и так далее). В основном применение списков доступа рассматривают с точки зрения пакетной фильтрации, то есть пакетная фильтрация необходима в тех ситуациях, когда у вас стоит оборудование на границе Интернет и вашей частной сети и нужно отфильтровать ненужный трафик.
Вы размещаете ACL на входящем направлении и блокируете избыточные виды трафика.
Теория
Функционал ACL состоит в классификации трафика, нужно его проверить сначала, а потом что-то с ним сделать в зависимости от того, куда ACL применяется. ACL применяется везде, например:
- На интерфейсе: пакетная фильтрация
- На линии Telnet: ограничения доступа к маршрутизатору
- VPN: какой трафик нужно шифровать
- QoS: какой трафик обрабатывать приоритетнее
- NAT: какие адреса транслировать
Для применения ACL для всех этих компонентов нужно понять как они работают. И мы в первую очередь будем касаться пакетной фильтрации. Применительно к пакетной фильтрации, ACL размещаются на интерфейсах, сами они создаются независимо, а уже потом они прикручиваются к интерфейсу. Как только вы его прикрутили к интерфейсу маршрутизатор начинает просматривать трафик. Маршрутизатор рассматривает трафик как входящий и исходящий. Тот трафик, который входит в маршрутизатор называется входящим, тот который из него выходит — исходящий. Соответственно ACL размещаются на входящем или на исходящем направлении.
Из вашей частной сети приходит пакет на интерфейс маршрутизатора fa0/1, маршрутизатор проверяет есть ли ACL на интерфейсе или нет, если он есть, то дальше обработка ведется по правилам списка доступа строго в том порядке, в котором записаны выражения, если список доступа разрешает проходить пакету, то в данном случае маршрутизатор отправляет пакет провайдеру через интерфейс fa0/0, если список доступа не разрешает проходить пакету, пакет уничтожается. Если списка доступа нет — пакет пролетает без всяких ограничений. Перед тем как отправить пакет провайдеру, маршрутизатор ещё проверяет интерфейс fa0/0 на наличие исходящего ACL. Дело в том, что ACL может быть прикреплен на интерфейсе как входящий или исходящий. К примеру у нас есть ACL с правилом запретить всем узлам в Интернете посылать в нашу сеть пакеты.
Так на какой интерфейс прикрепить данную ACL? Если мы прикрепим ACL на интерфейс fa0/1 как исходящий, это будет не совсем верно, хотя и ACL работать будет. На маршрутизатор приходит эхо-запрос для какого-то узла в частной сети, он проверяет на интерфейсе fa0/0 есть ли ACL, его нет, дальше проверяет интерфейс fa0/1, на данном интерфейсе есть ACL, он настроен как исходящий, всё верно пакет не проникает в сеть, а уничтожается маршрутизатором. Но если мы прикрепим ACL за интерфейсом fa0/0 как входящий, то пакет будет уничтожатся сразу как пришел на маршрутизатор. Последнее решение является правильным, так как маршрутизатор меньше нагружает свои вычислительные ресурсы. Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю. Это нужно для того, чтобы не гонять пакеты по всей сети зря.
Сам же ACL представляет собой набор текстовых выражений, в которых написано permit (разрешить) либо deny (запретить), и обработка ведется строго в том порядке в котором заданы выражения. Соответственно когда пакет попадает на интерфейс он проверяется на первое условие, если первое условие совпадает с пакетом, дальнейшая его обработка прекращается. Пакет либо перейдет дальше, либо уничтожится.
Ещё раз, если пакет совпал с условием, дальше он не обрабатывается. Если первое условие не совпало, идет обработка второго условия, если оно совпало, обработка прекращается, если нет, идет обработка третьего условия и так дальше пока не проверятся все условия, если никакое из условий не совпадает, пакет просто уничтожается. Помните, в каждом конце списка стоит неявный deny any (запретить весь трафик). Будьте очень внимательны с этими правилами, которые я выделил, потому что очень часто происходят ошибки при конфигурации.
ACL разделяются на два типа:
- Стандартные (Standard): могут проверять только адреса источников
- Расширенные (Extended): могут проверять адреса источников, а также адреса получателей, в случае IP ещё тип протокола и TCP/UDP порты
Обозначаются списки доступа либо номерами, либо символьными именами. ACL также используются для разных сетевых протоколов. Мы в свою очередь будем работать с IP. Обозначаются они следующим образом, нумерованные списки доступа:
- Стандартные: от 1 до 99
- Расширенные: от 100 до 199
Символьные ACL разделяются тоже на стандартные и расширенные. Расширенные напомню могут проверять гораздо больше, нежели стандартные, но и работают они медленнее, так как придется заглядывать внутрь пакета, в отличии от стандартных где мы смотрим только поле Source Address (Адрес отправителя). При создании ACL каждая запись списка доступа обозначается порядковым номером, по умолчанию в рамках десяти (10, 20, 30 и т.д). Благодаря чему, можно удалить конкретную запись и на её место вставить другую, но эта возможность появилась в Cisco IOS 12.3, до 12.3 приходилось ACL удалять, а потом создать заново полностью. Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление. Объясняю: если у нас есть маршрутизатор и у него есть интерфейс, мы можем на входящее направление для IP-протокола разместить только один список доступа, например под номером 10. Ещё одно правило, касающееся самих маршрутизаторов, ACL не действует на трафик, сгенерированный самим маршрутизатором.
Для фильтрации адресов в ACL используется WildCard-маска. Это обратная маска. Берем шаблонное выражение: 255.255.255.255 и отнимаем от шаблона обычную маску.
255.255.255.255-255.255.255.0, у нас получается маска 0.0.0.255, что является обычной маски 255.255.255.0, только 0.0.0.255 является WildCard маской.
Виды 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-доступ открывается,
пожалуйста, если хотите — сидите в Интернете.
Настройка
Сами ACL создаются отдельно, то есть это просто некий список, который создается в глобальном конфиге, потом он присваивается к интерфейсу и только тогда он и начинает работать. Необходимо помнить некоторые моменты, для того, чтобы правильно настроить списки доступа:
- Обработка ведется строго в том порядке, в котором записаны условия
- Если пакет совпал с условием, дальше он не обрабатывается
- В конце каждого списка доступа стоит неявный deny any (запретить всё)
- Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю
- Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление
- ACL не действует на трафик, сгенерированный самим маршрутизатором
- Для фильтрации адресов используется WildCard маска
Стандартный список доступа
Router(config)#access-list <номер списка от 1 до 99> {permit | deny | remark} {address | any | host} [source-wildcard] [log]
- permit: разрешить
- deny: запретить
- remark: комментарий о списке доступа
- address: запрещаем или разрешаем сеть
- any: разрешаем или запрещаем всё
- host: разрешаем или запрещаем хосту
- source-wildcard: WildCard маска сети
- log: включаем логгирование пакеты проходящие через данную запись ACL
Расширенный список доступа
Router(config)#access-list <номер списка от 100 до 199> {permit | deny | remark} protocol source [source-wildcard] [operator operand] [port <порт или название протокола>[established]
- protocol source: какой протокол будем разрешать или закрывать (ICMP, TCP, UDP, IP, OSPF и т.д)
- deny: запретить
- operator:
A.B.C.D — адрес получателя
any — любой конечный хост
eq — только пакеты на этом порте
gt — только пакеты с большим номером порта
host — единственный конечный хост
lt — только пакеты с более низким номером порта
neq — только пакеты не на данном номере порта
range — диапазон портов - port: номер порта (TCP или UDP), можно указать имя
- established: разрешаем прохождение TCP-сегментов, которые являются частью уже созданной TCP-сессии
Прикрепляем к интерфейсу
Router(config-if)#ip access-group <номер списка или имя ACL> {in | out}
- in: входящее направление
- out: исходящее направление
Именованные списки доступа
Router(config)#ip access-list {standard | extended} {<номер ACL> | <имя ACL>}
Router(config-ext-nacl)# {default | deny | exit | no | permit | remark}
- standard: стандартный ACL
- extended: расширенный ACL
- default: установить команду в значение по умолчанию
Ограничение доступа к маршрутизатору
R(config)#line vty 0 4
— переходим в режим настройки виртуальных линий.R(config-line)#password <пароль>
— настраиваем логин и пароль, а также закрепляем список доступа с разрешенными IP-адресами.
R(config-line)#login
R(config-line)#access-class 21 in
Динамические списки доступа
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
— закрепляем 101 ACL за интерфейсом в входящем направлении.
R3(config-if)#ip access-group 101 inR3(config)#line vty 0 4
— как только пользователь аутентифицируеться, сеть 192.168.30.0 будет доступна, через 5 минут бездействия сеанс закроется.
R3(config-line)#login local
R3(config-line)#autocommand access-enable host timeout 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 ICMPTRAFFICR2(config)#ip access-list extended INBOUNDFILTERS
— создаем входящую политику, которая требует, чтобы маршрутизатор проверял входящий трафик, чтобы видеть инициировался ли изнутри и связываем TCPTRAFFIC к INBOUNDFILTERS.
R2(config-ext-nacl)#evaluate TCPTRAFFIC
R2(config-ext-nacl)#evaluate ICMPTRAFFICR2(config)#interface serial 0/1/0
— применяем входящий и исходящий ACL на интерфейс.
R2(config-if)#ip access-group INBOUNDFILTERS in
R2(config-if)#ip access-group OUTBOUNDFILTERS out
Ограничение по времени
R1(config)#time-range EVERYOTHERDAY
— создаем список времени, в котором добавляем дни недели и время.
R1(config-time-range)#periodic Monday Wednesday Friday 8:00 to 17:00R1(config)#access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq telnet time-rangeEVERYOTHERDAY
— применяем time-range к ACL.R1(config)#interface s0/0/0
— закрепляем ACL за интерфейсом.
R1(config-if)#ip access-group 101 out
Поиск проблем
R#show access-lists {ACL номер | имя} — смотрим информацию о списке доступа.
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.
Литература
CCNA Exploration: Accessing the WAN (5 chapter)
Источник
Cisco Learning | Access Control List
Standard ACL
Прежде чем переходить к процессу создания ACL, надо определиться какой трафик мы хотим отфильтровать. В случае с Standard ACL выбор у нас не большой, т.к. фильтрация будет осуществляться только по ip адресу источника пакета.
Ради примера, мы запретим PC3 выходить за пределы своей сети, аналогично запретим диапазону ip адресов 172.16.20.192-172.16.20.255 (в этот диапазон попадает PC1) выход за пределы 172.16.20.0/22.
Любой ACL (Standard или Extended), можно создать вызвав команду access-list <номер> <действие> <критерий>
. Разберем состав команды.
Номер ACL – это число, которое определяет какой ACL создается, Standard или Extended:
- 1-99 – Standard
- 100-199 – Extended
Начинаем собирать команду. Уже понятно какие номера можно использовать, чтобы создать Standard ACL.
access-list 11
Действия очень просты – разрешить или запретить, permit или deny (так же на этом этапе можно вставить комментарий remark ).
Продолжим собирать команду, добавим действие – запретить.
access-list 11 deny
С критерием немного сложнее, но разобраться можно. Всего три варианта критериев:
- any – означает любой ip адрес.
- host <ip адрес> – один ip адрес, соответствующий какому-либо устройству.
- <номер сети> <wildcard> – используется для обозначения диапазона ip адресов.
Возвращаемся к нашему недописанному правилу. Согласно заданию, в данной практической работе, надо заблокировать PC3. Следовательно будем использовать критерий host <ip адрес>.
access-list 11 deny host 172.16.27.110
Отлично, но остался еще один ОЧЕНЬ ВАЖНЫЙ момент.
ACL может состоять из нескольких правил, которые называются Access Control Entries (ACE). Очень важно знать, что внутри каждого ACL имеется скрытое правило, которое запрещает ВСЕ. Поэтому, в случае “запретить только … и разрешить все остальное”, в конце надо явно указать – “разрешить ВСЕ”.
Следуя выше сказанному, создадим еще одно правило “разрешить ВСЕ”.
access-list 11 permit any
Предлагаю ввести эти правила на роутер и изучить команду show access-list.
r1#conf t Enter configuration commands, one per line. End with CNTL/Z. r1(config)#access-list 11 deny host 172.16.27.110r1(config)#access-list 11 permit anyr1(config)#exitr1#sh access-lists Standard IP access list 11 10 deny host 172.16.27.110 20 permit any
Разберем вывод команды show access-list
(следует отметить, что эта команда показывает все созданные ACL). Первой строчкой указано, что имеется Стандартный ACL с номером 11, дальше идет перечисление ACE. Каждый ACE имеет свой порядковый номер. По умолчанию первый ACE имеет номер 10, второй ACE 20 и т.д. каждый раз прибавляется шаг 10 (в дальнейшем мы узнаем, как использовать этот номер). Теперь снова ОЧЕНЬ ВАЖНЫЙ момент.
Когда роутеру надо просмотреть ACL (например, для фильтрации трафика), он просматривает ACE (в указанном ACL) сверху вниз и ищет “подходящее правило”. Когда “подходящее правило” найдено, выполняется указанное действие (все ACE после “подходящего правила” не рассматриваются!). Если в ACL не нашлось подходящего правила, применяется “скрытое правило”, которое запрещает ВСЕ.
Созданный нами ACL пока что не фильтрует трафик, для этого нам надо “повесить” его на интерфейсе (установить ACL на интерфейс, для фильтрации трафика). Чтобы “повесить” ACL надо использовать команду ip access-group <номер ACL> <направление>
. Подробнее о параметре <направление>, он имеет два значения – in или out. Этим параметром мы указываем к какому трафику применить данный фильтр, к входящему или исходящему. Вот поэтому очень важно представлять движение пакетов. Предлагаю, проверить доступность сети 172.16.20.0/22 с PC3, установить фильтрацию на интерфейсе, а после подробно прокомментировать процесс фильтрации.
Рисунок 4.2 Проверка доступности сети 172.16.20.0/22 с PC3, до применения фильтрации
r1#conf t Enter configuration commands, one per line. End with CNTL/Z. r1(config)#interf fa 0/1r1(config-if)#ip access-group 11 in
Рисунок 4.3 Проверка доступности сети 172.16.20.0/22 с PC3, после применения фильтрации
r1#sh access-listsStandard IP access list 11 10 deny host 172.16.27.110 (4 match(es)) 20 permit any (483 match(es))
На рисунок 4.2 представлена проверка доступности сети 172.16.20.0/22 с PC3, а именно с PC3 до PC0. Как видим, доступ есть. Далее мы устанавливаем ACL на интерфейс FastEthernet 0/1 командой ip access-group 11 in
. Давайте разберем, почему интерфейс FastEthernet 0/1, а так же почему параметр in. Если представлять движение пакета от PC3, то все просто. Интерфейс Fa0/1 – ближайший интерфейс к PC3 и фильтровать мы должны входящие пакеты от PC3, именно по этому указываем параметр in.
На рисунок 4.3 опять проверяем доступность с PC3 до PC0, но как видим, роутер возвращает ошибку “указанный хост не доступен”. Под рисунком 4.3 представлен вывод команды show access-list
в котором появилась строчка (4 match(es)), она указывает на то, что под это правило попало 4 пакета.
Теперь предлагаю убедиться, что правило под номером 20 тоже работает (на самом деле правило отрабатывает судя по записи (483 match(es)), но лучше убедиться в этом на практике), для этого выполним проверку доступности с CiscoLearning до PC0, рисунок 4.4. Под рисунком представлен вывод команды show access-list
.
Рисунок 4.4 Проверка доступности с CiscoLearning до PC0
r1#sh access-lists Standard IP access list 11 10 deny host 172.16.27.110 (4 match(es)) 20 permit any (940 match(es))
Как видим, правило под номером 20 тоже работает (такое большое количество матчей (matches) вызвано тем, что в фоновом режиме запущена проверка доступности некоторых хостов и они проходят через роутер). Если бы этого правила не было, то весь трафик блокировался “неявным” (невидимым) правилом deny any (далее мы опробуем его на практике).
Теперь немного “лирики”, прежде чем переходить к созданию нового ACL. Есть еще один вариант, куда мы могли установить ACL 11, на интерфейс Fa0/0 в направлении out. Тогда бы фильтровался исходящий трафик и наша цель тоже была бы достигнута. НО! Если трафик фильтруется как исходящий это значит, что он проходит процесс маршрутизации и тратит ресурсы роутера на обработку пакетов и уже после этого фильтруется, что не правильно. Поэтому рекомендуется устанавливать правила фильтрации, максимально близко к источнику, чтобы не растрачивать аппаратные средства сетевого оборудования на “лишние” действия.
Создадим ACL, который будет запрещать доступ для диапазона адресов 172.16.20.192-172.16.20.255. Берем номер ACL, например, 12 (Standard ACL в диапазоне от 1 до 99). Теперь надо создать критерий. Для начала запишем номер сети и “обычную” маску для данного диапазона – 172.16.20.192, маска 255.255.255.192. В разделе “Теория” был рассмотрен процесс перевода “обычной” маски в wildcard, поэтому сразу представим получившуюся команду – access-list 12 deny 172.16.20.192 0.0.0.63
. И не забываем “разрешить ВСЕ остальное” – access-list 12 permit any
.
r1#conf t Enter configuration commands, one per line. End with CNTL/Z. r1(config)#access-list 12 deny 172.16.20.192 0.0.0.63r1(config)#access-list 12 permit any r1(config)#exitr1#sh access-lists Standard IP access list 11 10 deny host 172.16.27.110 (4 match(es)) 20 permit any (1315 match(es)) Standard IP access list 12 10 deny 172.16.20.192 0.0.0.63 20 permit any r1#r1#sh access-lists 12 Standard IP access list 12 deny 172.16.20.192 0.0.0.63 permit any
На роутер добавили новый ACL, с двумя правилами. Команда show access-list
показывает ВСЕ созданные ACL на данном роутере. А с помощью команды show access-list <номер ACL>
, мы можем просмотреть информацию по конкретному ACL (странно, что не показываются номера ACE, на реальном оборудовании номера присутствуют).
ACL создан, осталось “повесить” его на интерфейс. Перед этим советую убедиться, что связь между PC1 и CiscoLearning присутствует. Фильтрацию будем осуществлять на интерфейсе Fa0/0, для входящего трафика.
r1(config)#interf fa 0/0r1(config-if)#ip access-group 12 in
Проверим доступность, между PC1 и CiscoLearning, рисунок 4.5. Мы снова можем видеть ошибку “указанный хост не доступен”.
Рисунок 4.5 Проверка доступности между PC1 и CiscoLearnin
r1#sh access-lists 12Standard IP access list 12 deny 172.16.20.192 0.0.0.63 (4 match(es)) permit any (211 match(es))
Теперь ответим на вопрос, как узнать, установлен ли на интерфейсе ACL? Это можно узнать при помощи команды show running-config
(там же можно увидеть все созданные ACL), а так же при помощи команды show ip interface
. В выводе последней команды надо искать строчки Outgoing access list is … (фильтрация исходящего трафика) и Inbound access list is … (фильтрация входящего трафика).
r1#sh runn Building configuration... Current configuration : 903 bytes ! ... ! interface FastEthernet0/0 ip address 172.16.21.0 255.255.252.0 ip access-group 12 in duplex auto speed auto ! interface FastEthernet0/1 ip address 172.16.27.65 255.255.255.192 ip access-group 11 in duplex auto speed auto ! interface Vlan1 no ip address shutdown ! ip classless ! ip flow-export version 9 ! ! access-list 11 deny host 172.16.27.110 access-list 11 permit any access-list 12 deny 172.16.20.192 0.0.0.63 access-list 12 permit any ! ... r1#sh ip interf FastEthernet0/0 is up, line protocol is up (connected) Internet address is 172.16.21.0/22 Broadcast address is 255.255.255.255 Address determined by setup command MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set //ACL не применен к исходящему трафику Inbound access list is 12 //ACL 12 применен к входящему трафику Proxy ARP is enabled ...
Прежде чем переходить к рассмотрению Extended ACL, удалим фильтрацию на интерфейсах и один ACL. Все делается при помощи “могучей” команды no
. (удаление отдельных правил в ACL будет рассмотрено далее). (“Снимите” ACL 12 с интерфейса, но не удаляйте, если хотите получить достижение!)
r1(config)#interf fa 0/0r1(config-if)#no ip access-group 12 inr1(config-if)#interf fa 0/1r1(config-if)#no ip access-group 11 inr1(config-if)#exitr1(config)#no access-list 11r1(config)#exitr1#sh access-listStandard IP access list 12 10 deny 172.16.20.192 0.0.0.63 (4 match(es)) 20 permit any (752 match(es))
Extended ACL
Extended ACL немного сложнее, чем Standard ACL, т.к. в критерии фильтрации добавляются ip адрес получателя и фильтрация транспортного уровня (фильтрация по портам).
Теперь зададимся целью, что нам надо отфильтровать.
- Запретить доступ с PC2 на sw-outside-1.
- Разрешить диапазону ip адресов 172.16.20.252-172.16.20.255 доступ к CiscoLearning по 80-му порту (tcp), всем остальным запретить.
- Создать ACL разрешающий доступ только CiscoLearning, tacacsGUI и sw-outside-1.
Extended ACL задается при помощи команды access-list <номер> <действие> <тип фильтрации> <критерий>
. Как видно, теперь появился еще тип фильтрации, его можно отнести к критериям, но для лучшего усвоения материала выделим его как отдельный пункт.
Как было написано выше ACL с номером из диапазона от 100 до 199 – Extended ACL, поэтому начало для создания ACL может быть такое – access-list 120
.
Далее, как и в Standard ACL, надо указать действие. Например, запретить, тогда, продолжая собирать команду получаем – access-list 120 deny
.
Критерии будем разбирать подробнее. Прежде всего надо указать какой тип фильтрации будет использован в правиле. Типов много, разберем основные:
- ip – фильтрация только по ip адресам отправителя и получателя
- tcp – фильтрация по tcp портам с учетом ip адресов отправителя и получателя. Если порты не указаны, то будут разрешены (ну, или запрещены, в зависимости от действия) все TCP сессии по всем портам между указанными ip адресами!
- udp – фильтрация по udp портам с учетом ip адресов отправителя и получателя. Если порты не указаны, то будут разрешены все UDP сессии по всем портам между указанными ip адресами!
- icmp – фильтрация icmp-сообщений с учетом ip адресов отправителя и получателя.
Начнем с простого, с типа ip. Тогда команда преобразится так – access-list 120 deny ip
Теперь нам надо указать основные критерии фильтрации. Все просто в начале указывается источник (ip адрес или диапазон)следом указывается получатель (ip адрес или диапазон). При условии, что нам надо запретить доступ с PC2 (источник) до sw-outside-1 (получатель), наше первое правило будет выглядеть так – access-list 120 deny ip host 172.16.22.10 host 172.16.27.100
.
Отлично! Теперь создадим ACL 120, “повесим” его на интерфейс Fa0/0, фильтровать весь входящий трафик. Не забываем, что если мы не разрешим остальной трафик, то по умолчанию, то что не попадает под правила в ACL будет запрещено! Поэтому так же добавим правило, “разрешить ВСЕ”.
r1(config)#access-list 120 deny ip host 172.16.22.10 host 172.16.27.100r1(config)#access-list 120 permit ip any anyr1(config)#interf fa 0/0r1(config-if)#ip access-group 120 in
На рисунке 4.6 представлена проверка связи между PC2 и sw-outside-1. После рисунка 4.6, вы можете найти результат команды show access-list
.
Рисунок 4.6 Проверка доступности между PC2 и sw-outside-1
r1#sh access-lists Standard IP access list 12 10 deny 172.16.20.192 0.0.0.63 (4 match(es)) 20 permit any (752 match(es)) Extended IP access list 120 10 deny ip host 172.16.22.10 host 172.16.27.100 (4 match(es)) 20 permit ip any any (528 match(es))
Переходим к созданию следующего правила, точнее сразу двух правил – Разрешить диапазону ip адресов 172.16.20.252-172.16.20.255 доступ к CiscoLearning по 80-му порту (tcp), всем остальным запретить.
Если нам надо разрешить, то это означает permit. Теперь мы переходим к типу фильтрации tcp – фильтрация по tcp портам. Прежде чем переходить к написанию команды, надо объяснить как устанавливается фильтрация по портам. После указания ip адреса (не важно получателя или отправителя), можно (можно, но не обязательно!) указать порт или диапазон портов при помощи атрибутов:
- eq – расшифровывается как equal (равен). Например, eq 70, будет означать равен 70-му порту.
- neq – расшифровывается как no equal (не равен). Например, neq 90, будет означать не равен 90-му порту.
- gt – расшифровывается как greater than (больше чем). Например, gt 1023, будет означать диапазон от 1024 до 65535 (65535 – это максимальный номер порта).
- lt – расшифровывается как less than (меньше чем). Например, lt 2024, будет означать диапазон от 1 до 2023.
- range – этот атрибут указывает конкретный диапазон (range). Например, range 100 200, будет означать диапазон от 100 до 200.
В нашем случае мы будем использовать атрибут eq, но только в комбинации с ip адресом получателя (eq 80 – порт, который использует http). Порт отправителя может быть любой, поэтому его мы не указываем. Получаем такое правило – access-list 120 permit tcp 172.16.20.252 0.0.0.3 host 172.16.27.92 eq 80
.
А теперь правило, которое будет запрещать всем остальным доступ CiscoLearning по 80-му порту, выглядит так –access-list 120 deny tcp any host 172.16.27.92 eq 80
.
Научимся добавлять правила в уже существующий ACL, а заодно и удалять конкретные правила из ACL. (Будьте очень аккуратны, удалите правило permit ip any any – потеряете доступ к r1!)
r1(config)#ip access-list extended 120r1(config-ext-nacl)#no 10r1(config-ext-nacl)#7 permit tcp 172.16.20.252 0.0.0.3 host 172.16.27.92 eq 80r1(config-ext-nacl)#13 deny tcp any host 172.16.27.92 eq 80r1(config-ext-nacl)#exitr1(config)#exitr1#sh access-listsStandard IP access list 12 10 deny 172.16.20.192 0.0.0.63 (4 match(es)) 20 permit any (752 match(es)) Extended IP access list 120 7 permit tcp 172.16.20.252 0.0.0.3 host 172.16.27.92 eq www 13 deny tcp any host 172.16.27.92 eq www 20 permit ip any any (2443 match(es))
Крепитесь! Осталось немного.
С помощью команды ip access-list extended 120
мы перешли в режим настройки ACL 120 (а с помощью команды ip access-list standard <номер>
, можно перейти в режим настройки стандартного ACL). Командой no 10
, мы удалили 10-ое правило, которое установили ранее. Далее мы указали какое правило будет под номером 7 и 13. Если мы не укажем номер нового правила, то оно получит номер равный максимальному номеру среди всех правил + 10. После всех этих махинаций, предоставлен результат команды show access-list
, изучите его самостоятельно (вместо цифры 80 cisco подставляет слово www).
Проверяем доступность сервера CiscoLaerning по 80-му порту с устройства PC1, рисунок 4.7. Самостоятельно проверьте доступность с PC0 и еще раз вызовите команду show access-list
, изучите попал ли трафик под наши правила.
Рисунок 4.7 Проверка доступности сервера Server1 по 80-му порту
Осталось последнее – создать ACL разрешающий доступ только CiscoLearning, tacacsGUI и sw-outside-1.
Создавать этот ACL мы будем другим путем, при помощи команды ip access-list <extended | standard> <номер | имя>
. Символ | означает или. Обратите внимание, что при помощи этой команды, мы можем задавать имя ACL, что гораздо удобнее, чем задавать номер. Итак, чтобы создать ACL с именем super-puper-acl, надо использовать команду – ip access-list extended super-puper-acl
. И далее в режиме конфигурации этого ACL добавлять правила.
r1#conf t Enter configuration commands, one per line. End with CNTL/Z. r1(config)#ip access-list extended super-puper-aclr1(config-ext-nacl)#permit ip 172.16.27.88 0.0.0.7 anyr1(config-ext-nacl)#40 permit ip host 172.16.27.100 anyr1(config-ext-nacl)#exitr1(config)#exitr1#sh access-lists Standard IP access list 12 10 deny 172.16.20.192 0.0.0.63 (4 match(es)) 20 permit any (752 match(es)) Extended IP access list 120 7 permit tcp 172.16.20.252 0.0.0.3 host 172.16.27.92 eq www (380 match(es)) 13 deny tcp any host 172.16.27.92 eq www (1123 match(es)) 20 permit ip any any (3823 match(es)) Extended IP access list super-puper-acl 10 permit ip 172.16.27.88 0.0.0.7 any 40 permit ip host 172.16.27.100 any
Мы создали ACL с именем super-puper-acl, перешли в режим настройки этого ACL. Добавили правило permit ip 172.16.27.88 0.0.0.7 any
(под это правило попадают CiscoLearning и tacacsGUI), т.к. мы не указали номер и это первое правило, то ему автоматически присваивается номер 10. Во втором правиле мы явно указали номер – 40. ОЧЕНЬ ВАЖНО! Мы не добавили правила “разрешить ВСЕ”, поэтому если трафик не попадает под указанные правила, он будет блокироваться скрытым правилом (под это правило попадает PC3).
Теперь самостоятельно “повесьте” ACL super-puper-acl, на интерфейс Fa0/1 (команда ip access-group super-puper-acl in
)и проверьте доступность CiscoLearning с сетью 172.16.20.0/22. А так же проверьте доступность этой сети с PC3.
ACL не действует на трафик, сгенерированный самим маршрутизатором. Иными словами, пакеты сгенерированные самим устройством НЕ ПОПАДУТ под правила ACL повешенные на out любого интерфейса.
Если вы дошли до конца, то Вы молодец!
Изучаем настройки ACL списки доступа в Cisco
Итак, продолжу разговор о списках доступа (ACL) на базе маршрутизаторов Cisco.
Я уже касался этой темы в статьях “ACL первое знакомство с маршрутизацией” и “ACL расширенная настройка” ранее на этом сайте. Пришла пора наконец подвести итоги по всем видам ACL и привести типовые конфигурации, чтобы не оставалось пробелов или белых пятен.
Как я уже говорил, списки доступа бывают нескольких видов:
- Стандартные;
- Расширенные;
- Динамические;
- …
Стандартные ACL.
В стандартных ACL есть одна особенность – возможность задать только IP адрес источника пакетов. Поэтому эти ACL очень просты.
Вот скриншот используемой топологии.
Две подсети, 192.168.0.0/24 и 10.0.0.0/24. Три узла имеют следующие настройки:
- IP адреса 192.168.0.11, 192.168.0.12 и 192.168.0.13 соответственно;
- Маска подсети общая 255.255.255.0;
- Шлюз по-умолчанию 192.168.0.1;
Маршрутизатор (интерфейс 0/0) настроен с адресом 192.168.0.1 и включен:
Router>en
Router#conf t
Router(config)#int fa0/0
Router(config-if)#ip addr 192.168.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Второй интерфейс маршрутизатора (0/1) настроен с адресом 10.0.0.1 и так же включен.
Router(config)#int fa0/1
Router(config-if)#ip addre 10.0.0.1 255.255.255.0
Router(config-if)#no shut
Ну и сервер, настроен с адресом 10.0.0.100, маска подсети 255.255.255.0 и адрес шлюза по-умолчанию 10.0.0.1.
Проверяем запросом Ping с любого узла на адрес сервера. Всё должно проходить свободно.
Если вдруг пакеты не доходят, проверьте следующие параметры:
- Шлюз по-умолчанию совпадает с адресом ближайшего интерфейса маршрутизатора;
- Интерфейс маршрутизатора поднят;
- IP-настройки верны;
Поскольку ломаться тут, собственно говоря, нечему, будем считать, что достигли рабочей конфигурации. Итак, стандартные списки доступа.
Задача. Разрешить доступ на сервер только узлу с адресом 192.168.0.12, остальным запретить.
Важно запомнить, что пока не задан список доступа на интерфейсе (который можно повесить только один, кстати), всё разрешено. Но стоит повесить хотябы один список, то действует механизм (сверху вниз) “Всё, что не разрешено, то запрещено”. То есть нам нет необходимости создавать в конце правило типа “остальным – запретить”, оно подразумевается автоматически. Итак, раз нам нужно пропустить пакеты с узла 192.168.0.12, то его и зададим в качестве источника.
Общий вид правила Standart ACL выглядит так:
Router(config)#access-list <номер правила, от 1 до 99> <действие, permit, deny> <источник, либо host IP, либо IP MASK либо any>
Router(config)#access-list 1 permit host 192.168.0.12
Итак, мы разрешили прохождение пакетов с адресом источника 192.168.0.12. Негласно, ниже прописалось невидимое правило deny всё остальное, поэтому запрещающее правило можно не создавать.
Применяется правило на интерфейс в зависимости от направления.
Router(config)#int fa0/0
Router(config-if)#ip access-group 1 in
Эта настройка означает, что список правил с номером 1 будет действовать на интерфейсе fa0/0 на входящем направлении.
После проверки легко убедиться в том, что теперь только узел с адресом 192.168.0.12 может посылать ping-запрос и получать ответ от сервера. Остальные узлы не могут.
Ну и теперь, предположим, нужно добавить новый узел в раздел “разрешённых”. Как это делаем? Повторяем команду, указывая просто новый IP адрес. Для отмены какого-либо правила – повторяем его с приставкой “no ” перед командой. Тогда это правило исключается из конфигурации.
А для того, чтобы просмотреть созданные ACL, воспользуемся командой show access-lists
Router#sh access-lists
Standard IP access list 1
permit host 192.168.0.12 (11 match(es))
Кстати, эта команда даёт нам весьма ценную информацию (11 match(es)), это значит, что прошло 11 пакетов, попадающих под это правило. Ну чем не статистика?
Продолжение следует.
Руководство по настройке интерфейса командной строки Cisco ASA, 9.0 — Добавление расширенного списка доступа [Межсетевые экраны Cisco ASA серии 5500-X]
Добавление расширенного списка контроля доступа
В этой главе описывается настройка расширенных списков управления доступом (ACL), и она включает следующие разделы:
Информация о расширенных ACL
Списки контроля доступа
используются для управления доступом к сети или для определения трафика для многих функций. Расширенный ACL состоит из одной или нескольких записей управления доступом (ACE).Каждый ACE указывает источник и место назначения для сопоставления трафика. Вы можете определить параметры в команде access-list или создать объекты или группы объектов для использования в ACL.
Порядок входа в систему контроля доступа
ACL состоит из одного или нескольких ACE. Каждый ACE, который вы вводите для данного имени ACL, добавляется в конец ACL.
Порядок ACE важен. Когда устройство безопасности решает, пересылать или отбрасывать пакет, устройство безопасности проверяет пакет для каждого ACE в порядке, в котором перечислены записи.После нахождения совпадения ACE больше не проверяются. Например, если вы создаете ACE в начале ACL, который явно разрешает весь трафик, никакие дальнейшие операторы никогда не проверяются.
Вы можете отключить ACE, сделав его неактивным.
NAT и ACL
При использовании NAT или PAT сопоставленные адреса и порты больше не требуются в ACL для некоторых функций. Теперь вы всегда должны использовать настоящие непереведенные адреса и порты для этих функций. Использование реального адреса и порта означает, что в случае изменения конфигурации NAT вам не нужно изменять списки управления доступом.
Примечание Для получения информации о миграции ACL см. Cisco ASA 5500 Migration to Version 8.3 и более поздние версии .
Функции, использующие реальные IP-адреса
Следующие команды и функции используют реальные IP-адреса в списках ACL:
- группа доступа команда
- Modular Policy Framework match access-list команда
- Фильтр трафика ботнета Dynamic-filter enable classify-list command
- AAA AAA… соответствует командам
- WCCP wccp redirect-list group-list команда
Например, если вы настроили NAT для внутреннего сервера, 10.1.1.5, так, чтобы он имел общедоступный маршрутизируемый IP-адрес снаружи, 209.165.201.5, то правило доступа, разрешающее внешнему трафику доступ к внутреннему серверу для ссылки на реальный IP-адрес сервера (10.1.1.5), а не на сопоставленный адрес (209.165.201.5):
имя хоста (config) # объект сети server1
имя хоста (config-network-object) # хост 10.1.1.5
имя хоста (config-network-object) # nat (внутри, снаружи) static 209.165.201.5
hostname (config) # access-list OUTSIDE расширенное разрешение tcp any host 10.1.1.5 eq www
имя хоста (config) # ВНЕШНЯЯ группа доступа в интерфейсе за пределами
Функции, использующие сопоставленные IP-адреса
Следующие функции используют списки управления доступом, но эти списки управления доступом будут продолжать использовать сопоставленные значения, как показано на интерфейсе:
- списки контроля доступа IPsec
- захват командных ACL
- ACL для каждого пользователя
- ACL протокола маршрутизации
- ACL для всех остальных функций…
Информация о планировании активации списка доступа
Вы можете запланировать активацию каждой ACE в списке доступа в определенное время дня и недели, применив временной диапазон к ACE.
Пользователи могут столкнуться с задержкой примерно от 80 до 100 секунд после указанного времени окончания для того, чтобы ACL стал неактивным. Например, если указанное время окончания — 3:50, поскольку время окончания является включительно, команда принимается в любом месте между 3:51:00 и 3:51:59.После того, как команда подобрана, ASA завершает любую текущую выполняемую задачу и затем обслуживает команду, чтобы деактивировать ACL.
Лицензионные требования для расширенных списков контроля доступа
Модель | Требование лицензии |
---|---|
Все модели | Базовая лицензия. |
Рекомендации и ограничения
Рекомендации по контекстному режиму
Поддерживается в одно- и множественном контекстном режиме.
Рекомендации по режиму межсетевого экрана
Поддерживается в режимах маршрутизируемого и прозрачного межсетевого экрана.
Рекомендации по IPv6
Поддерживает IPv6.
Функции, которые не поддерживают IDFW, FQDN и списки управления доступом TrustSec
Следующие функции используют ACL, но не могут принимать ACL со значениями IDFW, FQDN или TrustSec:
- карта маршрута команда
- VPN криптокарта команда
- VPN group-policy команда, кроме vpn-filter
- WCCP
- DAP
Дополнительные указания и ограничения
- Совет: Введите имя ACL заглавными буквами, чтобы его было легко увидеть в конфигурации.Вы можете захотеть назвать ACL для интерфейса (например, INSIDE), или вы можете назвать его для той цели, для которой он создан (например, NO_NAT или VPN).
- Обычно вы определяете ключевое слово ip для протокола, но другие протоколы принимаются. Список имен протоколов см. В разделе «Протоколы и приложения».
- Можно указать порты источника и назначения только для протоколов TCP или UDP. Список разрешенных ключевых слов и известных назначений портов см. В разделе «Порты TCP и UDP».Для DNS, Discard, Echo, Ident, NTP, RPC, SUNRPC и Talk требуется одно определение для TCP и одно для UDP. TACACS + требует одно определение для порта 49 TCP.
- Когда вы указываете маску сети, метод отличается от команды access-list программного обеспечения Cisco IOS. ASA использует сетевую маску (например, 255.255.255.0 для маски класса C). В маске Cisco IOS используются подстановочные знаки (например, 0.0.0.255).
Настройки по умолчанию
В таблице 1-1 перечислены настройки по умолчанию для расширенных параметров ACL.
Параметры | По умолчанию |
---|---|
Запись ACE | Запись в журнал ACE создает сообщение системного журнала 106023 для отклоненных пакетов. Запрещающий ACE должен присутствовать для регистрации отклоненных пакетов. |
журнал | Если указано ключевое слово log , уровень по умолчанию для сообщения системного журнала 106100 равен 6 (информационный), а интервал по умолчанию — 300 секунд. |
Настройка расширенных ACL
В этом разделе показано, как добавлять ACE различных типов в ACL, и включены следующие темы:
Добавление ACE для IP-адреса или политики на основе полного доменного имени
Этот раздел позволяет вам контролировать трафик на основе IP-адресов или полных доменных имен (FQDN). ACL состоит из одной или нескольких записей управления доступом (ACE) с одинаковым идентификатором ACL. Чтобы создать ACL, вы начинаете с создания ACE и применения имени списка.ACL с одной записью по-прежнему считается списком, хотя вы можете добавить в список несколько записей.
Предварительные требования
(Необязательно) Создайте сетевые объекты или группы объектов в соответствии с разделом «Настройка сетевых объектов и групп». Объекты могут содержать IP-адрес (хост, подсеть или диапазон) или полное доменное имя. Группы объектов содержат несколько объектов или встроенных записей.
Руководящие принципы
Чтобы удалить ACE, введите команду no access-list со всей строкой синтаксиса команды, как она отображается в конфигурации.Чтобы удалить весь ACL, используйте команду clear configure access-list .
Подробные шаги
Команда | Цель |
---|---|
список доступа имя_списка_доступа [ строка строка_номер ] расширенный { запретить | разрешение } протокол_аргумент исходный_адрес_аргумент адрес_назначения [ журнал [[ уровень ] [ интервал секунд ] | отключить | по умолчанию ]] [ неактивен | временной диапазон time_range_name ] hostname (config) # access-list ACL_IN расширенное разрешение ip любое любое | Добавляет ACE для IP-адреса или политики FQDN.
Протокол — имя или номер — указывает имя или номер протокола.Укажите ip для применения ко всем протоколам. — объектная группа protocol_grp_id — указывает группу объектов протокола, созданную с помощью команды object-group protocol . – объект service_obj_id — указывает объект службы, созданный с помощью команды object service . Объект службы TCP, UDP или ICMP может включать протокол и , порт источника и / или назначения, или тип и код ICMP. — объект-группа service_grp_id— Задает группу объектов службы, созданную с помощью команды object-group service .
– хост ip_address — указывает адрес хоста IPv4. — dest_ip_address mask — Задает сетевой адрес IPv4 и маску подсети. — ipv6-адрес / длина префикса — указывает хост IPv6 или сетевой адрес и префикс. – любой , любой4 и любой6 – любой определяет трафик IPv4 и IPv6; any4 указывает только трафик IPv4; а any6 указывает трафик any6. – объект nw_obj_id — Задает сетевой объект, созданный с помощью команды object network . — object-group nw_grp_id — указывает группу сетевых объектов, созданную с помощью команды object-group network .
|
Добавление ACE для политики на основе TCP или UDP с портами
Этот раздел позволяет управлять трафиком на основе IP-адресов или полных доменных имен (FQDN), а также портов TCP или UDP. ACL состоит из одной или нескольких записей управления доступом (ACE) с одинаковым идентификатором ACL. Чтобы создать ACL, вы начинаете с создания ACE и применения имени списка. ACL с одной записью по-прежнему считается списком, хотя вы можете добавить в список несколько записей.
Предварительные требования
Руководящие принципы
Чтобы удалить ACE, введите команду no access-list со всей строкой синтаксиса команды, как она отображается в конфигурации. Чтобы удалить весь ACL, используйте команду clear configure access-list .
Подробные шаги
Команда | Цель |
---|---|
список доступа имя_списка_доступа [ строка строка_номер ] расширенный { запретить | разрешение } { tcp | udp } source_address_argument [ port_argument ] dest_address_argument [ port_argument ] [ log [[ уровень ] [ интервал секунд ] | отключить | по умолчанию ]] [ неактивен | временной диапазон time_range_name ] hostname (config) # access-list ACL_IN расширенный deny tcp any host 209.165.201.29 экв www | Добавляет ACE для IP-адреса или политики FQDN, а также необязательные порты TCP или UDP. Общие ключевые слова и аргументы см. В разделе «Добавление ACE для IP-адреса или политики на основе полного доменного имени». Ключевые слова и аргументы, специфичные для этого типа ACE, включают следующее: аргумент_порта указывает порт источника и / или назначения. Доступные аргументы включают:
— lt — меньше — gt — больше — экв. — равно — neq — не равно — диапазон — включающий диапазон значений.При использовании этого оператора укажите два номера порта, например: диапазон 100200 Порт может быть целым числом или именем порта TCP или UDP. Для DNS, Discard, Echo, Ident, NTP, RPC, SUNRPC и Talk требуется одно определение для TCP и одно для UDP. TACACS + требует одно определение для порта 49 TCP.
|
Добавление ACE для политики на основе ICMP с типом ICMP
Этот раздел позволяет управлять трафиком на основе IP-адресов или полных доменных имен (FQDN) вместе с типом ICMP. ACL состоит из одной или нескольких записей управления доступом (ACE) с одинаковым идентификатором ACL. Чтобы создать ACL, вы начинаете с создания ACE и применения имени списка. ACL с одной записью по-прежнему считается списком, хотя вы можете добавить в список несколько записей.
Предварительные требования
Руководящие принципы
Чтобы удалить ACE, введите команду no access-list со всей строкой синтаксиса команды, как она отображается в конфигурации. Чтобы удалить весь ACL, используйте команду clear configure access-list .
Подробные шаги
Команда | Цель |
---|---|
список доступа имя_списка_доступа [ строка строка_номер ] расширенный { запретить | разрешение } icmp source_address_argument dest_address_argument [ icmp_argument ] [ log [[ уровень ] [ интервал секунд ] | отключить | по умолчанию ]] [ неактивен | временной диапазон time_range_name ] hostname (config) # access-list abc расширенное разрешение icmp любая любая группа объектов obj_icmp_1 | Добавляет ACE для IP-адреса или политики FQDN, а также необязательные порты TCP или UDP.Общие ключевые слова и аргументы см. В разделе «Добавление ACE для IP-адреса или политики на основе полного доменного имени». Ключевые слова и аргументы, относящиеся к этому типу ACE, включают следующее: icmp_argument указывает тип и код ICMP.
|
Добавление ACE для пользовательской политики (брандмауэр идентификации)
Если вы настроили функцию брандмауэра идентификации, вы можете контролировать трафик на основе идентификации пользователя.
Предварительные требования
См. «Настройка брандмауэра идентификации», чтобы включить IDFW.
Подробные шаги
Команда | Цель |
---|---|
список доступа hostname (config) # access-list v1 расширенное разрешение ip user LOCAL \ idfw any 10.0.0.0 255.255.255.0 | Добавляет ACE для IP-адреса или политики FQDN, а также дополнительных имен пользователей и / или групп. Общие ключевые слова и аргументы см. В разделе «Добавление ACE для IP-адреса или политики на основе полного доменного имени». Ключевые слова и аргументы, характерные для этого типа ACE, включают следующее: аргумент_пользователя предназначен для использования с функцией брандмауэра идентификации и указывает пользователя или группу, для которой требуется сопоставить трафик в дополнение к исходному адресу.Доступные аргументы включают следующее:
Примечание Хотя это и не показано в синтаксисе слева, вы также можете использовать аргументы группы безопасности TrustSec. |
Добавление ACE для политики безопасности на основе группы (TrustSec)
Если вы настроили функцию Cisco TrustSec, вы можете управлять трафиком на основе групп безопасности.
Предварительные требования
См. «Настройка ASA для интеграции с Cisco TrustSec», чтобы включить TrustSec.
Подробные шаги
Команда | Цель |
---|---|
список доступа имя_списка_доступа [ строка строка_номер ] расширенный { запретить | разрешение } аргумент_протокола [ аргумент_группы_безопасности ] аргумент_адреса_источника [ аргумент_порта ] [ аргумент_группы_безопасности ] аргумент_адреса_назначения [ интервал_адреса_порта ] [ уровень протокола ] [ уровень протокола ] | отключить | по умолчанию ]] [ неактивен | временной диапазон time_range_name ] hostname (config) # access-list v1 расширенное разрешение ip user LOCAL \ idfw any 10.0.0.0 255.255.255.0 | Добавляет ACE для IP-адреса или политики FQDN, а также дополнительные группы безопасности. Общие ключевые слова и аргументы см. В разделе «Добавление ACE для IP-адреса или политики на основе полного доменного имени». Ключевые слова и аргументы, характерные для этого типа ACE, включают следующее: аргумент_группы_безопасности предназначен для использования с функцией TrustSec и указывает группу безопасности, для которой требуется сопоставить трафик в дополнение к адресу источника или назначения.Доступные аргументы включают следующее:
Примечание Хотя это и не показано в синтаксисе слева, вы также можете использовать аргументы пользователя Identity Firewall. |
Добавление примечаний к ACL
Вы можете включать примечания о записях в любой ACL. Примечания облегчают понимание ACL.
Чтобы добавить примечание после последней введенной вами команды access-list , введите следующую команду.
Подробные шаги
Команда | Цель |
---|---|
список доступа имя_списка_доступа примечание текст hostname (config) # access-list OUT примечание — это внутренний адрес администратора | Добавляет примечание после последней введенной команды списка доступа. Длина текста не может превышать 100 символов. Вы можете ввести пробелы в начале текста. Конечные пробелы игнорируются. Если вы вводите примечание перед любой командой access-list , то примечание будет первой строкой в ACL. Если вы удалите ACL с помощью команды no access-list access_list_name , то все примечания также будут удалены. |
Примеры
Вы можете добавить примечания перед каждой ACE, и примечание появится в ACL в этом месте.Ввод тире (-) в начале примечания помогает отделить его от ACE.
hostname (config) # access-list OUT примечание — это внутренний адрес администратора
hostname (config) # access-list OUT расширенное разрешение ip host 209.168.200.3 любой
hostname (config) # access-list OUT примечание — это адрес администратора hr
hostname (config) # access-list OUT расширенное разрешение ip host 209.168.200.4 любой
Мониторинг расширенных списков контроля доступа
Для отслеживания расширенных списков контроля доступа введите одну из следующих команд:
Команда | Цель |
---|---|
показать список доступа | Отображает записи ACE по номеру. |
показать список доступа рабочей конфигурации | Показывает текущую конфигурацию рабочего списка доступа. |
Примеры конфигурации расширенных списков контроля доступа
Этот раздел включает следующие темы:
Примеры конфигурации для расширенных списков контроля доступа (без объектов)
Следующий ACL позволяет всем хостам (на интерфейсе, к которому вы применяете ACL) проходить через ASA:
hostname (config) # access-list ACL_IN расширенное разрешение ip любое любое
Следующий пример ACL запрещает хосты на 192.168.1.0 / 24 от доступа к сети 209.165.201.0/27. Все остальные адреса разрешены.
hostname (config) # access-list ACL_IN расширенный deny tcp 192.168.1.0 255.255.255.0
209.165.201.0 255.255.255.224
hostname (config) # access-list ACL_IN расширенное разрешение ip любое любое
Если вы хотите ограничить доступ только к выбранным хостам, введите ACE с ограниченным разрешением. По умолчанию весь другой трафик запрещен, если это явно не разрешено.
hostname (config) # access-list ACL_IN расширенное разрешение ip 192.168.1.0 255.255.255.0
209.165.201.0 255.255.255.224
Следующий ACL ограничивает доступ всех хостов (на интерфейсе, к которому вы применяете ACL) к веб-сайту по адресу 209.165.201.29. Весь остальной трафик разрешен.
hostname (config) # access-list ACL_IN расширенный deny tcp any host 209.165.201.29 eq www
hostname (config) # access-list ACL_IN расширенное разрешение ip любое любое
Следующий ACL, использующий группы объектов, ограничивает доступ нескольких хостов внутренней сети к нескольким веб-серверам.Весь остальной трафик разрешен.
hostname (config-network) # access-list ACL_IN расширенный deny tcp object-group denied
объектная группа веб-эквалайзер www
hostname (config) # access-list ACL_IN расширенное разрешение ip любое любое
hostname (config) # ACL_IN группы доступа в интерфейсе внутри
В следующем примере временно отключается ACL, разрешающий трафик от одной группы сетевых объектов (A) к другой группе сетевых объектов (B):
hostname (config) # access-list 104 allow ip host object-group A object-group B неактивен
Чтобы реализовать ACL на основе времени, используйте команду time-range для определения определенного времени дня и недели.Затем используйте команду access-list extended , чтобы привязать временной диапазон к ACL. В следующем примере ACL привязывается с именем «Продажи» к временному диапазону «New_York_Minute».
hostname (config) # access-list Строка продаж 1 расширенная deny tcp host 209.165.200.225 host
209.165.201.1 временной диапазон New_York_Minute
В следующем примере показан смешанный ACL IPv4 / IPv6:
hostname (config) # список доступа demoacl расширенное разрешение ip 2001: DB8: 1 :: / 64 10.2.2.0 255.255.255.0
hostname (config) # список доступа demoacl расширенное разрешение ip 2001: DB8: 1 :: / 64 2001: DB8: 2 :: / 64
hostname (config) # список доступа demoacl расширенное разрешение ip host 10.3.3.3 хост 10.4.4.4
Примеры конфигурации для расширенных списков ACL (с использованием объектов)
Следующий нормальный ACL, который не использует группы объектов, ограничивает доступ нескольких хостов внутренней сети к нескольким веб-серверам. Весь остальной трафик разрешен.
имя хоста (конфигурация) # список доступа ACL_IN расширенный deny tcp host 10.1.1.4 host 209.165.201.29 eq www
имя хоста (конфигурация) # список доступа ACL_IN расширенный deny tcp host 10.1.1.78 host 209.165.201.29 eq www
hostname (config) # список доступа ACL_IN расширенный deny tcp host 10.1.1.89 хост 209.165.201.29 eq www
имя хоста (конфигурация) # список доступа ACL_IN расширенный deny tcp host 10.1.1.4 host 209.165.201.16 eq www
имя хоста (конфигурация) # список доступа ACL_IN расширенный deny tcp host 10.1.1.78 host 209.165.201.16 eq www
hostname (config) # access-list ACL_IN расширенный deny tcp host 10.1.1.89 host 209.165.201.16 eq www
имя хоста (config) # список доступа ACL_IN расширенный deny tcp host 10.1.1.4 host 209.165.201.78 eq www
hostname (config) # список доступа ACL_IN расширенный deny tcp host 10.1.1.78 хост 209.165.201.78 экв www
имя хоста (config) # список доступа ACL_IN расширенный deny tcp host 10.1.1.89 host 209.165.201.78 eq www
hostname (config) # список доступа ACL_IN расширенное разрешение ip любое любое
hostname (config) # ACL_IN группы доступа в интерфейсе внутри
Если вы создадите две группы сетевых объектов, одну для внутренних хостов, а другую для веб-серверов, то конфигурацию можно упростить и легко изменить для добавления дополнительных хостов:
hostname (config) # сеть объектных групп запрещена
имя хоста (config-network) # узел сетевого объекта 10.1.1.4
имя хоста (config-network) # узел сетевого объекта 10.1.1.78
имя хоста (config-network) # узел сетевого объекта 10.1.1.89
имя хоста (config-network) # объектная группа сеть web
имя хоста (config-network) # узел сетевого объекта 209.165.201.29
имя хоста (config-network) # узел сетевого объекта 209.165.201.16
имя хоста (config-network) # хост сетевого объекта 209.165.201.78
hostname (config-network) # список доступа ACL_IN расширенный deny tcp object-group denied object-group web eq www
hostname (config) # список доступа ACL_IN расширенное разрешение ip любое любое
hostname (config) # ACL_IN группы доступа в интерфейсе внутри
Куда идти дальше
Многие функции используют списки ACL. Примените ACL к интерфейсу. См. Раздел «Настройка правил доступа» для получения дополнительной информации.
История функций для расширенных списков контроля доступа
Таблица 1-2 содержит историю выпусков этой функции.
Название функции | Релизы | Информация об особенностях |
---|---|---|
Расширенные ACL | 7,0 (1) | ACL используются для управления доступом к сети или для определения трафика для многих функций.Расширенный список управления доступом состоит из одной или нескольких записей управления доступом (ACE), в которых вы можете указать номер строки для вставки ACE, адреса источника и назначения и, в зависимости от типа ACE, протокол и порты. (для TCP или UDP) или типа IPCMP (для ICMP). Мы ввели следующую команду: список доступа расширенный . |
Реальные IP-адреса | 8,3 (1) | При использовании NAT или PAT сопоставленные адреса и порты больше не требуются в ACL для некоторых функций.Теперь вы всегда должны использовать настоящие непереведенные адреса и порты для этих функций. Использование реального адреса и порта означает, что в случае изменения конфигурации NAT вам не нужно изменять списки управления доступом. См. Раздел «Функции, использующие реальные IP-адреса» для получения дополнительной информации. |
Поддержка Identity Firewall | 8,4 (2) | Теперь вы можете использовать пользователей и группы брандмауэра идентификации в качестве источника и назначения.Вы можете использовать ACL брандмауэра с правилами доступа, правилами AAA и для аутентификации VPN. Мы изменили следующие команды: список доступа расширенный . |
Поддержка TrustSec | 9,0 (1) | Теперь вы можете использовать группы безопасности TrustSec для источника и назначения. Вы можете использовать ACL брандмауэра с правилами доступа. Мы изменили следующие команды: список доступа расширенный . |
Унифицированный ACL для IPv4 и IPv6 | 9,0 (1) | ACL теперь поддерживают адреса IPv4 и IPv6. Вы даже можете указать сочетание адресов IPv4 и IPv6 для источника и назначения. Ключевое слово any было изменено для представления трафика IPv4 и IPv6. Ключевые слова any4 и any6 были добавлены для представления трафика только IPv4 и только IPv6 соответственно. ACL для IPv6 устарели.Существующие списки ACL IPv6 переносятся в расширенные ACL. См. Примечания к выпуску для получения дополнительной информации о миграции. Мы изменили следующие команды: access-list extended , access-list webtype . Мы удалили следующие команды: ipv6 access-list , ipv6 access-list webtype , ipv6-vpn-filter |
Расширенный объект ACLand для фильтрации трафика ICMP по коду ICMP | 9.0 (1) | ICMP-трафик теперь может быть разрешен / запрещен на основе кода ICMP. Мы ввели или изменили следующие команды: список доступа расширенный , служебный объект , служебный . |
.Руководство по настройке безопасности
: Списки управления доступом, Cisco IOS XE Release 3S — Обзор списка IP-доступа [Поддержка]
Списки управления доступом (ACL) выполняют фильтрацию пакетов для управления перемещением пакетов по сети. Фильтрация пакетов обеспечивает безопасность за счет ограничения доступа трафика в сеть, ограничения доступа пользователей и устройств к сети и предотвращения выхода трафика из сети. Списки IP-доступа снижают вероятность спуфинга и атак типа «отказ в обслуживании», а также разрешают динамический временный доступ пользователей через брандмауэр.
Списки доступа
IP также могут использоваться для целей, отличных от безопасности, например, для управления полосой пропускания, ограничения содержимого обновлений маршрутизации, перераспределения маршрутов, запуска вызовов по запросу (DDR), ограничения вывода отладки, а также идентификации или классификации трафика. для функций качества обслуживания (QoS).
Список доступа — это последовательный список, состоящий как минимум из одного
заявление о разрешении и, возможно, один или несколько
отрицать заявления. В случае списков IP-доступа эти операторы могут применяться к IP-адресам, IP-протоколам верхнего уровня или другим полям в IP-пакетах.
Списки доступа идентифицируются и обозначаются именем или номером. Списки доступа действуют как фильтры пакетов, фильтруя пакеты на основе критериев, определенных в каждом списке доступа.
После настройки списка доступа, чтобы список доступа вступил в силу, вы должны либо применить список доступа к интерфейсу (с помощью
ip
команда access-group), vty (с помощью
класс доступа
command) или обратитесь к списку доступа с помощью любой команды, которая принимает список доступа.Несколько команд могут ссылаться на один и тот же список доступа.
В следующей конфигурации список доступа IP с именем Branchoffices настроен на интерфейсе Fast Ethernet 0/1/0 и применяется к входящим пакетам. Сети, отличные от тех, которые указаны парой адреса источника и маски, не могут получить доступ к интерфейсу Fast Ethernet 0/1/0. Получатели пакетов, поступающих из источников в сети 172.16.7.0, не ограничены. Адресатом для пакетов, поступающих из источников в сети 172.16.2.0, должно быть 172.31.5.4.
IP-список доступа расширенных филиалов 10 разрешений 172.16.7.0 0.0.0.3 любые 20 разрешений 172.16.2.0 0.0.0.255 хост 172.31.5.4 ! интерфейс fastethernet 0/1/0 ip access-group филиалы в
.
Шаг 1 | включить Пример: Устройство> включить | Включает |
Шаг 2 | настроить Терминал Пример: Устройство № настроить терминал | выходит на мировой рынок |
Шаг 3 | ip имя-списка доступа Пример: Устройство (конфигурация) # IP access-list Resequence kmd1 100 15 | Изменяет последовательность |
Шаг 4 | ip Пример: Устройство (config) # ip access-list standard kmd1 | Задает
|
Шаг 5 | Выполните одно из следующий:
Пример: Устройство (config-std-nacl) # 105 разрешение 10.5.5.5 0.0.0 255 | Задает
|
Шаг 6 | Выполните одно из следующий:
Пример: Устройство (config-std-nacl) # 105 запретить 10.6.6.7 0.0.0 255 | (необязательно)
|
Шаг 7 | Выполните одно из следующих действий:
Пример: Устройство (config-ext-nacl) # 150 разрешает TCP любой любой журнал | Задает оператор разрешения в режиме именованного списка доступа IP.
|
Шаг 8 | Выполните одно из следующих действий:
Пример: Устройство (config-ext-nacl) # 150 deny tcp any any log | (Необязательно) Определяет оператор deny в именованном списке доступа IP.
|
Шаг 9 | Повторить шаг 5 и / или шаг 6 для добавления операторов порядкового номера, если применимо. | Позволяет |
Шаг 10 | конец Пример: Устройство (config-std-nacl) # конец | (необязательно) |
Шаг 11 | Показать ip имя-списка доступа Пример: Устройство # показать списки доступа IP kmd1 | (необязательно) |
.
Решено: СПИСОК ДОСТУПА V / S СПИСОК ДОСТУПА IP
Hello Ray,
Команда access-list используется для определения нумерованного ACL, что означает, что ACL будет идентифицироваться в конфигурации по его номеру. Этот номер также обозначает тип этого ACL, то есть стандартный IP, расширенный IP, MAC и т. Д. См. Здесь:
Router (config) # access-list?
<1-99> Стандартный список доступа IP
<100-199> Расширенный список доступа IP
<1100-1199> Расширенный 48-битный список доступа MAC-адресов
<1300-1999> Стандартный список доступа IP (расширенный диапазон)
<200-299> Список доступа с кодом типа протокола
<2000-2699> Расширенный список доступа IP (расширенный диапазон)
<700-799> Список доступа 48-битного MAC-адреса
После этого вывода справки , если вы хотите определить стандартный IP ACL, он должен быть идентифицирован по номеру в диапазоне 1-99 или 1300-1999.Аналогичным образом, если вы хотите определить расширенный список управления доступом IP, он должен быть пронумерован из диапазона 100–199 или 2000–2699. ACL MAC будут использовать диапазон 700-799 для стандартного ACL и 1100-1199 для расширенного ACL.
Команда ip access-list определяет именованный список контроля доступа IPv4, стандартный или расширенный. Именованный IP ACL полностью эквивалентен пронумерованному IP ACL по своему поведению — единственное отличие состоит в том, как он настроен и на него ссылаются в конфигурации. Кроме того, используя команду ip access-list , вы не можете определять различные типы ACL, такие как ACL MAC.В противном случае именованные и нумерованные списки ACL ведут себя идентично.
Например, эти два ACL дадут одинаковые результаты:
список доступа 1 хост запрета 192.0.2.4
список доступа 1 отказ 192.0.2.128 0.0.0.127
список доступа 1 разрешение любой
ip access-list standard MyACL1
deny host 192.0.2.4
deny 192.0.2.128 0.0.0.127
allow any
Кроме того, эти два ACL дадут одинаковые результаты:
access-list 100 allow tcp любой любой eq 80
список доступа 100 разрешить tcp любой любой eq 443
список доступа 100 разрешить udp любой хост 192.0.2.1 eq 53
ip access-list extended MyACL2
allow tcp any any eq 80
allow tcp any any eq 443
allow udp any host 192.0.2.1 eq 53
Помимо очевидного преимущества Поскольку спискам ACL присваиваются осмысленные имена, а не просто числа, у именованных списков ACL есть еще одно преимущество: их можно редактировать. Нумерованные списки ACL не могут быть отредактированы — вы можете только добавлять новые записи в их конец, но если вам нужно удалить или заменить запись, вам нужно удалить весь ACL и ввести его заново.С именованными ACL-списками фактически можно выполнять редактирование на месте.
Давайте возьмем последний опубликованный мной ACL. Если вы выполните show ip access-lists , вы получите следующий результат:
Router # show ip access-lists
Расширенный список доступа IP MyACL2
10 разрешить tcp любой любой eq www
20 разрешить tcp любой любой eq 443
30 разрешить udp на любом хосте 192.0.2.1 eq domain
Обратите внимание на числа 10,20,30 в каждой строке.Они позволяют вам удалить эту конкретную строку или вставить новую строку между ними. Например, если бы я хотел вставить новое правило между первой и второй записью, это было бы следующим образом:
ip access-list extended MyACL2
15 allow tcp any any eq 110
Теперь показывает ip access-lists скажет:
Расширенный список доступа IP MyACL2
10 разрешить tcp любой любой eq www
15 разрешить tcp любой любой eq pop3
20 разрешить tcp любой любой eq 443
30 разрешить udp любой хост 192.0.2.1 eq domain
Я мог бы использовать любое число от 11 до 19 включительно.
Теперь, если бы я хотел удалить строку 30 (ту, которая разрешает доступ к DNS), команда была бы такой:
ip access-list extended MyACL2
no 30
The show ip access-lists теперь будет выдавать:
Расширенный список доступа IP MyACL2
10 разрешить tcp любой любой eq www
15 разрешить tcp любой любой eq pop3
20 разрешить tcp любой любой eq 443
конфигурация — они запоминаются только во время выполнения.Если вы перезапустите маршрутизатор, они снова будут сброшены на 10,20,30 и т. Д. Если вам необходимо изменить последовательность ACL без перезапуска маршрутизатора, вы можете использовать команду ip access-list Resequence MyACL2 10 10 , где первое число «10» указывает начальный номер записи ACL, а второе «10». представляет приращение. После ввода этой команды в режиме глобальной конфигурации, show ip access-lists снова показывает:
Расширенный список доступа IP MyACL2
10 разрешить tcp любой любой eq www
20 разрешить tcp любой любой eq pop3
30 allow tcp any any eq 443
Таким образом, нумерованные ACL и именованные ACL, определенные с помощью команды ip access-list , имеют тот же эффект.Однако именованные списки ACL более гибкие в том, как они определяются, управляются и используются ссылки.
С уважением,
Петр
Посмотреть решение в исходном сообщении
.