Приватность и безопасность

Встроенный Firewall на Mac: правильная настройка

Встроенный Firewall на Mac: правильная настройка

Firewall на Mac - одна из самых недонастроенных функций. По умолчанию он выключен. Включённый из коробки firewall Apple защищает от входящих соединений - и это половина задачи. Вторая половина - контроль исходящих, когда приложения сами стучат на свои серверы, трекинг-аналитику, или - в худшем случае - на C&C malware.

В этой статье - как настроить встроенный firewall, что его настройка реально даёт, и как добавить контроль исходящих соединений через LuLu (бесплатный, open source).

Что предлагает Apple из коробки

macOS имеет два слоя сетевого фильтра:

1. PF (Packet Filter) - низкоуровневый firewall, работает на уровне пакетов. Управляется через /etc/pf.conf. По умолчанию загружается, но все правила разрешают всё. Настраивается руками через терминал, редко используется обычными пользователями.

2. Application Firewall (ALF) - высокоуровневый, работает с приложениями целиком. GUI в System Settings → Network → Firewall. Фильтрует только входящие соединения - решает, разрешить ли приложениям принимать подключения извне.

Ключевое ограничение: macOS Firewall не контролирует исходящий трафик. Если malware запускается на Mac - оно спокойно отправит данные наружу, firewall Apple не заметит. Для исходящего нужна сторонняя утилита.

Пошагово: настройка Application Firewall

Шаг 1. Включить firewall

System Settings → Network → Firewall → переключатель On.

Или через терминал:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

Проверить статус:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

Должно вернуть Firewall is enabled. (State = 1).

Шаг 2. Настроить Options

System Settings → Network → Firewall → Options...

Три важных пункта:

Block all incoming connections - жёсткий режим. Разрешены только системные службы (DHCP, Bonjour, IPsec). Всё остальное блокируется. Плюс: максимальная защита. Минус: AirDrop, File Sharing, Screen Sharing, iTunes Sharing - всё отвалится. Включай только если не пользуешься сетевыми сервисами Mac.

Automatically allow built-in software to receive incoming connections - включи. Пускает системные демоны Apple (cupsd, mDNSResponder и т.д.). Без этого сломаются AirDrop, печать, файлообмен.

Automatically allow downloaded signed software to receive incoming connections - спорный пункт. Включено - подписанные приложения (все из Mac App Store и notarized) автоматом получают доступ. Удобно, но если приложение компрометировано, оно тоже автоматом получит входящий доступ. Рекомендую выключить - будешь разрешать каждое руками, в диалоге при первом запуске.

Enable stealth mode - включи. Mac перестанет отвечать на ping и probe-запросы. Для сети выглядит как "ничего тут нет". Защита от сканирования портов.

Шаг 3. Управление исключениями

В Options ниже - список приложений с разрешениями. Allow incoming connections (зелёная точка) или Block incoming connections (красная).

Добавить: + → выбери .app. Удалить: выдели → -.

Хороший старт: блокируй всё, разреши только то, что реально должно принимать входящие - Google Drive, Dropbox (если пользуешься), торрент-клиент (если юзаешь), игровые лаунчеры.

Шаг 4. Проверка через терминал

Просмотр всех правил:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps

Skiff/добавить приложение:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/AppName.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --block /Applications/AppName.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblock /Applications/AppName.app

Включить stealth mode:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on

Включить логирование:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on

Логи в /var/log/appfirewall.log:

sudo tail -f /var/log/appfirewall.log

Контроль исходящих соединений - ставим LuLu

Apple Firewall не видит как твои приложения шлют данные наружу. Реклама, телеметрия, malware, "phone home" лицензий - всё свободно проходит. Для контроля исходящего трафика - LuLu от Objective-See. Бесплатный, open source, без собственных серверов (не шлёт ничего никуда).

Установка LuLu

  1. Скачай последнюю версию LuLu
  2. Установи .dmg, запусти
  3. При первом запуске попросит разрешения: Network Extension, Full Disk Access - обязательно дай
  4. Выбери режим: Allow Apple Programs (пропускать системные Apple-демоны без спроса) - рекомендуется, иначе задолбит уведомлениями
  5. Allow already installed 3rd-party applications - тут либо да (не спросит за то что уже стоит), либо нет (запрос на каждое существующее приложение). Если хочешь строгий контроль - нет, но готовься к неделе уведомлений

Как пользоваться

Когда любое приложение пробует подключиться наружу, LuLu показывает popup: приложение, удалённый хост, порт. Две кнопки: Allow / Block. Две опции: Temporarily (разрешить только сейчас) / Forever (правило навсегда).

Для каждого приложения можно создать правило по домену/IP. Например: Safari - разрешить всё. Telegram - разрешить только api.telegram.org. Suspicious App - блокировать всё.

