Что показывает netstat и зачем это знать
Утилита netstat выводит список сетевых соединений компьютера: кто с кем связан, какие порты слушает система и в каком состоянии находится каждое соединение. Обычному пользователю она нужна нечасто, но выручает в трёх случаях: программа не запускается, потому что порт уже занят; на компьютере подозрительная сетевая активность; нужно понять, к каким узлам обращается конкретное приложение.
Это диагностический инструмент, а не сканер защиты. Он показывает факты, а выводы делаете вы: соединение с незнакомым адресом само по себе не означает вредоносную программу, потому что современные приложения обращаются к множеству служб для обновлений, статистики и рекламы.
Основные ключи в Windows
Наиболее удобное сочетание — netstat -ano. Ключ -a показывает и активные соединения, и слушающие порты, ключ -n отключает разрешение имён и выводит числовые адреса, что заметно ускоряет работу, а ключ -o добавляет идентификатор процесса. Чтобы увидеть имя программы, добавьте ключ -b, но для него понадобятся права администратора, а работает он медленнее.
Вывод длинный, поэтому фильтруйте его: добавьте после команды вертикальную черту и слово findstr с искомым портом. Так вы быстро найдёте нужную строку среди сотен.
Как читать столбцы и состояния
В каждой строке указан протокол, локальный адрес с портом, удалённый адрес с портом, состояние и идентификатор процесса. Состояние LISTENING означает, что порт ожидает входящих подключений. ESTABLISHED — соединение установлено и идёт обмен. TIME_WAIT и CLOSE_WAIT — завершающиеся соединения, их бывает много при активной работе браузера, и это нормально.
Адрес 0.0.0.0 или его аналог в записи слушающего порта означает, что служба принимает подключения на всех интерфейсах, включая внешние. Адрес 127.0.0.1 — только локальные подключения с самого компьютера. Различие важно: службу, слушающую на всех интерфейсах, стоит закрыть брандмауэром, если она не должна быть видна в сети.
Отдельная запись о состоянии SYN_SENT, повторяющаяся много раз для одного адреса, означает, что соединение пытаются установить, но ответа нет: возможно, сервис недоступен или порт закрыт.
Поиск программы по порту
Классическая ситуация: приложение сообщает, что порт занят. Выполните netstat -ano и найдите строку с этим портом в состоянии LISTENING, запомните идентификатор процесса из последнего столбца. Затем откройте диспетчер задач, вкладку с подробностями, и найдите процесс с таким номером: там будет имя программы. Завершив её или изменив порт в настройках, вы освободите нужный адрес.
В Linux и macOS похожую задачу решают утилиты ss и lsof, а netstat на некоторых системах не установлен по умолчанию. Их вывод устроен схоже, и принципы чтения те же.
На что обратить внимание с точки зрения безопасности
Присмотритесь к слушающим портам, которых вы не ожидали, особенно на всех интерфейсах, и к постоянным соединениям неизвестного процесса с удалёнными адресами. Установите, какой программе принадлежит идентификатор: если это системный или известный процесс, повода для тревоги нет. Если имя вам незнакомо, поищите расположение файла в диспетчере задач и проверьте его антивирусом.
Не делайте поспешных выводов из одного снимка. Соединения меняются каждую секунду. Повторите команду несколько раз через паузы или запустите её с числом секунд в конце, чтобы вывод обновлялся автоматически.
Типичные ошибки: Как пользоваться netstat
Пользователи забывают про ключ -n и ждут минуты, пока утилита разрешает имена. Путают идентификатор процесса с портом. Запускают команду без прав администратора и удивляются пустому столбцу имён программ. Пытаются по количеству соединений судить о заражении, хотя браузер с десятком вкладок легко создаёт их сотни.
Используйте netstat как наблюдательный инструмент: сформулируйте вопрос, соберите данные, сопоставьте с диспетчером задач и только затем принимайте решение. Так вы исключите лишние тревоги и не пропустите настоящую проблему.
Сохраните вывод при подозрениях в файл и сравните с эталоном, снятым в спокойное время: разница быстрее всего покажет новые нежданные соединения.