Как узнать эфемерный порт для службы?

В Cent OS 7 я использую netstat -an для проверки сетевого сервиса:

 [root@localhost etc]# netstat -an | grep ESTABLISHED udp 0 0 192.168.1.25:41136 61.216.153.106:123 ESTABLISHED udp 0 0 192.168.1.25:59141 202.112.29.82:123 ESTABLISHED udp 0 0 192.168.1.25:53680 115.28.122.198:123 ESTABLISHED udp 0 0 192.168.1.25:34255 42.51.22.35:123 ESTABLISHED 

Вы можете увидеть эфемерный порт 41136 . Если служба использует порт 3306 мы можем знать, что это MySQL, если порт 8080 мы можем знать, что это Tomcat, но как насчет эфемерных портов? как узнать, какая служба связана с этими портами?

Что касается эфемерных портов:

Администрация назначенных номеров Интернета (IANA) предлагает диапазон от 49152 до 65535 (2 15 +2 14 до 2 16 -1) для динамических или частных портов. Многие ядра Linux используют диапазон портов от 32768 до 61000

Рассматривая место назначения в кортеже TCP / IP, как в примере, который вы задаете:

 udp 0 0 192.168.1.25:41136 61.216.153.106:123 

Вы можете видеть, что это текущий компьютер, используя службу NTP UDP / 123 на удаленном сервере.

Или же ваша машина делает запрос NTP на сервер NTP в Китае.

Фактически, все эти 4 линии являются соединениями с серверами NTP в Китае.

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

(Является ли ваш сервер в Китае? Если нет, я буду беспокоиться о возможных вредоносных программах)

Вы также можете использовать out -n для разрешения имен IP-адресов / DNS и имен служб, однако имейте в виду, что он представляет заметную задержку на машине / сервере со многими подключениями (и / или с медленной службой DNS). Чтобы почувствовать разницу, попробуйте, я адаптировал исходный вывод netstat для возможного вывода без -n :

 $netstat -a | grep ESTABLISHED udp 0 0 mylinux:41136 vns1.hinet.net:ntp ESTABLISHED udp 0 0 mylinux:59141 DNS1.SYNET.EDU.CN:ntp ESTABLISHED udp 0 0 mylinux:53680 rdns1.alidns.com:ntp ESTABLISHED udp 0 0 mylinux:34255 ns1.htudns.com:ntp ESTABLISHED 

Вы можете использовать netstat -p для получения pid и имени программы, которая открыла порт на локальной стороне; это можно комбинировать с -a и -n как обычно.

В большинстве систем для этого необходимы права root.

Как вы можете видеть в netstat ( net work stat istics) вывод,

 Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 192.168.1.25:41136 61.216.153.106:123 ESTABLISHED 

192.168.1.25 – это локальный / исходный IP-адрес в локальной сети.

41136 – номер порта источника.

61.216.153.106 – IP-адрес назначения.

123 – номер порта назначения, который представляет сетевой протокол времени (NTP)

Номер порта источника ( 41136 ) служит аналогом порта назначения ( 123 или NTP ), но используется отправляющим хостом ( 192.168.1.25 ), чтобы отслеживать новые входящие соединения и существующие потоки данных.

Как правило, адрес клиентов / источника ( 192.168.1.25 ) устанавливает номер порта источника уникальному номеру, который они сами выбирают – обычно на основе программы, которая запустила соединение.

В этом случае номер порта источника, выбранного вашим компьютером, – 41136 .

Это число случайное и обычно больше 1024.

Посмотрите на другой пример. В этом случае все порты назначения – это UDP 123, который является NTP, а номер порта источника отличается и случайный.

 Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 192.168.1.25:59141 202.112.29.82:123 ESTABLISHED udp 0 0 192.168.1.25:53680 115.28.122.198:123 ESTABLISHED udp 0 0 192.168.1.25:34255 42.51.22.35:123 ESTABLISHED