macOS

Настройка брандмауэра macOS: подробное руководство

Это руководство подробно объясняет, как активировать, настроить и проверить работу встроенного брандмауэра (Application Firewall) в macOS. Вы научитесь управлять правилами для приложений и получите базовые навыки работы с утилитой `pf` для продвинутой фильтрации трафика.

Обновлено 16 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:macOS Sonoma 14.xmacOS Ventura 13.xmacOS Monterey 12.x

Введение / Зачем это нужно

Встроенный брандмауэр (Application Firewall) в macOS — это ваш первый барьер против несанкционированного входящего сетевого подключения. Он не позволяет посторонним программам или злоумышленникам из интернета устанавливать соединение с вашим Mac без вашего явного разрешения. Настройка брандмауэра — одна из ключевых базовых мер безопасности, которая не требует установки стороннего ПО и работает на уровне системы. После выполнения этого гайда вы сможете контролировать, какие приложения могут принимать входящие соединения, и получите понимание, как работает сетевая защита в macOS.

Требования / Подготовка

Перед началом убедитесь, что:

  • У вас есть учётная запись с правами администратора.
  • Установлена актуальная версия macOS (гайд актуален для macOS Sonoma, Ventura и Monterey).
  • Вы знакомы с базовым использованием Терминала (Terminal) для шагов, связанных с CLI.

Шаг 1: Включение и базовая настройка через System Settings

