SSL VPN — SENETSY
Статьи и заметки сотрудников
23 сентября 2009
Автор: Павел Лунин

SSL VPN

SSL VPN — это такой чудо-девайс для организации удаленного доступа в какую-нибудь внутреннюю сеть безо всяких Remote-VPN-клиентов, их установки, настройки, L2TP over IPSec, правки виндового реестра и прочих кошмаров сисадмина. Вернее, SSL VPN — это технология, а девайс по-джуниперовски называется Secure Access. Но мы же, в конце концов, не зоологи, чтобы париться классификацией, поэтому в околоджуниперовском обиходе термины Secure Access и SSL VPN — это почти синонимы.

Итак, идея в следующем.

Сначала вы заходите любым браузером хоть с blackbery, хоть с телефона через интернет, как обычно, почти как я на Яндекс, на веб-морду этого чудо-девайса (см. картинку в начале поста) и логинитесь при помощи какого-нибудь из способов. Способов дофигища: логин-пароль, пользовательский сертификат, разного рода SecureID, всяческие их комбинации. Да, конечно, это отлично интегрируется с Active Directory, RADIUS, LDAP и еще миллионом видов серверов аутенитификации. Естественно, через интернет все передается в виде SSL, то есть надежно, безопасно и не больно.

Как до, так и после аутентификации вас могут проверить на предмет End Point Security. То есть выяснить, той ли системы у вас гранаты какая у вас ОС, установлен ли антивирус, давно ли у него обновлялась база, не запущен ли какой-нибудь известный кейлогер, или даже просто, есть ли у вас на компьютере файл в нужном месте с нужной чексуммой или процесс (тоже с ческуммой). Файл, если есть желание, можно попробовать удалить, а процесс прибить/запустить. Это называется Host Checker. Работает при помощи ActiveX, если оного нету, или у вас Linux, то при помощи Java. Все, кстати, кросплатформенно до жути — все скриншотики делались как раз из-под Линукса.

Логично возмутиться, дескать, как же это — будут тут еще всякие на моем компьютере файлы проверять. Опять же, в каком-нибудь интернет-кафе — кто же это там даст-то их проверять? Ответ: ну и не надо. Не дали проверить, значит проверку не прошли. Значит компьютеру пользователя доверять мы можем только частично. Значит сделаем оргвыводы и дадим ему доступ только туда, куда не очень страшно. А на служебном ноутбуке — можно и файлы проверить, и антивирус и еще капслоком поморгать, и тогда уж ходи куда хошь.

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

После всего этого вы попадаете к себе «домой»:

Дома есть несколько инструментов доступа. Каких именно — определяется администратором исходя из вашей роли. Что позволено бухгалтеру не позволено программеру.

Первый инструмент — это доступ к внутренним веб-ресурсам. Веб-интерфейс к веб-интерфейсу. Ваш браузер через SSL общается с внешним IP-интерфейсом SA, а SA — своим внутренним IP-интерфейсом разговаривает с внутренними же корпоративными веб-сервисами. Уже без всякого SSL (ну или тоже с SSL, если очень надо).

Выглядит это так:

Красивые картинки в данном случае никакого отношения к SSL VPN не имеют. Это всего лишь морда cacti — рисовалки графиков со сбором данных по SNMP и не только — типа MRTG, но круче и мудренее. К SSL VPN имеет отношение лишь панелька с логотипом Juniper Networks в левом верхнем углу. Это ее Secure Access пририсовал: вернуться «домой», добавить текущую страницу в закладки и пр. Все остальное — как бы обычная веб-страница.

Технически SA для достижения такого уровня мировой гармонии лезет в HTML-код и меняет там все внутренние ссылки на нечто вида https://sslvpn.domain.ru/dana-na/internal-page-id и в таком виде скармливает код вашему браузеру. Причем эти page-id можно сохранять в виде внутренних URL, а можно — наоборот превращать в абракадабру, чтоб враги не догадались. Делает он это весьма эдвансно, так что работают даже смены window.location в JavaScript. Для эстетов есть специальные rewrite policy, позволяющие тонко управлять процессом.

Разумеется, есть возможность не давать пользователю самостоятельно серфить весь внутренний веб, а разрешить ему ходить только по предопределеным админским закладкам. Создавать пользователям свои закладки тоже можно как запретить, так и разрешить. Естественно, помимо всего этого есть еще и access-листы, которые могут разрешить/запретить все что угодно на основе каких угодно критериев.

Дальше у нас есть веб-морда к сетевой файловой системе SAMBA/CIFS и NFS (последнее — это для тех, кто знает, что это такое). Вебморда довольно крутая, кстати. Удобнее многих стандартных файловых менеджеров.

