URL источник (обновление: 31 марта 2021 г) — https://www.cyberciti.biz/faq/how-to-check-open-ports-in-linux-using-the-cli/
в Linux с помощью CLI? Можете ли вы дать мне команду для проверки открытых портов в операционной системе Linux?
Чтобы устранить проблемы с сервером и избежать проблем с безопасностью, необходимо выяснить открытые порты TCP и UDP. В этом руководстве вы изучите различные команды Linux для проверки открытых портов в Linux для аудита и защиты сервера.
Детали учебника | |
---|---|
Сложный уровень | Легкий |
Root-права | да |
Требования | командная строка линукс |
Стандартное восточное время. время чтения | 5 минут |
Какие к черту TCP и UDP порты?
Порт — это не что иное, как 16-битное число от 0 до 65535. Например, TCP-порт номер 22 может быть перенаправлен на сервер OpenSSH. Следовательно, номер порта 22 — это способ идентифицировать процесс sshd (сервер OpenSSH).
Номера портов
- Общеизвестными являются порты с 0 по 1023 .
- Зарегистрированные порты с 1024 по 49151 .
- Динамические и частные порты — это порты с 49152 по 65535 .
Зарегистрированный порт — это сетевой порт, назначенный Управлением по присвоению номеров в Интернете ( IANA ) и сохраненный в /etc/servicesфайле. Используйте команду cat или команду grep / команду egrep для просмотра номеров портов и сопоставлений служб:
cat / etc / services grep -w '80/tcp' / etc / services grep -w '443/tcp' / etc / services egrep -w '22/(tcp|udp)' / etc / services
Показать список приложений и их портов, назначенных IANA
Проверьте открытые порты в Linux
Процедура мониторинга и отображения открытых портов в Linux выглядит следующим образом:
- Откройте терминальное приложение Linux
- Используйте ssкоманду для отображения всех открытых портов TCP и UDP в Linux.
- Другой вариант — использовать netstatкоманду для вывода списка всех портов в Linux.
- Помимо ss/ netstatможно использовать lsofкоманду для вывода списка открытых файлов и портов в системе на базе Linux.
- Наконец, можно также использовать nmapкоманду для проверки портов TCP и UDP.
Давайте подробно рассмотрим все команды и примеры.
Использование netstat для просмотра списка открытых портов
Введите следующую команду netstatsudo netstat -tulpn | grep LISTEN
Например, TCP-порт 631 открыт процессом cupsd, а cupsd отображает только петлевой адрес (127.0.0.1). Точно так же TCP-порт 22 открыт процессом sshd и список sshd для всех IP-адресов для ssh-соединений:
Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние Пользовательский индекс PID/Имя программы TCP 0 0 127.0.0.1:631 0.0.0.0:* ПРОСЛУШИВАТЬ 0 43385 1821/cupsd TCP 0 0 0.0.0.0:22 0.0.0.0:* ПРОСЛУШАТЬ 0 44064 1823/sshd
Где,
- -t: все порты TCP
- -u: все порты UDP
- -l: Показать сокеты прослушивающего сервера
- -p: показать PID и имя программы, которой принадлежит каждый сокет
- -n: Не разрешать имена
- | grep LISTEN: отображать только открытые порты, применяя фильтр команды grep.
Используйте ss для вывода списка открытых портов
Команда ss используется для вывода статистики сокетов. Это позволяет отображать информацию, аналогичную netstat. Он может отображать больше информации о TCP и состоянии, чем другие инструменты. Синтаксис:sudo ss -tulpn
Примеры выходных данных:
Состояние Netid Recv-Q Send-Q Локальный адрес:Порт Адрес равноправного узла:Порт udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "chromium-browse" ,pid = 12893,fd=419 ) ) udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "Chromium-browse" , pid = 12938, fd = 395 ) ) udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "chrome" , pid = 10111,fd=178 ) ) udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "chrome" , pid = 10111,fd= 139 ) ) udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "chrome" ,pid = 10111,fd=48 ) ) udp UNCONN 0 0 224.0.0.251: 5353 0.0.0.0:* пользователи: ( ( "chrome" , pid = 10161,fd=43 ) ) udp UNCONN 0 0 0.0.0.0: 5353 0.0.0.0:* пользователи: ( ( " avahi-daemon" , pid = 1590, fd = 15 ) ) udp UNCONN 0 0 0.0.0.0: 5355 0.0.0.0:* пользователи: ( ( "systemd-resolve" , pid = 1566,fd=12 ) ) udp UNCONN 0 0 0.0.0.0: 55204 0.0.0.0:* пользователи: ( ( "avahi-daemon" , pid = 1590,fd=17 ) ) udp UNCONN 0 0 0.0.0.0: 49112 0.0.0.0:* пользователи: ( ( "openvpn" , pid = 18342,fd=8 ) ) udp UNCONN 0 0 10.205.77.1: 53 0.0.0.0:* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=8 ) ) udp UNCONN 0 0 192.168.122.1: 53 0.0.0.0:* пользователи: ( ( " dnsmasq" , pid = 2081, fd=5 ) ) udp UNCONN 0 0 127.0.0.53%lo: 53 0.0.0.0:* пользователи:( ( "systemd-resolve" , pid = 1566, fd = 17 ) ) udp UNCONN 0 0 0.0.0.0% lxdbr0: 67 0.0.0.0: * пользователи: ( ( "dnsmasq" , pid = 2416, fd = 4 ) ) udp UNCONN 0 0 0.0.0.0%virbr0: 67 0.0.0.0:* пользователи: ( ( "dnsmasq" , pid = 2081,fd=3 ) ) udp UNCONN 0 0 0.0.0.0: 68 0.0.0.0:* пользователи: ( ( "dhclient" ,pid = 18263,fd=7 ) ) udp UNCONN 0 0 127.0.0.1: 323 0.0.0.0:* пользователи: ( ( "chronyd" , pid = 1652,fd=6 ) ) udp UNCONN 0 0 [ :: ] :5353 [ :: ] :* пользователи: ( ("avahi-daemon" , pid = 1590, fd = 16 ) ) udp UNCONN 0 0 [ :: ] :5355 [ :: ] :* пользователи: ( ( "systemd-resolve" , pid = 1566, fd = 14 ) ) udp UNCONN 0 0 [ :: ] :60302 [ :: ] :* пользователи: ( ( "avahi-daemon" , pid = 1590,fd=18 ) ) udp UNCONN 0 0 [ fd42:400:b94d:ad98::1 ] :53 [ :: ] :* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=12 ) ) udp UNCONN 0 0 [ fe80::e400:44ff :feb7:3233 ] %lxdbr0:53 [ :: ] :* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=10 ) ) udp UNCONN 0 0 [ ::1 ] :323 [ :: ] :* пользователи: ( ( "chronyd" ,pid = 1652,fd=7 ) ) udp UNCONN 0 0 [ :: ] %lxdbr0:547 [ :: ] :* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=6 ) ) tcp LISTEN 0 128 127.0.0.1: 53306 0.0.0.0:* пользователи: ( ( "AgentAntidote.b" , pid =6206,fd=16 ) , ( "AgentAntidote" , pid = 6164,fd=16 ) , ( "AgentConnectix" , pid = 3371,fd=16 ) ) tcp LISTEN 0 5 127.0.0.1: 44321 0.0.0.0:* пользователи: ( ( "pmcd" ,pid = 3784,fd=0 ) ) tcp LISTEN 0 5 127.0.0.1: 4330 0.0.0.0:* пользователи: ( ("pmlogger" , pid = 9725, fd = 9 ) ) tcp LISTEN 0 128 0.0.0.0: 5355 0.0.0.0: * пользователи: ( ( "systemd-resolve" , pid = 1566, fd = 13 ) ) tcp LISTEN 0 5 10.205.77.1: 53 0.0.0.0:* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=9 ) ) tcp LISTEN 0 32 192.168.122.1: 53 0.0.0.0:* пользователи: ( ( "dnsmasq" ,pid = 2081,fd=6 ) ) tcp LISTEN 0 128 127.0.0.53%lo: 53 0.0.0.0:* пользователи: ( ( "systemd- разрешить" ,pid = 1566,fd=18 ) ) tcp LISTEN 0 128 0.0.0.0: 22 0.0.0.0:* пользователи: ( ( "sshd",pid = 1823,fd=5 ) ) tcp LISTEN 0 5 127.0.0.1: 631 0.0.0.0:* пользователи: ( ( "cupsd" ,pid = 1821,fd=10 ) ) tcp LISTEN 0 5 [ ::1 ] :44321 [ :: ] :* пользователи: ( ( "pmcd" ,pid = 3784,fd=3 ) ) tcp LISTEN 0 5 [ ::1] :4330 [ :: ] :* пользователи: ( ( "pmlogger" ,pid = 9725,fd=10 ) ) tcp LISTEN 0 128 [ :: ] :5355 [ :: ] :* пользователи: ( ( "systemd-resolve " ,pid = 1566,fd=15 ) ) tcp LISTEN 0 5 [ fd42:400:b94d:ad98::1 ] :53 [ :: ] :* пользователи:( ( "dnsmasq" ,pid = 2416,fd=13 ) ) tcp LISTEN 0 5 [ fe80::e400:44ff:feb7:3233 ] %lxdbr0:53 [ :: ] :* пользователи: ( ( "dnsmasq" ,pid = 2416,fd=11 ) ) tcp LISTEN 0 128 [ :: ] :22 [ :: ] :* пользователи: ( ( "sshd" ,pid = 1823,fd=7 ) ) tcp LISTEN 0 5 [ ::1 ] :631 [ :: ] :* пользователи: ( ( "cupsd" ,pid = 1821,fd=9 ) )
Прослушивание портов и приложений с помощью команды lsof
Давайте запустим следующее, чтобы проверить открытые порты TCP и UDP с помощью команды lsof:sudo lsof -i -P -n | grep LISTEN
Где,
- -i: Найдите список портов
- -P: запрещает преобразование номеров портов в имена портов для сетевых файлов. Запрет преобразования может заставить lsof работать немного быстрее. Это также полезно, когда поиск имени порта не работает должным образом.
- -n: не использовать DNS-имя
- | grep LISTEN: Снова показывать только порты в состоянии LISTEN, используя команду grep в качестве фильтра.
команда nmap
В дополнение к вышеуказанным командам можно использовать команду nmap , которая является инструментом с открытым исходным кодом для исследования сети и аудита безопасности. Мы собираемся использовать nmap для поиска и отображения открытых портов в Linux: Примеры результатов:$ sudo nmap -sT -O localhost
$ sudo nmap -sU -O 192.168.2.254 ##[ list open UDP ports ]##
$ sudo nmap -sT -O 127.0.0.1 ##[ list open TCP ports ]##
$ sudo nmap -sTU -O 192.168.2.24
Начиная с Nmap 7.70 ( https://nmap.org ) в 2019-07-22 23:49 IST _ _ Отчет о сканировании Nmap для локального хоста ( 127.0.0.1 ) Хост работает ( задержка 0,00024 с ) . Другие адреса для локального хоста ( не сканируются ) : :: 1 Не показано: 998 закрытых портов ГОСУДАРСТВЕННАЯ СЛУЖБА ПОРТА 22 /tcp открыть ssh 631 /tcp открыть ipp Тип устройства: общего назначения Запуск: Linux 2.6 .X ОС CPE:cpe:/o:linux:linux_kernel:2.6.32 Сведения об ОС: Linux 2.6.32 Сетевое расстояние: 0 переходов Выполнено определение ОС. Пожалуйста, сообщайте о любых неверных результатах на странице https://nmap.org/submit/. Nmap выполнен: 1 IP-адрес ( 1 хост включен ) просканирован за 2,31 секунды .
Открытый порт не означает, что любой извне может получить доступ к этим портам.
До сих пор вы знали, как найти и перечислить открытые порты TCP и UDP в Linux. Однако эти порты по-прежнему могут быть заблокированы программным, облачным или аппаратным брандмауэром. Следовательно, вам необходимо убедиться, что ваш корпоративный брандмауэр не блокирует входящий или исходящий доступ. Например, на сервере Linux мы перечисляем или выводим правила брандмауэра, используя следующий синтаксис:sudo iptables -S
# IPv6
sudo ip6tables -S
Заключение
В заключение, обнаружение открытых портов является одной из самых основных обязанностей системного администратора Linux по соображениям безопасности. Поэтому закройте все нежелательные порты и настройте брандмауэр, такой как UFW и FirewallD , чтобы открывать или блокировать порты в соответствии с вашими требованиями. После прочтения этого руководства вы должны хорошо понимать, как проверять открытые порты в Linux. См. официальный список портов TCP, UDP и других портов IANA здесь для получения дополнительной информации.