Что такое ACL и как его настраивать. Что такое списки контроля доступа ACL. Настраиваем стандартные и расширенные списки ACL на маршрутизаторах Cisco

10.07.2019

Access-lists (ACL) – списки доступа. В основном используются для ограничения доступа пользователей куда-либо или для фильтрации нежелательного трафика из внешнего мира, согласно политикам безопасности, утвержденными в организации. Помимо традиционных способов использования списков доступа, их используют для настройки NAT , IPSec VPN , для создания карт маршрутизации и многих других функций.

Два главных атрибута любого списка доступа – это команды permit (разрешить) и deny (запретить), после которых обычно прописывается IP адрес устройства и его Wildcard Mask .

На устройствах Cisco наиболее распространены так называемые стандартные (standard) и расширенные (extended) списки доступа:

  • Standard . В стандартном списке доступа можно задавать только IP адреса или IP подсети, которые являются источником отправки данных. Стандартному списку доступа можно присвоить либо числовое значение, как правило, от 1 до 99, либо буквенное. Предпочтительно задавать именно буквенное значение, чтобы в дальнейшем было проще ориентироваться среди списков доступа.

Предположим, нам необходимо указать IP адрес рабочей станции администратора сети, с которого будет разрешен удаленный доступ на устройство, а доступ с остальных хостов нужно запретить. Для этого необходимо создать список доступа командой ip access-list standard VTY_Access , где VTY_Access - название списка доступа. Далее разрешим удаленный доступ рабочей станции администратора с IP адресом 192.168.1.55 командой permit host 192.168.1.55 . Нет необходимости указывать явный запрет для всех остальных IP адресов командой deny any , так как подобный запрет по умолчанию добавляется в конец любого списка доступа. Все это будет выглядеть так:

Telecombook(config)#ip access-list standard VTY_Access telecombook(config-std-nacl)#permit host 192.168.1.55

Теперь повесим данный список доступа на интерфейс VTY командой access-class VTY_Access in , где in – направление трафика, т.е. наш список доступа будет учитывать весь входящий трафик, что нам и нужно.

Telecombook(config)#ip access-list standard VTY_Access telecombook(config-std-nacl)#permit 192.168.1.64 0.0.0.63

Важно учитывать, что устройство читает список доступа сверху вниз, поэтому нужно заранее продумывать порядок команд. Например:

Telecombook(config)#ip access-list standard VTY_Access telecombook(config-std-nacl)#permit 192.168.1.64 0.0.0.63 telecombook(config-std-nacl)#deny host 192.168.1.70

Telecombook(config)#ip access-list standard VTY_Access telecombook(config-std-nacl)#deny host 192.168.1.70 telecombook(config-std-nacl)#permit 192.168.1.64 0.0.0.63

…это не одно и тоже. В первом случае все IP адреса подсети 192.168.1.64/26 будут разрешены, фактически вторая команда оказывается бесполезной. Во втором случае список доступа разрешает также все адреса подсети 192.168.1.64/26 кроме адреса 192.168.1.70.

  • Extended . Расширенные списки доступа. В расширенном списке доступа можно задавать IP адреса, IP подсети, порты и даже протоколы. Здесь также указываются адреса не только отправителя, как в стандартном списке доступа, но и адреса назначения. Расширенному списку доступа можно присвоить либо числовое значение от 100 до 199, либо буквенное.

Расширенный список доступа можно использовать, например, для разграничения трафика между VLAN . Допустим нам необходимо запретить трафик из IP подсети VLAN 100 192.168.1.0/24 в IP подсеть VLAN 200 192.168.2.0/24, а во все остальные сети разрешить. Для этого нам понадобится расширенный список доступа. Создадим его командой ip access-list extended VLAN_100_to_200_Access . Теперь явно запретим трафик из сети 192.168.1.0/24 в сеть 192.168.2.0/24 командой deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 , а весь остальной трафик разрешим командой permit ip any any , где ip - есть IP протокол. Повесим этот список доступа на VLAN 100 командой ip access-group VLAN_100_to_200_Access in . Таким образом, всем устройствам, подключенным к VLAN 100 будет запрещен доступ в сеть VLAN 200 .

Telecombook(config)# ip access-list extended VLAN_100_to_200_Access telecombook(config-ext-nacl)#deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 telecombook(config-ext-nacl)#permit ip any any telecombook(config)#interface VLAN100 telecombook(config-if)#ip access-group VLAN_100_to_200_Access in

Правилом хорошего тона считается ставить примечания к строчкам любого списка доступа командой remark , напрмер, remark - from VLAN100 to VLAN200 - и remark - from VLAN100 to VLAN300 - .