SA логинится на samba-сервер, конечно, с использованием уже введенных данных аутентификации пользователя (это называется модным словом Single Sign On — SSO). То есть сто раз вводить логин-пароль не надо. Хотя, если админу очень хочется, можно и это сделать. Кстати, в случае с веб-ресурсами всякие NTLM, разумеется, тоже поддерживаются.

Можно скачивать несколько файлов в виде единого архива. Архивация, разумеется, онлайн.

Можно и наоборот — закачивать архив, а на сервер положится его содержимое. Правда, есть ограничение. Закачивать файлы больше 500 мегов нельзя. Но в этом виноват TLS (это такой стандарт транспорта данных поверх SSL), а не Juniper.

Следующим по списку у нас идет т. н. терминальный доступ. Во-первых это Telnet- и SSH-клиенты, реализованные в виде Java-апплетов, во-вторых — способ запуска виндового RDP-клиента с туннелированием его трафика. Последнее работает только у тех, у кого этот стандартный виндовый RDP-клиент есть. То есть под Linux’ом не работает. Разумеется, в Secure Access есть масса других способов прокидывания RDP, просто этот — самый быстрый для виндовых пользователей.

Вот так выглядит telnet-сессия:

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

Дальше еще интереснее.

Для начала самое простое. То есть полноценный IP-доступ, которого вам, конечно же, очень хочется (зачем-то). Ну, хочется, так хочется — нет проблем.

Это java-апплет с горыдм названием Network Connect (далее NC). Соответственно, на компьютере пользователя нужна java-машина. Впрочем, на ПК, хоть под виндой, хоть под чем, это давно не проблема. На КПК и мобилках — по-разному.

Поскольку речь идет о полноценном IP, на компьютере нужно создать виртуальный интерфейс и вмешаться в роутинг — следовательно, программке нужны соответствующие права. Не все время, а только однажды: при первом запуске NC устанавливается на манер обычной программы, и даже появляется пункт в меню «Пуск». Если дело обстоит под Линуксом — sudo спросит рутовый пароль, если под виндой — никто ничего не спросит, но без админских прав просто не уставливается. Как под MacOS X — нам пока неизвестно за неимением оной в арсенале, но как-то, должно быть, похожим образом. Для второго и последующих запусков никаких админских прав уже не нужно.

Для работы под Linux нужен драйвер tun (универсальный туннельный интерфейс) — в большинстве дистрибутивов предустановленное ядро включает соответствующий модуль, так что все работает out of box без всяких выкрутасов. Проверено на Slackware, Debian Lenny, Centos и RHEL.

NC — это, меж тем, наирасчудесный VPN-клиент. Несмотря на серый цвет и вообще всю внешнюю неприглядность, умеет побольше иных standalone-творений криворуких разработчиков.

— Установка полностью автоматическая. Пользователю нужно только нажать кнопку Start в личном аккаунте (по воле админа можно и этого не делать — после входа сам запустится). Впрочем, желающие могут также скачать инсталлятор из админского интерфейса SA и раздавать его пользователям как отдельный файл с помощью одного из централизованных механизмов массового осчастливливания.

— NC не нужно настраивать. То есть нужно, но один раз для всех пользователей. Все настройки пользователь засасывает с Secure Access и ничего руками не делает. Если что, NC умеет и логи для траблшутинга тоже скидывать на SA.

— NC может работать как поверх ESP (как IPsec, что несколько веселее с точки зрения производительности), так и через SSL с автоматическим переключением с первого на второе, если вдруг с ESP не сложилось. SSL в отличии от ESP без труда пролазит через все файрволы, наты и т. д. Что до производительности, то при сколько-нибудь нормальном интернете через SSL вполне приемлемо работает даже VoIP. Был опыт разговора по такой штуке с Москвой из Лондона, из Эйндховена и из Читы. Внутри Москвы мы и вовсе регулярно пользуемся (например, чтобы из дома за счет конторы по межгороду звонить. Шутка).

— Поддержка технологии GINA. То есть он умеет запускаться до виндового приглашения в систему и используя логин-пароль от домена AD, коннектиться к SA, создавать туннель, и пользователь, логинясь в систему, попадает сразу уже в домен со всеми его настройками, правами и сетевыми папками, будто никуда и не уходил из офиса.

— Поддержка мультикаста, умение копировать DiffSerf-метки из верхнего пакета в нижний и прочие приятные мелочи.

Разумеется, для разных ролей можно настраивать разные маршруты, можно объединять правила для нескольких ролей, и конечно же, как и все остальные виды доступа, все это хозяйство прикрывается access-листами.

