Как определить открытые порты в Linux? | Блог Линуксоида

После настройки сетевых служб важно обратить внимание на порты, принимающие подключения на сетевых интерфейсах. Любые открытые порты могут быть доказательством

Как посмотреть открытые порты linux

1. netstat

Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:

  • -l или –listening – посмотреть только прослушиваемые порты;
  • -p или –program – показать имя программы и ее PID;
  • -t или –tcp – показать tcp порты;
  • -u или –udp показать udp порты;
  • -n или –numeric показывать ip адреса в числовом виде.

Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:

sudo netstat -tulpn

2. ss

Утилита ss – это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:

sudo ss -tulpn

Можно вывести только процессы, работающие на 80-том порту:

sudo ss -tulpn | grep :80

Как проверить открытые порты в Linux с соответствующим сервисом-процессом?

Существуют различные способы, с помощью которых можно определить открытые порты прослушивания на Linux.

1. Проверка открытых портов в Linux с помощью команды NETSTAT

В основной форме команда NetStat выводит на экран или печатает информацию о сетевых подключениях и таблицу маршрутизации и т.д. Однако та же команда вместе с параметром ниже может быть использована для проверки открытых портов в Linux.

Команда:

Вывод:

Вот команда выше отображает все выходные TCP, а также порты UDP. В случае, если вы хотите отфильтровать его дальше, допустим, вы хотите узнать, процесс или услугу, используемую по порту 80, следуют использовать команду ниже.

В приведенной выше командной порт используется HTTPd службы с PID 1086.

2. Проверка открытых портов в Linux с помощью утилиты lsof

Утилита lsof в основном отображает список открытых файлов. Однако с некоторыми настройками параметров мы можем в состоянии также проверить открытые порты в Linux. По умолчанию она не установлена в системе, пожалуйста, следуйте ниже набором команд для установки в соответствии с дистрибутивом Linux.

Команда:

Вывод:

В случае, если вы хотите получить более подробную информацию о порте 80 можно использовать следующую команду:

Здесь, в этом выводе вы можете четко отметить, что порт 80 используется службой HTTP, имеющей PID 1056.

3. Проверка открытых портов в Linux с помощью nmap

Nmap является инструментом сканирования порта, используемый в Linux. Он не установлен на системах Linux по умолчанию. Вам необходимо установить его с помощью следующей команды.

После того, как он установиться, используется команда для проверки открытых портов в Linux.

Команда:

Вывод:

В выводе выше мы можем в состоянии очень легко проверить открытые порты.

В случае, если Вы хотите изучить больше о сетевых команд в Linux следуйте этой статье.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Открываем порты в CentOS 7

Открытие портов — задача несложная, ведь для этого придется ввести всего несколько команд в консоль. Однако если вы изначально не производили дополнительных настроек с межсетевым экраном или используете стороннее средство, придется дополнительно изменить важные параметры. Поэтому мы разделили нашу статью на этапы, чтобы начинающим юзерам было проще разобраться с каждым шагом, а сейчас начнем с непосредственной инсталляции iptables в CentOS 7.

Шаг 1: Инсталляция или обновление iptables

Как уже было сказано выше, iptables в CentOS 7 выступает в качестве межсетевого экрана по умолчанию. Если вручную не было произведено никаких изменений, можно смело пропускать данный шаг, выполнив только последний этап с инсталляцией утилит брандмауэра. В случае необходимости проверки обновлений или повторной установки данного инструмента советуем воспользоваться следующим руководством.

  1. Все действия, описываемые сегодня, будут производиться в «Терминале», поэтому все начинается с его запуска. Используйте для этого горячую клавишу Ctrl + Alt + T или значок, добавленный в раздел «Избранное» в меню приложений.

Запуск терминала для установки iptables в CentOS 7 при открытии портов

Здесь введите команду sudo yum install iptables, а затем нажмите на клавишу Enter.

Ввод команды для инсталляции утилиты iptables в CentOS 7 перед открытием портов

Для подтверждения этой команды потребуется указать пароль суперпользователя. Учитывайте, что при таком типе написания вводимые символы не отображаются.

Подтверждение установки iptables в CentOS 7 перед открытием портов