Просмотр правил: иконка LuLu в menu bar → Rules. Редактирование, удаление, экспорт.

Логи: иконка → View Logs. Там история всех соединений и решений.

Полезные правила

  • Блокируй домены рекламы/аналитики: google-analytics.com, doubleclick.net, facebook.com/tr
  • Блокируй приложения которые не должны лезть в интернет: калькулятор, просмотрщик PDF, офлайн-редактор текста
  • Разрешай только нужные домены критичным приложениям (мессенджеры, банковские клиенты)

Советы экспертов - дополнительные меры

Stealth mode - обязательно

В публичных сетях (Wi-Fi кафе, отелей, аэропорта) без stealth mode твой Mac виден всем. Stealth → System Settings → Network → Firewall → Options → Enable stealth mode. Или:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on

Отключи ненужные сервисы

System Settings → General → Sharing. Всё что не используешь - выключи: File Sharing, Screen Sharing, Media Sharing, Printer Sharing, Remote Login, Remote Management, Remote Apple Events, Internet Sharing.

Каждый включённый сервис - открытый порт и потенциальная точка атаки.

Проверяй что открыто

sudo lsof -iTCP -sTCP:LISTEN -n -P

Покажет какие процессы слушают какие порты. Всё незнакомое - разбирайся.

Настрой DNS на уровне системы

System Settings → Network → [твой интерфейс] → Details → DNS. Добавь:

  • 9.9.9.9 (Quad9 - фильтрует malware-домены)
  • 1.1.1.2 (Cloudflare - блокирует malware)
  • Или 1.1.1.3 (Cloudflare - блокирует malware + adult content)

DNS-фильтрация - минимальный firewall бедного человека, ловит известные вредоносные домены до того как запрос ушёл.

PF Firewall для продвинутых

Если тебе нужна более тонкая настройка (блок по IP, по времени, по direction) - смотри pf. Пример базового блока исходящего на IP:

sudo pfctl -f /etc/pf.conf
sudo pfctl -e

PF-правила сложные, но гибкие. Подробности: man pf.conf.

Инструменты (бесплатные)

  • LuLu - must-have. Контроль исходящего трафика. Open source, от известного researcher Patrick Wardle.
  • Netiquette - визуализатор активных сетевых соединений. Кто сейчас куда подключен.
  • BlockBlock - мониторит попытки прописать себя в автозапуск. В паре с firewall - защита от закрепления malware.
  • KnockKnock - аудит текущих точек автозапуска. Удобно после установки firewall проверить что нет следов заражения.

Проверка - как убедиться, что всё работает

1. Firewall включён:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

2. Stealth mode:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode

3. Проверка извне. Найди сайт типа https://www.grc.com/shieldsup (ShieldsUP!) → Common Ports / All Service Ports. Все порты должны быть "stealth" (не "closed", а именно "stealth" - не отвечают). Проверяется внешним IP.

4. Тест исходящих через LuLu. Скачай какую-нибудь утилиту с интернетом - LuLu должен показать попытку соединения. Если не показал - расширение не работает, проверь System Settings → Privacy & Security → внизу есть секция System Extensions.

5. Проверка слушающих портов:

sudo lsof -iTCP -sTCP:LISTEN -n -P

Должен быть минимум: mDNSResponder, cupsd (если печать включена), системные демоны. Никаких незнакомых процессов.

Частые вопросы

Достаточно ли Application Firewall? Для домашней сети с доверенным роутером - базовая защита да. Для мобильного использования/открытых сетей - нужен и stealth mode и контроль исходящих (LuLu).

LuLu сильно грузит Mac? Нет, Network Extension работает на ядре, оверхед несущественный. Память: ~50 МБ.

Можно ли использовать LuLu + VPN одновременно? Да. VPN маршрутизирует трафик, LuLu решает пускать или нет. Работают независимо.

Что с Little Snitch? Little Snitch - платная альтернатива LuLu, более зрелая, с красивыми картами трафика. 45 евро лицензия. Если готов платить - лучше чем LuLu. Бесплатно - LuLu хватает.

Итог

Правильная настройка firewall на Mac - 10 минут работы:

  1. Включи Application Firewall (System Settings → Network → Firewall)
  2. Включи Stealth Mode
  3. Отключи "Automatically allow downloaded signed software" для контроля
  4. Отключи ненужные сервисы в Sharing
  5. Установи LuLu) для контроля исходящих соединений
  6. Смени DNS на Quad9 (9.9.9.9) или Cloudflare (1.1.1.2)

После этого любой подозрительный исходящий запрос от приложения ты увидишь и сможешь блокировать. Ничего magical - просто системная гигиена, которая на Mac традиционно не на виду.

Комментарии (0)

Пока нет комментариев.

Программы упомянутые в статье