Telecombook(config)# ip access-list extended VLAN_Access telecombook(config-ext-nacl)#remark - from VLAN100 to VLAN200 – telecombook(config-ext-nacl)#deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 telecombook(config-ext-nacl)#remark - from VLAN100 to VLAN300 – telecombook(config-ext-nacl)#deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255 telecombook(config-ext-nacl)#permit ip any any

При желании можно также указать время, когда тот или иной список доступа будет работать командой time-range Work , где Work – название диапазона времени. Затем укажем, допустим, рабочие часы командой periodic weekdays 9:00 to 18:00 . Далее необходимо создать расширенный список доступа, в котором разрешим сотрудникам просматривать web-страницы по протоколу 80 и 443 только с 9.00 до 18.00 в рабочие дни. Для этого нужно прописать команды permit tcp any any time-range Work eq 80 и permit tcp any any time-range Work eq 443 .

Если у вас достаточно длинный и неорганизованный в плане порядковых номеров расширенный список доступа, то можно привести нумерацию в порядок командой ip access-list resequence (номер списка) (начальный порядковый номер) (шаг) .

Пример изменения порядковых номеров списка доступа для NAT:

Telecombook(config)#do sh ip access-lists 100 Extended IP access list 100 10 deny ip 172.16.0.0 0.0.255.255 10.72.0.0 0.0.255.255 20 deny ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255 (7838 matches) 27 permit tcp host 199.99.99.99 eq 443 host 172.16.16.16 eq 443 28 deny ip 199.99.99.0 0.0.0.255 any (34602 matches) 30 permit ip any any (298676 matches) telecombook(config)#ip access-list resequence 100 10 10 telecombook(config)#do sh ip access-lists 100 Extended IP access list 100 10 deny ip 172.16.0.0 0.0.255.255 10.72.0.0 0.0.255.255 20 deny ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255 (7936 matches) 30 permit tcp host 199.99.99.99 eq 443 host 172.16.16.16 eq 443 40 deny ip 199.99.99.0 0.0.0.255 any (34904 matches) 50 permit ip any any (299146 matches)

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

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

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

Interface VLAN50 description Untrusted ip access-group INBOUND in ip access-group OUTBOUND out ! ip access-list extended OUTBOUND permit tcp host 10.0.0.1 any reflect ADMINACCESS permit udp host 10.0.0.1 any reflect ADMINACCESS ! ip access-list extended INBOUND evaluate ADMINACCESS deny ip any 10.0.0.0 0.255.255.255 permit ip any any

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