Вы будете уведомлены о том, что инсталляция или обновление успешно произведены. Если же в операционную систему и так добавлена последняя версия iptables, на экране появится строка «Выполнять нечего».

Информация об успешной инсталляции утилиты iptables в CentOS 7

Завершите этот шаг командой sudo yum -y install iptables-services. Это запустит инсталляцию необходимых сервисов.

Команда для инсталляции вспомогательных утилит для iptables в CentOS 7

Можно переходить к следующему этапу, если на экране появилось сообщение об успешном добавлении компонентов.

Успешная инсталляция вспомогательных утилит для iptables в CentOS 7

Шаг 2: Сброс стандартных правил брандмауэра

Если ранее системным администратором или пользователем не производилась настройка iptables, стандартные настройки следует сбросить, чтобы в будущем не возникло проблем с совместимостью правил. Дополнительно потребуется указать и стандартные правила, обеспечив корректность выполнения входящих и исходящих соединений. Все это происходит так:

  1. Введите в консоли команду iptables -L -v -n, чтобы просмотреть список текущих параметров.

Команда для просмотра стандартных правил утилиты iptables в CentOS 7

Если они вас не устраивают, значит придется осуществлять сброс и ручную конфигурацию.

Отображение стандартных правил утилиты iptables в CentOS 7

Удаление существующих правил выполняется с помощью всего одной строки sudo iptables -F.

Команда для сброса всех правил команды iptables в CentOS 7

Далее разрешите все вводимые данные сервера, вставив sudo iptables -A INPUT -i lo -j ACCEPT.

Команда для создания правил на входящие соединения iptables в CentOS 7

Для исходящих соединений применима практически такая же команда: sudo iptables -A OUTPUT -o lo -j ACCEPT.

Команда для создания правил на исходящие соединения iptables в CentOS 7

Рекомендуется ограничить новые соединения и разрешить уже существующие, чтобы обеспечить безопасность и наладить работу указанных ранее правил. Происходит это через sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT.

Команда для обеспечения безопасности соединений iptables в CentOS 7

Все дальнейшие настройки рассмотренной утилиты осуществляются пользователем вручную, включая и открытие портов. О последней теме мы поговорим в следующих шагах, а расширенная конфигурация не входит в рамки сегодняшнего материала. Вместо этого рекомендуем ознакомиться со специальным обучающим материалом по данной теме, воспользовавшись расположенной ниже ссылкой.

Подробнее: Настройка iptables в CentOS 7

Шаг 3: Отключение FirewallD

К этому шагу следует присмотреться тем пользователям, кто ранее устанавливал FirewallD или он был добавлен автоматически. При настройке портов через iptables данный инструмент может мешать корректному выполнению правил, поэтому его потребуется деактивировать.

  1. Для начала остановите выполнение службы через sudo systemctl stop firewalld.

Команда для отключение защитника при настройке iptables в CentOS 7

Далее произведите полное отключение, воспользовавшись командой sudo systemctl disable firewalld.

Команда для деактивации защитника при настройке iptables в CentOS 7

Вы получите информацию о том, что символические ссылки были удалены, следовательно, FirewallD с этого момента не работает.

Уведомление об успешном отключении FirewallD при настройке iptables в CentOS 7

Если вы хотите вручную удалить папки, хранящие в себе настройки FirewallD, пропустив перечисленные выше команды, вставьте в «Терминал» по очереди указанные ниже строки и активируйте их.

rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’

В будущем любому пользователю может потребоваться активация и дальнейшая настройка FirewallD, особенно когда приходится работать с различными веб-серверами и утилитами. Мы предлагаем сделать это, используя приведенное далее руководство.

Подробнее: Настройка Firewall в CentOS 7

Шаг 4: Открытие портов через iptables

Пришло время произвести основное действие, чему и посвящена сегодняшняя статья. Выше мы выполнили абсолютно все подготовительные работы, чтобы сейчас открыть порты в CentOS 7. Теперь с этим не должно возникнуть никаких проблем, поэтому можно вводить следующие команды.

  1. В обязательном порядке добавьте межсетевой экран в автозагрузку, чтобы не запускать его постоянно вручную. В этом поможет команда sudo systemctl enable iptables.

Команда для добавления сервисов iptables в CentOS 7 в автозагрузку

Вы будете уведомлены о создании символической ссылки.

