Расписания правил файрвола pfSense - управление по времени

Расписания в pfSense позволяют ограничить действие правил файрвола определёнными временными окнами - днями недели и часами. Правило, привязанное к расписанию, активно только в указанные периоды времени и не оказывает влияния на трафик за их пределами. Механизм расписаний применяется для реализации политик временного доступа: ограничение интернет-трафика в рабочие часы, управление доступом гостевых сетей, применение полосы пропускания по расписанию и аналогичных задач.

Расписания не создают отдельных правил - они выступают модификатором существующего правила, определяя временной интервал его применения. Вне расписания правило не инвертируется, а просто перестаёт участвовать в обработке трафика.

Создание расписания

Управление расписаниями выполняется через меню Firewall > Schedules. Для создания нового расписания необходимо нажать кнопку Add.

Параметры расписания

ПараметрОписание
Schedule NameИмя расписания. Допускаются только латинские буквы и цифры, без пробелов. Пример: BusinessHours, WeekendAccess
DescriptionТекстовое описание назначения расписания. Отображается в списке расписаний и при выборе расписания в правиле

Настройка временных диапазонов

Каждое расписание содержит один или несколько временных диапазонов (time ranges). Для каждого диапазона указываются следующие параметры:

Выбор дней. Календарь позволяет выбрать конкретные даты месяца или дни недели. Для создания повторяющегося расписания следует использовать заголовки дней недели (Mon, Tue, Wed и так далее) вместо конкретных календарных дат. При нажатии на заголовок дня недели расписание будет применяться к этому дню каждую неделю.

Время начала и окончания. Указывается в 24-часовом формате. Временной диапазон не может пересекать полночь - если требуется расписание, охватывающее ночное время, необходимо создать два отдельных диапазона: один до полуночи (например, 18:00–23:59) и второй после (00:00–06:00).

Гранулярность. Минимальный интервал составляет 15 минут. Начало и окончание времени задаются с шагом 15 минут: 0:00, 0:15, 0:30, 0:45, 1:00 и так далее. Для указания полных суток используется диапазон 0:00–23:59.

Описание диапазона. Необязательное текстовое описание, помогающее различать несколько диапазонов внутри одного расписания (например, Weekday morning, Weekend full day).

Для добавления диапазона в расписание после выбора дней и времени необходимо нажать кнопку Add Time. Один расписание может содержать несколько диапазонов - это позволяет задать различное время активности для разных дней недели.

Настройка расписания в pfSense

Рис. 1. Экран редактирования расписания Firewall > Schedules

Пример: рабочие часы с понедельника по пятницу

Для создания расписания, активного в рабочее время (09:00–18:00, понедельник–пятница):

  1. Перейти в Firewall > Schedules и нажать Add.
  2. Указать имя: BusinessHours.
  3. Указать описание: Working hours Mon-Fri 09:00-18:00.
  4. В календаре нажать на заголовки Mon, Tue, Wed, Thu, Fri.
  5. Установить время начала 9:00 и время окончания 17:45.
  6. Нажать Add Time для добавления диапазона.
  7. Нажать Save для сохранения расписания.

Внимание:

Время окончания указывает начало последнего 15-минутного блока, в течение которого расписание ещё активно. Для расписания до 18:00 следует указать 17:45 - это означает, что расписание будет активно до 17:59:59.

Применение расписания к правилу

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

Для привязки расписания:

  1. Перейти на вкладку интерфейса, содержащую целевое правило (например, Firewall > Rules > LAN).
  2. Создать новое или отредактировать существующее правило.
  3. В разделе Extra Options раскрыть Advanced Options (кнопка Display Advanced).
  4. В поле Schedule выбрать требуемое расписание из выпадающего списка.
  5. Сохранить правило и применить изменения (Apply Changes).

Применение расписания к правилу файрвола

Рис. 2. Выбор расписания в настройках правила файрвола

В списке правил на вкладке интерфейса отображается индикатор состояния расписания. При наведении курсора на индикатор отображается информация о текущем статусе расписания - активно оно в данный момент или нет.

Поведение правила вне расписания

Правило, привязанное к расписанию, которое в текущий момент неактивно, полностью исключается из обработки трафика. Это означает:

  • Правило не инвертируется. Если правило разрешает трафик в рабочие часы, вне рабочих часов оно не начинает блокировать этот трафик. Правило просто перестаёт существовать для механизма фильтрации.
  • Трафик обрабатывается оставшимися правилами в соответствии со стандартным порядком (first match wins). Если ни одно другое правило не разрешает трафик, он будет заблокирован неявным правилом запрета (implicit deny).
  • Это поведение является принципиальным для правильного проектирования политик: запрещающее правило по расписанию блокирует трафик только в период активности расписания, а не за его пределами.

Обработка активных соединений

По умолчанию при завершении расписания pfSense очищает записи таблицы состояний (state table) для соединений, разрешённых по этому правилу. Активные TCP-сессии и другие соединения, установленные в период действия расписания, будут принудительно завершены.

