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
- Скачай последнюю версию LuLu
- Установи .dmg, запусти
- При первом запуске попросит разрешения: Network Extension, Full Disk Access - обязательно дай
- Выбери режим: Allow Apple Programs (пропускать системные Apple-демоны без спроса) - рекомендуется, иначе задолбит уведомлениями
- 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 минут работы:
- Включи Application Firewall (System Settings → Network → Firewall)
- Включи Stealth Mode
- Отключи "Automatically allow downloaded signed software" для контроля
- Отключи ненужные сервисы в Sharing
- Установи LuLu) для контроля исходящих соединений
- Смени DNS на Quad9 (9.9.9.9) или Cloudflare (1.1.1.2)
После этого любой подозрительный исходящий запрос от приложения ты увидишь и сможешь блокировать. Ничего magical - просто системная гигиена, которая на Mac традиционно не на виду.
Комментарии (0)