Основы фильтрации пакетов и контроль за состоянием соединения FreeBSD

Вспомним из главы 6, что соединение TCP может пребывать в различных состояниях. Оно может быть открытым, открываться, закрываться и т. д. Например, пытаясь открыть соединение, клиент посылает серверу пакет SYN, запрашивая синхронизацию. Если сервер ожидает получение запросов на соединение, в ответ он посылает клиенту пакет SYN-ACK, что означает следующее: «Я получил ваш запрос на соединение. Вот базовая информация для установления соединения». Клиент подтверждает прием информации, отвечая пакетом АСК, что означает: «Я получил и подтверждаю вашу информацию о соединении». Каждая часть процесса «тройного рукопожатия» должна быть выполнена, чтобы соединение было действительно установлено. Правила фильтрации пакетов должны разрешать каждую часть «тройного рукопожатия», а также саму передачу данных. Разрешение на получение входящих запросов соединений бесполезно, если правила фильтрации пакетов не позволяют отправить обратно уведомление.

В 1990-х годах фильтры пакетов проверяли каждый пакет по отдельности. Если пакет отвечал правилу, он проходил дальше. Система не анализировала предыдущие пакеты и не могла определить, был ли тот или иной пакет частью легитимной транзакции или нет. Например, если пакет SYN-ACK, привязанный к адресу «изнутри» фильтра пакетов, прибывал к нему «снаружи», фильтр пакетов решал, что этот пакет должен быть ответом на пакет, одобренный ранее. Для завершения «тройного рукопожатия» такой пакет необходимо было принять. В результате злоумышлениники могли подделывать пакеты SYN-ACK и использовать их для обхода казавшихся надежными устройств. Поскольку фильтру пакетов не был известен отправитель предыдущего пакета SYN, он не мог отклонить такие подложные пакеты SYN-ACK. Когда пакеты, отправленные злоумышленниками, проникали в сеть, они инициировали ответ от того или иного устройства и выведывали информацию о системе.

Контроль состояния, введенный в большинстве современных пакетных фильтров, призван противодействовать таким атакам. Контроль состояния – это сохранение информации о каждом соединении и его текущем состоянии. Если входящий пакет SYN-ACK представляется частью действующего соединения, но никто не посылал соответствующий запрос SYN, он отклоняется. Хотя это усложняет работу ядра, написать правила фильтрации пакетов для stateful inspection на самом деле легче. Фильтр пакетов должен отслеживать множество других возможных состояний, то есть это труднее, чем может показаться; особенно, если добавить контроль за фрагментацией пакетов, противодействие мистификации адресов и т. п.

Те, кто подумал: «А-а, фильтрация пакетов – это все равно, что брандмауэр», по сути правы. Слово брандмауэр применимо к множеству устройств, предназначенных для защиты сети. Некоторые из них довольно замысловаты, некоторые по уровню своего интеллекта сравнимы с бетонной стеной. Сейчас слово брандмауэр превратилось в модное словечко из лексикона маркетоидов, не имеющее точного значения. Оно подобно слову автомобиль. Имеете ли вы в виду Gremlin 1972 года с двигателем в шесть лошадиных сил и по количеству выхлопных газов не соответствующий Киотскому договору, или сверкающий Chevy SSR 2005 года, причудливой трехцветной раскраски, оснащенный пятисотсильным двигателем и стереосистемой Apocalypse? Оба автомобиля нашли свою нишу, но один из них, очевидно, эффективнее. Хотя Gremlin’bi среди брандмауэров находят свою нишу, лучше приобрести что-нибудь получше.

Итак, система FreeBSD может стать таким крепким брандмауэром, каким ее желает сделать администратор. Фильтрация пакетов – это только начало, в каталогах /usr/ports/net и /usr/ports/security можно найти множество приложений-представителей (proxy), которые позволят вашей системе FreeBSD стать вровень с Checkpoint или PIX и даже победить в состязании, затратив на десятки тысяч долларов меньше.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий