Ваш Mac разговаривает прямо сейчас. Не метафорически: в этот момент несколько десятков процессов держат открытые сокеты к серверам, о которых вы никогда не слышали, и в основном это нормально. Проверки обновлений, синхронизация, push-уведомления, телеметрия, загрузка шрифта. Смысл мониторинга сети не в том, чтобы паниковать из-за объёма, а в том, чтобы уметь ответить на один вопрос о любой отдельной строке: какое приложение, к кому и зачем. macOS даёт три бесплатных инструмента, которые проводят вас часть пути. Эта статья объясняет, что показывает каждый, где он останавливается и что добавляет сверху файрвол на уровне приложений.
Мониторинг системы: итоги, а не адресаты
Откройте Мониторинг системы, нажмите вкладку «Сеть» — и получите честный обзор, для которого Apple его и создала. Руководство Apple описывает нижнюю панель: входящие и исходящие пакеты, полученные и отправленные данные в мегабайтах и график, который можно переключать между пропускной способностью по пакетам и по данным. Список процессов над ней показывает, сколько отправил и получил каждый процесс. Чего он не показывает — куда. Нет столбца с удалённым хостом, нет порта, нет страны. Мониторинг системы отвечает на вопрос «что-то потребляет много трафика?» и на этом останавливается. Это правильный инструмент, чтобы заметить, что вспомогательный процесс за ночь выгрузил два гигабайта, и неправильный, чтобы узнать кому.
lsof: снимок каждого открытого сокета
Утилита командной строки lsof перечисляет открытые файлы, а в Unix сетевой сокет — это файл. С опцией -i, которую man-страница macOS описывает как выбор файлов, чей интернет-адрес совпадает, вы получаете каждое открытое соединение с именем владеющего процесса, его идентификатором, протоколом, локальным и удалённым адресом и портом. Добавьте -n и -P, чтобы адреса и порты оставались числовыми, а не ждали обратного DNS. Результат — самая полная бесплатная картина настоящего момента, и ударение здесь на слове «момент»: lsof — это снимок. Соединение, которое открылось, отправило килобайт и закрылось за полсекунды до того, как вы нажали Enter, там просто отсутствует. Кроме того, он идентифицирует процесс по имени и PID, а не по тому, кто его подписал, так что бинарник с именем «Adobe Update Helper» во временной папке выглядит точно так же, как настоящий.
nettop: та же картина, но обновляемая вживую
nettop — самое близкое к живому монитору соединений из того, что поставляется с macOS. Его man-страница описывает его как отображение списка сокетов или маршрутов с периодически обновляемой сетевой статистикой. На практике вы видите каждый процесс, его открытые соединения, байты в обе стороны по каждому соединению, используемый интерфейс и состояние соединения с обновлением каждую секунду. Он решает проблему снимка lsof и остаётся лучшим встроенным ответом на вопрос «что это приложение делает прямо сейчас». Во всём остальном его ограничения те же, что у lsof: никакой идентичности, кроме имени процесса, никакого представления о стране или организации за адресом, никакой памяти о том, что было час назад, и никакой возможности сказать «нет». С nettop соединение можно наблюдать; остановить его нельзя.
Встроенный файрвол здесь не помогает
Люди часто полагают, что включение файрвола в Системных настройках это покрывает. Нет. Собственное руководство Apple аккуратно в формулировках: файрвол macOS защищает Mac от нежелательных контактов, инициированных другими компьютерами. Это входящий фильтр. Ему нечего сказать о том, что отправляют ваши приложения, а именно в эту сторону указывает каждый вопрос в этой статье. Для исходящего контроля на уровне приложений Apple предоставляет фреймворк Network Extension, чьи провайдеры контент-фильтров позволяют стороннему приложению видеть и фильтровать сетевые потоки вместе с идентичностью приложения, которое их создало. На этом фундаменте строятся современные файрволы на уровне приложений для macOS, и именно он превращает список сокетов в список решений.
Что добавляет файрвол на уровне приложений
Конкретно четыре вещи. Идентичность: поток приписывается подписанному приложению, поэтому правило для Slack применяется к Slack, а не к чему-то, что случайно носит то же имя; именно поэтому правила FireAI для отдельных приложений следуют подписи кода. Видимость: каждое соединение показывается в момент возникновения, включая те, что живут полсекунды. Контекст: сырой IP-адрес разрешается в организацию и страну, которые за ним стоят, и FireAI показывает это на живой карте мира с заблокированными соединениями красным. И контроль: соединение можно разрешить или запретить по хосту, домену, IP или порту, а неизвестное приложение должно спросить перед первым соединением, причём в запросе показано объяснение вердикта локальной модели. Если вы не согласны с решением ИИ, вы его отменяете, и отмена становится видимым правилом, которое можно позже прочитать или экспортировать в текстовый файл.
FireAI также принимает команды на обычном языке, по-английски или по-французски, например «block Microsoft Teams» — это быстрее, чем писать правило в диалоге с четырьмя полями. Чего он не делает, стоит сказать так же прямо: он не заглядывает в содержимое зашифрованного трафика, не сканирует файлы и не исследует процессы или память. Он работает на уровне «кто к чему подключается» и честен насчёт этой границы.
Как читать одно соединение
Возьмите любую строку из nettop или журнала файрвола и задайте три вопроса. Первый — компания: кому принадлежит адрес? Большая часть трафика уходит к горстке хостинг-провайдеров и сетей доставки контента, и музыкальное приложение, общающееся с Amazon или Cloudflare, обычно просто общается с собственным бэкендом. Паттерн, который стоит заметить, — несоответствие: приложение для заметок, подключающееся к рекламной сети, или утилита для скриншотов, подключающаяся к хостинг-провайдеру, которым ей незачем пользоваться. Второй — страна: не потому, что иностранный сервер плох, а потому, что изменение информативно. Приложение, которое год подключалось к Ирландии, а сегодня впервые подключается к новой стране, что-то изменило. Третий — порт. 443 — это HTTPS и покрывает почти всё; 80 — обычный HTTP, который в 2026 году должен быть редкостью; 53 — DNS; 22 — SSH; 445 — файловый обмен SMB; 5353 — Bonjour в локальной сети. Потребительское приложение, открывающее порт 22 или 445 к адресу в интернете, достаточно необычно, чтобы задать вопрос.
Паттерны, заслуживающие второго взгляда
- Маячки: один и тот же процесс обращается к одному и тому же адресу с фиксированным интервалом, каждые шестьдесят секунд или каждые десять минут, с крошечными полезными нагрузками. MITRE ATT&CK описывает командование и управление как попытку противника связаться со скомпрометированными системами, чтобы управлять ими, и регулярное «сердцебиение» — самая распространённая форма этого. Проверки обновлений тоже шлют маячки, так что признак — незнакомый процесс, а не ритм сам по себе.
- Выходные узлы Tor: Tor Project публикует список своих выходных узлов, и у приложения для продуктивности нет обычной причины к ним обращаться. FireAI применяет этот список локально как одну из своих лент угроз.
- Обычный HTTP с учётными данными: форма входа, API-ключ или номер карты, отправленные через порт 80, читаемы любым на пути. Защита незашифрованных данных FireAI создана именно для этого случая и не даёт номерам карт, паролям и API-ключам уйти по обычному HTTP.
- Первое соединение давно установленного приложения: приложение, которое месяцами молчало и вдруг открывает сокет, обновилось, было подменено или захвачено плагином. Все три варианта стоит знать.
- Неподписанные или неизвестные бинарники, вообще выходящие в сеть: на Mac, где всё, чем вы пользуетесь, подписано, первое соединение неподписанного бинарника — самое полезное предупреждение, которое может выдать файрвол. Более строгие режимы безопасности FireAI, Paranoid и Under attack, блокируют неподписанные приложения полностью.
- Адреса из опубликованных блок-списков: Spamhaus описывает свой список DROP как диапазоны настолько опасные, что предоставляет их бесплатно любому, кому нужен этот слой защиты; FireHOL агрегирует и документирует публичные IP-ленты, сосредоточенные на атаках и злоупотреблениях; abuse.ch ведёт платформы разведки угроз, движимые сообществом. FireAI применяет эти ленты локально, как общесистемные IP-блок-списки, никуда не отправляя ваш трафик.
Фильтрация DNS, честно
DNS — то место, где живёт множество продуктов сетевой фильтрации, поэтому справедливо спросить, где стоит FireAI. Сегодня FireAI фильтрует само соединение: он применяет ленты угроз и IP-блок-списки к адресам, к которым реально обращаются ваши приложения, а правила для отдельных приложений могут сопоставляться с именем хоста или домена. Чего он пока не делает — не выступает вашим DNS-резолвером и не предлагает собственный зашифрованный DNS; это запланировано, и мы предпочитаем сказать это прямо, чем намекать на обратное. Есть практическое следствие, которое стоит понимать. Зашифрованный DNS, определённый как DNS over TLS в RFC 7858 и DNS over HTTPS в RFC 8484 и поддерживаемый на macOS системно со времени сессии Apple на WWDC 2020 о включении зашифрованного DNS, скрывает ваши запросы от любого на сетевом пути. Это хорошо для приватности и одновременно означает, что фильтр, который смотрит только на DNS-запросы, слепнет, когда браузер использует собственный DoH-резолвер. Фильтр, действующий на адрес назначения, соединение всё равно видит, потому что приложению всё равно приходится его открыть. Ни один подход не полон сам по себе, поэтому честная позиция — «оба, со временем», а не заявление, что один заменяет другой.
Практическая рутина
Не нужно следить за сетью весь день. Рабочая рутина — три минуты раз в неделю: откройте список соединений FireAI, пройдите по нему приложение за приложением и посмотрите на те, что не узнаёте. Проверьте компанию и страну за всем новым. Запишите правило для того, что решили, чтобы никогда не проверять одно и то же соединение дважды, и время от времени экспортируйте правила, чтобы новый Mac начинал с ваших решений, а не с нуля. Бесплатные инструменты всегда будут рядом, когда захочется сырого представления; файрвол на уровне приложений — то, что превращает это представление в нечто, на что можно действовать.
Какое место здесь занимают FireAI и HisnLabs
lsof and nettop will show you a snapshot; what they cannot do is stop a connection, remember your decision, or tell you in plain words which company and country sit behind an IP address — and that gap is exactly the one FireAI was built to fill.
FireAI — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию Autopilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.
Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице FireAI от HisnLabs.
