Мне нужно проверить, может ли удаленный хост достичь определенного порта. Во время тестирования служба, привязанная к этому порту, будет отключена.
Возможные проблемы, которые может решить тест:
Я пробовал телнет. Однако telnet возвращает ненулевой код выхода, если служба не привязана к этому порту. Какие могут быть варианты?
ОБНОВИТЬ :
Разве у нас нет способа сделать это с помощью Nmap? Любой вывод с отфильтрованным состоянием должен означать красный флаг.
Пример команды: $ nmap -v 120.114.24.56 -P0 -p 8080
Ссылка: http://nmap.org/book/man-port-scanning-basics.html
Шесть состояний порта, признанных Nmap - (отмеченные красным в идеале должны быть для нас красным флагом)
открыто
Приложение активно принимает TCP-соединения, дейтаграммы UDP или ассоциации SCTP на этом порту. Их поиск часто является основной целью сканирования портов. Люди, заботящиеся о безопасности, знают, что каждый открытый порт - это путь для атаки. Злоумышленники и пентестеры хотят использовать открытые порты, в то время как администраторы пытаются закрыть или защитить их с помощью брандмауэров, не препятствуя работе законных пользователей. Открытые порты также интересны для сканирования, не связанного с безопасностью, поскольку они показывают службы, доступные для использования в сети.
закрыто
Закрытый порт доступен (он принимает пробные пакеты Nmap и отвечает на них), но приложение не прослушивает его. Они могут быть полезны для демонстрации того, что хост подключен к IP-адресу (обнаружение хоста или сканирование ping), а также как часть обнаружения ОС. Поскольку закрытые порты доступны, возможно, стоит сканировать позже, если некоторые из них откроются. Администраторы могут захотеть заблокировать такие порты с помощью брандмауэра. Затем они появятся в отфильтрованном состоянии, о чем будет сказано ниже.
фильтрованный
Nmap не может определить, открыт ли порт, потому что фильтрация пакетов не позволяет его зондам достичь порта. Фильтрация может осуществляться с помощью специального устройства межсетевого экрана, правил маршрутизатора или программного обеспечения межсетевого экрана на основе хоста. Эти порты расстраивают злоумышленников, поскольку предоставляют очень мало информации. Иногда они отвечают сообщениями об ошибках ICMP, такими как тип 3, код 13 (пункт назначения недоступен: связь запрещена административно), но гораздо более распространены фильтры, которые просто отбрасывают зонды без ответа. Это заставляет Nmap повторить попытку несколько раз на случай, если зонд был сброшен из-за перегрузки сети, а не из-за фильтрации. Это резко замедляет сканирование.
нефильтрованный
Нефильтрованное состояние означает, что порт доступен, но Nmap не может определить, открыт он или закрыт. Только сканирование ACK, которое используется для сопоставления наборов правил брандмауэра, классифицирует порты в этом состоянии. Сканирование нефильтрованных портов с помощью других типов сканирования, таких как сканирование окон, сканирование SYN или сканирование FIN, может помочь определить, открыт ли порт.
открыть | отфильтровано
Nmap помещает порты в это состояние, когда не может определить, открыт порт или отфильтрован. Это происходит для типов сканирования, при которых открытые порты не отвечают. Отсутствие ответа также может означать, что фильтр пакетов отбросил зонд или любой ответ, который он вызвал. Таким образом, Nmap не знает наверняка, открыт порт или фильтруется. Сканирование UDP, IP-протокол, FIN, NULL и Xmas позволяет классифицировать порты таким образом.
закрыто | отфильтровано
Это состояние используется, когда Nmap не может определить, закрыт порт или отфильтрован. Он используется только для сканирования в режиме ожидания IP-идентификатора.
Это сложно (если не невозможно) сделать в зависимости от вашего доступа к ресурсам.
Если это сервер на базе Unix, я бы запустил tcpdump на сервере (таким образом, чтобы он слушал только трафик на интересующем вас порту), а затем попытался бы подключиться к нему через Telnet. Telnet, конечно, выйдет из строя, но, по крайней мере, вы должны увидеть попытку входящего сервера через tcpdump [даже если только входящий трафик, поскольку нет ничего, чтобы ответить]. Это будет означать, что трафик попадает в коробку - это, конечно, не означает, что на коробке нет брандмауэра, препятствующего работе программы.
Если сервер уже ничего не слушает, я обычно просто запускаю службу на порту. Однако современные брандмауэры могут использовать проверку пакетов, поэтому нет гарантии, что то, что вы хотите прослушивать через порт, будет работать.
Вы можете сделать это с помощью nc like (например, для TCP на порту 6667)
nc -l 6667
Затем попробуйте telnet или nc на отправляющей стороне. Если у вас нет nc, вы можете создать простой прослушиватель сокетов с помощью perl и, например, IO :: Socket :: Inet, или с помощью python или powershell, в зависимости от платформы.
Для UDP вы можете использовать nc с флагом -u, но вы не можете проверить это с помощью telnet, но nc также работает на отправляющей стороне.