ACL - списки контроля доступа.

Можно назначить по одному списку на:
- каждый протокол
- каждый интерфейс
- входящий и исходящий трафик

ACL не оказывает никакого влияния на трафик, генерируемый самим маршрутизатором.

Бывают:
Стандартные ACL - фильтруют пакеты только по IP адресу источника
Расширенные ACL - фильтруют по:
- IP адресу источника
- IP адресу назначения
- TCP или UDP портам источника
- TCP или UDP портам назначения
- типу протокола (названию или номеру)

А также:
1. Нумерованные ACL:
- от 1 до 99 и от 1300 до 2000 - стандартные IP ACL
- от 100 до 199 и от 2000 до 2699 - расширенные IP ACL
2. Именованные - их более удобно применять, т.к. можно указать их назначение. Требования к именам:
- могут содержать буквы и цифры
- предполагается, что имена будут писаться заглавными буквами
- имена не могут содержать пробелы и знаки пунктуации
В именованные ACL можно добавлять и удалять записи.

Как применяются ACL
1. Создать ACL, указав номер или имя и указать условия.
2. Назначить ACL на интерфейс или терминальную линию.

Как работает стандартный ACL
1. На интерфейс поступает пакет
2. Проверяется, есть ли на входе интерфейса ACL.
3. Проверяется, стандартный ли ACL.
4. Сравнивается адрес источника с первой записью.
5. Если не совпадает, сравнивается со следующей записью.
6. Если не совпадает ни с одной записью, то отбрасывается.
7. Если совпадает с какой-то записью, пропускает или отбрасывает согласно правилу.
8. Если пропускает, ищет адрес назначения в таблице маршрутизации.
9. Если есть, отправляет на нужный интерфейс.
10. Если нет - отбрасывает.

Правила размещения ACL:
- Стандартные ACL надо располагать ближе к сети назначения
- Расширенные ACL- ближе к сети источника.

Создание нумерованного стандартного ACL
Router(config)#access-list access-list-number source
Например:
R1(config)# access-list 10 remark Permit for 192.168.0.0 LAN - описываем ACL или каждую запись в ACL
R1(config)# access-list 10 permit 192.168.0.0 - для классовой сети
R1(config)# access-list 10 permit 192.168.5.0 0.0.0.128 - для бесклассовой сети
Удаление ACL
R1(config)# no access-list 10

wildcard маска образуется путе вычитания маски необходимой сети из маски 255.255.255.0, например
255.255.255.255
-
255.255.15.0
=
0.0.240.255

В ACL вместо адреса источника можно указывать:
- вместо 0.0.0.0 255.255.255.255 - any
- вместо конкретного адреса хоста типа 192.168.5.12 0.0.0.0 - host 192.168.5.12

Применение нумерованного стандартного ACL на интерфейс
Router(config-if)#ip access-group {access-list-number | access-list-name} {in | out}
Например, ACL 10:
R1(config)# access-list 10 permit 192.168.0.0
R1(config)# access-list 10 permit 192.168.5.0 0.0.0.128
применяем на входе интерфейса Fastethernet 0/1
R1(config)# interface f0/1
R1(config-if)# ip access-group 10 in

Hастройка ACL для виртуальных терминальных линий (вместо параметра access-group используется access-class ):
R1(config-line)# access-class access-list-number {in | out}
Например
R1(config)# access-list 22 permit 192.168.1.0
R1(config)# access-list 22 permit 192.168.2.0
R1(config)# line vty 0 4 - надо назначать на все vty, т.к. пользователь может подключиться к любому из них
R1(config-line)# login local
R1(config-line)# transport input telnet
R1(config-line)# ip access-class 22 in

Редактирование нумерованных ACL
При редактировании нумерованных ACL записи вставляются в порядке ввода. Нельзя вставить новую запись между двумя уже введенными. Если это все-таки надо сделать, то:
- Копируем все правила из конфигурации в блокнот.
- Вставляем необходимые записи.
- Удаляем весь AC
- Копируем все записи из блокнота
- Вставляем в конфигурацию.