Если требуется сохранить активные соединения после истечения расписания, необходимо включить параметр Do not kill connections when schedule expires в меню System > Advanced на вкладке Miscellaneous. При включении этого параметра существующие соединения сохраняются до естественного завершения или истечения таймаута состояния, однако новые соединения по этому правилу создаваться не будут.

Внимание:

Сохранение соединений после истечения расписания может создавать окно для обхода политики безопасности. Если пользователь установил соединение в разрешённый период, оно будет оставаться активным неограниченно долго (в пределах таймаута состояния). Для критичных политик рекомендуется использовать поведение по умолчанию с принудительным завершением соединений.

Примеры сценариев

Блокировка социальных сетей в рабочие часы

Задача: запретить сотрудникам доступ к социальным сетям с 09:00 до 18:00, понедельник–пятница, разрешив доступ в остальное время.

Реализация:

  1. Создать алиас типа Host или URL Table с адресами социальных сетей (например, SocialMedia).
  2. Создать расписание WorkHours с диапазоном Mon–Fri, 9:00–17:45.
  3. Создать блокирующее правило на вкладке LAN:
    • Action: Block
    • Source: LAN net
    • Destination: алиас SocialMedia
    • Schedule: WorkHours
  4. Разместить правило выше общего разрешающего правила.

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

Гостевая сеть с доступом только в бизнес-часы

Задача: предоставить гостевой сети доступ в интернет только в рабочее время (08:00–20:00, понедельник–суббота).

Реализация:

  1. Создать расписание GuestAccess с двумя диапазонами:
    • Mon–Fri, 8:00–19:45
    • Sat, 8:00–19:45
  2. На вкладке гостевого интерфейса (например, OPT1 или GUESTWIFI) создать разрешающее правило:
    • Action: Pass
    • Source: GUESTWIFI net
    • Destination: any
    • Schedule: GuestAccess

Вне указанного расписания разрешающее правило неактивно, и трафик гостевой сети блокируется неявным правилом запрета. Дополнительное блокирующее правило создавать не требуется.

Ограничение пропускной способности по времени

Задача: в пиковые часы (10:00–16:00) ограничить пропускную способность для определённой группы пользователей.

Реализация:

  1. Создать расписание PeakHours с диапазоном Mon–Fri, 10:00–15:45.
  2. Настроить ограничитель (limiter) через Firewall > Traffic Shaper > Limiters с требуемой полосой.
  3. Создать правило на вкладке интерфейса:
    • Action: Pass
    • Source: алиас с адресами пользователей
    • Destination: any
    • Schedule: PeakHours
    • In/Out pipe: привязать к созданному ограничителю
  4. Разместить правило выше общего разрешающего правила без ограничений.

В период действия расписания трафик обрабатывается правилом с ограничителем. Вне расписания это правило неактивно, и трафик обрабатывается нижестоящим правилом без ограничений полосы.

Ограничения

Механизм расписаний в pfSense имеет ряд ограничений, которые необходимо учитывать при проектировании политик безопасности.

Часовой пояс

Все временные расписания используют часовой пояс, настроенный на устройстве pfSense (System > General Setup > Timezone). При работе с территориально распределёнными площадками, подключёнными через VPN, следует учитывать, что расписание активируется по времени файрвола, а не по локальному времени пользователей. Для корректной работы необходимо убедиться, что часовой пояс настроен правильно и система синхронизирует время через NTP.

Гранулярность 15 минут

Минимальная единица времени в расписании - 15 минут. Создать расписание с точностью до минуты невозможно. Это следует учитывать при планировании политик с жёсткими временными требованиями.

Невозможность пересечения полуночи

Одиночный временной диапазон не может пересекать полночь. Для создания ночного расписания (например, 22:00–06:00) необходимо задать два отдельных диапазона: 22:00–23:59 и 00:00–05:45. Оба диапазона включаются в одно расписание.

Отсутствие исключений для праздников

pfSense не поддерживает механизм исключения праздничных и нерабочих дней из повторяющихся расписаний. Если расписание настроено на Mon–Fri, оно будет активно в государственные праздники, выпадающие на будние дни. Для обработки праздников необходимо либо вручную добавлять конкретные даты как отдельные диапазоны, либо временно модифицировать расписание.

Конкретные даты и повторяющиеся дни

Расписание, созданное с выбором конкретных календарных дат (а не заголовков дней недели), является одноразовым - оно активируется только в указанные даты. Для регулярного расписания всегда следует использовать выбор по дням недели через заголовки столбцов календаря.

Влияние на производительность

Расписания не оказывают заметного влияния на производительность файрвола. Проверка расписания выполняется при загрузке набора правил, а не для каждого пакета. При наступлении или завершении временного окна pfSense перезагружает набор правил (ruleset reload), что занимает минимальное время и не влияет на обработку трафика.

Связанные разделы

  • Правила файрвола - создание и управление правилами, к которым применяются расписания
  • Алиасы - группировка адресов и портов для использования в правилах с расписаниями
  • Лучшие практики - рекомендации по организации правил файрвола, включая работу с временными политиками
Last updated on