🖧 Как отслеживать сетевую активность в системе Linux |

🖧 Как отслеживать сетевую активность в системе Linux

Мануал

Есть множество причин, по которым вы можете захотеть помониторить сетевую активность в вашей системе Linux.

Вы можете устранять неполадки в сети, вы можете проверить, нет ли вредоносных приложений, создающих подозрительную сетевую активность и т.д.

Какой бы ни была причина, далее мы рассмотрим несколько способов узнать, какие процессы в вашей системе задействованы в сетевой активности и с кем общаются.

Netstat

Netstat – это мощная утилита, которая может выводить сетевые соединения, таблицы маршрутизации, статистику интерфейсов, маскарадить соединения и т.д.

Мы будем использовать его для достижения целей этого руководства.

Установка Netstat

В системах на основе Debian и Debian, таких как Ubuntu, используйте apt.

# apt install net-tools

В системах на базе Red Hat Enterprise Linux и Red Hat используйте yum,

# yum install net-tools

В системах на основе Arch используйте pacman.

# pacman -S net-tools

Просмотр сетевых процессов

Во-первых, давайте рассмотрим процессы.

Для этого введите следующую команду:

$ sudo netstat -tulpen
В этой команде t отображает TCP-соединения, u отображает UDP-соединения, l показывает только прослушивающие сокеты, p показывает программу, к которой принадлежит соединение, e показывает расширенную информацию, а n представляет адреса, пользователей и порты в числовом виде.
При рассмотрении модели клиент-сервер, на которой основано большинство сетевого программного обеспечения, процессы  можно рассматривать как программное обеспечение, работающее в «серверном» режиме.

У каждого процесса вы можете увидеть используемый протокол, локальный адрес и порт, который он слушает, пользователя, под которым он работает, и имя PID/программы.
Здесь следует отметить одно важное отличие.
Для подключений tcp4/udp4 (просто перечисленных как tcp и udp), где локальный адрес указан как 0.0.0.0, процесс прослушивает соединения с любого компьютера, который может подключиться к нему по сети, тогда как когда он указан как 127.0 .0.1 он только прослушивает соединения на локальном хосте (машине, на которой он запущен или сам) и не может быть подключен к другим компьютерам в сети.
Такое же различие справедливо для tcp6/udp6 при сравнении локального адреса : : (обращенного к сети) и ::1 (только localhost).

Как просмотреть все сетевые подключения

Теперь давайте посмотрим на все текущие сетевые подключения.

Для этого введите следующую команду, которая похожа на предыдущую, за исключением того, что мы используем -a для просмотра всех сокетов вместо -l, чтобы просто просмотреть прослушивающие сокеты.

$ sudo netstat -atupen
Эта команда не только показывает нам, какое программное обеспечение прослушивает соединения в качестве «серверов», но также показывает нам установленные в настоящее время соединения с этим программным обеспечением и любые установленные сетевые соединения, которые мы используем с использованием программного обеспечения, выступающего в качестве «клиента», такого как веб-браузер.

Просмотр установленных подключений

Вы можете оказаться в ситуации, когда хотите просмотреть только соединения с типом ESTABLISHED.

ss

Команда netstat долгое время была фаворитом у системных администраторов, однако недавно ее заменила команда ss, которая может похвастаться тем, что работает быстрее, проще и удобочитаемее, чем netstat.
Давайте посмотрим, как выполнить те же действия, что и выше, с помощью ss.
Ss также имеет параметр -e для просмотра расширенной информации, но этот параметр был опущен в приведенных ниже примерах, поскольку он дает дополнительную информацию, которая может привести к менее читаемому выводу.

Просмотр процессов

Для просмотра всех процессов введите следующее:

$ sudo ss -tlunp
В этой команде t отображает TCP-соединения, l показывает только прослушивающие сокеты, u отображает UDP-соединения, n представляет адреса, пользователей и порты в числовом виде, а p показывает программу, к которой принадлежит соединение.

Просмотреть все сетевые подключения

Чтобы просмотреть все сетевые соединения, введите следующее, где a заменяет l и показывает все сетевые сокеты, а не только слушающие.

$ sudo ss -taunp

Просмотр установленных подключений

Если -a или -l не включены, то ss покажет только установленные соединения.

Для просмотра только установленных соединений введите следующее.

$ sudo ss -tunp

lsof

На случай, если вам не хватило netstat и ss, мы представляем lsof. Lsof используется для вывода списка открытых файлов.
GNU/Linux унаследовал принцип проектирования UNIX, согласно которому все является файлом; это включает  в себя и сетевые подключения.
В результате lsof можно использовать для просмотра сетевой активности аналогично вышеупомянутым командам.

Как просмотреть все сетевые подключения

Для просмотра всех сетевых подключений введите следующее.

$ sudo lsof -nP -i
В этой команде n представляет адреса в числовом виде, P представляет собой числовые порты, а i подавляет перечисление любых открытых файлов, которые не считаются сетевыми файлами.

Просмотр установленных подключений

Чтобы просмотреть только установленные соединения, введите следующую команду, где дополнительные переключатели перечисляют все установленные TCP-соединения.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Просмотр процессов

Чтобы просмотреть слушающие процессы с помощью lsof, введите следующее.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

При этом будут пропущены все процессы, которые прослушивают UDP, поэтому может быть желательно вместо этого ввести следующее, чтобы включить их.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Николай

    Искал приложение для того чтоб посмотреть сетевую активность в macOS именно в терминале. Первых двух в Homebrew не было, но была lsof, и она очень хорошо помогла! Спасибо за статью!

    Ответить