Минимальный набор правил  PF

Самая  простейшая конфигурация правил PF — набор правил для  автономной  машины, которая не предоставляет сервисов и соединяется только с одной сетью (которая может быть и непосредственно Интернетом). Мы начнем работать с файлом /etc/pf.conf, который выглядит примерно как этот:

block in all

pass out all keep state

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

Любое входящее в нашу систему соединение, независимо от источника, будет подпадать под  правило  block  in  all.  Даже  с  этой  предварительной  оценкой  результата  будет осуществлён переход к следующему правилу (pass out all  keep state), если трафик не будет подпадать под первый критерий  (направление out). Не имея больше правил для оценки, статус не будет меняться и трафик будет заблокирован. В похожей манере, любое инициированное соединение исходящее от  машины с  этим  набором правил  не  будет совпадать с первым правилом, а будет совпадать со вторым (еще  раз неправильном направлении); совпадение с pass правилом, позволило пропустить. Мы будем проверять путь, которым PF оценивает правила и в каком порядке, эти вопросы более детально мы будем рассматривать в Главе 3, в контексте чуть большего набора правил.

Для любого правила, которое относится к части keep state, PF хранит  информацию о соединении (включая различные счётчики и порядковые  номера) как запись в таблице состояний (state table). Таблица состояний – это то место, куда PF сохраняет информацию о существующих соединениях, которые уже попали под правило, и новые пакеты которые сравниваются  с  существующей  таблицей  состояния  в  поисках  первого  вхождения  в таблицу. Только если пакет не совпадает с любым существующим состоянием, PF начнёт полную оценку набора правил, проверяя, совпал ли пакет с правилом в  загруженном наборе правил. Мы можем также инструктировать PF о действиях состояния информации различными  путями,  но  в  самом  простом  случае  как  этот,  наша  главная  цель  это позволить вернуть трафик для соединений, которые возвращаются к нам.

Обратите внимание, что в OpenBSD 4.1 и более поздних версиях, по умолчанию для pass правила хранится информации о состояние 3 и нам не нужно сохранять состояние явно в самом простом случае как этот. Это значит, что набор правил может быть записан так:

# минимальный набор правил, OpenBSD 4.1 и более поздних версиях сохраняет состояние # по умолчанию block in all

pass out all

Фактически, вы можете даже оставить здесь ключевое слово all, если вам нравится.

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

Когда  вы  приготовитесь  использовать  этот  набор  правил,  загрузите  их  следующей строкой:

$ sudo pfctl -ef /etc/pf.conf

3.   На самом деле, новое значение по умолчанию соответствует хранению состояния флагов S/SA,  гарантируя, что только инициированные SYN  пакеты  при  установлении  соединения создадут  состояние,  устраня  некоторые  загадочные сценарии ошибки.

Набор правил должен быть загружен без каких либо ошибок или  предупреждений. Во всех системах, кроме самых медленных, вам должно  сразу  же вернуться приглашение командной строки.

Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

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

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

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