Самый простой способ управлять брандмауэром — через графический интерфейс.

  1. Откройте Системные настройки (System Settings).
  2. Перейдите в раздел Сеть (Network)Брандмауэр (Firewall). В более старых версиях путь может быть Безопасность и конфиденциальность (Security & Privacy) → вкладка Брандмауэр (Firewall).
  3. Включите брандмауэр, нажав кнопку Включить брандмауэр (Turn On Firewall) или переключив тумблер. Система может запросить пароль администратора.
  4. Нажмите Параметры (Options...) или `Дополнительно (Advanced)', чтобы открыть детальные настройки.
  5. Здесь вы можете:
    • Автоматически разрешать входящие подключения для подписанного ПО: Оставьте включённым для безопасности.
    • Включить скрытый режим (Stealth Mode): Рекомендуется. Это не позволит вашему Mac отвечать на запросы диагностики (ICMP ping), делая его менее заметным в сети.
    • Добавить приложения: Нажмите + и выберите приложение из списка или через Finder. Для каждого добавленного приложения вы можете задать правило:
      • Разрешать входящие подключения (Allow incoming connections)
      • Блокировать входящие подключения (Block incoming connections)
    • Удалить приложение из списка: выберите его и нажмите -.

💡 Совет: Добавляйте в список только те приложения, которым действительно нужен сетевой доступ (веб-серверы, игры, файлообменники). Все остальные по умолчанию будут заблокированы.


Шаг 2: Управление правилами через Terminal (socketfilterfw)

Для автоматизации или удалённого управления используйте встроенную утилиту socketfilterfw. Она полностью дублирует функционал графического интерфейса.

# Проверить текущий статус брандмауэра (Application Firewall)
sudo socketfilterfw --getglobalstate

# Включить брандмауэр
sudo socketfilterfw --setglobalstate on

# Выключить брандмауэр (не рекомендуется)
sudo socketfilterfw --setglobalstate off

# Добавить приложение в список разрешённых (путь к .app)
sudo socketfilterfw --add /Applications/YourApp.app

# Разрешить входящие подключения для конкретного приложения
sudo socketfilterfw --unblockapp /Applications/YourApp.app

# Заблокировать приложение
sudo socketfilterfw --blockapp /Applications/YourApp.app

# Удалить приложение из списка правил
sudo socketfilterfw --remove /Applications/YourApp.app

# Показать список всех приложений с их статусом
sudo socketfilterfw --listapps

⚠️ Важно: Все команды socketfilterfw требуют прав суперпользователя (sudo). Указывайте полный путь к файлу приложения (.app).


Шаг 3: Проверка статуса и статистики

После настройки убедитесь, что брандмауэр работает.

  1. Через System Settings: Статус "Включён" должен быть активен.
  2. Через Terminal (статистика Application Firewall):
    # Показать количество разблокированных и заблокированных соединений
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getblockedapps
    
  3. Проверка активности в реальном времени (для pf):
    # Мониторинг событий пакетного фильтра (требует включённого pf)
    sudo pfctl -s all
    
    Ищите строки Status: Enabled и State: OPEN.

Шаг 4: Продвинутая настройка с помощью pf (Packet Filter)

Встроенный Application Firewall работает на уровне приложений. Для фильтрации по портам, IP-адресам или протоколам используется более мощный механизм — pf (Packet Filter). Это настоящий stateful firewall.

  1. Активация pf:
    # Включить pf (обычно включён по умолчанию)
    sudo pfctl -e
    
    # Проверить статус
    sudo pfctl -s info
    
  2. Создание и редактирование правил: Основной конфигурационный файл — /etc/pf.conf. Не редактируйте его напрямую, если не уверены в синтаксисе. Вместо этого создайте отдельный файл для своих правил, например /etc/pf.anchors/com.myname.rules, и подключите его в основном конфиге.
    Пример правила для разрешения входящих соединений на порт 8080 (например, для локального веб-сервера):
    # Откройте терминал и создайте/отредактируйте файл правил
    sudo nano /etc/pf.anchors/com.myname.rules
    

    Добавьте строку:
    pass in proto tcp from any to any port 8080
    

    Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X).
  3. Подключение правил в основном конфиге:
    sudo nano /etc/pf.conf
    

    Найдите секцию anchor и добавьте (или раскомментируйте) строку:
    anchor "com.myname.rules" from "/etc/pf.anchors/com.myname.rules"
    

    Также убедитесь, что есть строка load anchor (обычно она уже есть в шаблоне).
  4. Перезагрузка правил без перезагрузки системы:
    # Проверить синтаксис правил перед загрузкой (ОБЯЗАТЕЛЬНО!)
    sudo pfctl -nf /etc/pf.conf
    
    # Если синтаксис верный, загрузить новые правила
    sudo pfctl -f /etc/pf.conf
    
    # Включить/перезагрузить pf (если выключен)
    sudo pfctl -e
    
  5. Сброс правил к состоянию по умолчанию (осторожно!):
    sudo pfctl -F all -f /etc/pf.conf
    

⚠️ Критически важно: Всегда проверяйте синтаксис (-n флаг) перед загрузкой правил. Ошибка в конфиге может отключить весь сетевой трафик на вашем Mac, потребовав перезагрузки в безопасном режиме для исправления.


Проверка результата

  1. Для Application Firewall: Попробуйте запустить серверное приложение (например, Python HTTP-сервер: python3 -m http.server 8000). С другого устройства в той же сети попробуйте подключиться к http://<ваш_ip_mac>:8000. Если брандмауэр блокирует, вы увидите ошибку соединения. Добавьте приложение в список разрешённых — и подключение должно пройти.
  2. Для pf: После загрузки правила проверьте его presence:
    sudo pfctl -s rules | grep 8080
    
    Вы должны увидеть своё правило pass in proto tcp from any to any port 8080. Попробуйте подключиться к открытому порту с другого устройства.

Возможные проблемы

  • Ошибка "Operation not permitted" при выполнении команд pfctl или socketfilterfw: Вы не используете sudo или ваша учётная запись не имеет прав администратора.
  • Не могу добавить приложение в список брандмауэра через GUI или CLI: Убедитесь, что путь к приложению корректен и файл существует. Для приложений из App Store путь обычно /Applications/AppName.app. Для приложений, запущенных впервые, система может сначала запросить разрешение на сетевой доступ в отдельном всплывающем окне.
  • После настройки pf правила не применяются, но синтаксис верный: Проверьте, что в /etc/pf.conf есть строка load anchor для вашего файла правил и что сам файл правил (/etc/pf.anchors/com.myname.rules) существует и доступен для чтения.
  • После ошибки в pf.conf потерял сетевое соединение: Это классическая проблема. Вам нужно загрузиться в безопасном режиме (Safe Mode), отключить pf (правила не загружаются в Safe Mode), исправить конфигурационный файл и перезагрузиться.
  • Брандмауэр блокирует легитимное соединение, но приложение в списке разрешённых: Приложение может использовать вспомогательные процессы или дочерние приложения, которые не были добавлены в список. Добавьте в список основной исполняемый файл и все связанные утилиты. Также проверьте настройки самого приложения (некоторые имеют встроенный прокси или используют нестандартные порты).
  • Правила pf не срабатывают для IPv6: По умолчанию правила в pf.conf применяются к IPv4. Для поддержки IPv6 явно укажите family в правиле или настройте отдельные правила:
    pass in proto tcp from any to any port 8080
    pass in inet6 proto tcp from any to any port 8080
    
    Или используйте pass in proto tcp from any to any port 8080 без указания family, что в современных версиях pf может работать для обеих версий, но лучше явно указывать.

Часто задаваемые вопросы

Чем брандмауэр macOS отличается от антивируса?
Нужно ли отключать брандмауэр для игр или некоторых программ?
Можно ли настроить брандмауэр через командную строку?
Брандмауэр macOS работает по умолчанию?

Полезное

Включение и базовая настройка через System Settings
Управление правилами через Terminal (socketfilterfw)
Проверка статуса и статистики
Продвинутая настройка с помощью pf (Packet Filter)