Консультация по безопасной работе через удаленный доступ
08/04/20
Заведующий кафедры сетевой безопасности Учебного центра «Информзащита» Владимир Лепихин рассказывает о безопасной работе через удаленный доступ.
Разновидности удалённого доступа
Под удалённым доступом часто подразумевают обычное подключение к какому-то узлу сети, например, к своему рабочему компьютеру из дома. При этом механизм или технология подключения могут быть различны и сводятся к следующим ситуациям:
- Прямое подключение работает в том случае, если клиент (пользователь) и удалённый узел достижимы друг для друга в контексте IP-маршрутизации и трансляции адресов. То есть фактически это одно соединение.
- В некоторых случаях требуется выполнить подключение к какому-то промежуточному узлу, например, к терминальному серверу, а затем уже выполняется подключение к требуемому узлу. Здесь уже требуется два соединения.
- Наконец, могут быть использованы различные технологии туннелирования трафика.
Прямое подключение
Прямое подключение – это тривиальный случай. Клиент подключается напрямую к серверу, расположенному, например, в «облаке» или в сегменте ДМЗ корпоративной информационной системы. Обычно, в зависимости от операционной системы узла-сервера, для удалённого доступа используются прикладные протоколы MS RDP или SSH. Указанные протоколы имеют встроенные возможности обеспечения конфиденциальности, целостности и аутентичности, однако при прямом подключении этого может быть недостаточно.
Главная угроза такого варианта удалённого доступа в том, что прикладной сервис, его обеспечивающий, «остаётся один на один» с внешними нарушителями. При этом, как правило, встроенных возможностей по защите атак у него нет. Можно выделить следующие наиболее актуальные варианты атак на перечисленные выше сервисы удалённого доступа:
- подбор учётных записей;
- использование уязвимостей реализации;
- выведение из строя.
Самый популярный класс атак – это подбор учётных записей. Помимо реализации угрозы несанкционированного доступа в случае успешного подбора, этот вариант атак имеет ряд побочных эффектов, например, создание условий для срабатывания защитных механизмов. Ведь после нескольких неудачных попыток учётная запись может быть заблокирована.
Подбор необязательно может осуществляться методом интерактивного перебора логинов и паролей, например, путём использования уязвимостей в OpenSSH (CVE-2016-6210 и некоторые другие) можно на основе времени ответа сервера определить существует или нет пользователь в системе.
В ходе атаки вначале определяется пороговое значение времени отклика для несуществующего пользователя, а затем время отклика для тестируемого пользователя сравнивается с указанным значением.
Другой вариант атак – это использование уязвимостей реализации. Например, в 2019 году было обнаружено сразу четыре уязвимости в MS RDP (Remote Desktop Service): CVE-2019-1181 , CVE-2019-1182 , CVE-2019-1222 и CVE-2019-1226 [2] . Их использование злоумышленником может привести к запуску произвольного кода и получению контроля над объектом атаки. Кроме того, вредоносная программа, которая использует данные уязвимости, может самостоятельно распространяться среди уязвимых компьютеров без вмешательства со стороны пользователя.
Наконец, сервис удалённого доступа может быть выведен из строя также путём использования уязвимостей реализации или путём исчерпания ограниченных ресурсов, например, количества соединений.
Исходя из вышесказанного, можно дать следующие рекомендации по повышению защищённости сервисов удалённого доступа:
- Смена номера порта. Часто попытки подбора учётных данных производятся после запуска сканеров, которые ищут сервисы SSH или RDP на стандартных портах.
- Блокировка по IP-адресу после нескольких неудачных попыток входа. Это предотвратит создание условий для срабатывания блокировки учётной записи.
- Использование стойких алгоритмов шифрования и хэширования, при использовании TLS (как в случае с MS RDP) следует оставить только последнюю версию TLS, отключив возможность использования предыдущих.
- Решить вопрос с проверкой клиентом открытого ключа или сертификата сервера. Следует помнить, что единственный гарантированный способ проверки подлинности сертификата – это проверка его хэша.
- Отключение/переименование учётных данных по умолчанию. Для SSH – запрет подключения с использованием учётной записи – root.
- Отслеживание и установка обновлений.
Отдельно для сервиса MS RDP можно порекомендовать включить сетевую аутентификацию (network level authentication). По умолчанию, можно подключиться к узлу с использованием RDP, не вводя логин и пароль и увидеть приглашение удаленного рабочего стола, где уже и потребуется указать учётные данные. Это облегчит для нарушителя возможность создания ситуации отказа в обслуживании. Поэтому рекомендуется включить параметр групповой политики «Требовать проверку подлинности пользователя для удаленных подключений путем проверки подлинности на уровне сети».
Что касается SSH, то для него рекомендуется дополнительно:
- Включить режим аутентификации клиента по открытому ключу
- Открывать и закрывать порт по запросу, используя так называемые программы-нокеры
Подключение через промежуточный узел
Чаще всего прямое подключение к требуемому узлу невозможно. В этом случае могут быть использованы промежуточные узлы. Здесь возможны два варианта:
- Использование тех же прикладных сервисов, что и в случае прямого подключения. Но для того, чтобы добраться до нужного узла, потребуется отдельное соединение. Существующие решения типа Citrix или Remote Desktop Gateway компенсируют возможные неудобства, связанные с дополнительным подключением.
- Два встречных подключения, состыкованные через различные сервисы (HTTP, HTTPS, SSH). В качестве примера можно привести популярные сервисы типа TeamViewer, Ammyy и др.
При таком варианте удалённого доступа к перечисленным выше угрозам безопасности добавляются:
- Проблема доверия промежуточному узлу. Несмотря на использование сквозного шифрования, вы доверяете передачу данных промежуточному узлу.
- Локальные атаки, например, подключение к чужим сессиям, извлечение данных из области памяти сессий других пользователей.
Но эти решения обладают дополнительными возможностями:
- Встроенные механизмы защиты
- Надёжные методы аутентификации
- Централизованное управление
- Гибкость
В качестве рекомендаций можно посоветовать:
- Контроль использования сервисов типа TeamViewer, Ammyy
- Соблюдение парольной политики
Использование туннелей
Туннелирование применительно к сетевому взаимодействию – это построение логического соединения между двумя конечными точками посредством вкладывания одного протокола в другой. От многоуровневых сетевых моделей (таких как OSI или TCP/IP) туннелирование отличается тем, что инкапсулируемый протокол относится к тому же или более низкому уровню, чем используемый для построения туннеля. Для построения туннелей обычно используются протоколы сетевого и прикладного уровней. Комбинация туннелирования и шифрования применяется при построении защищённых виртуальных частных сетей (VPN).
Таким образом, применение механизмов туннелирования для удалённого доступа можно свести к двум вариантам:
- виртуальная частная сеть «Client to Site»;
- Использование прикладных сервисов.
Для построения виртуальной частной сети «Client to Site» имеется множество решений, как коммерческих, так и свободно-распространяемых. В частности, в качестве примера можно привести совместное использование протоколов L2TP и IPsec.
Этот вариант основан на использовании встроенных возможностей операционных систем и доступен даже на смартфонах. Кроме того, для клиента становится доступной вся корпоративная информационная система, что добавляет дополнительные возможности по использованию внутренних ресурсов.
Один из самых популярных вариантов использования защиты данных на прикладном уровне - «проброс» порта. В общем случае это предполагает наличие клиентской части (VPN-клиент на рисунке ниже) и сервера VPN.
Клиент VPN устанавливает cоединение с сервером с использованием защищённого протокола (TLS или SSH) и отрывает серверный порт на локальной машине. Клиент сервера терминалов устанавливает соединение с этим портом (на схеме - 127.0.0.1:6231), после чего сервер VPN соединяется с сервером терминалов и начинает передавать данные между клиентом и сервером.
В принципе, на основе инкапсуляции прикладных данных в прикладной же протокол SSH (или TLS), можно даже построить полноценный VPN. Для этого, например, можно связать через SSH друг с другом два сервера pppd и тогда у нас в поле данных будут передаваться по сети PPP пакеты. Однако такое решение вряд ли можно назвать удачным с точки зрения надёжности и производительности. К преимуществам данного метода можно отнести простоту настройки и способность работать через межсетевые экраны любого типа. Эта методика применяется и в пакете OpenVPN, в котором в качестве протокола защиты используется TLS (http://www.openvpn.net), а трафик IP «упаковывается» в TLS соединение.
Существует прикладное ПО, позволяющее при помощи https управлять удалёнными машинами через Web-консоли из браузера. Современные подходы к Web-программированию позволяют непосредственно из браузера по TLS общаться с межсетевым экраном, на котором поднят специализированный Web-сервер, переадресующий, например, команды клиента по протоколу RDP на внутреннюю Windows машину. Такой вариант удалённого доступа называется Web VPN или Web-портал.
Выводы
Из перечисленных выше вариантов самым удобным и надёжных с точки зрения безопасности является «Client to Site». При его настройке, однако, следует соблюдать рекомендации по безопасности, например, использование сертификатов для аутентификации устройств и приемлемых методов аутентификации пользователей.