Сканер открытых портов
На данной странице представлены наиболее простые и популярные программы (оффлайн) и сервисы (онлайн), которые позволят вам просканировать открытые порты на своем собственном, либо удаленном компьютере(ах).
Вешаем службу отвечающую по нужному порту
Как я и писал выше, пока сервисы не развернуты, то и порты никто не слушает, но нам необходимо произвести проверку, чтобы потом к этому не обращаться. Нам необходимо с помощью специальной утилиты, эмулировать прослушивание нужного нам порта (сокета), те кто из вас знает такую операционную систему, как Centos 7, то они помнят, в ней была отличная утилита под названием netcat. Она позволяла с помощью определенных команд слушать нужный администратору порт.
netcat — утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. На Windows платформах, она так же присутствует.
Распаковываем архив на сервере, где в будущем будет работать служба. В папке вам будут необходимы файлы nc.exe и nc64.exe. Далее зажимаете Shift и щелкаете правым кликом по папке, из контекстного меню выбираете пункт «Открыть окно команд»
Теперь представим, что я хочу чтобы на сервере работал 80 порт, ну типа IIS сервер. Открываем netcat, для начала посмотрите справку:
- -d detach from console, background mode
- -e prog inbound program to exec [dangerous!!]
- -g gateway source-routing hop point[s], up to 8
- -G num source-routing pointer: 4, 8, 12, .
- -h this cruft
- -i secs delay interval for lines sent, ports scanned
- -l — слушать входящие соединения
- -L listen harder, re-listen on socket close
- -n numeric-only IP addresses, no DNS
- -o file hex dump of traffic
- -p — какое соединение будет прослушивать
- -r randomize local and remote ports
- -s — задать локальный адрес назначения
- -t answer TELNET negotiation
- -c send CRLF instead of just LF
- -u — UDP режим
- -v verbose [use twice to be more verbose]
- -w secs timeout for connects and final net reads
- -z zero-I/O mode [used for scanning]
Нас интересует команда вот такого вида:
В результате чего, на сервере поднимается виртуальный сокет, который слушает 80 соединение, симулируя веб сервер.
2. Утилита nc (netcat).
Программа работает как в Windows, так и в Linux, только придётся её устанавливать. В Windows дистрибутив копируется в любую папку, например в папку С:Program Files, далее прописываем путь к запускающему файлу в переменные среды и запускаем программу в командной строке, или в командной строке прописываем полный путь к файлу и затем запускаем его. В Linux после установки програмного обеспечения, не нужно прописывать путь к запускающему файлу.
Программа позволяет принимать и отсылать данные, работать в роли простенького веб-сервера или чата.
Просканировать на наличие открытого порта:
Для запуска help для netcat:
Как ещё можно проверить, открыт ли порт
Если первый и второй метод по каким-либо причинам не подходит, то можно подойти к проблеме иначе: существует огромное количество различных полезных программ, которые платно или бесплатно предоставят исчерпывающую информацию по имеющимся на компьютере портам. Вместе с тем в интернете можно найти и довольно простые как в плане использования, так и по выдаваемой информации утилиты. Примером таких приложений могут служить Free Port Scanner и CurrPorts — обе они бесплатны.
Используем PortQry для сканирования открытых UDP и TCP портов
Первая версия Portqry для Windows Server 2003 некорректно работает с более новыми ОС (Windows Server 2008 и выше), поэтому в дальнейшем была выпущена вторая версия утилиты PortQryV2. Именно эту версию и стоит использовать сегодня(скачать утилиту PortQryV2 можно по ссылке).
choco install portqry
Скачайте и распакуйте архив PortQryV2.exe. Запустите командную строку и перейдите в каталог с утилитой, например:
Чтобы проверить доступность DNS сервера с клиента, необходимо проверить открыты ли на нем 53 порты TCP и UDP. Формат команды проверки доступности портов на удаленном сервере следующий:
PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
-n – имя или IP адрес сервера, доступ к которому нужно проверить
—e – номер порта для проверки (от 1 до 65535)
—r – диапазон портов для проверки (например, 1:80)
—p – по какому протоколу выполняется проверка. Это может быть TCP, UDP или BOTH (по умолчанию используется TCP).
Примечание. В отличии от комадлета PowerShell Test-NetConnection, который может использоваться только для проверки доступности TCP портов, утилита PortQry поддерживает и TCP и UDP протоколы.
В нашем примере команда будет такой:
PortQry.exe –n 10.1.10.6 -p both -e 53
Утилита Portqry для каждого указанного порта вернет один из трех статусов доступности:
- Listening – означает, что указанный порт доступен (принимает соединения), ответ от него получен;
- NotListening – на целевой системе не запушен процесс (служба), который бы принимал подключения на указанном порту. Portqry получила ответ ICMP «Destination Unreachable — Port Unreachable» при проверке UDP порта, или TCP пакет с флагом Reset;
- Filtered – утилита PortQry не получала ответа от указанного порта либо ответ был отфильтрован. Т.е. на целевой системе либо не слушается данный порт, либо доступ к нему ограничен файерволом или настройками системы. По умолчанию TCP порты опрашиваются 3 раза, а UDP – один.
В нашем примере, DNS сервер доступен с клиента и по TCP и по UDP.
С помощью атрибута —o, можно указать последовательность портов, которых нужно просканировать:
portqry -n 10.1.10.6 -p tcp -o 21,110,143
Следующая команда выполнит сканирование диапазона “низких” TCP портов и вернет список доступных портов, которые принимают подключения (утилита работает в режиме сканера открытых портов):
portqry -n 10.1.10.6 -r 1:1024 | find «: LISTENING»
Можно сохранить результаты сканирования открытых портов в текстовый файл:
portqry -n 10.1.10.6 -p tcp -r 20:500 -l logfile.txt
В утилите portqry есть интерактивный режим:
Теперь в приглашении PortQry Interactive Mode можете указать имя удаленного компьютера и порт.
node srv-lic
set port=80
Чтобы выполнить проверить порт на указанном сервере нажмите q и Enter.
С помощью аргументов –wport и -wpid можно выполнить мониторинг состояния указанного порта (wport), или всех портов, связанных с указанным процессом (wpid) на локальном хосте.
Например, следующая команда в течении 10 минут будет выполнять проверку доступности указанного локального порта (например, RDP порта 3389), и если его статус изменится, уведомит администратора об этом (подробный лог будет доступен в файле LogFile.txt). Чтобы остановить мониторинг, нажмите Ctrl-C :
portqry -wport 3389 -wt 600 –l LogFile.txt -y -v
Можно получить информацию об открытых портах и активных TCP/UDP соединениях на локальном компьютере:
С помощью Telnet
Второй вариант для того чтобы проверить, открыт ли порт – запуск службы Telnet, тоже встроенной в систему Windows.
Хотя на современных версиях Виндовс, начиная с семёрки, утилита по умолчанию отключена и требует активации. Для её запуска нужно сделать следующее:
1 Перейдите в Панель управления , выберите меню Программы и компоненты и перейти к строке «Включение или отключение компонентов Windows».
2 В списке, который появится на экране, выбирается пункт клиент Телнет и активируется (ставится галочка). После этого нажмите ОК , для сохранения настроек.
Рис. 8. Первые этапы запуска Telnet
Теперь можно запускать консоль через командную строку и вводить в ней название утилиты и номер соединения.
Например: Удаленный сервер можно проверить командой telnet 10.242.17.134 80, а проверка открытого порта на своём компьютере – вводом текста telnet localhost 80. (Имейте ввиду, после каждого слова должен быть пробел)
При удачном подключении на экране появится информация о нём. Это значит, что порт открыт. При закрытом соединении будут выведены сведения о невозможности его открыть.
Рис. 9. Результаты проверки работы программы Telnet.
Что такое порт компьютера
Порт – это виртуальное дополнение к сетевому адресу, которое позволяет разделить запросы разных приложений и обрабатывать их автономно. Часть постоянно занята системными службами Windows или другой операционки, остальные свободны для использования прикладными программами, в том числе запускаемыми на удаленных серверах.
- Иногда порты путают с разъемами на материнской плате (формально они и являются ими, но там речь идет о подключении физических устройств).
- Общее количество портов составляет 65535. Они имеют определенное назначение, например, 20-21 «по умолчанию» используется для соединения по FTP, а 110 выделен под почтовый протокол POP3.
- Сочетание IP-адреса и порта принято называть сокетом или файловым дескриптором, при помощи которого программа передает данные.
Перед подключением к какому-либо порту рекомендуется проверить, свободен ли он. Если нет, то операционная система выдаст ошибку, и соединение прервется. Многие программы делают проверку в автоматическом режиме и сами пытаются менять номера в поиске незанятого подключения. Но в ряде случаев это требуется сделать вручную, например, при отладке собственного кода.
Что означает результат проверки порта?
Подключиться к этому порту в данный момент невозможно. Вредоносные программы или злоумышленники не могут воспользоваться данным портом для атаки или получения конфиденциальной информации (Вам поможет материал 4 лучших бесплатных антивируса для Windows 10). Если все неизвестные порты имеют статус «закрыт», то это означает хороший уровень защищенности компьютера от сетевых угроз.
Если порт должен быть открытым, то это плохой показатель. Причиной недоступности порта может быть неверная настройка сетевого оборудования или программного обеспечения. Проверьте права доступа программ к сети в файерволе. Удостоверьтесь, что порты проброшены через роутер.
Результат «порт закрыт» также можно получить, если порт открыт, но время отклика вашего компьютера в сети (пинг) завышено. Подключится к порту в таких условиях практически не представляется возможным.
К данному порту можно произвести подключение, он доступен из интернета. Если это то, что требуется — прекрасно.
Если неизвестна причина, по которой порт может быть открытым, то стоит проверить запущенные программы и сервисы. Возможно, некоторые из них вполне легально используют этот порт для работы с сетью. Существует вероятность, что порт открыт в следствии работы несанкционированного/вредоносного программного обеспечения (Вам поможет материал Как включить защиту от потенциально нежелательных программ в Windows Defender). В таком случае рекомендуется проверить компьютер антивирусом.
Что за порты? Для чего они нужны?
Порты, которые проверяет PortScan.ru, — это не физические, а логические порты на компьютере или сетевом устройстве.
В случае, если программа или служба планирует работать с сетью, она открывает порт с уникальным номером, через который она может работать с удаленными клиентами/серверами. Фактически, сетевая программа резервирует для себя определенное число, которое позволяет понять, что пришедшие данные предназначаются именно этой программе.
На человеческом языке это звучало бы примерно так: «Я, программа-сервер, открываю порт номер 1234. Если по сетевому кабелю придут данные с номером порта 1234 — это мне. «
Какие номера портов может открывать программа?
Порты идентифицируются номерами от 0 до 65535 включительно. Любой другой порт открыть нельзя, соответственно и проверить тоже. Это ограничения TCP/IP протокола.
Стоит отметить, что клиентская программа всегда должна знать номер порта, к которому ей нужно подключаться на сервере или другом удаленном сетевом устройстве. По этой причине для наиболее популярных протоколов зарезервированы порты в диапазоне от 0 до 1023.
Так, например, осуществляя серфинг в интернете, ваш браузер подключается к 80 порту на удаленном сервере, на котором находится сайт. В ответ браузер получает набор кода и данных, который скачивает и отображает в виде веб-страницы.
Для каких ситуаций возможна проверка открытых портов?
Проверка открытых портов возможна, если вашему компьютеру присвоен внешний IP адрес. Подробнее об этом вы можете узнать у своего интернет-провайдера.
Стоит учесть, что если ваш компьютер подключен к интернету не напрямую, а через роутер (маршрутизатор), то результаты проверки относятся именно к роутеру. Проверить состояние порта для компьютера внутри такой подсети возможно только при наличии проброса портов.
Что такое проброс портов?
Проброс портов (Port Forwarding, иногда Virtual Servers) — специальная настройка на роутере, позволяющая перенаправить внешние запросы (из интернета) на компьютеры локальной сети. По сути это способ указать, на какой локальный компьютер пересылать данные и запросы подключения, пришедшие на определенный порт.
Допустим, у вас дома игровой или веб-сервер, подключенный через роутер к интернету. Все компьютеры, подключенные к этому же роутеру, находятся в одной сети, поэтому смогут подключиться к данному серверу. Однако снаружи, из интернета, подключиться к вашему серверу без проброса портов уже не получится.
Если ваш компьютер подключен к интернету напрямую (без роутера/маршрутизатора), то выполнять проброс портов не требуется. Все ваши открытые порты должны быть доступны из интернета (естественно, при наличии выделенного IP).
Как узнать, какие порты открыты на компьютере?
Для Windows: Пуск → «cmd» → Запустить от имени администратора → «netstat -bn»
Для Linux: В терминале выполнить команду: «ss -tln»
Как закрыть порт?
Прежде всего надо устранить причину — запущенную программу или службу, которая открыла этот порт; ее надо закрыть/остановить. Если причина открытого порта не ясна — проверьте компьютер антивирусом, удалите лишние правила проброса портов на роутере и установите продвинутый файервол (Firewall).