Удаленная проверка состояния IP-порта - PullRequest
1 голос
/ 24 сентября 2008

Я нашел статью о получении активных соединений TCP / UDP на компьютере.

http://www.codeproject.com/KB/IP/iphlpapi.aspx

Однако моя проблема в том, что мне нужно иметь возможность определять активные соединения удаленно - чтобы увидеть, работает ли конкретный порт или прослушивает его, не вмешиваясь в работу машины.

Возможно ли это?

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

Есть мысли?

Ответы [ 3 ]

4 голосов
/ 24 сентября 2008

Nmap - это то, что вы ищете.

3 голосов
/ 24 сентября 2008

Невозможно узнать, какие порты открыты без ведома удаленного компьютера. Но вы можете определить информацию, не запуская программу на порту, зная ее (то есть без вмешательства в программу).

Использовать SYN-сканирование:

Для установления соединения TCP использует трехстороннее рукопожатие. Это можно использовать, чтобы узнать, открыт порт или нет, без ведома программы.

Рукопожатие работает следующим образом:

  1. Клиент выполняет активное открытие, отправляя SYN на сервер.
  2. Сервер отвечает SYN-ACK.
  3. Обычно клиент отправляет ACK обратно на сервер. Но этот шаг пропущен.

SYN сканирование является наиболее популярной формой TCP сканирование. Вместо того, чтобы использовать сетевые функции операционной системы, сканер портов генерирует необработанный IP сам пакеты и контролирует ответы. Этот тип сканирования также известный как "полуоткрытое сканирование", потому что на самом деле он никогда не открывает полный TCP подключение. Сканер портов генерирует пакет SYN. Если целевой порт откройте, он ответит SYN-ACK пакет. Хост сканера отвечает пакет RST, закрывающий соединение до завершения рукопожатия.

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

Источник Википедия

Как упомянуто ниже, я думаю, что nmap может выполнять сканирование SYN.

Использование сокетов для сканирования портов TCP:

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

Например, из командной строки или терминала:

telnet google.com 80

UDP-сканирование портов:

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

1 голос
/ 28 сентября 2008

neouser99 (и др.) Предложил NMAP . NMAP очень хорош, если все, что вы пытаетесь сделать, это обнаружить порты, открытые на удаленной машине.

Но, исходя из звуков вашего вопроса, вы на самом деле пытаетесь определить, какие порты открыты и на удаленной машине. Если вам нужно общее решение для мониторинга, включая подключенные порты, вы можете установить сервер snmp на удаленной машине. Существует два MIB , которые позволяют проверить состояние порта: TCP-MIB :: tcpConnectionTable и UDP-MIB :: udpEndpointTable.

Демон (сервер), поставляемый в net-snmp , скорее всего, получил поддержку этих MIB.

...