Кроме того, каждой роли адреса выдаются из своего пула, и трафик, помимо всего прочего, можно ограничивать отдельным файрволом внутри сети. Кстати, сделать каждой роли свой внутренний IP-адрес можно и при «не full IP»-доступе. Бухгалтеры и программеры будут обращаться к файловому серверу с разных source IP даже из веб-интерфейса (см. описание предыдущих методов доступа).

Дальше еще веселее. Штука под названием Secure Application Manager (SAM). Зверская и непонятная простому человеку вещь.

Бывает двух видов. JSAM (от слова Java) и WSAM (от слова Windows). Вот как выглядит аплет JSAM.

Правда ведь, ничего непонятно?

JSAM вешается на loopback-интерфейс компьютера пользователя (стандартный 127.0.0.1 или создает еще один адрес из 127.0.0.0/8) и слушает на нем какой-то заранее определенный TCP-порт. Программа пользователя обращается к 127.0.0.1 по этому порту, JSAM ловит пакеты, заворачивает их в SSL-туннель и отправляет на ту сторону. Там, соответственно, трафик разворачивается и отправляется какому-то (к какому мы настроили) серверу.

Понятно, что ни один нормальный пользователь в здравом уме не станет обращаться ни к какому loopback-интерфейсу, благо, он не знает, что это такое. Для этого JSAM умеет записывать в файл hosts строчки вида

server.your-domain.lan 127.0.0.1

То есть пользователь просто обращается к доменному имени, а попадает на сервер на обратной стороне SSL-туннеля. Полезно для тех, кто ездит с ноутбуком. Один раз написали доменное имя почтового сервера в аутлуке и что в офисе, что на Канарах — все одно. Да, конечно, JSAM’у для этого нужны права на запись в hosts. Админские права ни для установки, ни для работы не нужны.

Работает это все только с простым TCP. То есть всякие FTP active mode таким способом сделать не получится.

WSAM, несмотря на похожее название, делает все совсем иначе. Он подкладывает под конкретное приложение свой API сокетов, перехватывает с его помощью трафик и потом упаковывает его таким же способом. Разница в том, что все это работает не только для TCP и можно (нужно) указать конкретную программу, трафик которой мы собираемся туннелировать. Разумеется, работает WSAM только под виндой.

Зачем нужен SAM? Как и все остальные «не full IP»-методы — для ограничения возможностей несанкционированного доступа. За неимением IP внутри сети, к компьютеру пользователя нельзя обратиться. Пользователь — тоже не может ни пинговать, что ни попадя, ни сканить порты, ни распространять и получать всякую заразу и т. п. В зависимости от типа рабочего места (служебный ноутбук, домашний комп, мобильное устройство, интернет-кафе и пр.) все эти ограничения могут быть совсем не лишними. Да и зачем, скажите, пользователю из интернет-кафе получать полноценный IP-доступ во внутренню сеть? Даже если вам все равно — админам кафе не все равно.

Разумеется, это не все возможности Secure Access. Он еще умеет давать SSL-интерфейс к почте; умеет чистить кэш браузера и ОС после завершения сеанса; умеет делать на время сеанса виртуальные рабочие пространства с удалением всех файлов и всего чего только можно после завершения, чтобы пользователь, поработав с чужого компьютера, при всем желании не мог забыть на рабочем столе какой-нибудь не тот файл.

Кроме того, есть замечательная функция Secure Meeting. Это нечто вроде Microsoft NetMeeting, только web based. Пользователи могут расшаривать свой рабочий стол, давать другим пользователям порулить им и пр. В совокупности с фичей support meeting (юзеру не надо иметь постоянного логина-пароля) бывает очень полезно, чтобы, скажем, протраблшутить клиентское устройство, к которому доступ есть только через консоль. Словом, весьма полезная для техподдержки вещь. Но про это и про админский интерфейс, пожалуй, как-нибудь в другой раз.

Ну и да, пользовательский интерфейс можно кастомизировать:

У нас, кстати, есть свой Secure Access, и мы им сами регулярно пользуемся. И на нем есть роль demo для тех, кто хочет потрогать руками. Ну и отдельный SA2500, чтобы давать клиентам поиграть, у нас тоже есть. Если что — звоните, пишите.

Наверх
Остались вопросы? Нужна бесплатная консультация?
Свяжитесь с нами ​любым ​удобным для вас способом и ​мы предложим​ ​оптимальное решение вашей задачи
Если вы обращаетесь по вопросам, связанным с уже имеющимся у вас оборудованием или программным продуктом, пожалуйста пришлите его серийный номер
Написать нам