Информация об успешном добавлении iptables в CentOS 7 в автозагрузку

Активируйте постоянные права суперпользователя, введя su, чтобы для каждой команды этой терминальной сессии не нужно было приписывать sudo.

Использование команды для постоянных прав суперпользователя при настройке

Подтвердите это действие, написав свой пароль.

Ввод пароля для активации постоянных прав суперпользователя при настройке

Откройте порт через команду iptables -I INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT, где 22 замените на необходимое число.

Ввод команды для открытия порта через iptables в CentOS 7

Сразу же можно открыть и следующий порт, например, под номером 25 (SMTP-сервер). Для этого введите iptables -I INPUT -p tcp –dport 25 -m state –state NEW -j ACCEPT.

Вторая команда для открытия портов через iptables в CentOS 7

Сохраните все изменения, вставив строку service iptables save.

Сохранение изменений при открытии портов через iptables в CentOS 7

Вы будете уведомлены о том, что конфигурация успешно применена.

Информация об успешном сохранении настроек iptables в CentOS 7

Перезагрузите межсетевой экран, чтобы все изменения вступили в силу. Осуществляется это через команду systemctl restart iptables.

Перезапуск iptables в CentOS 7 для применения изменений

В конце мы предлагаем использовать sudo iptables -nvL, чтобы изучить все открытые порты.

Просмотр состояния iptables в CentOS 7 после открытия портов

В этой статье вы узнали все об открытии портов в CentOS 7. Как видите, это не займет много времени, а все изменения будут применены сразу же после перезагрузки сервисов. Используйте рассмотренные выше команды, изменяя только номера портов, чтобы все прошло успешно.

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.
ЗакрытьОпишите, что у вас не получилось.

Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Способ 1. netstat

sudo netstat -ntulp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2392/smbd
tcp 0 0 0.0.0.0:9518 0.0.0.0:* LISTEN 2894/skype
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2896/vlc
tcp 0 0 127.0.0.1:3493 0.0.0.0:* LISTEN 2467/upsd
.

  • -l или —listening — посмотреть только прослушиваемые порты
  • -p или —program — показать имя программы и ее P >Способ 2 lsof

Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию i.

dhcpcd 2136 root 6u IPv4 4986 0t0 UDP *:bootpc
ntpd 2213 root 27u IPv6 5598 0t0 UDP [fe80::7879:19ff:fe51:f833]:ntp
hamachid 2323 root 8u IPv4 5587 0t0 TCP 192.168.1.2:35445->212.118.234.65:https (ESTABLISHED)
smbd 2392 root 27u IPv6 5624 0t0 TCP *:microsoft-ds (LISTEN)
sshd 2421 root 3u IPv4 6196 0t0 TCP *:ssh (LISTEN)
upsd 2467 nut 4u IPv4 6235 0t0 TCP comm-app.local:nut (LISTEN)

Еще один пример, смотрим какие процессы работают с портом 80:

sudo lsof -i | grep 80

ntpd 2213 root 23u IPv6 5422 0t0 UDP [fe80::beae:c5ff:febe:8bb7]:ntp
ntpd 2213 root 27u IPv6 5598 0t0 UDP [fe80::7879:19ff:fe51:f833]:ntp
skype 2894 serigy 87u IPv4 7080 0t0 TCP *:9518 (LISTEN)
chrome 3114 sergiy 122u IPv4 31904 0t0 TCP 192.168.1.2:47804->srv118-131-240-87.vk.com:https (ESTABLISHED)

Ping

Утилита

ping

, как можно судить по её названию, используется для проверки связи между узлами сети, между компьютером, на котором её запускают, и другой системой. Эта утилита использует протокол

ICMP

, отправляя эхо-запросы, на которые отвечает удалённая система, получающая их. Использование

ping

, кроме того — это хороший способ проверки связности сети, проводимой в качестве первого шага диагностики сети при наличии неполадок. Команду

ping

можно использовать с адресами IPv4 и IPv6.

Тут

можно почитать подробности об IP-адресах и о работе с ними.

▍Примеры

IPv4: ping <ip address>/<fqdn>IPv6: ping6 <ip address>/<fqdn>

Ping, кроме того, можно использовать для выяснения IP-адресов сайтов на основе их имён. Вот как это выглядит.

87971025701f33286cf51950f53272d5.png
Использование ping для выяснения IP-адреса сайта по его имени

Запуск и остановка firewalld

Проверим, запущен ли firewalld:

# systemctl status firewalld

Тут будет расширенная информация. Чтобы коротко, да (работает) или нет можно так:

# firewall-cmd –state
running

Ок, работает.

Остановка firewalld:

# systemctl stop firewalld

Запрет автостарта:

# systemctl disable firewalld

Запуск firewalld:

# systemctl start firewalld

Включение автостарта:

# systemctl enable firewalld

3. lsof

Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:

sudo lsof -i -P

Ещё один пример, смотрим какие процессы работают с портом 80:

sudo lsof -i -P | grep :80

4. Nmap

Программа Nmap – мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:

sudo apt install nmap

Затем можно использовать:

nmap localhost

Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.

Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант – используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:

wget -O – -q eth0.me

Дальше запускаем сканирование:

nmap 185.29.237.91

В результате мы видим, что открыт порт 80 веб-сервера и 22 – порт службы ssh, я их не открывал, эти порты открыты роутером, 80 – для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.

5. Zenmap

Программа Zenmap – это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:

sudo apt install zenmap

Запустить программу можно из главного меню или командой:

zenmap

Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:

После завершения сканирования утилита вывела список открытых портов Linux.

Nmcli

Утилита

nmcli

отлично подходит для управления сетевыми соединениями, для выполнения настроек и для решения других подобных задач. С её помощью можно управлять программой

NetworkManager

и модифицировать сетевые параметры различных устройств.

▍Примеры

Вот как с помощью

nmcli

вывести список сетевых интерфейсов:

nmcli device

Так можно вывести информацию по конкретному интерфейсу:

nmcli device show <interface>

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

nmcli connection
c3770122ca3093465a53c43376f30a33.png
Примеры использования nmcli

Эта команда позволяет отключить заданный интерфейс:

nmcli connection down <interface>

А эта позволяет включить интерфейс:

nmcli connection up <interface>

Вот пример команды, которая добавляет VLAN-интерфейс с заданным VLAN-номером, IP-адресом и шлюзом к указанному интерфейсу:

nmcli con add type vlan con-name <connection-name> dev <interface> id <vlan-number> ipv4 <ip/cidr> gw4 <gateway-ip>

Открытые порты в Linux через tcpdump

С помощью tcpdump легко снять трафик с вашего сетевого интерфейса, для дальнейшего разбора. Без tcpdump сложно разобрать ошибки, которые возникают при работе с сетью и IP телефонией в целом. Tcpdump, по умолчанию, принимает только первые 68 96 байт данных из пакета.

Tcpdump полезное и необходимое приложения для Linux/UNIX систем.

Если вы хотите, посмотреть более подробные пакеты, то добавьте опцию -s <число>, где число обозначает количество байтов, которые вы хотите захватить. Если установить -s 0 (ноль)- это означает захватывать все пакеты.

proto — работает с протоколами tcp, udp и icmp. (Не надо писать proto)
tcpdump icmp

port — захватывает трафик по определенному порту
tcpdump port 5060

src, dst port — захватывает трафик по определенному порту от источника или к IP адресу назанчения
tcpdump src port 5060tcpdump dst port 5060

src/dst, port, protocol — сочетание всех трех выражений
tcpdump src port 5060 and tcp tcpdump udp and src port 5060

В конце статьи можно сформулировать следующий вывод: поскольку файл и процесс — два ключевых понятия в операционной системе, утилита lsof может оказаться незаменимым помощником администратора в тех случаях, когда надо разобраться, как работает система, а особенно в тех случаях, когда система скомпрометирована. И она тем полезнее, чем больше ваша система и чем больше вы с ней работаете, чем лучше вы понимаете, что она может. Когда вы освоите ее возможности, вы сможете создать отдельные скрипты для обработки тех огромных массивов информации, которые выдает эта программа. Можно, например, запускать команду lsof -i через определенные промежутки времени, чтобы сравнивать полученные данные. Если будут выявлены отличия в числе открытых процессов или другие отличия, удовлетворяющие заданному критерию, скрипт может сформировать сообщение администратору.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...