Почитайте предыдущую статью из цикла про Основы IPv4 Access Control Lists.
Когда вы думаете о месте и направлении ACL, вы, должно быть, уже думаете о том, какие пакеты вы планируете фильтровать (отбрасывать), а какие хотите пропустить. Чтобы сообщить маршрутизатору те же идеи, вы должны настроить маршрутизатор с IP ACL, который соответствует пакетам. Соответствующие пакеты относятся к тому, как настроить команды ACL для просмотра каждого пакета, перечисляя, как определить, какие пакеты следует отбросить, а какие разрешить.
Каждый IP ACL состоит из одной или нескольких команд конфигурации, каждая из которых содержит подробную информацию о значениях, которые нужно искать в заголовках пакетов. Как правило, команда ACL использует такую логику, как "найдите эти значения в заголовке пакета и, если они найдены, отвергните пакет" (вместо этого может быть разрешение пакета, а не его отбрасывание.) В частности, ACL ищет поля заголовка, которые вы уже должны хорошо знать, включая IP-адреса источника и назначения, а также номера портов TCP и UDP.Давайте сначала рассмотрим пример с рисунка 2, в котором нам необходимо разрешить прохождение пакетов с хоста A на сервер S1, но отбросить пакеты от хоста B, идущие на тот же сервер. Все хосты теперь имеют IP-адреса, а на рисунке показан псевдокод ACL на R2. На рисунке 2 также показано расположение, выбранное для включения ACL: входящий на интерфейсе S0/0/1 R2.
На рисунке 2 показан ACL, состоящий из двух строк в прямоугольнике внизу с простой логикой сопоставления: оба оператора просто ищут совпадение с исходным IP-адресом в пакете. Когда этот параметр включен, R2 просматривает каждый входящий IP-пакет на этом интерфейсе и сравнивает каждый пакет с этими двумя командами ACL. Пакеты, отправленные хостом A (исходный IP-адрес 10.1.1.1), разрешены, а пакеты, отправленные хостом B (исходный IP-адрес 10.1.1.2), отбрасываются.
Принятие мер при возникновении совпадения. При использовании ACL IP для фильтрации пакетов можно выбрать только одно из двух действий. Команды настроек используют ключевые слова deny и allow, и они означают (соответственно) отбросить пакет или разрешить ему продолжать работу, как если бы ACL не существовал.
Здесь основное внимание уделяется использованию ACL для фильтрации пакетов, но IOS использует ACL для многих других функций. Эти функции обычно используют одну и ту же логику сопоставления. Однако в других случаях ключевые слова deny или allow подразумевают другое действие.
Типы ACL IP
Cisco IOS поддерживает ACL IP с первых дней существования маршрутизаторов Cisco. Начиная с исходных стандартных пронумерованных списков контроля доступа IP на заре IOS, которые могли задействовать логику, показанную ранее на рисунке 2, Cisco добавила множество функций ACL, включая следующие:
- Стандартные нумерованные списки ACL (1–99)
- Расширенные нумерованные ACL (100–199)
- Дополнительные номера ACL (1300–1999 стандартные, 2000–2699 расширенные)
- Именованные ACL
- Улучшенное редактирование с порядковыми номерами
Здесь мы рассматриваем исключительно стандартные пронумерованные списки контроля доступа IP, а в следующей лекции рассмотрим другие три основные категории списков контроля доступа IP. Вкратце, списки управления доступом IP будут либо пронумерованы, либо именованы, так как конфигурация идентифицирует ACL с использованием номера или имени. ACL также будут стандартными или расширенными, при этом расширенные ACL будут иметь гораздо более надежные возможности для сопоставления пакетов. Рисунок 3 суммирует основные идеи, связанные с категориями списков контроля доступа IP.
Стандартные нумерованные списки ACL IPv4
Этот подраздел лекции посвящен типу фильтра Cisco (ACL), который соответствует только исходному IP-адресу пакета (стандарт), настроен для идентификации ACL с использованием чисел, а не имен (пронумерованных), и смотрит на пакеты IPv4.В этой части исследуются особенности стандартных пронумерованных списков контроля доступа IP. Во-первых, он исследует идею о том, что один ACL является списком, и какую логику использует этот список. После этого в тексте подробно рассматривается, как сопоставить поле IP-адреса источника в заголовке пакета, включая синтаксис команд. В конце этой лекции дается полный обзор команд конфигурации и проверки для реализации стандартных ACL.
Логика списка с IP ACL
Один ACL - это одновременно и единый объект, и список одной или нескольких команд конфигурации. Как единый объект, конфигурация включает весь ACL на интерфейсе в определенном направлении, как показано ранее на рисунке 1. В виде списка команд каждая команда имеет различную логику согласования, которую маршрутизатор должен применять к каждому пакету при фильтрации с использованием этого ACL.При обработке ACL маршрутизатор обрабатывает пакет по сравнению с ACL следующим образом: ACL используют логику первого совпадения. Как только пакет соответствует одной строке в ACL, роутер выполняет действие, указанное в этой строке ACL, и прекращает поиск в ACL.Чтобы понять, что это означает, рассмотрим пример, построенный на рисунке 4. На рисунке показан пример ACL 1 с тремя строками псевдокода. В этом примере ACL 1 применяется к входящему интерфейсу S0/0/1 R2 (то же расположение, что и на предыдущем рисунке 2).
Рассмотрим логику ACL первого совпадения для пакета, отправленного хостом A на сервер S1. Исходным IP-адресом будет 10.1.1.1, и он будет маршрутизирован так, чтобы входить в интерфейс S0/0/1 R2, управляя логикой ACL 1 R2. R2 сравнивает этот пакет с ACL, сопоставляя первый элемент в списке с действием разрешения. Таким образом, этот пакет должен быть пропущен, как показано на рисунке 5 слева.
Затем рассмотрим пакет, отправленный хостом B, исходный IP-адрес 10.1.1.2. Когда пакет поступает в интерфейс S0/0/1 R2, R2 сравнивает пакет с первым оператором ACL 1 и не находит соответствия (10.1.1.1 не равно 10.1.1.2). Затем R2 переходит ко второму утверждению, которое требует некоторого пояснения. Псевдокод ACL, показанный на рисунке 4, показывает 10.1.1.x, что означает сокращение того, что в последнем октете может существовать любое значение. Сравнивая только первые три октета, R2 решает, что этот последний пакет действительно имеет IP-адрес источника, который начинается с первых трех октетов 10.1.1, поэтому R2 считает, что это соответствует второму оператору. R2 выполняет указанное действие (запретить), отбрасывая пакет. R2 также останавливает обработку ACL для пакета, игнорируя третью строку в ACL.
Наконец, рассмотрим пакет, отправленный хостом C, снова на сервер S1. Пакет имеет IP-адрес источника 10.3.3.3, поэтому, когда он входит в интерфейс R2 S0/0/1 и управляет обработкой ACL на R2, R2 просматривает первую команду в ACL 1. R2 не соответствует первой команде ACL (10.1.1.1). в команде не совпадает с пакетом 10.3.3.3). R2 просматривает вторую команду, сравнивает первые три октета (10.1.1) с IP-адресом источника пакета (10.3.3) и по-прежнему не находит совпадения. Затем R2 смотрит на третью команду. В этом случае подстановочный знак означает игнорирование последних трех октетов и просто сравнение первого октета (10), чтобы пакет соответствовал. Затем R2 выполняет указанное действие (разрешение), позволяя пакету продолжить работу.
Эта последовательность обработки ACL в виде списка происходит для любого типа IOS ACL: IP, других протоколов, стандартных или расширенных, именованных или пронумерованных. Наконец, если пакет не соответствует ни одному из элементов в ACL, пакет отбрасывается. Причина в том, что каждый IP ACL имеет оператор deny all, подразумеваемый в конце ACL. Его нет в конфигурации, но если маршрутизатор продолжает поиск в списке, и до конца списка не найдено совпадение, IOS считает, что пакет соответствует записи, имеющей действие запрета.
Соответствие логики и синтаксиса команд
Стандартные нумерованные ACL для IP-адресов используют следующую команду:
access-list {1-99 | 1300-1999} {permit | deny} matching-parameters
Каждый стандартный нумерованный ACL имеет одну или несколько команд списка доступа с одинаковым номером, любым числом из диапазонов, показанных в предыдущей строке синтаксиса. IOS относится к каждой строке в ACL как к записи управления доступом (ACE), но многие сетевые администраторы просто называют их операторами ACL.Помимо номера ACL, каждая команда списка доступа также перечисляет действие (разрешить или запрещать), а также логику сопоставления. Остальная часть этой части изучает, как настроить параметры сопоставления, что для стандартных списков ACL означает, что вы можете сопоставить исходный IP-адрес или части исходного IP-адреса только с помощью так называемой обратной маски ACL.
Соответствие точному IP-адресу
Чтобы сопоставить конкретный исходный IP-адрес, весь IP-адрес, все, что вам нужно сделать, это ввести этот IP-адрес в конце команды. Например, в предыдущем примере псевдокод используется для "разрешить, если источник = 10.1.1.1". Следующая команда настраивает эту логику с правильным синтаксисом с использованием ACL номер 1:
access-list 1 permit 10.1.1.1
Сопоставить точный полный IP-адрес очень просто.В более ранних версиях IOS синтаксис включал ключевое слово host. Вместо того, чтобы просто вводить полный IP-адрес, вы сначала набираете ключевое слово host, а затем IP-адрес. Обратите внимание, что в более поздних версиях IOS, если вы используете ключевое слово host, IOS принимает команду, но затем удаляет ключевое слово.
Сопоставление адреса подсети с обратной маской
Часто бизнес-цели, которые вы хотите реализовать с помощью ACL, совпадают не с одним конкретным IP-адресом, а с целым рядом IP-адресов. Возможно, вы хотите сопоставить все IP-адреса в подсети. Возможно, вы хотите сопоставить все IP-адреса в диапазоне подсетей. Несмотря на это, вы хотите проверить наличие нескольких IP-адресов в диапазоне адресов.
IOS позволяет стандартным ACL сопоставлять диапазон адресов с помощью инструмента, называемого обратной маской. Обратите внимание, что это не маска подсети. Обратная маска (сокращенно называют маской WC) дает сетевому администратору способ сказать IOS игнорировать части адреса при проведении сравнений, по существу рассматривая эти части как подстановочные знаки, как если бы они уже совпадали.Вы можете использовать маски WC в десятичном и двоичном виде, и оба имеют свое применение. Для начала можно использовать маски WC в десятичной системе счисления, используя следующие правила:
- Десятичное число 0: маршрутизатор должен сравнить этот октет как обычно.
- Десятичное число 255: маршрутизатор игнорирует этот октет, считая его уже совпадающим.
Имея в виду эти два правила, рассмотрим рисунок 6, который демонстрирует эту логику с использованием трех различных, но популярных масок WC: одна, которая говорит маршрутизатору игнорировать последний октет, другая, которая говорит маршрутизатору игнорировать последние два октета, и третья, которая говорит маршрутизатору игнорировать последние три октета.
Все три примера во вставках на рисунке 6 показывают два числа, которые явно различаются. Маска WC заставляет IOS сравнивать только некоторые октеты, игнорируя другие октеты. Все три примера приводят к совпадению, поскольку каждая подстановочная маска указывает IOS игнорировать некоторые октеты. В примере слева показана маска WC 0.0.0.255, которая указывает маршрутизатору обрабатывать последний октет как подстановочный знак, по существу игнорируя этот октет для сравнения. Точно так же в среднем примере показана маска WC 0.0.255.255, которая сообщает маршрутизатору игнорировать два октета справа. В крайнем правом случае показана маска WC 0.255.255.255, указывающая маршрутизатору игнорировать последние три октета при сравнении значений.
Чтобы увидеть маску WC в действии, вспомните предыдущий пример, относящийся к рисункам 4 и 5. В ACL псевдокода на этих двух рисунках используется логика, которую можно создать с помощью маски WC. Напомним, что логика ACL псевдокода на этих двух рисунках включает следующее:
- Строка 1: Сопоставить и разрешить все пакеты с адресом источника соответствующий строго 10.1.1.1.
- Строка 2: Сопоставить и отклонить все пакеты с адресами источника с первыми тремя октетами 10.1.1.
- Строка 3: сопоставить и разрешить все адреса с первым одиночным октетом 10.
На рисунке 7 показана обновленная версия рисунка 4, но с завершенным правильным синтаксисом, включая маски WC. В частности, обратите внимание на использование маски WC 0.0.0.255 во второй команде, указывающей R2 игнорировать последний октет числа 10.1.1.0, и маску WC 0.255.255.255 в третьей команде, указывающую R2 игнорировать последние три октеты в значении 10.0.0.0.
Наконец, обратите внимание, что при использовании маски WC свободно определенный параметр источника команды access-list
должен иметь значение 0 в любых октетах, где маска WC - 255. IOS будет указывать адрес источника равным 0 для частей, которые будут игнорироваться, даже если были настроены ненулевые значения.
Теперь почитайте про wildcard в ACL: бинарные обратные маски