Сергей Яремчук
ModSecurity – Open Source firewall седьмого уровня – позволяет защититься
от угроз, типичных для веб-сервера. Но в обычной сети можно встретить и другие
сервисы, также нуждающиеся в защите.
Фильтры пакетов вроде ipchains во время работы используют самые простые
критерии, и для фильтрации основываются на информации,
содержащейся в заголовках IPпакетов: IP-адреса источника и назначения, протокол
и номера портов источника и назначения, взятые с TCP/UDP-протоколов следующего
уровня.
По сегодняшним меркам такой подход может
обеспечить только самую минимальную защиту. Система защиты, использующая этот
принцип, не владеет более подробной информацией о соединении. И приняв
пакет, не может определить – устанавливается новое соединение либо пришедший
пакет является частью уже установленного соединения, а может, это вообще
случайный или враждебный пакет. Так работал ipchains, используемый
совместно с Linux-ядром серии 2.2.
В Netfilter/iptables ядра 2.4/2.6 эта
проблема решается за счет контроля состояния (stateful) флагов и порядковых
номеров ТСР. Такой фильтр работает аналогично предыдущему и дополнительно
просматривает флаги TCP и UDP-пакетов, а поэтому может определить,
является ли этот пакет попыткой установления нового соединения. Если да, то в
таблице состояний делается новая запись и действие разрешается, если нет,
то проверяется принадлежность существующим соединениям и при положительном
результате пакет пропускается. Кроме явного отсеивания приходящего мусора,
такие фильтры упрощают написание правил фильтрации. Например, если ранее
требовалось явно разрешить в правиле оба направления, т.е. от клиента
к серверу и от сервера к клиенту, то теперь достаточно просто разрешить
соединение с сервером, забота же о доставке информации клиенту полностью ляжет
на плечи фильтра пакетов.
Кроме того, при использовании stateful-фильтров
можно смело запрещать все соединения на номера портов выше 1024. Но опять же
при всех положительных качествах контроль состояний не сможет защитить сервер
от атак, направленных на конкретное приложение. Например, никто
не помешает злоумышленнику послать запрос большой длины или попробовать
реализовать сross-site scripting атаку. Без посредника здесь точно
не обойтись.