Сетевая безопасность: Рефлексивные списки доступа Reflexive ACL

В предыдущих заметках были вкратце рассмотрены обычные списки доступа, списки, срабатывающими в заданное время Time-Based ACL и динамические списки доступа Dynamic ACL.

Здесь же разберем еще один интересный вид ACL, частично выполняющий функции примитивного межсетевого экрана с отслеживанием состояний сессий (Stateful Firewall).

С помощью Reflexive ACL маршрутизатор может отслеживать инициируемые TCP/UDP/ICMP сессии и автоматически разрешать ответный трафик в рамках этих сессий, открывая динамические правила в списке доступа, примененном в обратном направлении.

Для функционирования такого базового межсетевого экрана помимо самого Reflexive ACL, требуются еще два расширенных (extended) списка доступа, работающих в разных направлениях. Они могут быть на одном и том же интерфейсе (направление действия in/out), либо на двух различных (направление действия in/in).

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

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

Reflexive ACL

Для выделения отдельных сессий из потока пакетов используются IP адреса и порты их источника/получателя.

Этот функционал работает лишь c простейшими протоколами, такими как HTTP, SSH, Telnet и т.п., так как для слежения за состояниями сессий используется только информация L3 и L4 уровней.

Они не позволяют производить инспекцию на уровне приложений и потому протоколы, самостоятельно открывающие вторичные сессии (например, FTP) не поддерживаются.

Это лишь базовый функционал межсетевого экрана с отслеживанием состояний сессий.

Динамически правила, созданные в списке доступа, будут удалены по истечении заданного времени неактивности.

Этот тайм-аут может быть задан:

  • Глобально: ip reflexive-list timeout <seconds>
  • В правилах списка доступа: timeout <seconds>

Также, при нормальном закрытии TCP сессии динамическое правило удаляется сразу, не дожидаясь истечения timeout-а.

В приведенном ниже примере все пользователи локальной сети LAN могут выходить в Интернет, используя протоколы TCP/UDP/ICMP.

С помощью списка доступа OUTBOUND_ACL анализируются исходящие сессии и их состояния отражаются в рефлексивном списке MIRROR_ACL (reflect).

Cписок доступа INBOUND_ACL анализирует рефлексивный список MIRROR_ACL (evaluate) и автоматически добавляет динамические правила, разрешающие ответный трафик для сессий, инициируемых из локальной сети LAN.

При этом все соединения, инициируемые из Интернета, блокируются тем же списком доступа INBOUND_ACL. Если необходимо, то в него также можно вручную добавить и правила, разрешающие доступ к определенным ресурсам локальной сети, например, веб серверу.

В приведенной конфигурации также задан глобальный тайм-аут в 10 мин.

Пример конфигурации:

R1:
ip access-list extended OUTBOUND_ACL
 permit tcp any any reflect MIRROR_ACL
 permit udp any any reflect MIRROR_ACL
 permit icmp any any reflect MIRROR_ACL
!
ip access-list extended INBOUND_ACL
 evaluate MIRROR_ACL
!
interface GigabitEthernet0/1
 ip access-group OUTBOUND_ACL in
!
interface GigabitEthernet0/0
 ip access-group INBOUND_ACL in
!
ip reflexive-list timeout 600

Несмотря на всю простоту и привлекательность, рефлексивные списки доступа, равно как и все остальные типы ACL рассмотренные в предыдущих заметках, по-прежнему не позволяют рассматривать их в качестве полноценного межсетевого экрана.

Какие есть еще варианты? Напишите в комментариях к этой статье.

Подсказка — есть еще более примитивный метод применения списков доступа для слежения за сессиями. Правда работает он только для протокола TCP, и функционал еще более ограничен.

Поделитесь своими соображениями в комментариях.

Кстати, в начале марта будет доступен практический курс в формате Workbook по настройке современных межсетевых экранов на базе маршрутизаторов с Cisco IOS – Zone- Base Policy Firewall.

Переходите по этой ссылке и записывайтесь в «ранний список»!

В следующей заметке я сделаю обзор технологии CBAC, предшественника ZBPF.

Сетевая безопасность: Рефлексивные списки доступа Reflexive ACL: 1 комментарий

  1. «Подсказка — есть еще более примитивный метод применения списков доступа для слежения за сессиями.»

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

    Тем не менее, по существу вопроса. Для TCP правил в списках доступа можно использовать ключевое слово established. В этом случае будет проверяться наличие флага AСK во входящих TCP пакетах, что предполагает уже установленную или еще устанавливаемую TCP сессию.

    Очевидно, что такой трюк тоже не решает всех проблем. Подумайте, почему. И начните с анализа простого TCP 3-Way Handshake.

    Пример ACL c параметром established:

    access-list 100 permit tcp any host 10.1.1.1 established

    interface gi0/0

    ip access-group 100 in

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *