Сканер портов представляет собой программное обеспечение,  предназначенное для нахождения хостов сети, в которых запрашиваемые порты открыты. В основном, его используют в своей работе системные администраторы, чтобы следить за безопасностью своих сетей или же хакеры для  взлома чужих сетей. Процесс нахождения открытых портов называется сканированием портов (поиск множества портов на одном хосте) или сканированием сети (поиск порта на множествах хостов).

Механизм этого процесса основывается на отправке пакетов данных и обработке полученных данных. С помощью сканирования исследуется установленная на компьютере операционная система, активные службы Web, mail и FTP  серверов и их версии. Все службы, которые находятся на хостах, имеют два идентификатора – номер порта и IP-адрес, который определяется самым распространенным Интернет протоколом TCP/IP.  В результате сканирования может быть получен один из трех вариантов ответов:

— порт открыт (соединение с данным портом возможно);
— порт закрыт или запрещен (попытки соединения с портом будут прерваны);
— порт заблокирован (не получено ответа от хоста).


Для открытых портов существует понятие «уязвимость», что означает их частое использование. Именно они чаще всего определяются сканерами, а соответственно, чаще поддаются вредоносным атакам. Уязвимости могут вызывать проблемы с безопасностью и непостоянством в процессе работы программ сервисов или операционной системы, которая функционирует на хосте. Закрытые порты опасны только для операционных систем. А заблокированные вообще не представляют особой опасности.

Существует несколько видов сканирования портов:

— Сканирование для проверки онлайн

Предназначено для выявления рабочей системы  на ориентируемом IP-адресе. Осуществляется при помощи рассылки Echo-сообщений и последующей проработки всех адресов сети. Путем отслеживания Echo-сообщений и используемого трафика, можно обнаружить попытку сканирования. Помимо Echo-сообщений могут использоваться TCP-сегменты с битовым кодом RST. В последнем случае, если исследуемый узел не доступен, в ответ будет получен ICMP пакет с кодом 1.

— Сканирование с генерацией пакета SYN

В данном случае, сканер самостоятельно генерирует IP пакеты, называемые SYN и анализирует ответы на них.  В случае открытости хоста, поступит пакет SYN-ACK. В ответ, хост сканера посылает пакет RST и закрывает соединение. Это наиболее распространенный вид сканирования. Позволяет сканеру полностью контролировать рассылку пакетов и получаемые ответы. В процессе отправки пакетов RST и режиме ожидания соединения, могут возникнуть сбои в работе у сетевых устройств, таких как принтер.

— TCP-сканирование

Когда нет возможности использовать предыдущий метод, применяют более простой тип сканирования под названием TCP, который использует в своей работе функции операционных систем. Для работы с этим типом сканирования не требуется специальных прав доступа. В том случае, если порт открыт, система производит процедуру установления соединения в три этапа и сразу же закрывает его. Если же порт закрыт – выдает код ошибки. Из-за большого количества открытых и сразу же прерванных соединений создается серьезная нагрузка на систему.

— Сканирование с помощью пакета UDP

Принцип работы этого типа сканирования представляет собой отсылку пакета  UDP. Если порт закрыт, то система вышлет ответное ICMP сообщение —  «порт недоступен». Если сообщения не последовало, предполагается, что порт открыт.

Есть вариант использования DNS-запроса. Ответ будет получен в том случае, если для этого порта будет иметься DNS-сервер.

Практикуют также комбинированный метод, состоящий из двух предыдущих. Сначала, посылается UDP-пакет, принимается ICMP-ответ и для портов с результатом  «открыт или заблокирован» осуществляется проверка с использованием DNS-запроса.

— Сканирование с ACK битом

Позволяет определить имеет ли порт фильтрацию и правила работы брандмауэра. Если уровень фильтрации низкий, то пакет с АСК-битом (для уже установленных соединений) пройдет. В обратном случае – нет.

— Сканирование с использованием FIN-пакета

Главный принцип этого сканирования в том, что если порт закрыт и на него поступает FIN-пакет, сервер отошлет в ответ пакет RST. В противном случае – сервер проигнорирует  FIN-пакет.

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

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

Кстати, это тоже интересно:

  1. SSH
  2. DDoS атака
  3. Firewall ( файерволл )
  4. FreeBSD