Проверьте, открыт или закрыт порт на сервере Linux?

Как проверить, прослушивает ли порт на сервере Linux?

159 голосов | спросил James Anderson 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2011 21:24:24 +0400 2011, 21:24:24

6 ответов


152

Вы можете проверить, прослушивает ли процесс на TCP или UDP-порту с помощью netstat -tuplen.

Чтобы проверить, доступны ли некоторые порты снаружи (это, вероятно, вы хотите), вы можете использовать сканер портов, например Nmap , из < em> еще . Запуск Nmap на том же хосте, который вы хотите проверить, совершенно бесполезен для вашей цели.

ответил joschi 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2011 21:31:43 +0400 2011, 21:31:43
78

Самый быстрый способ проверить, открыт ли TCP-порт (включая любые аппаратные брандмауэры, которые могут быть у вас), - набрать с удаленного компьютера (например, на вашем рабочем столе):

telnet myserver.com 80

Что будет пытаться открыть соединение с портом 80 на этом сервере. Если вы получаете тайм-аут или отрицаете, порт не открыт:)

ответил Adrian Macneil 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2011 21:33:22 +0400 2011, 21:33:22
22

ОК, в общем, у вас есть сервер, на который вы можете войти. Вы хотите посмотреть, что-то слушает какой-то порт. Как root, запустите:

netstat -nlp

это покажет список процессов, прослушивающих порты TCP и UDP. Вы можете сканировать (или grep) его для интересующего вас процесса и /или номера портов, которые вы ожидаете увидеть.

Если ожидаемого процесса не существует, вы должны запустить этот процесс и снова проверить netstat. Если процесс существует, но он прослушивает интерфейс и порт, которых вы не ожидали, возникает проблема конфигурации (например, он может прослушиваться, но только на интерфейсе loopback, поэтому вы увидите 127.0.0.1:3306 и нет других строк для порта 3306, в случае конфигурации по умолчанию для MySQL).

Если процесс завершен, и он прослушивает ожидаемый порт, вы можете попробовать запустить «telnet» на этом порту с вашего Macbook в вашем офисе /доме, например,

telnet xxxxxxxxxxxx.co.uk 443

Это проверит, если (при условии стандартных портов), что для SSL настроен веб-сервер. Обратите внимание, что этот тест с использованием telnet будет работать только в том случае, если процесс прослушивает порт TCP. Если это UDP-порт, вы можете попробовать с любым клиентом, который вы собираетесь использовать для подключения к нему. (Я вижу, что вы использовали порт 224. Это masqdialer, и я понятия не имею, что это такое).

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

iptables -L -n

Это покажет все правила брандмауэра, определенные в вашей системе. Вы можете опубликовать это, но, как правило, если вы не разрешаете все в цепочке INPUT, вам, вероятно, потребуется явно разрешить трафик на рассматриваемый порт:

iptables -I INPUT -p tcp --dport 224 -j ACCEPT

или что-то в этом роде. Не запускайте свои команды брандмауэра вслепую, исходя из того, что какой-то незнакомец сказал вам в Интернете. Подумайте, что вы делаете.

Если ваш брандмауэр в блоке разрешает трафик, который вам нужен, ваша хостинговая компания может работать с брандмауэром (например, они могут использовать только SSH (22 /tcp), HTTP (80 /tcp) и HTTPS (443) /tcp) и отказ от всего входящего трафика). В этом случае вам нужно будет открыть с ними справочную службу, чтобы решить эту проблему, хотя я полагаю, что в вашей cPanel может быть что-то, что может это сделать.

ответил cjc 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 00:01:52 +0400 2011, 00:01:52
7

Если вы подключены к системе и можете запустить команду как root, вы можете проверить вывод iptables

iptables -L -vn

в этом списке будут указаны правила брандмауэра и какие порты открыты цели ACCEPT и любые явно закрытые порты target REJECT.

ответил Iain 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2011 21:57:04 +0400 2011, 21:57:04
6

Я использую комбо netstat и lsof:

netstat -an | grep <portnumber>
lsof -i: <portnumber>

Чтобы узнать, используется ли порт и что его использует.

ответил warren 28 MarpmMon, 28 Mar 2016 22:32:19 +03002016-03-28T22:32:19+03:0010 2016, 22:32:19
4

lsof -i: ssh будет отображать все процессы с открытым портом ssh, как для прослушивания, так и для активных соединений.

ответил pgs 26 Jam1000000amTue, 26 Jan 2016 00:45:20 +030016 2016, 00:45:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132