Stateful Packet Inspection

Из Википедии, бесплатной энциклопедии

Технология SPI (Stateful Packet Inspection — инспекция пакетов с хранением состояния) позволяет дополнительно защититься от атак, выполняя проверку проходящего трафика на корректность (работают на сетевом, сеансовом и прикладном уровнях модели OSI).

Большинство маршрутизаторов сегодня имеют SPI-брандмауэры. При создании любой сессии TCP/IP NAT открывает для неё порт. После завершения сессии порт ещё несколько минут остается открытым. Теоретически, если в этот момент производится атака на роутер путём сканирования открытых портов, то появляется возможность проникновения во внутреннюю сеть, или же атакующий может пытаться посылать пакеты на этот открытый порт в течение сессии. При включении функции SPI происходит запоминание информации о текущем состоянии сессии и производится анализ всех входящих пакетов для проверки их корректности. В случае некорректности входящего пакета (например, адрес отправителя не равен адресу, к которому посылался запрос или номер пакета не соответствует ожидаемому), пакет блокируется и в файле журнала появляется запись о таком событии.

История[править | править код]

Наиболее мощные процессоры выполняют проверку во время создания соединения. Записи создаются только для соединений TCP или UDP, удовлетворяющих заданной политике безопасности. После этого все пакеты (для этой сессии) обрабатываются быстрее, потому что становится проще определить, принадлежит ли он к предварительно отобранной существующей сессии. Пакетам, которые связаны с этими сессиями, разрешено проходить через межсетевой экран.

Классический пример работы сети без межсетевого экрана — это FTP (File Transfer Protocol). Изначально такие протоколы должны быть в состоянии открыть соединения с произвольным портом высокого уровня для функционирования должным образом. Так как межсетевой экран не может узнать, что предназначенный для защищенной сети пакет является частью созданной FTP сессии, то не будет пропускать пакет. Межсетевые экраны решают эту проблему путём создания таблицы открытых соединений.

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

Описание[править | править код]

Файервол отслеживает состояние сетевых соединений (например, TCP или UDP) и в состоянии держать атрибуты каждого соединения в памяти. Эти атрибуты все вместе известны как состояние соединения, и могут включать в себя такие детали, как IP-адреса портов, участвующих в соединениях и порядковые номера пакетов, проходящих через соединение. Проверка с учетом состояния контролирует входящие и исходящие пакеты с течением времени, а также состояние соединения и сохраняет данные в динамических таблицах.

Наиболее ресурсоемким для процессора является проверка во время установки соединения. Записи создаются только для тех соединений TCP или UDP, которые будут удовлетворять заданной политике безопасности. После этого все пакеты (для этой сессии) обрабатываются быстрее, потому что становится проще и быстрее определить, принадлежит ли он к существующей предварительно отобранной сессии. Пакетам, уже связанным с этими сессиями, разрешено проходить через файервол. Если сессия не будет соответствовать ни одному критерию политики безопасности, то ей будет отказано.

Файервол зависит от трехстороннего обмена (иногда описывается как «SYN, SYN-ACK, ACK»), когда используется протокол TCP; когда используется протокол UDP, файервол не зависит ни от чего. Когда клиент создает новое соединение, он посылает пакет с установленным битом SYN в заголовке пакета. Все пакеты с установленным битом SYN считаются для файервола как новые соединения. Если служба, которую клиент запросил, доступна на сервере, тогда сервер ответит пакетом, в котором будут установлены оба бита SYN и ACK. Затем клиент отвечает пакетом в котором установлен только бит ACK, и связь будет считаться установленной. В таком случае файервол пропустит все исходящие пакеты от клиента, если они являются частью созданного соединения, гарантируя, что хакеры не смогут создать нежелательную связь с защищенного компьютера.

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

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

Фильтр уровня приложений[править | править код]

Фильтрация пакетов сама по себе не рассматривается как обеспечение достаточной защиты. Для эффективного блокирования угрозы необходима фильтрация приложений, которая может рассматриваться как расширение контроля содержимого пакетов. Stateful Packet Inspection может определить, какой тип протокола направляется по каждому порту. Например, на уровне приложений фильтр в состоянии распознать разницу между HTTP трафиком, используемым для доступа к веб-странице, и HTTP трафиком, используемым для совместного использования файлов, в то время как файервол, который только выполняет фильтрацию пакетов, будет рассматривать весь трафик HTTP в равной степени.

Ловушки[править | править код]

Уязвимости[править | править код]

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

Некоторые файерволы также повышают вероятность того, что отдельные узлы могут быть обмануты. Эта возможность может быть полностью устранена путём проведения аудиторских проверок программного обеспечения хоста. Некоторые файерволы можно победить просто просматривая веб-страницы (или с поддержкой JavaScript, или после нажатия на кнопку на сайте).

См. также[править | править код]

Литература[править | править код]

  • Dameon D. Welch-Abernathy. Essential Check Point Firewall-1 NG(TM): An Installation, Configuration, and Troubleshooting Guide. — Addison-Wesley Professional, 2004. — P. 5. — ISBN 9780321180612.

Ссылки[править | править код]