В этой статье речь пойдёт об списках аксес листах (списки листов доступа, 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. Если у вас есть желание закрепить знания на практике, пожалуйста -

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

Существует шестнадцать типов списков доступа, но наиболее часто используются два типа: standart – стандартные (номера с 1 по 99) и extended – расширенные (номера с 100 по 199 или с 2000 по 2699). Различия между этими двумя списками заключаются в возможности фильтровать пакеты не только по IP – адресу, но и по другим различным параметрам.

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

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

access-list номер_списка deny any

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

Для того, чтобы начать использовать список доступа, необходимо выполнить следующие три этапа:

1 – создать список;

2 – наполнить список правилами обработки трафика;

3 – применить список доступа к интерфейсу устройства на вход или на выход этого интерфейса.

Этап первый – создание списка доступа:

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

Switch3(config)#ip access-list standart 10

(создается стандартный список доступа под номером 10, в данном случае создается на коммутаторе)

Расширенный список:

Router1(config)#ip access-list extended 100

(создается расширенный список доступа под номером 100, в данном случае создается на маршрутизаторе).

Этап второй – ввод правил в список доступа:

Каждое, правило в списке доступа сдержит три важных элемента:

1 - число, идентифицирующее список при обращении к нему в других частях конфигурации маршрутизатора или коммутатора третьего уровня;

2 - инструкцию deny (запретить) или permit (разрешить);

3 - идентификатор пакета, который задается по одному из трех вариантов:

Адрес сети (например 192.168.2.0 0.0.0.255) – где вместо маски подсети указывается шаблон маски подсети;

Адрес хоста (host 192.168.2.1);

Любой IP адрес (any ).

Пример стандартного списка доступа №10:

access-list 10 deny host 11.0.0.5

access-list 10 deny 12.0.0.0 0.255.255.255

access-list 10 permit any

В этом списке:

Запрещен весь трафик хосту с IP адресом 11.0.0.5;

Запрещен весь трафик в сети 12.0.0.0/8 (в правиле указывается не реальная маска подсети, а ее шаблон);

Весь остальной трафик разрешен.

В расширенных списках доступа вслед за указанием действия ключами permit или deny должен находиться параметр с обозначением протокола (возможны протоколы IP, TCP, UDP, ICMP), который указывает, должна ли выполняться проверка всех пакетов IP или только пакетов с заголовками ICMP, TCP или UDP. Если проверке подлежат номера портов TCP или UDP, то должен быть указан протокол TCP или UDP (службы FTP и WEB используют протокол TCP).

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

Таблица 10.1.

Распространенные приложения и соответствующие им стандартные номера портов приведены в следующей таблице 10.2:

Таблица 10.2.

Номер порта

Протокол

Приложение

Ключевое слово в команде access_list

Управление сервером FTP

Пример расширенного списка доступа №111:

! Запретить трафик на порту 80 (www-трафик)

Списки доступа (access-lists) используются в целом ряде случаев и являются механизмом задания условий, которые роутер проверяет перед выполнением каких-либо действий. Маршрутизатор проверяет каждый пакет и на основании вышеперечисленных критериев, указанных в ACL определяет, что нужно сделать с пакетом, пропустить или отбросить. Типичными критериями являются адреса отправителя и получателя пакета, тип протокола. Каждый критерий в списке доступа записывается отдельной строкой. Список доступа в целом представляет собой набор строк с критериями, имеющих один и тот же номер (или имя). Порядок задания критериев в списке существенен. Проверка пакета на соответствие списку производится последовательным применением критериев из данного списка (в том порядке, в котором они были введены). Пакет, который не соответствует ни одному из введенных критериев будет отвергнут. Для каждого протокола на интерфейс может быть назначен только один список доступа. Как пример ниже приведена таблица списка управления доступом по умолчанию:

Без ACL - по умолчанию при создании конечной точки ей все разрешено.

Разрешить - при добавлении одного или нескольких диапазонов "разрешения" все остальные диапазоны по умолчанию запрещаются. Только пакеты из разрешенного диапазона IP -адресов смогут достичь конечной точки виртуальной машины.

Запретить - при добавлении одного или нескольких диапазонов "запретить" все другие диапазоны трафика по умолчанию разрешаются.

Сочетание разрешения и запрета - можно использовать сочетание правил "разрешить" и "запретить", чтобы указать вложенный разрешенный или запрещенный диапазон IP -адресов.

Рассмотрим два примера стандартных списков:

# access-list 1 permithost 10.0.0.10 - разрешаем прохождение трафика от узла 10.0.0.10.

# access-list 2 deny 10.0.1.0 0.0.0.255 - запрещаем прохождение пакетов из подсети 10.0.1.0/24.

Практическая работа 9-1. Создание стандартного списка доступа

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


Рис. 9.2.

Соберем данную схему и настроим ее. Настройку PC0 и PC1 выполните самостоятельно.

Настройка R0

Интерфейс 0/0 маршрутизатора1841 настроим на адрес 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)#intfa0/1 Router (config-if)#ip addr 10.0.0.1 255.255.255.0 Router (config-if)#no shut

Настройка сервера

Настройки сервера приведены на рис. 9.3 .


Рис. 9.3.

Диагностика сети

Проверяем связь ПК из разных сетей ( рис. 9.4).


Рис. 9.4.

Приступаем к решению задачи

Правило запрета и разрешения доступа будем составлять с использованием стандартных списков доступа (ACL). Пока не задан список доступа на интерфейсе всё разрешено (permit ). Но, стоит создать список, сразу действует механизм "Всё, что не разрешено, то запрещено". Поэтому нет необходимости что-то запрещать (deny ) – указываем что разрешено, а "остальным – запретить" подразумевается автоматически. По условиям задачи нам нужно на R0 пропустить пакеты с узла 192.168.0.12 на сервер ( рис. 9.5).


Рис. 9.5.

Применяется данное правило на интерфейс в зависимости от направления (PC1 расположен со стороны порта Fa0/0) – рис. 9.6 . Эта настройка означает, что список доступа (правило с номером 1) будет действовать на интерфейсе fa0/0 на входящем (in) от PC1 направлении.


Рис. 9.6.

Примечание

Входящий трафик (in) - этот тот, который приходит на интерфейс извне. Исходящий (out) - тот, который отправляется с интерфейса вовне. Список доступа вы можете применить либо на входящий трафик, тогда неугодные пакеты не будут даже попадать на маршрутизатор и соответственно, дальше в сеть, либо на исходящий, тогда пакеты приходят на маршрутизатор, обрабатываются им, доходят до целевого интерфейса и только на нём обрабатываются. Как правило, списки применяют на входящий трафик (in).

Похожие статьи