Автор: Сергей
Типы ACL списков
Стандартный ACL-список является самым простым из трех типов. При создании стандартного ACL-списка для IP-протокола, фильтрация по ACL-спискам осуществляется на основе исходного IP-адреса пакета. Стандартные ACL-списки определяют разрешения пакетов на основе всего протокола, такого как IP-протокол. Таким образом, при запрете узлового устройства стандартным ACL-списком, запрещаются все службы этого узла. Такой тип ACL-списка полезен для разрешения доступа всех служб определенного пользователя или локальной сети (LAN) через маршрутизатор с запретом доступа с других IP-адресов. Стандартные ACL-списки определяются по присваиваемым им номерам. Номера из диапазона от 1 до 99 и от 1300 до 1999 присваиваются спискам доступа, разрешающим или блокирующим IP-трафик.
Расширенный ACL-список используется для фильтрации не только по исходному IP-адресу, но и по конечному IP-адресу, протоколу и номерам портов. Расширенные ACL-списки используются чаще стандартных, поскольку они являются более определенными и обеспечивают более высокий уровень контроля. Расширенным ACL-спискам присваиваются номера из диапазона от 100 до 199 и от 2000 до 2699.
Именованный ACL-список (NACL-список) имеет формат стандартного или расширенного списка и обозначается описательным именем, а не номером. При настройке именованных ACL-списков, маршрутизатор IOS использует режим подкоманды NACL.
Настройка стандартных листов доступа
Присвойте ACL-список одному или более интерфейсам, указав входящий или исходящий трафик. Применяйте стандартный ACL-список как можно ближе к адресу назначения.
- R2(config-if)#ip access-group номер списка доступа [in | out]
Следующие команды позволяют поместить список доступа access-list 5 для интерфейса Fa0/0 маршрутизатора R2 с фильтрацией входящего трафика:
- R2(config)#interface fastethernet 0/0
R2(config-if)#ip access-group 5 in
По умолчанию в ACL-списке к интерфейсу применяется out направление. Несмотря на то, что out направление установлено по умолчанию, крайне важно указывать направление во избежание путаницы и для обеспечения фильтрации трафика в правильном направлении.
Чтобы удалить ACL-список из интерфейса без изменения самого ACL-списка, используйте команду no ip access-group интерфейс.
Некоторые команды ACL-списка позволяют оценить правильность синтаксиса, порядок инструкций и размещение в интерфейсах.
- show ip interface
Эта команда выводит сведения об IP-интерфейсе с указанием любых присвоенных ACL-списков.
- show access-lists [номер списка доступа]
Эта команда позволяет вывести содержимое всех ACL-списков маршрутизатора. Эта команда также выводит на экран число совпадений по каждой разрешающей или запрещающей инструкции с момента применения ACL-списка. Чтобы вывести определенный список, добавьте имя ACL-списка или номер в качестве параметра команды.
- show running-config
Эта команда выводит на экран все настроенные ACL-списки маршрутизатора, даже если они в данный момент не применены к интерфейсу.
Настройка расширенных ACL-списков
Основным отличием синтаксиса расширенного ACL-списка является необходимость указывать протокол после условия разрешения или запрещения.
Определяет протоколы уровня 3/4. Стандартные варианты включают:
- eigrp Протокол маршрутизации EIGRP компании Cisco
esp Протокол шифрования ESP
gre Протокол туннелирования сетевых пакетов GRE компании Cisco
icmp Протокол ICMP
igmp Протокол IGMP
ip Любой протокол Интернета
ipinip IP в IP-туннелировании
ospf Протокол маршрутизации OSPF
pcp Протокол компрессии данных (PCP)
tcp Протокол управления передачей данных (TCP)
udp Протокол датаграмм пользователя (UDP)
Пример расширенного ACL-списка:
- R1(config)#access-list 105 permit tcp 192.168.5.0 0.0.0.255 host 172.16.5.254 eq http
eq - равно;
gt - больше;
lt - меньше.
Для запрета нескольких портов в одном правиле используется команда range:
- R1(config)#access-list 181 deny tcp any 192.168.77.0 0.0.0.255 range 20 21
В данном правиле запрещен доступ к ftp из сети 192.168.77.0 255.255.255.0
Настройка именованных списков доступа
Для создания именованного ACL-списка используется следующая команда:
- ip access-list {standard | extended} имя
После выполнения этой команды маршрутизатор переключается в режим подкоманд конфигурации NACL. После указания начальной команды именования необходимо ввести все разрешающие и запрещающие инструкции, по одной за раз. В NACL-списках используется синтаксис команд стандартного или расширенного ACL-списка с разрешающей или запрещающей инструкцией в начале.
Именованный ACL-список применяется к интерфейсу аналогичным применению стандартного или расширенного ACL-списка образом.
- Создание списка контроля доступа для виртуального терминала
Создание списка контроля доступа для виртуального терминала осуществляется аналогично списку для интерфейса. Однако для применения ACL-списка к каналам VTY служит другая команда. Вместо команды ip access-group используется команда access-class.
Пример:
R2(config)access-list 2 permit host 209.165.202.130
R2(config)line vty 0 4
R2(config-line)access-class 3 in
Настройка ACL-списков для поддержания установленного трафика
ACL-списки часто создаются для защиты внутренней сети от внешних источников. Однако защита внутренней сети не должна препятствовать внутренним пользователям в получении доступа ко всем ресурсам. При обращении внутренних пользователей к внешним ресурсам, запрашиваемые ресурсы должны проходить через ACL-список. Например, если внутреннему пользователю необходимо установить подключение к внешнему веб-серверу, ACL-список должен разрешать запрашиваемые html-пакеты. Так как ACL-списки устанавливают неявный отказ в доступе, ресурсы необходимо специально разрешить ACL-списком. Отдельные разрешающие инструкции для всех возможных запрашиваемых ресурсов могут образовывать длинный ACL-список и оставлять бреши в безопасности.
Для решения этой проблемы можно создать отдельную инструкцию, разрешающую внутренним пользователям устанавливать TCP-сеанс с внешними ресурсами. После трехстороннего подтверждения TCP и установления подключения все пакеты, передаваемые между двумя устройствами, будут разрешены. Для этого необходимо использовать следующее ключевое слово: established.
- access-list 101 permit tcp any any established
Использование этой инструкции позволит разрешить все внешние tcp-пакеты при условии, что они являются ответом на внутренние запросы. Разрешение входящих ответов по установленным подключениям является разновидностью проверки состояния пакетов (SPI).
Кроме установленного трафика, внутреннему пользователю может потребоваться отправка эхо-запроса внешним устройствам. При этом нежелательно позволять внешним пользователям направлять эхо-запросы или прослеживать устройства во внутренней сети. В этом случае, инструкцию с ключевыми словами echo-reply и unreachable можно использовать для разрешения ответов на эхо-запросы и сообщений о недостижимости. При этом эхо-запрос, отправленный с внешних источников, будет запрещен, если в другой инструкции не указывать специального разрешения.
Пример:
- R2(config)#access-list 101 permit tcp any any established
R2(config)#access-list 101 permit icmp any any echo-reply
R2(config)#access-list 101 permit icmp any any unreachable
R2(config)#access-list 101 deny any any
Применение данных правил к внутреннему интерфейсу локальной сети
- R2(config)#interface fastethernet fa0/0
R2(config-if)#ip access-group 101 out
При оценке расширенного ACL-списка важно помнить о следующих ключевых моментах: ключевое слово tcp разрешает или запрещает протоколы, такие как FTP, HTTP, Telnet и т. д.; ключевая фраза permit ip используется для разрешения всего IP-трафика, включая протоколы TCP, UDP и ICMP.
Проверка работоспособности ACL-списка
- show access-list
Для получения дополнительной информации о разрешенных или запрещенных пакетах необходимо задействовать процесс протоколирования. Ведение журнала (протоколирование) включается для отдельных инструкций ACL-списка. Чтобы задействовать эту возможность, добавьте параметр log в конец каждой инструкции ACL-списка, по которой необходимо вести учет. После окончания просмотра логов данную функцию нужно будет отключить. Отключить ведение журнала можно при помощи следующей команды:
- no logging console
- undebug all
- no debug ip packet
alerts | Требуется немедленное действие | (серьезность=1) |
critical | Критическое состояние | (серьезность=2) |
debugging | Сообщения отладки | (серьезность=7) |
emergencies | Систему нельзя использовать | (серьезность=0) |
errors | Состояние ошибки | (серьезность=3) |
filtered | Вести журнал фильтрации | |
guaranteed | Выводить консольные сообщения | |
informational | Информационные сообщения | (серьезность=6) |
notifications | Нормальное, но значащее состояние | (серьезность=5) |
warnings | Состояние предупреждения | (серьезность=4) |
xml | Вести журнал в XML |
- reload in 5
Добавте
- deny ip any any log
Для удаления количества совпадения каждой инструкции ACL-списка используется команда
- clear access-list counters
- debug ip packet
Если пакеты просто проходят через маршрутизатор и ACL-список их не блокирует по IP-адресу, сообщение об отладке не генерируется.
Подразумеваемое отклонение может неожиданным образом отразиться на другом трафике. В таком случае нужно использовать явно выраженную команду deny ip any any log для отслеживания пакетов, несоответствующих каким-либо из более ранних инструкций ACL-списка.
Правильное размещение ACCESS-LIST
Расширенный ACL-список размещается как можно ближе к источнику, позволяет достичь других сетей и экономит полосу пропускания.