Назад
доступа это только половина дела. Вторая, и не менее важная часть процес-
са, – это привязка списка к интерфейсу.
Списки ACL могут быть привязаны к одному и более интерфейсам и
могут фильтровать как входные, так и выходные потоки данных. Привязка
списка к интерфейсу осуществляется посредством команды access–group. Ко-
манда access–group вводится в режиме конфигурирования интерфейса. Спи-
сок контроля доступа привязывается к интерфейсу во входном или выходном
направлении: для входящего или исходящего трафика на интерфейс или с ин-
терфейса.
После того как нумерованный список ACL создан, его следует привя-
зать к нужному интерфейсу. Чтобы изменить порядок следования директив в
нумерованном списке контроля доступа, необходимо удалить весь список с
помощью команды no access–list number и создать его заново.
Списки контроля доступа применяются к одному или нескольким ин-
терфейсам и выполняют фильтрацию входящих или исходящих потоков
данных, в зависимости от установленной конфигурации. Списки для вхо-
дящего трафика обычно более эффективны, поэтому предпочтительнее ис-
пользовать именно их. Маршрутизатор, в котором сконфигурирован список
ACL для входящего трафика, должен проверять каждый пакет на его соот-
ветствие условиям списка перед тем, как отправить пакет на выходной ин-
терфейс.
В процессе конфигурирования маршрутизатора каждому списку
контроля доступа необходимо присвоить индивидуальный номер; при назна-
чении номера необходимо принимать во внимание диапазон номеров, кото-
рый зарезервирован для данного протокола или стека.
В таблице 3.1 перечислены часто используемые протокольные номера
списков контроля доступа.
Таблица 3.1 – Зарезервированные диапазоны списков ACL
Протокол и тип списка Диапазон номеров
Стандартные списки IP 1–99
Расширенные списки IP 100–199
Протокол AppleTalk 600–699
Стандартные списки IPX 800–899
Расширенные списки IPX 900–999
Протокол IPX SAP 1000–1099
3.2.1 Использование битов wildcard mask
Инвертированная маска (wildcard mask) представляет собой 32 битовую
величину, которая разделена на четыре октета, каждый из которых состоит из
восьми битов. Если в какой–либо позиции маски стоит бит, равный нулю, то
51
соответствующий бит адреса должен быть проверен. Если же в какой–либо
позиции бит, равен единице, то соответствующий бит адреса должен быть
проигнорирован (Рисунок 3.5).
128
0 0 0 0 0 0 0 0 =
0 0 1 1 1 1 1 1 =
0 0 0 0 1 1 1 1 =
1 1 1 1 1 1 0 0 =
1 1 1 1 1 1 1 1 =
64 32 16 8 4 2 1
Проверить все биты адреса
Игнорировать последние 6 битов
адреса
Игнорировать последние 4 бита
адреса
Игнорировать последние 2 бита
адреса
Не проверять адрес
Рисунок 3.5 – Представление wildcard mask
Инвертированная маска, как и маска подсети, тесно связана с IP адре-
сом. В инвертированной маске используются нули и единицы, для того чтобы
указать, как следует трактовать соответствующие биты IP адреса.
Инвертированная маска используется для указания одного или несколь-
ких адресов, которые будут проверяться на соответствие условиям списка
контроля доступа. Термин использование инвертированной маски (wildcard
masking) обозначает процесс побитового сравнения и подстановки значений
битов адреса.
Несмотря на то, что инвертированная маска списков контроля доступа и
маска подсети представляют собой 32 битовые величины, выполняемые ими
функции значительно отличаются. Нули и единицы в маске подсети опреде-
ляют сеть, подсеть и номер узла. Биты инвертированной маски указывают,
будет ли проверяться соответствующий бит (Рисунок 3.6).
0 0 0 1 0 0 0 0
172 .30.16.
Сеть
0
Узел
Проверять
0 0 0 0
Игнорировать
1 1 1 1
Инвертированная маска = 00001111 =.15
Рисунок 3.6 – Определение игнорируемых битов
Нули и единицы в инвертированной маске указывают списку контроля
доступа на необходимость проверять или не проверять соответствующие
биты в IP адресе.
52
Предположим, необходимо проверить IP адрес подсети, которому мо-
жет быть разрешен или блокирован доступ. Предположим также, что этот ад-
рес относится к классу B. Если требуется разрешить доступ всем пакетам с
номерами подсетей от 172.30.16.0 до 172.30.31.0, то следует использовать ин-
вертированную маску0.0.15.255.
Сначала проверяются первые два октета (172.30) адреса с использова-
нием соответствующих нулевых битов в инвертированной маске.
Поскольку индивидуальные адреса узлов не представляют интереса, в
шаблоне маски не учитывается последний октет, о чем свидетельствуют биты
со значением, равным единице, в правой части инвертированной маски.
В третьем октете инвертированная маска равна 15 бинарном виде
00001111), а IP–адрес равен 16 бинарном виде 000010000). Первые
четыре нуля шаблона маски указывают маршрутизатору на необходимость
проверки первых четырех битов IP адреса. Поскольку последние четыре бита
не принимаются во внимание, все числа в интервале от 16 до 31 будут отве-
чать условию, поскольку они все начинаются с шаблона 0001.
Последние четыре бита в третьем октете инвертированной маски во
внимание не принимаются, они могут быть равны как нулям, так и единицам.
В рассмотренном выше примере маска указывает маршрутизатору на
необходимость поиска соответствия первых 4 битов в IP адресе шаблону,
остальные 4 бита полностью игнорируются. Поэтому если в списке ACL ука-
зан адрес 172.30.16.0 с инвертированной маской 0.0.15.255, он соответствует
подсетям с номерами от 172.30.16.0 до 172.30.31.0. Другие подсети не отвеча-
ют условиям рассмотренной маски.
3.2.2 Использование шаблона any
Работа с десятичным представлением битов шаблона может показаться
утомительной. Во многих случаях ключевые слова значительно упростят ра-
боту со списками ACL. Прежде всего, такие ключевые слова уменьшают ко-
личество символов, которое приходится набирать на клавиатуре при записи
условий проверки для отдельных адресов. Одним из таких шаблонов является
ключевое слово any. Например, если требуется разрешить доступ для всех ад-
ресов получателей, можно указать маску 0.0.0.0; кроме этого, список контро-
ля доступа должен игнорировать любые значения битов адреса, поэтому все
биты инвертированной маски должны быть равны единице, т.е.
255.255.255.255.
Для указания операционной системе Cisco IOS описанного выше усло-
вия можно также использовать ключевое слово any. Вместо того чтобы наби-
рать на клавиатуре 0.0.0.0 255.255.255.255, достаточно указать простое и ко-
роткое ключевое слово any. В примере 3.1 приводится пример описания пра-
вила списка доступа без применения ключевого слова any и с его применени-
ем.
53
Пример 3.1 – Преимущества использования ключевого слова any
r1(config)#access–list 1 permit 0.0.0.0 255.255.255.255
r1(config)#access–list 1 permit any
3.2.3 Использование шаблона host
Второй случай, когда можно использовать ключевое слово в списке
ACL, это ситуация, когда необходимо соответствие всех битов адреса одного
узла заданному шаблону. Предположим, требуется заблокировать доступ кон-
кретному узлу. Чтобы указать один узел, надо полностью ввести его IP адрес,
например, 172.30.16.29, а затем указать, что в списке должны быть проверены
все биты адреса, т.е. инвертированная маска должна состоять только из ну-
лей.
Можно использовать ключевое слово host, которое укажет операцион-
ной системе Cisco IOS, что нужно проверять только один полный адрес. В
приведенном ниже примере показано, что вместо ввода длинной строки
172.30.16.29 0.0.0.0 перед адресом можно записать ключевое слово host. В
примере 3.2 приводится пример описания правила списка доступа без при-
менения ключевого слова host и с его применением.
Пример 3.2 – Преимущества использования ключевого слова host
r1(config)#access–list 1 permit 172.30.16.29 0.0.0.0
r1(config)#access–list 1 permit host 172.30.16.29
3.3 Проверка списков ACL
Команда show ip interface отображает информацию об интерфейсах и
показывает, установлены ли на них списки контроля доступа. В примере 3.3
для исходящего трафика интерфейса Fast Ethernet 0 установлен список
контроля доступа с номером 1, для входящих потоков данных списков нет.
Пример 3.3 –Информация, выводимая командой show ip interface
r1#show ip interface fastEthernet 0
FastEthernet0 is up, line protocol is up
Internet address is 10.88.42.134/26
Broadcast address is 255.255.255.255
MTU is 1500 bytes
Outgoing access list is 1
Inbound access list is not set
.. .. ..
54
Команда show access–lists отображает содержимое всех списков контро-
ля доступа (Пример 3.4). Если после двух указанных ключевых слов ввести
имя или номер списка контроля доступа в качестве параметра, то будет отоб-
ражено содержимое конкретного списка ACL.
Пример 3.4 –Информация, выводимая командой show access–lists
r1#show access–lists
Standard IP access list 1
permit any
3.4 Списки контроля доступа
Посредством списков контроля доступа маршрутизаторы предостав-
ляют простые средства фильтрации потоков данных, например, возможность
блокирования Internet трафика. Список ACL представляет собой упорядочен-
ный набор выражений на основе ключей permit (разрешить) и deny (заблоки-
ровать), которые применяются к адресам протоколов верхних уровней.
3.4.1 Стандартные списки ACL
Стандартные списки контроля доступа используются тогда, когда необ-
ходимо заблокировать или разрешить доступ всему набору протоколов на
основании адреса сети, подсети или узла (Рисунок 3.7).
Нет
IP пакет
Задан ли стандартный
ACL на интерфейсе
Адрес отправителя
соответствует
директиве ACL
Разрешение или
отказ в доступе
Это последняя
директива ACL
Перейти к следующей
директиве
Маршрутизировать пакет
на соответствующий
выходной интерфейс
Послать отправителю
сообщение
«узел не найден»
Нет
Нет
Нет
Да Да Да
Да
Отказ в
доступе
Разрешить
доступ
Рисунок 3.7 – Алгоритм работы стандартного ACL
55
Например, для пакетов, поступивших на интерфейс FastEthernet 0, про-
веряются адреса отправителя и протоколы. Затем они сравниваются с дирек-
тивами списка управления доступа. Если соответствие найдено, выполняется
указанное действие. Если пакеты соответствуют правилу permit, они пере-
направляются через маршрутизатор к выходному интерфейсу, который логи-
чески связан со списком контроля доступа. Если же пакеты соответствуют
правилу deny, они отбрасываются. Полный синтаксис директивы стандартно-
го списка ACL имеет вид описанный в примере 3.5.
Пример 3.3 – Синтаксис команды access–list (Standard)
(config)# access–list access–list–number {permit | deny | remark} source
[source–wildcard] [log]
(config)# no access–list access–list–number
Ключевое слово remark используется для внесения в список коммента-
рия, который впоследствии поможет разобраться в списке контроля доступа.
Длина такого комментария не может превышать сто символов.
В таблице 3.2 приводится описание параметров, используемых ля созда-
ния директивы стандартного списка доступа.
Таблица 3.2 – Параметры команды access–list (Standard)
Параметр Описание
access–list–number Номер списка контроля доступа.
Представляет собой целое десятичное
число в диапазоне от 1 до 99 или от
1300 до 1999
deny Пакету будет отказано в доступе,
если он соответствует этой записи
permit Пакету будет разрешен доступ, если
он соответствует этой записи
source Номер сети или адрес узла, с которо-
го отправлен пакет
.
source–wildcard Инвертированная маска отправителя
.
log Журнал. Параметр указывает, что
нужно выводить информационные
сообщения в системном журнале (log-
ging message) для пакета, отвечающе-
го записи списка. Журнал впослед-
ствии можно вывести на консоль
56
Пример 3.4 – Пример стандартного списка доступа
access–list 2 deny 172.16.1.1
access–list 2 permit 192.168.1.0 0.0.0.255
access–list 2 deny 172.16.0.0 0.0.255.255
access–list 2 permit 10.0.0.0 0.255.255.255
В примере 3.4 показан стандартный список доступа, который содержит
4 директивы; все директивы входят в список доступа с номером 2. Следует
помнить, что даже если пакеты не отвечают ни одному из правил списка до-
ступа, они попадают под неявное правило в конце списка доступа ACL, кото-
рое запрещает передачу всех пакетов. Это правило не отображается в конфи-
гурации.
В первой строке списка контроля доступа указано, что инвертированная
маска не используется. В подобной ситуации, когда не указана маска, исполь-
зуется инвертированная маска со стандартным значением 0.0.0.0. Данная ди-
ректива списка ACL запретит доступ с одного IP адреса – 172.16.1.1.
Вторая строка разрешает доступ с адресов из сети 192.168.1.0, т.е. с лю-
бого адреса, который начинается с комбинации 192.168.1.
Третья строка запрещает доступ из сети 172.16.0.0, а четвертая разреша-
ет передавать пакеты с любого адреса, который начинается с 10., т.е. из сети
10.0.0.0.
Пакеты из всех остальных сетей, не описанных в этих четырех строках,
будут обрабатываться по неявному правилу, т.е. будут отброшены.
Команда ip access–group используется для привязки созданного списка
контроля доступа к интерфейсу. Синтаксис команды приводится в примере
3.5.
Пример 3.5 – Синтаксис команды ip access–group
(config-if)# ip access–group access–list–number {in | out}
(config-if)# no ip access–group access–list–number {in | out}
Описание параметров команды ip access–group приводиться в таблице
3.3.
Таблица 3.3 – Параметры команды ip access–group
Параметр Описание
access–list–number Номер списка доступа.
in Применение списка доступа на входя-
щий на интерфейс трафик.
out Применение списка доступа на исходя-
щий с интерфейса трафик.
57
Для каждого порта, протокола и направления допускается использовать
только один список.
3.4.2 Расширенные списки ACL
Расширенные списки контроля доступа (extended access control list – ex-
tended ACL) используются чаще, чем стандартные, поскольку они обеспечи-
вают большие возможности контроля. Расширенный список контроля доступа
проверяет как адрес отправителя, так и адрес получателя. Список может так-
же проверять конкретные протоколы, номера портов и другие параметры.
Отправка пакета может быть разрешена или же может быть отказано в
передаче в зависимости от того, откуда был переслан пакет и куда направлен,
какой протокол адрес порта и тип приложения при этом были использованы.
Расширенные списки контроля доступа, например, позволяют пересылать
трафик электронной почты из интерфейса FastEthernet 0 в интерфейс Serial 0
и в то же время могут запрещать передачу файлов и потоки данных от Web–
сайтов. Когда маршрутизатор уничтожает пакеты, некоторые протоколы
посылают эхо сообщения отправителю, уведомляющие, что получатель недо-
ступен.
Расширенные списки управления позволяют более точно контролиро-
вать и управлять пакетами, нежели стандартные. Алгоритм работы расширен-
ного списка доступа приводится на рисунке 3.8.
Нет
Задан ли ACL
на интерфейсе
Адрес отправителя
соответствует
директиве ACL
Адрес получателя
соответствует
директиве ACL
Совпадают
ли номер
порта и
протокола с
директивой
Это последняя
директива ACL
Перейти к следующей
директиве
Маршрутизировать пакет
на соответствующий
выходной интерфейс
Послать отправителю
сообщение
«узел не найден»
Нет
Нет
Да Да Да
Да
Отказ в
доступе
Разрешить
доступРазрешение или
отказ в доступе
Да
Рисунок 3.8 – Алгоритм работы расширенного ACL
Стандартные списки контроля доступа предназначены для того, чтобы
запрещать весь набор или стек протоколов. Расширенные списки позволяют
точно указать, какой из протоколов необходимо разрешить или запретить.
58
Например, с помощью такого списка ACL можно разрешить трафик HTTP, но
запретить доступ к ресурсам по протоколу FTP.
Синтаксис команды access–list для расширенного списка контроля до-
ступа приведен в примере 3.6.
Пример 3.6 – Синтаксис команды access–list (Extended)
(config)# access–list access–list–number [dynamic dynamic–name [timeout
minutes]] {permit | deny} protocol source [source–wildcard destination destin-
ation–wildcard] [precedence precedence] [tos tos] [log | log–input] [time–
range time–range–name] established [fragments]
(config)# no access–list access–list–number
В таблице 3.4 приводится описание параметров, используемых для со-
здания директивы расширенного списка доступа.
Таблица 3.4 – Параметры команды access–list (Extended)
Параметр Описание
access–list–number Номер списка контроля доступа.
Представляет собой целое десятичное
число в диапазоне от 100 до 199 или
от 2000 до 2699.
dynamic dynamic–name Идентифицирует список контроля до-
ступа как динамический список ACL.
Обычно этот параметр используется
для реализации защиты типа замка
(lock–and–key).
timeout minutes Указывает абсолютный интервал в
минутах, в течение которого времен-
ная запись списка контроля доступа
может существовать в динамическом
списке ACL. Стандартно такой интер-
вал бесконечен, и данные могут пере-
даваться в любой момент времени.
deny Пакету будет отказано в доступе,
если он соответствует этой записи.
permit Пакету будет разрешен доступ, если
он соответствует этой записи.
59
Продолжение таблицы 3.4
protocol Имя или номер протокола. В качестве
параметра может использоваться
одно из ключевых слов: eigrp, gre,
icmp, igmp, igrp, ip, ipinip, nos. ospf,
pim, tcp, udp или целое число в диапа-
зоне от 0 до 255, соответствующее
номеру протокола. Для проверки
ICMP, TCP и UDP следует использо-
вать ключевое слово ip. Некоторые
протоколы позволяют добавить уточ-
няющие параметры в список.
source Номер сети или адрес узла, с которо-
го отправлен пакет
.
source–wildcard Инвертированная маска отправителя
.
destination Номер сети или адрес узла, которому
предназначен пакет
.
destination –wildcard Инвертированная маска получателя.
precedence precedence Пакеты могут быть отфильтрованы
по уровню приоритета, который зада-
ется целым числом от 0 до 7. Такая
возможность используется в механиз-
мах QoS.
tos tos Пакеты могут быть отфильтрованы
по типу обслуживания (Type of Ser-
vice – ToS), который задается целым
числом от 0 до 15. Такая возможность
используется в механизмах QoS.
log Журнал. Параметр указывает, что
нужно выводить информационные
сообщения в системном журнале (log-
ging message) для пакета, отвечающе-
го записи списка. Журнал впослед-
ствии можно вывести на консоль.
log–input Включает входной интерфейс и МАС
адрес отправителя или номер вирту-
ального канала (VC) в сообщения си-
стемного журнала.
60