Как отслеживать сетевую активность в системе Linux
Life-Hack [Жизнь-Взлом]/ХакингЕсть множество причин, по которым вы можете захотеть помониторить сетевую активность в вашей системе 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'