HackWare.ru
Открытый порт на вашем компьютере (если не настроен файервол для запрета входящих соединений) означает, что к вашему компьютеру можно подключиться из вне.
Если ваш компьютер заражён вредоносным программным обеспечением, таким как троян, бэкдор (вирусы, которые позволяют злоумышленнику удалённо подключаться к вашему компьютеру и управлять им), то обычно такой бэкдор открывает порт и прослушивает сеть, в ожидании входящего соединения. Хотя могут быть варианты, например, многие бэкдоры подключаются к компьютеру злоумышленника и ожидают команд — в этом случае правильнее говорить не об открытом порте, а об установленном соединении. Это распространённый способ поведения вредоносного ПО, поскольку в данном случае не требуется, чтобы у жертвы был белый IP (что для домашних компьютеров является редкостью). Поэтому важно проверять открытые порты и установленные сетевые соединения. Конечно, установленное соединение означает наличие открытого порта, но с технической точки зрения это всё-таки разные вещи.
Ещё один пример, когда нужно определить, какая именно служба прослушивает порт: вы пытаетесь установить сетевую службу (веб-сервер Apache или СУБД MySQL), а они не запускаются, так как какая-то другая служба уже заняла их порт, который они используют по умолчанию. В этом случае нужно найти эту службу и отключить её или настроить на работу с другим портом.
Но, как и во многих IT задачах (да и вообще во многих профессиональных сферах), получить данные это только самое начало. Главное — это правильно их истолковать и понять.
Поэтому в этой статье мы рассмотрим, как узнать, какие порты открыты, как проверить, какая служба прослушивает определённый порт, а также научимся правильно понимать вывод команды NETSTAT и аналогичных.
Как проверить порты на открытость
Есть несколько способов проверки открытости портов: онлайн-сервисы, специализированные программы и стандартные средства Windows.
Данный онлайн сервис позволяет проверить любой порт вашего IP адреса, который определяется автоматически. Для этого достаточно только ввести интересующий порт в поле и нажать кнопку «Проверить».
Онлайн-сервис PortScan.ru
2. Утилита nc (netcat).
Программа работает как в Windows, так и в Linux, только придётся её устанавливать. В Windows дистрибутив копируется в любую папку, например в папку С:Program Files, далее прописываем путь к запускающему файлу в переменные среды и запускаем программу в командной строке, или в командной строке прописываем полный путь к файлу и затем запускаем его. В Linux после установки програмного обеспечения, не нужно прописывать путь к запускающему файлу.
Программа позволяет принимать и отсылать данные, работать в роли простенького веб-сервера или чата.
Просканировать на наличие открытого порта:
Для запуска help для netcat:
Как ещё можно проверить, открыт ли порт
Если первый и второй метод по каким-либо причинам не подходит, то можно подойти к проблеме иначе: существует огромное количество различных полезных программ, которые платно или бесплатно предоставят исчерпывающую информацию по имеющимся на компьютере портам. Вместе с тем в интернете можно найти и довольно простые как в плане использования, так и по выдаваемой информации утилиты. Примером таких приложений могут служить Free Port Scanner и CurrPorts — обе они бесплатны.
Как проверить, открыт ли порт на удаленной системе Unix с помощью команды telnet?
Команда telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET. Общий синтаксис для telnet:
проверим открыт ли 22 порт telnet’ом, если открыт увидим следующий ответ
если закрыт увидим ответ
Используем 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 соединениях на локальном компьютере:
Что такое сканер открытых портов?
Сканер открытых портов – это инструмент, который используется для проверки внешнего IP-адреса и определения открытых портов в соединении.
Он используется для определения, правильно ли настроена переадресация портов или серверные приложения блокируются брандмауэром.
Инструменты проверки портов, используемые для проверки сети на наличие портов, которые обычно пересылаются.
Немногие порты, такие как порт 25, обычно блокируются на уровне ISP, пытаясь перехватить подозрительную задачу.
Каждые данные содержат номер порта, который позволяет протоколам определять их желаемое местоположение и соответственно перенаправлять их.
Удаленный компьютер
Для этой цели используется все та же командная строка. Только теперь необходимо ввести три элемента: «telnet – ІР-адрес – порт». Нажимаем на клавишу ввода. Если не появляется запись Could not open», то это значит, что он открыт. В случаях, когда она выводится, порт закрыт. Если нет времени пробивать все значения, но одновременно необходимо проверить, открыт ли порт, то для этой цели можно использовать утилиты. Кстати, команда telnet позволяет рассматривать и локальный компьютер как удаленный, работая с ним так, сложно он находится на расстоянии. Каков механизм подобной работы? В таком случае запись в командной строке выглядит как «telnet – localhost – порт».
Сервер
В данном случае проверить, открыт ли порт, сложнее всего. Поскольку автор исходит из того, что читатели не будут заниматься взломом техники и обладают правами администратора, то и рассматриваться будет соответствующее поведение. Первоначально необходимо обеспечить работу службы, которая будет работать на определенном порте. Для этой цели можно использовать утилиту netcat, благодаря которой можно слушать его работу. Она позволяет использовать протоколы ТСР и UDP, принимая и передавая данные. Говоря о ее преимуществах, необходимо отметить довольно широкие возможности, понятное руководство и легкость использования.
Кстати, для работы с серверами можно использовать и рассмотренную ранее команду telnet, вопрос только в удобстве работы с нею. Ведь может понадобиться провести массовую проверку портов. Ибо если перебирать все вручную, это займет слишком много времени. В этом случае без вариантов – необходимо использовать утилиты. Без них массово проверить, открыт ли порт, хотя и можно, но повлечет потерю времени. При этом работа не является сложной. Необходимо просто добавить определенный хост (как вариант – диапазон ІР), указать, что является объектом исследований, и запустить процедуру. Правда, в этом случае есть негативный момент: такие действия многими системами защиты рассматриваются как DDOS-атака, что влечет за собой бан.