Именованные стандартные ACL
R1(config)# ip access-list standard NAME - объявляем именованный стандартный ACL
R1(config-std-nacl)# remark Deny for host 192.168.0.13 - описываем ACL
R1(config-std-nacl)# deny 192.168.0.13 - создаем правила
R1(config-std-nacl)# permit 192.168.0.0 0.0.0.255
R1(config-std-nacl)# interface Fa0/0
R1(config-if)# ip access-group NAME out - привязываем ACL к интерфейсу
Называть ACL заглавными буквами не обязательно. Это делается для удобства.

Просмотр и проверка ACL
Используется команда:
Router# show access-lists {access-list-mumber | name}
Например,
R1# show access-lists - выводит все ACL
R1# show access-lists 10 - выводит ACL с номером 10
R1# show access-lists NAM - выводит ACL с именем NAM

Редактирование именованных ACL
У именованных ACL есть преимущество перед нумерованными. Их проще редактировать. Все записи правил в именованных ACL имеют порядковый номер с шагом 10. Т.е. первое правило имеет номер 10, второе - 20 и т.д.
Поэтому у именованных ACL можно удалять конкретные запис, а также добавлять записи между имеющимися правилами с присвоением им номера между номерами правил, между которыми добавляется новое правило.
Например, у нас есть ACL с темя записями:
R1# show access-lists

10 permit 192.168.10.10

Нам надо добавить еще одно правило:
R1(config)# access-list standard WEBSERVER
R1(config-std-nacl)# 15 permit 192.168.10.13

Вот, что получилось:
R1# show access-lists
Standard IP access-list WEBSERVER
10 permit 192.168.10.10
15 permit 192.168.10.13
20 deny 192.168.10.0, wildcard bits 0.0.0.255
30 deny 192.168.12.0, wildcard bits 0.0.0.255

Расшр\иренные ACL
Расширенные списки доступа дают возможность более точно фильтровать трафик, поэтому и используются они чаще. Помимо адреса источника они еще проверяют:
- протокол (IP, ICMP, TCP, UDP и др)
- адрес назначения
- номер порта (не интерфейса)

Синтаксис команды расширенного нумерованного ACL
Router(config)#access-list access-list-number protocol source destination
где:
access-list-number - номер ACL (100-199 и 2000-2699)
deny - запретить трафик
permit - разрешить трафик
remark - описание правила или ACL
protocol - имя или номер протокола. В основном это - IP, ICMP, TCP, UDP.
source - адрес источника
source-wildcard - обратная маска источника
destination - адрес назначения
destination-wildcard - обратная маска назначения
operator - сравнивает номера портов. Может быть: lt-меньше чем, gt-больше чем, eq-равно, neq-не равно, range -включает диапазон.
port - номер порта
established - только для TCP - указывает установленное соединение.

Пример
R1(config)#access-list 103 permit tcp 192.168.10.0 0.0.0.255 any eq 80 - резрешаем доступ по 80 порту от сети 192.168.10.0
R1(config)#access-list 103 permit tcp 192.168.10.0 0.0.0.255 any eq 443 - резрешаем доступ по 443 порту от сети 192.168.10.0
R1(config)#access-list 104 permit tcp any 192.168.10.0 0.0.0.255 established - разрешаем установленные tcp соединения к сети 192.168.10.0.

Расширенные ACL назначаются на интерфейсы так же, как и стандартные. Например:
R1(config)# interface f0/1
R1(config-if)# ip access-group 103 out
R1(config-if)# ip access-group 104 in

Создание именованного расширенного ACL
R1(config)# ip access-list extended SURFING - объявляем именованный расширенный ACL для исходящего трафика
R1(config-ext-nacl)# pernit tcp 192.168.10.0 0.0.0.255 any eq 80 - создаем правила
R1(config-ext-nacl)# pernit tcp 192.168.10.0 0.0.0.255 any eq 443
R1(config)# access-list extended BROWSING - объявляем именованный расширенный ACL для входящего трафика
R1(config-ext-nacl)# pernit tcp any 192.168.10.0 0.0.0.255 established - создаем правила

Комплексные ACL
Стандартные и расширенные ACL могут быть основой для комплексных ACL для улучшения функциональности. Бывают:
- Динамические
- Рефлексивные
- С ограничением по времени

