Введение
В этом практическом занятии (лабораторной работе) вы научитесь основным методам проверки статуса сетевых портов в системе Linux. Понимание, какие порты открыты, является фундаментальным для сетевого администрирования, устранения неполадок и анализа безопасности.
Вы начнете с использования команды netstat с определенными параметрами для вывода списка всех открытых TCP- и UDP-портов, находящихся в состоянии прослушивания. Затем вы подтвердите статус портов с помощью более современной команды ss, которая предоставляет аналогичные сетевые статистические данные. Наконец, вы будете использовать команду nc (netcat) для активного тестирования соединения с определенным портом, чтобы убедиться, что он доступен и открыт с точки зрения клиента. Завершив эти шаги, вы получите практические навыки идентификации и проверки открытых портов в своей среде Linux.
Вывести список открытых портов с помощью netstat -tuln
На этом этапе вы научитесь выводить список открытых портов в системе Linux с использованием команды netstat. Понимание, какие порты открыты, является важным для устранения сетевых неполадок и обеспечения безопасности.
Команда netstat (сокращение от "network statistics", сетевые статистики) представляет собой инструмент командной строки, который отображает сетевые соединения, таблицы маршрутизации, статистику интерфейсов, маскирующие соединения и членство в мультикаст-группах.
Мы будем использовать следующие параметры с командой netstat:
-t: Отображать TCP-соединения.-u: Отображать UDP-соединения.-l: Отображать сокеты, находящиеся в состоянии прослушивания (открытые порты).-n: Отображать числовые адреса вместо разрешения имен хостов и имен служб.
Если терминал еще не открыт, откройте его. Вы можете найти значок Xfce Terminal слева на рабочем столе.
Теперь введите следующую команду и нажмите Enter:
netstat -tuln
Вы увидите вывод, похожий на следующий:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
Разберем вывод:
Proto: Протокол сокета (например,tcp,udp).Local Address: Локальный IP-адрес и номер порта. Формат:IP_Address:Port.0.0.0.0означает, что служба прослушивает все доступные IPv4-интерфейсы, а:::означает, что она прослушивает все доступные IPv6-интерфейсы.Foreign Address: Удаленный IP-адрес и номер порта.0.0.0.0:*или:::*указывает, что сокет не подключен к определенному удаленному адресу (он находится в состоянии прослушивания).State: Состояние сокета.LISTENозначает, что порт открыт и ожидает входящих соединений.
В примере вывода можно видеть, что порт 53 (DNS) и порт 22 (SSH) находятся в состоянии LISTEN как для IPv4, так и для IPv6.
Эта команда очень полезна для быстрой проверки, какие службы запущены и доступны в вашей системе.
Нажмите Продолжить, чтобы перейти к следующему шагу.
Подтвердить статус порта с использованием ss -tuln
На предыдущем этапе вы использовали команду netstat для вывода списка открытых портов. Теперь давайте воспользуемся более современным и часто быстрым инструментом, называемым ss (socket statistics, статистика сокетов), чтобы достичь той же цели. ss разработан для замены netstat и предоставляет более подробную информацию о сокетах.
Мы будем использовать аналогичные параметры с командой ss, как и с командой netstat:
-t: Отображать TCP-сокеты.-u: Отображать UDP-сокеты.-l: Отображать сокеты, находящиеся в состоянии прослушивания (открытые порты).-n: Отображать числовые адреса вместо разрешения имен хостов и имен служб.
Если терминал еще не открыт, откройте его.
Введите следующую команду и нажмите Enter:
ss -tuln
Вы увидите вывод, похожий на следующий:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
Вывод похож на вывод netstat и показывает протокол (Netid), состояние (State), локальный адрес и порт (Local Address:Port) а также адрес и порт удаленного узла (Peer Address:Port).
Вы можете увидеть те же порты (53 и 22), перечисленные как LISTEN, что подтверждает результаты, полученные с помощью netstat.
Хотя формат вывода несколько отличается, ss предоставляет аналогичную информацию о прослушивающих портах и обычно предпочтителен в современных системах Linux из-за своей производительности и дополнительных возможностей (которые мы не будем рассматривать в этом вводном практическом занятии).
Использование как netstat, так и ss может помочь в кросс-проверке информации и знакомстве с разными инструментами, доступными в Linux.
Нажмите Продолжить, чтобы перейти к следующему шагу.
Проверить доступность порта с помощью nc -zv
На предыдущих этапах вы узнали, как выводить список открытых портов с использованием команд netstat и ss. Теперь давайте воспользуемся командой nc (netcat) для проверки, можно ли на самом деле подключиться к определенному порту. nc - это универсальная сетевая утилита, которая может считывать данные из сетевых соединений и записывать в них с использованием протоколов TCP или UDP.
Мы будем использовать nc с следующими параметрами:
-z: Указывает, чтоncдолжен только сканировать на наличие работающих серверов (daemons), не отправляя им никаких данных. Это полезно для проверки, открыт ли порт.-v: Включает подробный вывод, показывающий больше деталей о попытке подключения.
Мы проверим доступность порта 22 (SSH), который, как мы видели на предыдущих этапах, находится в состоянии прослушивания. Мы будем тестировать подключение к локальной машине, которую можно указать по IP-адресу 127.0.0.1 или по имени хоста localhost.
Если терминал еще не открыт, откройте его.
Введите следующую команду и нажмите Enter:
nc -zv 127.0.0.1 22
Вы должны увидеть вывод, похожий на следующий:
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Этот вывод подтверждает, что nc смог успешно подключиться к порту 22 на вашей локальной машине.
Теперь давайте попробуем проверить порт, который, скорее всего, не открыт, например, порт 80 (HTTP), так как в этой среде по умолчанию не запущен веб-сервер.
Введите следующую команду и нажмите Enter:
nc -zv 127.0.0.1 80
Скорее всего, вы увидите вывод, указывающий на отказ в подключении или истечение времени ожидания, похожий на следующий:
nc: connect to 127.0.0.1 port 80 (tcp) failed: Connection refused
Этот вывод показывает, что nc не смог подключиться к порту 80, что ожидаемо, так как на этом порту не запущена никакая служба.
Использование nc -zv - это быстрый и простой способ проверить, доступен ли и открыт ли определенный порт из вашего текущего расположения.
Нажмите Продолжить, чтобы завершить это практическое занятие.
Резюме
В этом практическом занятии вы узнали, как проверить, открыт ли порт в системе Linux с использованием инструментов командной строки. Вы начали с использования команды netstat -tuln для вывода списка всех открытых TCP- и UDP-портов, находящихся в состоянии прослушивания, и поняли формат вывода, включающий протокол, локальный адрес, внешний адрес и состояние.
Затем вы подтвердили статус портов с помощью команды ss -tuln, которая предоставляет аналогичную информацию, как и netstat, но часто считается более современной и быстрой альтернативой. Наконец, вы узнали, как проверить доступность определенного порта с помощью команды nc -zv, которая пытается установить соединение и сообщает, открыт ли порт и доступен ли он. Эти шаги предоставляют важные навыки для решения сетевых проблем и проведения анализа безопасности в системах Linux.



