- Главная
- Блог
- Без категории
- Команды netstat и ss: управление сетевыми подключениями и портами в Linux
Команды netstat и ss: управление сетевыми подключениями и портами в Linux
Руководство о команде netstat в Linux с примерами просмотра портов и активных соединений. Объяснение различий между netstat и его современной заменой — ss.
Команды:
netstat (network statistics - статистика сети)
netstat -r (route - маршрутизация) -n (-numeric - числовой формат)
netstat -tcp -udp -listening -pid -numeric
netstat -r (route - маршрутизация) -n (-numeric - числовой формат)
ss (socket statistics - статистика сокетов)
ip route — ip маршруты.
route -n (-numeric - числовой формат)
Давайте перейдем к теме мониторинга сетевой активности, сделать это позволяют утилиты netstat и ss
netstat (network statistics - статистика сети) - это утилита командной строки, предназначенная для сбора и отображения информации о сетевых соединениях, таблицах маршрутизации, статистике интерфейсов и открытых портах.
netstat
sudo apt install net-tools
netstat
Active Internet connections (w/o servers) - активные интернет соединения
Столбцы означают:
Proto — протокол (TCP/UDP);
Recv-Q — данные, ожидающие получения;
Send-Q — данные, ожидающие отправки;
Local Address — локальный адрес и порт;
Foreign Address — удалённый адрес и порт;
State — состояние соединения.
На сервере ubuntu-srv активно используется локальный сервис на порту 1541, обрабатывающий множество соединений от локальных процессов через localhost, а также имеется SSH-сессия на нестандартном порту 2222 с IP-адреса 192.168.1.254.
С 2222 портом нам все понятно, по нему мы подключились через SSH, а вот с 1541 разгребёмся чуть позже.
Мы поможем вам легко получить базовые навыки работы с Linux, без лишней теории и воды. Убедитесь, что осваивать новое может быть просто!
Получите бесплатный доступ к первым модулям курса.
У всех соединений два состояния:
ESTABLISHED (установлено) - соединение установлено и готово к передаче данных, либо обмен данными уже происходит.
TIME_WAIT (ожидание) - финальная стадия безопасного завершения соединения.
Active UNIX domain sockets (w/o servers) — тут отображается внутренний обмен информацией между программами на данной машине.
netstat -tcp -udp -listening -pid -numeric
Вывести информацию о сетевых подключениях TCP и UDP, находящихся в состоянии прослушивания, т.е. ожидающие подключения, с выводом PID процесса и числовом формате, без DNS имен
netstat -tulpn
при таком варианты, мы видим не полную информацию, у нас не отображаются идентификатор и имя процесса, поэтому нужно запустить команду с повышенными правами, для получения подобной информации
sudo !!
И тут мы видим, все знакомые нам программы: Samba, SSH, Postgres, systemd-resolved - локальный DNS сервер, кэширующий DNS записи, службы связанные с 1С, веб сервер apache2, nmbd - NetBIOS-сервисы.
В общем, никаких подозрительных сервисов мы не видим, все в рамках нашего настроенного сервера.
Для упрощения анализа, так же можете воспользоваться искусственным интеллектом, чтобы более детально проанализировать вывод на вашем боевом сервере.
Так же, через утилиту netstat можно посмотреть таблицу маршрутизации
netstat -r (route - маршрутизация) -n (-numeric - числовой формат)
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ens33
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
Тут таблица маршрутизации стандартная для большинства машин, которые работают в рамках локальной сети и имеют доступ в сеть интернет.
Первое правило говори, что запросы на любой сетевой адрес назначения с любой маской отправлять на шлюз 192.168.0.1, т.е. на роутер MikroTik или в сеть интернет, если иное поведение не описано другими правилами.
Второе правило говорит, если запрос предназначен для машины из сети 192.168.0.0 с маской 255.255.255.0, то отправлять его на прямую, т.е. не используя шлюз. В контексте указания правил для шлюза, 0.0.0.0 означает не любой адрес, а "нет шлюза", т.е. отправлять пакеты на прямую в пункт назначения.
Утилита netstat является устаревшей и используется в старых системах, поэтому нам пришлось дополнительно устанавливать пакет инструментов net-tools, чтобы поработать с ней. Кто-то привык к работе с ней, поэтому продолжают её использовать.
Однако, в современных системах используется утилита ss (socket statistics - статистика сокетов), так как сокет — это интерфейс для передачи данных по сети или между процессами, то информацию об активности сети мы можем увидеть через них.
ss (socket statistics - статистика сокетов)
ss -tcp -udp -listening -pid -numeric
ключи здесь аналогичные, как и для netstat
ss -tulpn
sudo ss -tulpn
чтобы увидеть, название процессов
sudo ss -tulnp | grep 1541
отфильтровать по интересующему нас порту
Однако, в утилите ss, нет возможности посмотреть таблицу маршрутизации, поэтому, чтобы не устанавливать для этого отдельно утилиту netstat, можно воспользоваться командой
ip route — ip маршруты.
ip r
или через утилиту
route -n (-numeric - числовой формат)
route -n