Динамические ACL - если пользователю необходимо получить доступ к какому-либо устройству, находящемуся за маршрутизатором, он сначала должен аутентифицироваться на маршрутизаторе через Telnet. После этого маршрутизатор на определенное время дает доступ, по истечении которого опять надо будет аутентифицироваться.
R1(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 - добавляем динамическую запись с именем testlist, которая будет работать только после установления связи через Telnet в течении 15 минут, а затем будет отключаться. Это правило открывает доступ из сети 192.168.10.0 в сеть 192.168.30.0.
R3(config)#interface serial 0/0/1
R3(config-if)#ip access-group 101 in
— закрепляем ACL 101 за интерфейсом во входящем направлении.
R3(config)#line vty 0 4
R3(config-line)#login local
R3(config-line)#autocommand access-enable host timeout 5
— как только пользователь залогинится на маршрутизатор, выолнится автокоманда, которая даст доступ к сети 192.168.30.0. Сессия Telnet после этого закроется. Доступ к сети сохраниться и будет закрыт после 5 минут ожидания.

Рефлексивные ACL - разрешают трафик извне сети только в случае, если он был инициирован изнутри. Изначально весть трафик извне закрыт. Список доступа запоминает параметры пользовательских сессий, которые дают запрос наружу. Ответ на эти запросы проверяется на соответствие параметрам пользовательской сессии. Рефлексивные ACL имеют только временные записи, которые создаются автоматически с каждой сессией. Рефлексивные ACL не применяются непосредственно на интерфейс, но вкладываются в расширенный ACL , который применяется на интерфейс. Рефлексивные ACL могут быть определены только в расширенных именованных ACL, а использоваться могут с любими ACL.
R2(config)#ip access-list extended OUTBOUNDFILTERS - объявляем именованный расширенный ACL для исходящего трафика.
R2(config-ext-nacl)#permit tcp 192.168.0.0 0.0.255.255 any reflect TCPTRAFFIC - заставляем маршрутизатор отслеживать tcp трафик, который инициировался изнутри, и сохранять в переменной TCPTRAFFIC.
R2(config-ext-nacl)#permit icmp 192.168.0.0 0.0.255.255 any reflect ICMPTRAFFIC — заставляем маршрутизатор отслеживать icmp трафик, который инициировался изнутри, и сохранять в переменной ICMPTRAFFIC .
R2(config)#ip access-list extended INBOUNDFILTERS - объявляем именованный расширенный ACL для входящего трафика.
R2(config-ext-nacl)#evaluate TCPTRAFFIC - заставляем маршрутизатор сравнивать параметры входящего tcp трафика с переменной TCPTRAFFIC, созданной правилом OUTBOUNDFILTERS.
R2(config-ext-nacl)#evaluate ICMPTRAFFIC — заставляем маршрутизатор сравнивать параметры входящего icmp трафика с переменной ICMPTRAFFIC, созданной правилом OUTBOUNDFILTERS.
R2(config)#interface serial 0/1/0
R2(config-if)#ip access-group INBOUNDFILTERS in - применяем ACL для входящего трафика на интерфейс.
R2(config-if)#ip access-group OUTBOUNDFILTERS out - применяем ACL для исходящего трафика на интерфейс.

ACL с ограничением по времени - определяет время, когда в расширенном ACL работает конкретная запись.
R1(config)#time-range EVERYOTHERDAY - обьявляем переменную времени EVERYOTHERDAY.
R1(config-time-range)#periodic Monday Wednesday Friday 8:00 to 17:00 — присваиваем список времени для этой переменной, в котором добавляем дни недели и время.
R1(config)#access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq telnet time-range EVERYOTHERDAY — применяем переменную к правилу.
R1(config)#interface s0/0/0
R1(config-if)#ip access-group 101 out — закрепляем ACL за интерфейсом.

В этой статье речь пойдёт об списках аксес листах (списки листов доступа, ACL, NACL, access lists, access control list - все эти слова - синонимы, пусть вас не пугает их разнообразие). Далее в статье, для краткости я буду пользоваться термином ACL .

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

Итак, ACL (access control list) - это строго говоря, механизм для выбора из всего потока трафика какой-то части, по заданным критериям. Например, через маршрутизатор проходит множество пакетов, и вот такой ACL выбирает из множества только те пакеты, которые идут из подсети 192.168.1.0/24:

access-list 1 permit 192.168.1.0

Что дальше делать с этим трафиком - пока неизвестно. Например, трафик, попавший под ACL может заворачиваться в VPN тоннель, или, подвергаться трансляции адресов (NAT). В курсе CCNA рассматривается два способа использования ACL: основной - это фильтрация трафика, второй - использование ACL при настройке NAT. Важно следующее: не имеет значения, где и для каких целей мы будем использовать ACL, правила написания ACL от этого не меняются. Кроме того, если мы только создали ACL, то он пока ни на что не влияет. ACL - это просто несколько неработающих строчек в конфиге, пока мы его не применим, например, на интерфейс, для фильтрации трафика.

Сегодня я расскажу вам о том, как отфильтровать трафик в сети с помощью списков контроля доступа. Рассмотрим как они работают соответственно, что собой представляют, для чего предназначены. Позже я покажу как они настраиваются в 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}
  • permit: разрешить
  • deny: запретить
  • remark: комментарий о списке доступа
  • address: запрещаем или разрешаем сеть
  • any: разрешаем или запрещаем всё
  • host: разрешаем или запрещаем хосту
  • source-wildcard: WildCard маска сети
  • log: включаем логгирование пакеты проходящие через данную запись ACL
