Сканирование портов
Регулярно в форумах, и не только в них, поднимается вопрос — «Меня сканируют! Что мне делать?» Причиной возникновения данного вопроса являются модули детектирования атак, которые разработчики персональных файрволов встраивают в свои продукты. Насколько вообще опасно данное явление, чего пытается достичь атакующий, и была ли собственно атака? Для того, чтобы понять это, попробуем сначала разобраться — что такое порты, что такое сканирование этих портов и каким образом выполняется проникновение в систему через сеть.
Для начала — что такое порт. Порт — это поле в tcp- или udp-пакете, идентифицирующее приложение-получателя (и отправителя, в пакете этих полей два) пакета.
Формат пакета данных TCP-протокола:
Формат пакета данных UDP протокола:
Каким образом приложение работает с сетью? Приложение обращается к операционной системе с запросом на создание сокета. Операционная система регистрирует, какое приложение обращается к нему с этим запросом, и формирует привязку приложения к сокету — выделяет порт. Этот порт служит для обмена информацией по сетевым протоколам, и вся информация, полученная из сети для порта с этим номером, в дальнейшем передается нужному приложению.
Сокет — это название программного интерфейса для обеспечения информационного обмена между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.
Что из этого вытекает? Из этого вытекает, что если прибыл пакет на порт, которому не сопоставлено никакое приложение, то пакет будет просто выброшен операционной системой, и обрабатываться не будет.
С какой целью выполняется сканирование портов? А вот с этой целью и выполняется — определить, какие порты целевого хоста (хост — узел сети, любая система, участвующая в сетевом обмене) закреплены за приложениями. Сканирование есть подготовительная операция, разведка периметра. После того, как будет составлен список активных («открытых») портов, начнётся выяснение — какие именно приложения используют эти порты.
После определения приложений, а иногда даже их версий, фаза разведки заканчивается, и начинается фаза активных «боевых действий» против вас — атака. Не обязательно, что после первой фазы (разведки) сразу начнётся вторая. Зачастую через некоторое время разведка повторяется, причём с других узлов сети. Это своего рода проверка бдительности «стражи» — администраторов. Либо не начнется, если не обнаружено ни одной потенциально уязвимой точки воздействия. Следует понимать, что сканирование само по себе ничем не может Вам повредить — повредить могут последующие действия, если они последуют.
Каким образом выполняется атака? Как правило — для этого используются уязвимости сетевых сервисов (сетевой сервис — приложение, обслуживающее запросы из сети). Эксплуатация уязвимости сервиса основана на посылке ему пакета данных, сформированного таким образом, что наше приложение обработает его некорректно и его штатная работа будет нарушена. Последствия — прекращение обслуживания сервисом правильных запросов (DoS — denial of service, отказ в обслуживании), или выполнение сервисом действий, которые он выполнять не должен (например, Remote Code Execution — возможность злоумышленнику запустить вредоносный код на цели).
Какие сервисы могут быть атакованы таким образом? Означает ли это, что если Вы запустили браузер, то его могут атаковать из сети? Нет. Атаковать подобным образом можно «серверные» приложения - то есть те, которые слушают сеть и ожидают подключения клиентов извне. Браузер сам является клиентским приложением, в общем случае он не принимает подключений, поэтому таким образом атакован быть не может. Опасаться следует, если на Вашем компьютере запущен FTP-сервер, HTTP-сервер и так далее.
Правда, здесь нужно упомянуть, что существует еще один вид сетевой угрозы, с которой пользователь не может сделать практически ничего. Это — флуд (flood) — одна из разновидностей DoS-атаки. Цель её — «затопить» Вас мусорным трафиком, чаще всего с несуществующих адресов, и лишить Вас или Ваши сервисы возможности отправлять или принимать полезную информацию. Она не угрожает Вашему компьютеру ничем, кроме временной невозможности работать в сети. Если Вы обнаружили, что Вас пытаются «зафлудить» — нужно обязательно сообщить об этом провайдеру. Других вариантов решения этой проблемы нет.
Что мне делать, если мой файрвол рапортует о сканировании? Давайте подумаем. Сканированием определяется наличие приложений, принимающих запросы из сети. Соответственно, если мы не выставляли никаких приложений наружу — беспокоиться вообще не о чем. Просто еще раз проверяем, что файрвол действительно настроен на блокирование всех входящих запросов, и забываем про рапорт.
Если такие приложения есть (например, вы содержите у себя FTP-сервер), то здесь тоже практически нет смысла напрягаться — мы ведь добровольно выставили сервер в общий доступ. Беспокоиться следовало на этапе планирования сервера. Просто соблюдаем общие рекомендации — использовать наиболее новую версию сервера, не предоставлять пользователям больше прав, чем им нужно, отключить ненужные функции сервера, по возможности — запускать сервер от имени ограниченного пользователя. Также возможно использование систем обнаружения вторжений (IDS, Intrusion Detection System), однако их использование выходит за рамки данного материала. Заметим только, что таковые системы основаны на отслеживании обращений к сетевым сервисам извне, и определении потенциально опасных запросов по некоторым критериям. Пример такой системы — SNORT (www.snort.org).
А была ли атака? Еще один часто задаваемый вопрос звучит примерно так: «Почему, когда я подключаюсь к FTP-серверу, файрвол начинает жаловаться на сканирование со стороны FTP-сервера?» Типичный пример ложного срабатывания. Рассмотрим, как работает FTP-протокол. В FTP-протоколе используется не одно соединение, а два — одно из них управляющее, второе непосредственно передает данные. Первое (управляющее) открывает клиент — он подключается на порт 21 сервера. Второе подключение зависит от режима работы клиента. Если клиент в активном режиме, то он передает серверу номер порта, на который сервер должен подключиться, чтобы открыть соединение для передачи данных. В пассивном сервер говорит клиенту, на какой порт клиент должен подключаться, чтобы открыть соединение для передачи данных.
Как следует из этого описания, в активном режиме FTP-сервер открывает подключение к клиенту. Файрвол, а многие из них известные параноики, вполне может реагировать на это, как на попытку атаки.
Подведём итоги: сетевая атака в большинстве случаев представляет собой атаку на какой-либо доступный из сети сервис на вашем компьютере. Если такого сервиса у Вас нет — можно не беспокоиться, что кто-то Вас «взломает». В этом случае опасаться следует других угроз — вирусы, malware (нежелательные программы), и другие внутренние воздействия. Рекомендации по предотвращению — стандартны и описаны много раз. Установите антивирус, регулярно его обновляйте, регулярно устанавливайте обновления операционной системы, не запускайте неизвестные Вам программы и так далее. Но даже и в этом случае наличие персонального файрвола на компьютере может помочь Вам в случае, когда антивирус или обновления операционной системы ещё не в состоянии блокировать новые угрозы. Просто всегда внимательно читайте, что именно предлагает Вам сделать та или иная программа, и старайтесь понять, а нужно ли, чтобы это действие действительно было выполнено.
Хотим отметить, что по умолчанию в настройках Windows систем для работы с приложениями в локальной сети, есть открытые для внешнего доступа «серверные» сервисы, то есть те к которым можно обратится с другого компьютера. Поэтому не стоит отключать встроенный брандмауэр (файрвол), либо не пренебрегайте установкой сторонних продуктов подобной функциональности.
|