Что такое acl cisco
Cisco ACL
Материал из Xgu.ru
|
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.
Содержание
[править] Стандартные и расширенные ACL
Именованные ACL могут быть стандартные и расширенные. У них немного отличается синтаксис с нумерованными:
В конце любого ACL есть невидимое правило deny ip any any.
[править] Стандартные ACL
Стандартный ACL позволяет указывать только IP-адрес отправителя:
Применение ACL на интерфейсе:
[править] Пример настройки стандартного ACL
Пример стандартного нумерованного ACL, который запрещает хосту 10.0.3.2 доступ в сегмент сервера, но разрешает всем остальным:
Применение ACL на интерфейсе (если применить ACL на интерфейсе fa0/0 в направлении in, то он заблокирует и доступ хоста 10.0.3.2 в интернет):
Тот же пример только с именованным ACL:
Применение ACL на интерфейсе:
[править] Применение ACL к vty
К vty ACL применяется другой командой:
Для ограничения доступа к маршрутизатору, по протоколам telnet или SSH, можно использовать стандартный ACL и применить его к vty.
Данный пример ACL разрешает подключаться к маршрутизатору только с адреса 4.4.4.4:
[править] Расширенные ACL
Расширенный ACL, при указании протоколов IP, ICMP и др., позволяет указывать IP-адреса отправителя и получателя:
Расширенный ACL, при указании протоколов TCP или UDP, позволяет указывать и порты отправителя и/или получателя:
[править] Пример настройки расширенного ACL
Задание для расширенного ACL:
Пример расширенного нумерованного ACL:
Применение ACL на интерфейсе:
Расширенный именованный ACL:
Применение ACL на интерфейсе:
[править] Команды просмотра
[править] Другие виды ACL
[править] Динамические ACL
[править] Пример настройки динамических ACL
Создание обычного ACL (в нём разрешён telnet для того чтобы пользователи могли пройти аутентификацию):
Создание динамического ACL:
Если необходимо чтобы параметр any при применении ACL был заменен на IP-адрес инициатора telnet-соединения, то в команде access-enable host необходимо указать параметр host.
Дополнительно можно настроить временной интервал, после которого динамическая запись будет удалена независимо от активности пользователя:
Применение ACL на интерфейсе:
Настройка доступа telnet:
Команда access-enable host активирует динамический ACL:
[править] Проверка работы
Проверка связи до активирования динамического ACL:
Просмотр информации на dyn1 до активирования динамического ACL:
После активирования динамического ACL (qua7 пингуется, а интерфейс dyn1 по-прежнему нет):
Просмотр информации на dyn1 после активирования динамического ACL:
Если команда access-enable указана без параметра timeout, то запись будет оставаться постоянно. Удалить её можно с помощью команды clear ip access-template. Например, очистить запись в динамическом ACL:
[править] Пример конфигурации маршрутизатора
[править] Reflexive ACL
Reflexive ACl могут быть настроены только с расширенными именованными ACL. Сами RACL не применяются к интерфейсу, они применяются к ACL.
[править] Настройка RACL
Схема сети такая же как и для динамических ACL.
Создание ACL для исходящего трафика:
Создание ACL для входящего трафика:
[править] Настройка таймеров
Значение глобального таймера по умолчанию 300 секунд:
Изменение значения глобального таймера:
Можно для каждой записи указать своё значение таймера, например:
Если настроены и глобальный и специфический таймер для записи, то приоритет у более специфического таймера.
[править] Пример конфигурации
[править] Временные интервалы для ACL
Применение временных интервалов к правилам ACL может быть полезно, например, в таких случаях:
Первый вариант может быть, например, когда в компании запрещен доступ к определенным ресурсам в рабочее время, но разрешен час до начала рабочего времени, и час после окончания рабочего времени.
Второй вариант может возникнуть, например, когда в компании периодически необходимо предоставлять сотрудникам временный доступ к ресурсам. Например, в компании неделю работает подрядчик и ему нужен доступ к каким-то из серверов компании. Если создать правило сразу с временным интервалом, то оно перестанет работать (станет неактивным) в строго определенное время и можно не бояться забыть его удалить. К сожалению, ACL со временем, как правило, сильно разрастаются и в них остаются «мертвые» правила. Такой подход с временными интервалами хотя бы немного позволит упростить поддержание ACL в актуальном виде.
[править] Настройка параметров временного интервала
Пример настройки временного интервала для рабочих дней:
Пример настройки временного интервала для выходных дней:
Просмотр информации о настроенных временных интервалах (второй интервал неактивен, так как сейчас рабочий день):
Что такое ACL и как его настраивать
В этой статье речь пойдёт об списках аксес листах (списки листов доступа, ACL, NACL, access lists, access control list — все эти слова — синонимы, пусть вас не пугает их разнообразие). Далее в статье, для краткости я буду пользоваться термином ACL.
В этой статье мы поговорим об общих принципах создания ACL, о применении ACL на интерфейсах, о правилах просмотра ACL. Конкретно же о создании самих ACL рассказывается в статьях «Создание стандартного ACL», и «Создание расширенного ACL». В любом случае, рекомендую начать изучение с этой статьи, чтобы было понятно, о чём вообще идёт речь.
Итак, ACL (access control list) — это строго говоря, механизм для выбора из всего потока трафика какой-то части, по заданным критериям. Например, через маршрутизатор проходит множество пакетов, и вот такой ACL выбирает из множества только те пакеты, которые идут из подсети 192.168.1.0/24:
Что дальше делать с этим трафиком — пока неизвестно. Например, трафик, попавший под ACL может заворачиваться в VPN тоннель, или, подвергаться трансляции адресов (NAT). В курсе CCNA рассматривается два способа использования ACL: основной — это фильтрация трафика, второй — использование ACL при настройке NAT. Важно следующее: не имеет значения, где и для каких целей мы будем использовать ACL, правила написания ACL от этого не меняются. Кроме того, если мы только создали ACL, то он пока ни на что не влияет. ACL — это просто несколько неработающих строчек в конфиге, пока мы его не применим, например, на интерфейс, для фильтрации трафика.
Типы ACL
ACL-и бывают двух видов: стандартные и расширенные. Стандартные позволяют отфильтровывать трафик только по одному критерию: адрес отправителя, в CCNA рассматривается конкретно только ip адрес отправителя. Согласитесь, сильно много не нафильтруешь по такому признаку. Можно, например, поставить на выходе из нашей сети такой ACL:
Этот ACL будет разрешать выход в интернет только с перечисленных в нём трёх ip адресов (для такой задачи, как вы видите, нам хватило стандартного ACL).
Расширенный ACL позволяет фильтровать трафик по большому количеству параметров:
Возможности расширенных ACL богаче стандартных, кроме того, они могут расширяться дополнительными технологиями:
Все ACL (и стандартные, и расширенные) можно задавать по разному: именованным и нумерованным способом. Первый предпочтительнее, так как позволяет затем редактировать ACL, в случае же использования нумерованного способа, ACL можно только удалить целиком и заново создать, либо дописать очередную строчку в конец.
Порядок просмотра ACL
Итак, что из себя представляет ACL и как трафик проверяется на соответствтие?
ACL — это набор правил. Каждое правило состоит из действия (permit, deny) и критерия (для стандартных ACL — ip адрес отправителя, для расширенных — множество критериев). Рассмотрим такой пример стандартного нумерованного ACL:
Этот ACL запрещает доступ для всей сети 192.168.1.0/24 кроме хоста 192.168.1.1 и разрешает доступ для всех остальных сетей. Как проверяется трафик на соответствие ACL? Построчно. То есть, приходит, например, пакет с адреса 192.168.2.2 на роутер, а на том интерфейсе через который он пришел стоит на вход указанный выше ACL, вот построчно Ip адрес отправителя сверяется с данным ACL, что важно — до первого совпадения. Как только пакет совпадёт с какой-то из строк, сработает действие (permit — пропустить пакет либо deny — уничтожить пакет) и дальше никаких проверок по оставшимся строчкам проводиться не будет. Если все строчки пройдены, а пакет так и не попал ни под одно из правил, то он по умолчанию уничтожается. В нашем случае, в примере выше любой пакет подходит под третью строчку, так как там вместо адреса стоит слово «any», означающее, что любой адрес подойдёт. Таким образом, приведённый ACL можно читать так:
Очень важно понимать приведённый выше порядок просмотра строк в ACL, он един для всех типов ACL (не только для стандартного). Кроме того, из этого порядка следует очевидное правило: «В ACL-е должны идти наиболее специфичные, узкие, точные строчки вначале и наиболее абстрактные, общие — в конце». Подумайте сами, если бы предыдущий пример был бы отсортирован в обратном порядке:
То по нашему же предыдущему алгоритму, обходился бы он так:
Точка. На этом просмотр такого списка будет завершён и совершенно неважно, что мы напишем на второй, третьей и далее строчках, так как весь трафик попадает под действие первой и пропускается, на чём процесс обхода ACL и завершается.
Применение ACL
ACL применяется для разных целей, но основная цель, для которой он используется в CCNA — фильтрация трафика на интерфейсе. Для этого надо сначала создать стандартный или расширенный ACL. Если ACL именованный, то у него есть имя, которое мы и укажем на интерфейсе, если нумерованный — то номер. Чтобы сделать это, заходим на интерфейс и пишем команду ip access-group, например, так:
В этом примере мы применили ACL с именем MY_ACLS_NAME наинтерфейсе Fa0/0 на весь входящий трафик (о чем говорит слово in) если бы мы неписали out — то фильтровался бы исходящий трафик.
Люди часто путаются с направлениями. Например, есть сеть, подключенная к маршрутизатору и стоит задача запретить входящий в эту сеть трафик. Так вот, в данном случае этот входящий трафик фильтруется применением ACL на out, то есть на выход. Всё просто, чтобы не запутаться, надо представить себя на месте маршрутизатора. Понятно, что если трафик входит в какую-то сеть, то он при том выходит из маршрутизатора и с точки зрения роутера, такой трафик исходящий.
Вообще, на один интерфейс можно навесить более одного ACL, но при условии, что у них будет отличаться направление, либо, протокол (есть ведь ещё IPX ACL AppleTalk ACL). Впрочем, для CCNA это не имеет значения, так как в нём речь идёт только об IP ACL. Таким образом, если ограничиваться только IP, то на каждый интерфейс можно навесить не более двух ACL: один на in, второй — на out.
Где лучше применять ACL? Вопрос, на самом деле, не тривиальный и студенты без должного опыта часто дают на него неправильный ответ. Рассмотрим пример: Дана топология, надо запретить доступ с компьютера в сеть ноутбука двумя способами по очереди (сначала с помощью стандартного, затем с помощью расширенного ACL).
Подумайте над этим немного. Здравый смысл и рекомендация от cisco подталкивают нас к следующему правилу: «Стандартный ACL приходится размещать максимально близко к получателю трафика». Действительно, ведь с помощью стандартного ACL мы можем смотреть только на адрес отправителя и не знаем, куда именно этот трафик идёт. Поэтом, если мы разместим запрещающий доступ с Ip адреса компьютера список, например, на R1 на вход на Fa0/0, то мы сможем запретить или разрешить только весь трафик с компьютера сразу, то есть во все сети, а не только в сеть ноутбука. Поэтому, придётся ставить такой ACL максимально близко к получателю трафика, а именно, на R4 на выход из интерфейса Fa0/1. Если пакет дошел до сюда и собирается выйти через Fa0/1, значит он точно собирается в сеть ноутбука. Теперь с помощью стандартного ACL мы можем отсечь трафик, идущий от компьютера.
Если мы хотим использовать расширенный ACL, то мы, в принципе, можем его поставить где угодно, но разумнее всего его ставить максимально близко к отправителю трафика, то есть, в нашем примере, на Fa0/0 на R1 на вход. Действительно, если мы можем смотреть в расширенном ACL-е адрес получателя, то давайте сделаем это максимально быстро и если пакет идёт из компьютера в сеть ноутбука, то уничтожим его сразу же на входе в Fa0/0, чтобы дальше не нагружать сеть передачей этого пакета.
Таким образом, у нас есть небольшое правило, которое может упростить жизнь: «Стандартный ACL ставится максимально близко к получателю трафика, расширенный — максимально близко к источнику трафика». Правило не всегда супер эффективно, иногда надо и голову включать, но для начала оно неплохо работает. Лучше всего выбирать место изначально по этому правилу, а затем подумать над тем, откуда трафик идёт и как можно улучшить размещение ACL.
ACL можно применять не только для фильтрации трафика, но и для ограничения адресов, с которых можно подключиться к роутеру по telnet или ssh. Эта полезная функция описывается в отдельной статье «Ограничение доступа к маршрутизатору по telnet или ssh с помощью ACL»
Access Control List
Access Control List или ACL (или просто Access List) – список правил, которые позволяют контролировать и фильтровать трафик. Правила внутри ACL называются access control entries (ACE).
Основное применение ACL (Access List – Список Доступа) – фильтрация трафика, но так же он находит применение и в других функциях сетевого оборудования.
В cisco-устройствах Access Control List разделяют на два вида:
Прежде чем переходить к практике надо узнать, что такое wildcard mask.
Wildcard Mask
Мы уже в курсе что такое маска и как она образуется. Wildcard mask тоже является маской, только “странной” или “обратной” (названия с просторов в Интернете). Нам предстоит узнать о ней побольше, т.к. она используется в ACL.
Ее называют “обратной”, потому что единицы и нули в маске меняют свое значение. Теперь 0 – это номер сети, а 1 это хостовая часть.
“Все познается в сравнении”, поэтому предлагаю сравнить обычную маску с wildcard маской. Начнем с классовых масок.
Таблица 4.1 Сравнение “обычной” маски с wildcard маской
Класс | “Обычная” маска | “Обычная” маска, двоичный вид | Wildcard маска | Wildcard маска, двоичный вид |
---|---|---|---|---|
A | 255.0.0.0 | 11111111.00000000.00000000.00000000 | 0.255.255.255 | 00000000.11111111.11111111.11111111 |
B | 255.255.0.0 | 11111111.11111111.00000000.00000000 | 0.0.255.255 | 00000000.00000000.11111111.11111111 |
C | 255.255.255.0 | 11111111.11111111.11111111.00000000 | 0.0.0.255 | 00000000.00000000.00000000.11111111 |
Как вычислить wildcard маску имея обычную маску?
Разберем случай с не классовой маской (которая дробит октет на сетевую часть и хостовую, подробнее тут), т.е. один из октетов отличен от чисел 0 и 255 (“кривой” октет). В начале, все октеты “обычной” маски, со значением 255, будут соответствовать 0 в wildcard маске, а значения 0 в “обычной” маске, в wildcard – 255. Далее надо взять октет, который отличен от 0 и 255 (“кривой” октет) и вычесть его из числа 255, таким образом мы получим значение этого октета (“кривого” октета) в wildcard маске. Например маске 255.255.240.0, будет соответствовать wildcard маска – 0.0.15.255, 255 – 240=15.
На практике будет очень много букв и картинок, наберитесь терпения.
Общая информация
Packet Tracer version: 6.2.0
Рабочий файл: скачать
Тип: Теория и практика
Версия файла: 2.1
Уже получили: 40 пользователей
Получить достижение
Код активации можно получить выполнив практическое задание
Уже получили 62 пользователей
Начальные данные
Все “манипуляции” можно осуществлять при помощи PC0 (либо с других PC в сети).
В данной практической работе сеть уже спланирована, адресация распределена по всем устройствам в сети. Например, на PC0 вы можете видеть “.22.0”, это означает, что он имеет ip адрес 172.16.22.0.На всем сетевом оборудовании настроен telnet-сервер, пароль – cisco123.
Рисунок 4.1 Схема сети из практической работы
Выполнение
Standard ACL
Прежде чем переходить к процессу создания ACL, надо определиться какой трафик мы хотим отфильтровать. В случае с Standard ACL выбор у нас не большой, т.к. фильтрация будет осуществляться только по ip адресу источника пакета.
Ради примера, мы запретим PC3 выходить за пределы своей сети, аналогично запретим диапазону ip адресов 172.16.20.192-172.16.20.255 (в этот диапазон попадает PC1) выход за пределы 172.16.20.0/22.
Номер ACL – это число, которое определяет какой ACL создается, Standard или Extended:
Начинаем собирать команду. Уже понятно какие номера можно использовать, чтобы создать Standard ACL.
access-list 11
Действия очень просты – разрешить или запретить, permit или deny (так же на этом этапе можно вставить комментарий remark ).
Продолжим собирать команду, добавим действие – запретить.
access-list 11 deny
С критерием немного сложнее, но разобраться можно. Всего три варианта критериев:
access-list 11 deny host 172.16.27.110
Отлично, но остался еще один ОЧЕНЬ ВАЖНЫЙ момент.
Следуя выше сказанному, создадим еще одно правило “разрешить ВСЕ”.
access-list 11 permit any
Предлагаю ввести эти правила на роутер и изучить команду show access-list.
Разберем вывод команды show access-list (следует отметить, что эта команда показывает все созданные ACL). Первой строчкой указано, что имеется Стандартный ACL с номером 11, дальше идет перечисление ACE. Каждый ACE имеет свой порядковый номер. По умолчанию первый ACE имеет номер 10, второй ACE 20 и т.д. каждый раз прибавляется шаг 10 (в дальнейшем мы узнаем, как использовать этот номер). Теперь снова ОЧЕНЬ ВАЖНЫЙ момент.
Рисунок 4.2 Проверка доступности сети 172.16.20.0/22 с PC3, до применения фильтрации
Рисунок 4.3 Проверка доступности сети 172.16.20.0/22 с PC3, после применения фильтрации
На рисунок 4.3 опять проверяем доступность с PC3 до PC0, но как видим, роутер возвращает ошибку “указанный хост не доступен”. Под рисунком 4.3 представлен вывод команды show access-list в котором появилась строчка (4 match(es)), она указывает на то, что под это правило попало 4 пакета.
Рисунок 4.4 Проверка доступности с CiscoLearning до PC0
Как видим, правило под номером 20 тоже работает (такое большое количество матчей (matches) вызвано тем, что в фоновом режиме запущена проверка доступности некоторых хостов и они проходят через роутер). Если бы этого правила не было, то весь трафик блокировался “неявным” (невидимым) правилом deny any (далее мы опробуем его на практике).
Теперь немного “лирики”, прежде чем переходить к созданию нового ACL. Есть еще один вариант, куда мы могли установить ACL 11, на интерфейс Fa0/0 в направлении out. Тогда бы фильтровался исходящий трафик и наша цель тоже была бы достигнута. НО! Если трафик фильтруется как исходящий это значит, что он проходит процесс маршрутизации и тратит ресурсы роутера на обработку пакетов и уже после этого фильтруется, что не правильно. Поэтому рекомендуется устанавливать правила фильтрации, максимально близко к источнику, чтобы не растрачивать аппаратные средства сетевого оборудования на “лишние” действия.
ACL создан, осталось “повесить” его на интерфейс. Перед этим советую убедиться, что связь между PC1 и CiscoLearning присутствует. Фильтрацию будем осуществлять на интерфейсе Fa0/0, для входящего трафика.
Проверим доступность, между PC1 и CiscoLearning, рисунок 4.5. Мы снова можем видеть ошибку “указанный хост не доступен”.
Рисунок 4.5 Проверка доступности между PC1 и CiscoLearnin
“Снимите” ACL 12 с интерфейса, но не удаляйте, если хотите получить достижение!
Extended ACL
Extended ACL немного сложнее, чем Standard ACL, т.к. в критерии фильтрации добавляются ip адрес получателя и фильтрация транспортного уровня (фильтрация по портам).
Теперь зададимся целью, что нам надо отфильтровать.
Критерии будем разбирать подробнее. Прежде всего надо указать какой тип фильтрации будет использован в правиле. Типов много, разберем основные:
Начнем с простого, с типа ip. Тогда команда преобразится так – access-list 120 deny ip
Отлично! Теперь создадим ACL 120, “повесим” его на интерфейс Fa0/0, фильтровать весь входящий трафик. Не забываем, что если мы не разрешим остальной трафик, то по умолчанию, то что не попадает под правила в ACL будет запрещено! Поэтому так же добавим правило, “разрешить ВСЕ”.
Рисунок 4.6 Проверка доступности между PC2 и sw-outside-1
Переходим к созданию следующего правила, точнее сразу двух правил – Разрешить диапазону ip адресов 172.16.20.252-172.16.20.255 доступ к CiscoLearning по 80-му порту (tcp), всем остальным запретить.
Если нам надо разрешить, то это означает permit. Теперь мы переходим к типу фильтрации tcp – фильтрация по tcp портам. Прежде чем переходить к написанию команды, надо объяснить как устанавливается фильтрация по портам. После указания ip адреса (не важно получателя или отправителя), можно (можно, но не обязательно!) указать порт или диапазон портов при помощи атрибутов:
Научимся добавлять правила в уже существующий ACL, а заодно и удалять конкретные правила из ACL. (Будьте очень аккуратны, удалите правило permit ip any any – потеряете доступ к r1!)
Крепитесь! Осталось немного.
Рисунок 4.7 Проверка доступности сервера Server1 по 80-му порту
Осталось последнее – создать ACL разрешающий доступ только CiscoLearning, tacacsGUI и sw-outside-1.
Мы создали 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.