Расширенный список доступа
Router(config)#access-list <номер списка от 100 до 199> {permit | deny | remark} protocol source [operator operand] [port <порт или название протокола>
  • 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 <пароль>
R(config-line)#login
R(config-line)#access-class 21 in - настраиваем логин и пароль, а также закрепляем список доступа с разрешенными IP-адресами.
Динамические списки доступа

R3(config)#username Student password 0 cisco - создаем пользователей для подключения через Telnet.
R3(config)#access-list 101 permit tcp any host 10.2.2.2 eq telnet
R3(config)#access-list 101 dynamic testlist timeout 15 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 - разрешаем подключаться к серверу по Telnet всем узлам.
R3(config)#interface serial 0/0/1
R3(config-if)#ip access-group 101 in - закрепляем 101 ACL за интерфейсом в входящем направлении.
R3(config)#line vty 0 4
R3(config-line)#login local
R3(config-line)#autocommand access-enable host timeout 5 - как только пользователь аутентифицируеться, сеть 192.168.30.0 будет доступна, через 5 минут бездействия сеанс закроется.

Рефлексивные списки доступа


R2(config)#ip access-list extended OUTBOUNDFILTERS
R2(config-ext-nacl)#permit tcp 192.168.0.0 0.0.255.255 any reflect TCPTRAFFIC
R2(config-ext-nacl)#permit icmp 192.168.0.0 0.0.255.255 any reflect ICMPTRAFFIC - заставляем маршрутизатор отслеживать трафик, который инициировался изнутри.
R2(config)#ip access-list extended INBOUNDFILTERS
R2(config-ext-nacl)#evaluate TCPTRAFFIC
R2(config-ext-nacl)#evaluate ICMPTRAFFIC - создаем входящую политику, которая требует, чтобы маршрутизатор проверял входящий трафик, чтобы видеть инициировался ли изнутри и связываем TCPTRAFFIC к INBOUNDFILTERS.
R2(config)#interface serial 0/1/0
R2(config-if)#ip access-group INBOUNDFILTERS in
R2(config-if)#ip access-group OUTBOUNDFILTERS out - применяем входящий и исходящий ACL на интерфейс.
Ограничение по времени

R1(config)#time-range EVERYOTHERDAY
R1(config-time-range)#periodic Monday Wednesday Friday 8:00 to 17:00 - создаем список времени, в котором добавляем дни недели и время.
R1(config)#access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq telnet time-range EVERYOTHERDAY - применяем time-range к ACL.
R1(config)#interface s0/0/0
R1(config-if)#ip access-group 101 out - закрепляем ACL за интерфейсом.

Поиск проблем
R#show access-lists {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. Если у вас есть желание закрепить знания на практике, пожалуйста -

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

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

Введение

