Урок 2 из 4 · 9 мин
Файрволы: фильтрация с отслеживанием состояния и возможности macOS
Как файрвол с отслеживанием состояния решает, что пропускать, в чём разница между входящей фильтрацией и фильтрацией исходящего трафика, и какие инструменты для каждой из них даёт macOS.
Задача файрвола звучит просто: пропускать хороший трафик, не пускать плохой. Интересна как раз механика принятия решения и уровень, на котором оно принимается. Этот урок сначала рассматривает фильтрацию с отслеживанием состояния как понятие, а затем — конкретные, отдельные инструменты, которые предлагает macOS, каждый на своём уровне.
Фильтрация с отслеживанием состояния: запоминание разговора
Ранний, «без отслеживания состояния» файрвол проверяет каждый пакет по отдельности на соответствие фиксированному набору правил. Файрвол с отслеживанием состояния вместо этого отслеживает открытые соединения, и, как описывает сетевой глоссарий Cloudflare, «сохраняет информацию об открытых соединениях и использует эту информацию для анализа входящего и исходящего трафика», вместо того чтобы заново проверять каждый пакет (saves information regarding open connections and uses this information to analyze incoming and outgoing traffic, rather than inspecting each packet). На практике это означает, что файрвол с отслеживанием состояния может держать порты фактически закрытыми, пока начатое вами соединение не запросит ответ, и лишь тогда пропустить именно этот ответ обратно, не открывая порт ни для чего другого. Почти каждый бытовой файрвол и файрвол операционной системы сегодня, включая файрвол macOS, отслеживает состояние.
Входящая фильтрация против фильтрации исходящего трафика
Входящая фильтрация контролирует незваные подключения, приходящие к машине снаружи: кого-то или что-то, пытающееся достучаться до работающей на ней службы. Фильтрация исходящего трафика (egress) контролирует подключения, которые сама машина или приложение на ней пытаются установить наружу. Обе важны по разным причинам. Входящая фильтрация в принципе не даёт достучаться до машины и просканировать её. Фильтрация исходящего трафика важна уже после того, как что-то пошло не так: попавшей на машину опасной программе всё равно нужно «позвонить домой», получить инструкции или отправить данные наружу, а для каждого из этих действий требуется исходящее подключение. Машина с сильным входящим файрволом и вовсе без фильтрации исходящего трафика всё равно может утекать всё, что на ней есть, — по одному исходящему подключению за раз.
Что на самом деле даёт macOS
| Инструмент | Уровень | Направление | Примечания |
|---|---|---|---|
| Файрвол приложений (Application Firewall) | На уровне приложения, в «Настройки системы» → «Сеть» → «Файрвол» | Входящее | Решает, может ли каждое приложение вообще принимать входящие подключения; не фильтрует то, что приложения отправляют наружу. Команды для его проверки рассматриваются в курсе «Защита macOS» на этом сайте. |
| pf (packet filter) | Фильтрация пакетов на уровне ядра, унаследованная от BSD | Оба направления, на основе правил | Мощный файрвол общего назначения, который сама Apple использует внутренне (например, для Internet Sharing), документированный для администраторов на страницах руководства pfctl и pf.conf, а не в графической панели настроек. Написанные вручную правила pf — это унаследованный от BSD файрвол, а не продукт Apple со страницей поддержки, и macOS официально не документирует их редактирование для укрепления системы конечным пользователем. |
| Фильтры содержимого Network Extension | На уровне приложения, через фреймворк NetworkExtension от Apple | Исходящее (и входящее для потоков, которые получает фильтр) | Фреймворк, который сторонние приложения используют для проверки или блокировки сетевого трафика по приложению или по домену, с разрешения пользователя; именно он вообще делает возможным исходящий файрвол уровня приложений на macOS, а не только входящий. |
Практический вывод из этой таблицы таков: встроенный, официально поддерживаемый файрвол macOS (Файрвол приложений) хорошо покрывает входящие подключения, но ничего не говорит о том, что покидает машину. pf технически может и то, и другое, но это низкоуровневый, скриптовый инструмент, рассчитанный на администраторов, которым удобно редактировать файлы конфигурации и разбираться в порядке правил, — этот курс не будет объяснять его настройку, поскольку ошибка в написанном вручную наборе правил может незаметно привести либо к полной открытости, либо к полной блокировке сетевого доступа, а Apple не относится к нему как к полноценной, поддерживаемой настройке для конечного пользователя, в отличие от Файрвола приложений. Руководства сообщества по укреплению системы, публикующие готовые наборы правил pf или скрипты, подтягивающие сторонние блок-листы IP-адресов, заходят дальше, чем рекомендует этот курс: такие списки должен кто-то поддерживать в актуальном состоянии и кому-то доверять, а неудачное обновление может нарушить подключение к сети без внятного сообщения об ошибке.
Именно этот пробел — встроенный файрвол только для входящих подключений, без простого, официально поддерживаемого способа видеть или контролировать исходящие подключения по приложениям, — и призван заполнить фреймворк Network Extension от Apple, позволяя сторонним разработчикам делать это с явного разрешения пользователя.
Главное
- Файрвол с отслеживанием состояния запоминает открытые соединения и пропускает обратный трафик для начатого вами подключения, не проверяя каждый пакет по фиксированному списку правил.
- Входящая фильтрация не даёт достучаться до машины снаружи; фильтрация исходящего трафика важна уже тогда, когда что-то на машине пытается связаться наружу.
- Файрвол приложений macOS фильтрует входящие подключения по приложениям; он не фильтрует исходящий трафик.
- `pf` — мощный файрвол BSD на уровне ядра, который macOS использует внутренне, но это не поддерживаемая, документированная настройка укрепления для конечного пользователя, в отличие от Файрвола приложений.
- Фреймворк Network Extension от Apple — это то, что позволяет сторонним приложениям обеспечивать исходящую фильтрацию по приложениям, закрывая пробел встроенного файрвола.
Проверьте себя
1. Чем файрвол с отслеживанием состояния отличается от простого фильтра пакетов без такого отслеживания?
- Он по умолчанию блокирует весь трафик без исключений
- Он отслеживает открытые соединения и использует этот контекст, чтобы пропускать ожидаемый обратный трафик — Верно.
- Он работает только в сетях Wi-Fi
- Он шифрует весь сетевой трафик
Файрволы с отслеживанием состояния запоминают состояние открытых соединений, а не оценивают каждый пакет по отдельности, что позволяет им безопасно пропускать ответы на начатые вами подключения.
2. Почему фильтрация исходящего трафика важна даже при сильном входящем файрволе?
- Она не важна, если входящая фильтрация сильна
- Потому что уже попавшей на машину программе всё равно нужно исходящее подключение, чтобы отправить данные наружу или получить инструкции — Верно.
- Исходящие подключения всегда безопасны
- Это важно только для веб-серверов
Входящая фильтрация не даёт незапрошенным подключениям достучаться до машины, но ничего не делает, когда что-то уже работает на ней и пытается связаться наружу.
3. Чего НЕ делает Файрвол приложений macOS?
- Решает, может ли приложение принимать входящие подключения
- Фильтрует исходящие подключения, которые устанавливает приложение — Верно.
- Работает на уровне отдельных приложений
- Работает без дополнительного программного обеспечения
Файрвол приложений работает только с входящими подключениями; для контроля того, что приложения отправляют наружу, нужен другой механизм, например построенный на фреймворке Network Extension от Apple.
Примените на практике в FireAI
Примените этот урок на своём Mac.
- Правила: приложение, сайт, домен, IP или диапазон, навсегда или до перезагрузки — Напишите правило, точное как один адрес, или широкое как целый домен.
- Аварийный выключатель (kill switch) — Отключите свой Mac от интернета в один клик, когда что-то кажется неладным.
- Исследовать подключение — Принимайте решение, опираясь на факты перед глазами, а не на смутное предупреждение.
- Активность: каждое приложение, вышедшее в сеть, и поиск по истории обычными словами — Видьте каждое приложение, вышедшее в сеть сегодня, и управляйте любым из них в один клик.
Источники
- Cloudflare Learning: What is a firewall?
- Apple Support: Block connections to your Mac with a firewall
- Apple Developer: Network Extension framework
Примените это на своём Mac
Все функции бесплатно на 17 дней, без банковской карты.