Итак представим, что наша небольшая локальная сеть создана, и в ней в качестве активного оборудования используется маршрутизатор Cisco. Через него проходит большое количество самого разного трафика. И сетевому инженеру необходимо его фильтровать. Здесь и начинается знакомство со списками управления доступом.

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

ACL разделяют на стандартные и расширенные.

Основные особенности

  • Фильтрация трафика возможно как на входе, так и на выходе трафика из выбранного интерфейса
  • Для данных, которые должны быть допущены, применяется атрибут permit . Для тех, которые следует отбросить - deny
  • Списки управления доступом настраиваются таким образом, что если трафик не попадает не под одно правило, указанное в списке, он автоматически будет запрещен

На рисунке ниже указана логика фильтрации пакетов, относительно расположения ACL на маршрутизаторе.

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

Стандартные списки ACL

Команда для настройки на маршрутизаторах Cisco имеет следующий синтаксис.

access-list номер-списка {deny | permit} отправитель [инвертированная маска отправителя ]

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

Обратите внимание . Нумерация стандартных списков ACL доступна в диапазоне 1-99 и 1300-1999.

Таким образом, алгоритм настройки можно описать следующим образом:

  1. Определяем место расположения списка ACL - интерфейс и направленность данных
  2. В режиме глобальной конфигурации указываем правила, используя команду access-list . Используйте справку "? ", для просмотра доступных параметров.
  3. В режиме конфигурацирования интерфейса назначаем для него соответствующий список - ip access-group number {in | out}

Расширенные ACL

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

Настройка

Общий принцип не изменился. Вам нужно определить интерфейс и направление трафика, затем задать список параметров фильтрации. Сам список создается и настраивается следующим образом:

IP access-list access-list-number ] {deny | permit} protocol source source-wildcard destination destination-wildcard ICMP access-list access-list-number ] {deny | permit} icmp source source-wildcard destination destination-wildcard | ] TCP access-list access-list-number ] {deny | permit} tcp source source-wildcard ] destination destination-wildcard ] UDP access-list access-list-number ] {deny | permit} udp source source-wildcard ] destination destination-wildcard ] cisco.com

Видео к статье :

Заключение

Списки контроля доступа ACL Cisco - мощное средство обеспечения безопасности в сети. Используйте его, чтобы фильтровать ваш трафик. Но помните про особенности. Если вы некорректно укажите параметры фильтрации, "правильный" трафик может не попасть к адресату.

Зачем искать информацию на других сайтах, если все собрано у нас?

Access-lists, Access-control-lists (ACL) – списки контроля доступа. Существует несколько разновидностей аксесс-листов, применяемых на маршрутизаторах и коммутаторах Cisco. Аксесс-листы используются для фильтрации трафика или для определения классов трафика при применении политик. Список доступа представляет собой набор строк вида условие-действие. Строка аксесс-листа называется access-control-entry (ACE). Условием может быть соответствие пакета определенному протоколу или набору параметров. Действием может быть разрешение пакета (permit), либо запрещение (deny). Для списков доступа справедливы следующие правила:

  • Созданный список доступа не действует, пока он не применен к конкретному интерфейсу.
  • Список доступа применяется на интерфейсе в конкретном направлении – для исходящего, либо входящего трафика (inbound/outbound).
  • К интерфейсу можно применить только по одному аксесс-листу на протокол (ip), на направление (in/out).
  • Список доступа проверяется строка за строкой до первого совпадения. Оставшиеся строки игнорируются.
  • В конце любого IP аксесс-листа подразумевается запрещающее правило (implicit deny). Пакет, не попавший ни под одно условие в списке, отбрасывается, в соответствии с правилом implicit deny.
  • Рекомендуется более специфические правила указывать в начале аксесс-листа, а более общие – в конце.
  • Новые строки по умолчанию дописываются в конец списка.
  • Отдельную строку можно удалить из именованного аксесс-листа, другие ACL удаляются лишь целиком.
  • Список доступа должен иметь по крайней мере один permit, иначе он будет блокировать весь трафик.
  • Интерфейс, которому назначен несуществующий аксесс-лист не фильтрует трафик.
  • IP Extended Access-lists применяются как можно ближе к источнику трафика.

По способу создания списки доступа делятся на стандартные, расширенные, и именованные. Удобнее всего работать с именованными.

Стандартный Access-list

Фильтрует только по ip адресу источника. Должен иметь номер в диапазоне 1-99. Пример:

Access-list 10 deny host 172.16.30.2 – запретить ip источника access-list 10 permit any - разрешить всё

Расширенный Access-list

Фильтрует по адресам источника и получателя, по протоколам 3, 4 уровня. Должен иметь номер в диапазоне 100-199. Пример:

Acсess-list 110 deny tcp any host 172.16.30.2 eq 22 - запретить tcp от всех на хост с портом 22 access-list 110 deny ip 192.168.160.0 0.0.31.255 any - запретить ip от сети по шаблону на всех access-list 110 permit ip any any - разрешить всё

Применение к интерфейсу

conf t - переход в режим конфигурирования int fa 0/0 - переход к интерфейсу FastEthernet0/0 ip access-group 110 in - применить ACL 110 на вход ip access-group 120 out - применить ACL 120 на выход

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

conf t - переход в режим конфигурирования line vty 0 4 - переход к линиям vty с 0 по 4 access-class 10 in - применить ACL 10 на вход

Именованный расширенный Access-list

Фильтрует по адресам источника и получателя, по протоколам 3, 4 уровня. Должен иметь имя. Возможно удалять отдельные строки. Пример:

Ip access-list extended INET - создать список с именем INET deny tcp any host 172.16.30.2 eq 22 - запретить tcp от всех на хост с портом 22 deny ip 192.168.160.0 0.0.31.255 any - запретить ip от сети по шаблону на всех permit ip any any - разрешить всё

Строки доступа нумеруются с шагом 10 по-умолчанию. Можно перенумеровать аксесс-лист с другим шагом. Можно добавить строку пронумеровав – она попадет в указанное место, по нумерации.

Просмотр расширенного аксесс-листа:

Router# sh access-list INET Extended IP access list INET 10 deny tcp any host 172.16.30.2 eq 22 (150 matches) 20 deny ip 192.168.160.0 0.0.31.255 any (4 matches) 30 permit ip any any (1556 matches)

Как видим - строки пронумерованы с шагом 10. Можно вставить новую строку в произвольное место листа, используя номер:

Router(conf)# ip access-list extended INET router(config-ext-nacl)# 5 permit ip host 10.10.10.10 any router(config-ext-nacl)# 223 deny ip host 1.1.1.1 any router(config-ext-nacl)# end router# sh access-list INET Extended IP access list INET 5 permit ip host 10.10.10.10 any 10 deny tcp any host 172.16.30.2 eq 22 (150 matches) 20 deny ip 192.168.160.0 0.0.31.255 any (4 matches) 30 permit ip any any (1556 matches) 223 deny ip host 1.1.1.1 any

Удалить отдельную строчку из листа можно по номеру, или по полному указанию строки с префиксом "no". Например так:

Router(conf)# ip access-list extended INET router(config-ext-nacl)# no permit ip host 10.10.10.10 any

Router(config-ext-nacl)# no 223

Полностью удалить список доступа можно указав соответствующую команду и "no":

Router(conf)# no ip access-list extended INET

Расширенные параметры ACE

permit icmp vs. permit ip

Deny ACEs that check Layer 4 information never match a fragment unless the fragment contains Layer 4 information.

Классификация трафика с помощью ACL

Отладка IP ACL

Vlan-ACL (VACL)

VLAN map применяется для всех отбриджованных пакетов. Router ACL только для маршрутизированных. Если

1. VLAN map for input VLAN10

2. Input router ACL / int VLAN10

3. routing VLAN10 to VLAN 20

4. Output router ACL / int VLAN20

5. VLAN map for output VLAN20

ip access-list extended WIFIHOSTEL permit ip 10.12.0.0 0.0.255.255 host 212.192.64.2 permit ip host 212.192.64.2 10.12.0.0 0.0.255.255 deny ip any any ! vlan access-map WIFIHOSTEL 10 match ip address WIFIHOSTEL action forward ! vlan filter WIFIHOSTEL vlan-list 534