Сергей Яремчук
Создаем VPN с помощью SSL-Explorer
Виртуальные частные сети в течение последних лет стали очень популярными и среди технологий, направленных на обеспечение безопасности, занимают третье место после антивирусов и межсетевых экранов. Именно им бизнес часто полностью доверяет свои секреты.
Использование VPN (Virtual Private Network) позволяет организовать доступ к корпоративным ресурсам при работе через небезопасные сети. Во время построения виртуальной частной сети обычно возникает ряд проблем, и для окончательного принятия решения необходимо ответить на ряд вопросов. Какую реализацию использовать: специализированное устройство или программу на универсальном оборудовании? Первые обладают хорошей производительностью, но их цена высока. К тому же очень часто компания уже имеет налаженную сеть, которую не сильно хочется перестраивать при появлении филиалов, в которых подчас стоит один-единственный компьютер. Начальство на такую серьезную трату может попросту не пойти. Программные решения, не смотря на существенно меньшую цену, а подчас и бесплатность, также не лишены недостатков. Самыми главными являются зависимость от операционной системы и сложность в настройке. Впрочем, если первую проблему можно решить, например, при помощи OpenVPN [3], которая успешно работает под управлением Linux, Windows, Mac OS X, различных вариантов BSD и Solaris. То вот с настройкой в филиалах, как правило, не имеющих штатного системного администратора, могут возникнуть проблемы. И самое главное – оба варианта не всегда могут помочь с «блуждающими» менеджерами, которые для доступа к ресурсам корпоративной сети вынуждены использовать чужие либо заведомо слабозащищенные компьютеры. Но выход есть.
Проект SSL-Explorer
Созданная в 2001 году английская компания 3SP Ltd ведет разработки в сфере безопасности сетевой связи, в частности создание различных SSH-решений с открытым исходным кодом, работающих на Java-платформе и ориентированных для применения в сетях уровня предприятия. Основным продуктом является SSL-Explorer, представляющий собой решение для организации SSL VPN, работающее по клиент-серверной схеме с использованием веб-технологий (рис. 1).
Рисунок 1. Схема работы SSL-Explorer
Для настройки и работы используется любой веб-браузер, поддерживающий SSL (и для некоторых операций Java), что сразу же снимает вопросы по операционной системе, используемой на клиентском компьютере. И, естественно, такой вариант идеально подходит в случае работы пользователя на чужом компьютере, так как на клиентском компьютере не требуется установка дополнительного ПО, как, например, в системах, базирующихся на Ipsec или OpenVPN. То есть если, например, OpenVPN хорошо подходит для организации фиксированных, или point-to-point соединений, то SSL-Explorer более удобен для организации дистанционного доступа к сетям и сервисам одиночными компьютерами или перемещающимися пользователями, не имеющими своего постоянного IP-адреса.
Основные настройки защищенного соединения в этом случае могут производиться как администратором на серверной, так и пользователем с клиентской стороны. Причем для настройки не требуется ручное редактирование конфигурационного файла, весь процесс проходит с использованием веб-браузера путем занесения необходимых параметров в подготовленные поля. И что не менее важно, при перемещении клиента перенастройка параметров в большинстве случаев не потребуется. Любые приложения, использующие незащищенные протоколы, могут использовать образованный SSL-туннель, т.е. при помощи SSL-Explorer довольно просто организовать доступ извне к почтовому и веб-серверу, файловым и другим ресурсам корпоративной сети. Поддерживаются дистанционный доступ к ресурсам Microsoft Windows посредством веб-браузера или через Microsoft WebFolders, а также доступ к Microsoft Outlook Web Access 2003, что позволяет убрать такие сервисы, традиционно обитающие в DMZ, внутрь сети. Работают Citrix ICA-клиенты, MS RDP/Terminal, SSH1/SSH2/VNC/SFTP/Telnet/TN5250-терминалы.
Все соединения заворачиваются на один-единственный порт (по умолчанию 443), и специфика самого SSL, работающего на прикладном уровне, упрощает настройку межсетевых экранов и позволяет работать из-под NAT. Для аутентификации пользователей может использоваться внутренняя база, Active Directory, RADIUS или системные пользователи UNIX. При этом если, например Active Directory не будет запущен на момент загрузки SSL-Explorer, то последний прекратит свою работу. Кроме обычной аутентификации может использоваться и расширенная, когда пользователю в случайном порядке задается один из пяти дополнительных вопросов (любимая книга или телепередача, девичья фамилия матери, имя отца, место рождения). Для удобства настройки параметров доступа в случае использования внутренней базы использован ролевой RBAC-принцип, когда администратор создает роли с заранее подготовленными профилями, а затем назначает соответствующие роли пользователям. На основании ролей можно разрешить или запретить доступ к определенному сетевому ресурсу или сервису, а также настройкам. В целях безопасности можно разрешить регистрацию некоторых клиентов только с определенных IP-адресов, установить требования к клиенту (операционная система, версия Java, наличие сервис паков), что позволяет исключить использование потенциально уязвимых машин, имитируя таким образом технологию Network Admission Control у Cisco. Возможна установка времени, по истечении которого произойдет автоматическое отключение клиента в случае его неактивности, количество неудачных попыток регистрации перед блокировкой или отключением. Используя SSL-Explorer, становится возможным при помощи веб-браузера послать Wakeup-on-LAN-сигнал любому компьютеру удаленной сети. Поддерживается три вида http-прокси: Single Site, Secure и Reverse, а также SOCKS. Для варианта Secure возможно выставить фильтры, позволяющие заменять контент. Кроме того, к SSL-Explorer относительно просто самому добавить свое расширение, на сайте даны примеры.
Первая тестовая версия была представлена общественности в конце августа 2004 года. Актуальной на момент написания статьи является версия 0.1.16_01, но это не значит, что в продукте много недоработок. В данном случае это показывает стремление разработчиков к реализации тех или иных функций, поэтому основные характеристики в будущем могут измениться. Так, в ближайшее время планируется:
- включить модули аудита и генерации отчетов, которые будут позволять, в том числе обнаруживать попытки неправильного использования;
- добавить дополнительные методы аутентификации: аппаратные, такие как SecurID-токены и одноразовые пароли (one-time passwords – OTP);
- реализовать возможность дистанционной помощи, которая позволит администраторам помочь в настройке сервиса, посредством удаленного управления ПК;
- управление кэшем клиента – позволит автоматически очищать систему от следов работы SSL-Explorer;
- модуль SSL для клиентов – для реализации сквозного шифрования в пределах корпоративной сети.
Распространяется SSL-Explorer под лицензией GNU GPL без каких либо ограничений на количество соединений или пользователей. Кроме этого предлагается коммерческая версия SSL-Explorer Xtra, распространяемая в виде плагина, имеющая более широкие возможности и коммерческую поддержку. Например, в ней добавлены следующие методы аутентификации: LDAP, SSL-сертификат, публичный ключ, PIN, OTP, отсылаемый в виде текстового SMS-сообщения на мобильный телефон клиента. Xtra также совместим с такими USB-криптоустройствами, как SafeNet 2032 и Aladdin eToken USB. Незаменимым дополнением является наличие экранной клавиатуры, что позволяет хоть как-то защититься от клавиатурных перехватчиков. Дистанционное управление посредством SSH1/2, telnet и VNC. Демонстрационную версию Xtra можно загрузить на сайте.
Сервер SSL-Explorer поддерживает Sun Java Runtime Environments (JRE) и Sun Java Development Kits (JDK), а также Microsoft JVM. Официально поддерживается установка сервера на Microsoft Windows XP/2000/2003 и Red Hat Linux 8.0 и старше. Остальные дистрибутивы Linux имеют неофициальную поддержку. Я устанавливал SSL-Explorer на три дистрибутива Slaskware 10.1 и производные от Slaskware – Vector Linux 5.1.1 SOHO и DeepStyle, проблем не было.
Установка и первичная настройка
Разработчики рекомендуют использовать сервер с 1 ГГц процессором, 512 Мб ОЗУ и 150 Мб свободного места на жестком диске. Эксперименты показывают, что при обслуживании 510 клиентов вполне подойдет система с меньшими требованиями – 633 МГц и 256 Мб ОЗУ. На сервере должна быть установлена Java не ниже пятой версии, но опыт показывает, что на клиентах достаточно использовать версию ниже. В частности, на компьютере клиента, работающем под управлением операционной системы Windows XP, был установлен JRE SE 1.4.2. Архив с SSL-Explorer можно получить с [2]. В зависимости от используемой операционной системы или дистрибутива понадобится различный файл:
- sslexplorer_windows_0_1_16_01.zip – если планируется использовать сервер под управлением Windоws;
- sslexplorer_linux_rpm_0_1_16_01.zip – для дистрибутивов Linux, использующих rpm-пакеты (собран под Red Hat Linux, поэтому в других может не пойти);
- sslexplorer_linux_gui_0_1_16_01.zip – для установки в графическом режиме в других дистрибутивов Linux;
- sslexplorer_unix_0_1_16_01.zip – установка в FreeBSD, Mac OS X, Solaris и Linux (в случае если не подойдут первые два варианта).
Для примера установим SSL-Explorer на сервер, работающий под управлением Slaskware, хотя установка в Windows практически идентична за исключением моментов, связанных с отличием этих систем. Сам процесс сложным назвать трудно. В данном варианте установки подходит третий пакет, который необходимо распаковать, зайти внутрь каталога и ввести (необходимы права root). Если на компьютере не установлена Java или инсталлятор не сможет ее найти, то будет выдан запрос на закачку и установку JVM.
# sh sslexplorer_linux_0_1_16.sh
Starting Installer ...
Detect OS slackware
Mar 27, 2006 10:14:38 AM java.util.prefs.FileSystemPreferences$3 run
INFO: Created system preferences directory in java.home.
Starting SSL Explorer in setup mode ....................
Def security.administrator Category 10 resources = permissions
Def general.userConfiguration Category 20 resources = permissions
Def networking.showPersonalTunnels Category 30 resources = permissions
Def services.showPersonalWebForwards Category 40 resources = permissions
Def vpnClient.logon Category 50 resources = permissions
|
После этого запускается графический инсталлятор, в большинстве случаев отвечая на вопросы которого достаточно методично нажимать на «Next».
В Linux опционально можно создать символические ссылки на исполняемые файлы в другой каталог, видный из переменной PATH.
После копирования файлов будет предложено подключиться к серверу и произвести первоначальную настройку при помощи веб-браузера (рис. 2).
Рисунок 2. Последним этапом установки является настройка при помощи веб-браузера
Для этого нажимаем «Launch» либо запускаем любой веб-браузер (например, Firefox) и заходим на страницу http://localhost:28080. В Windows, скорее всего, последует запрос межсетевого экрана на разрешение запуска программы setup-sslexplorer.
В первом окне «Web Security» (рис. 3) вам необходимо будет сгенерировать сертификат сервера. Здесь все просто, во вкладке «Step 1» указываем пароль, а затем в «Step 2» нажимаем на «Create New key store» и последовательно заполняем все поля: IPадрес или имя сервера, компания, город, страна и другие, после чего нажимаем «Generate». Как вариант можно импортировать готовые сертификаты, подписанные доверенными организациями.
Рисунок 3. Для дальнейшей работы необходимо сгенерировать сертификат
Следующее окно «Security Options» позволяет указать некоторые параметры безопасности. Здесь в первую очередь, используя список «User database», следует указать используемый для аутентификации пользователей плагин. Если не используется Active Directory, а рабочие группы, более удобным является выбор «Builin», позволяющий использовать внутреннюю базу пользователей. Здесь же можно задать параметры безопасности: количество неудачных попыток перед блокировкой/отключением, количество символов в пароле и регулярное выражение, которому он должен соответствовать, подсказка пользователю, помогающая установить правильный пароль. На этой странице можно определить возможность параллельной работы пользователя в нескольких окнах веб-браузера. Если ограничения не предусмотрены, то параметр «Multiple sessions» выбираем как «No restriction». В этом случае может быть полезна активация опции «Lock session on browser close», позволяющая при открытой сессии заходить без повторной регистрации с другой вкладки веб-браузера. Как вариант можно установить ограничение на одну сессию для пользователя, либо одна сессия для пользователя/IP-адреса.
После внесения всех изменений на любой странице не забывайте сохранять их, нажимая кнопку «Save».
По умолчанию у пользователя admin пустой пароль (в более ранних версиях использовался пароль admin), так как после окончания процесса установки SSL-Explorer будет доступен всем, то желательно сменить его в «Admin-Access Control ? Accounts». Здесь ставим галочку в поле «Mark» и нажимаем «Password» либо через «Edit», где заполняем поле «Fullname», и сбрасываем пароль, установив галочку в «Reset password». После нажатия на «Save» будет предложено ввести новый пароль. Обратите внимание на пункт «Force user to change password at next logon». Если его активировать во время следующей регистрации пользователя, он вынужден будет обязательно сменить пароль, при этом использовать повторно старый система не даст. Перед выходом проконтролируйте значение поля «Status». Для того чтобы пользователь мог войти в систему, там должно стоять значение «Granted» («Mark ? Enable»). Возможны другие варианты: «Active» – пользователь сейчас зарегистрирован в системе и «Disabled» – пользователь неактивен (рис. 4).
Рисунок 4. Перед окончанием процесса установки смените пароль администратора
И еще один пункт, который рекомендую посетить перед первым запуском – «General Options». В нем устанавливаются глобальные переменные. Здесь пять разделов. В разделе «Network Places» можно выставить возможность увидеть домашний каталог пользователя (если имеется) в списке ресурсов, использование текущего логина и пароля при подключении к сетевым ресурсам или как вариант использование гостевого входа.
В разделе «Profile» одно значение, активация которого позволяет при наличии нескольких профилей выбирать пользователю текущий (рабочий).
Следующие два раздела представляют сейчас наибольший интерес. Это «Web server» и «Proxies». По умолчанию сервер SSL-Explorer будет использовать 443 порт, если он занят, то необходимо изменить это значение. Хотя теперь можно спрятать веб-сервер компании за SSL-Explorer и настроить перенаправление. При наличии нескольких интерфейсов «слушаться» будут все. Использовав параметр «Bind address», можно указать список прослушиваемых адресов. Пользователям неудобно в адресной строке браузера набирать каждый раз (а некоторым бывает довольно трудно объяснить) https и номер порта при подключении. Для удобства при помощи «Enable HTTP redirect» и «HTTP redirect port» можно настроить перенаправление с 80 (по умолчанию порта) на https-порт, используемый сервером SSL-Explorer. Если узел имеет несколько имен, то их можно перечислить в «Valid external hostnames». В «Proxies», если необходимо, настраиваем параметры прокси или SOCKS-сервера.
Последний раздел «Automatic Updates» позволяет настроить параметры автоматического обновления SSL-Explorer.
Сохраняем результат и останавливаем сервер «Admin ? Shutdown».
Начинаем работу
После окончания процесса настройки следует разрешить запуск SSL-Explorer вместе с системой. Соответствующие скрипты имеются только в rpm-пакетном варианте, в остальных случаях об этом необходимо позаботиться самому. В Windows SSL-Explorer устанавливается в качестве сервера, просто проконтролируйте возможность его автоматического старта.
Для ручного запуска в случае использования rpm-варианта вводим:
# service sslexplorer start; chkconfig sslexplorer on
В остальных дистрибутивах:
# sslexplorer-console
Дальнейшую работу и настройку можно проводить с удаленного компьютера. Открываем браузер, вводим имя сервера, регистрируемся в системе.
Теперь доступны пять вкладок:
- Home – статус и запуск VPN-туннеля, смена пароля и персональные настройки для конкретного клиента (прокси, некоторые параметры безопасности, настройка интерфейса, вход в домен).
- Networking – доступ к Windows-ресурсам и опять же запуск VPN-туннеля.
- Services – настройка доступа к интранет-ресурсам, приложениям и Wakeup-On-LAN.
- Admin – эта вкладка доступна только администратору и содержит все глобальные настройки, частично о которых говорилось при описании процесса установки.
- Help – помощь (доступно два pdf-документа «Quick Start Guide», «Reference_Guide» и ссылки на Knowledge Base сайта проекта).
Настройка ролей
В принципе сервер уже готов к приему клиентов, поэтому для примера я покажу вам настройку доступа к ресурсам, организуем работу по SSL-туннелю и разберемся с созданием роли для работы обычных пользователей. Разобраться с остальными настройками помогут вышеупомянутые документы. Единственное, что смущает – информация в этих документах дана для более раннего варианта интерфейса, что несколько сбивает с толку.
При помощи SSL-Explorer в целях повышения безопасности можно выставить соответствующие разрешения для пользователей. На основании этих разрешений может быть получен либо отвергнут доступ к некоторым настройкам. Вместо индивидуальных разрешений применяется концепция RBAC (Role Based Access Control), когда задаются роли и все пользователи в пределах этих ролей унаследует эти разрешения. При этом роли действуют не только при применении встроенной базы, но и группам Active Directory могут быть сопоставлены соответствующие роли. При применении встроенной базы данных придется создавать роли и назначать пользователей в эти группы вручную.
Рассмотрим, как создать новую роль. Открываем «Admin ? Access Control ? Roles» (рис. 5). По умолчанию там присутствует только одна роль, соответствующая администратору. При использовании Active Direcory будут выведены найденные группы, но с неактивным «revoked»-статусом. Для того чтобы их включить, необходимо отметить и нажать «Grant». Создать новую роль также просто. В разделе «Create role» вводим название новой роли и нажимаем «Create». Вновь созданная роль всегда помечается как revoked, перед ее активацией следует отредактировать разрешения, выбрав ее и нажав «Permissions». В появившемся окне будет 6 разделов, при помощи которых можно разрешить запуск VPN-клиента, редактирование параметров туннеля, доступа к сетевым ресурсам, приложениям. Нажатие на «Allow All» разрешит использование всех неадминистраторских разрешений. После редактирования разрешений включаем роль «Grant» и переходим к вкладке «Accounts», где распределяем пользователей по ролям.
Рисунок 5. Создание ролей в SSL-Explorer
Настройка доступа к ресурсам
Для доступа к ресурсам выбираем «Networking ? Networking Places» и попадаем в окно «My Network Places». Здесь по умолчанию уже присутствует ресурс «Windows Network Neighborhood», щелчок по которому должен вывести все домены или рабочие группы сети (для Windows в Linux как минимум придется настроить Samba). Чтобы организовать доступ к отдельному ресурсу, нажимаем «Create» и вводим путь к ресурсу. Только вместо привычного «имя_узларесурс» вводим ссылку относительно /fs/cifs. Например, /fs/cifs/computer/documentations или IP-адрес/fs/cifs/192.168.0.20/documentations (рис. 6). В поле «Short name» прописываем короткое понятное имя ресурса. После нажатия на «Save» новый ресурс появится в списке. По щелчку на нем откроется окно (рис. 7), в котором вы можете перемещать, удалять, скачивать и загружать файлы, создавать каталоги. Чтобы ресурс выводился в списке «My Favorites», который появляется в первом окне, встречающем пользователя сразу после регистрации, отмечаем «Mark» и жмем кнопку «Favorite».
Рисунок 6. Настройка доступа к ресурсам
Рисунок 7. Окно файлового менеджера SSL-Explorer
Создание туннелей для приложений
До настоящего времени мы использовали туннель для доступа к ресурсам исключительно при помощи веб-браузера. Можно, конечно, читать почту и при помощи браузера, но любой почтовый клиент все-таки на порядок удобней, чем веб-интерфейс. Для обеспечения возможности работы другим приложениям через проложенный туннель в составе SSL-Explorer имеется встроенный VPN-клиент, который также написан на Java. Клиент по требованию загружается с сервера, выполняется в рабочем пространстве клиентской машины и выполняет роль прокси, обеспечивая перенаправление TCP и UDP-соединений в туннель.
Для того чтобы запустить его, достаточно зарегистрироваться в системе и на первой странице в разделе «VPN Client Status» нажать «Launch», после чего повторно нужно будет принять сертификат. Если клиент запустится удачно, пользователю будет выведено сообщение и откроется дополнительно окно (рис. 8), показывающее статус (в Windows появится в трее значок). Возможен вариант автоматического запуска клиента сразу после регистрации пользователя. Чтобы разрешить такой запуск, заходим в «Home ? My Account ? Configuration» и устанавливаем опцию «Start Automatically on Login». После того как туннель будет запущен, браузер можно закрыть, сессия будет заблокирована, при последующем соединении у вас запросят только пароль. Выключить клиента можно при помощи этого дополнительного окна, выбрав «Exit», либо из главного окна, нажав на ссылку «VPN client status», расположенную в верхнем правом углу.
Но сам по себе клиент ничего делать не будет. Для работы ему необходимо указать, откуда брать и куда пересылать информацию. Туннели могут быть глобальными, т.е. настроены администратором для всех, так и индивидуальные пользовательские. Настройка пользовательских туннелей производится во вкладке Networking ? SSL-Tunneling (рис. 9), глобальных в «Admin ? Global Resources ? SSLTunneling». Зрительно глобальные и пользовательские туннели можно отличить по значку Scope.
Рисунок 8. Окно статуса VPN-клиента
Рисунок 9. Окно настройки персональных туннелей
При этом клиент обеспечивает два вида пересылки: local и remote, то есть исходящие и входящие. Первый вид все исходящие сообщения с указанного локального порта пересылает на удаленный адрес и порт. Второй поступает аналогично, но только пересылаются все сообщения, поступившие на указанный порт. Для local поддерживаются протоколы UDP и TCP, для remote только TCP.
Для примера настроим туннель, позволяющий получать корпоративную почту по протоколу POP3. Открываем окно настройки и вводим в окно:
- Source Port – 110;
- Tunnel Type – Local;
- Transport – TCP;
- Destination Host – IP-адрес или доменное имя корпоративного почтового сервера;
- Destination Port – 110.
Активация «Auto start» позволит запускать указанный туннель вместе с VPN-клиентом, а «Allow External Hosts» даст возможность выходить в туннель, зарегистрировавшись в других компьютерах. Нажатием на «Add» создаем новый туннель. Для того чтобы почтовый клиент мог к нему подключиться, необходимо в свойствах вместо имени почтового сервера поставить localhost (или 127.0.0.1). Теперь при попытке получить почту почтовый клиент будет соединяться с 110 портом локальной системы, где запрос будет перехватываться и по защищенному туннелю (порт 443) передаваться на сервер SSL-Explorer и далее на почтовый сервер.
Выводы
Рассказать обо всех настройках SSL-Explorer в пределах одной статьи не возможно. В процессе тестирования он показал себя как продукт, способный конкурировать с некоторыми коммерческими решениями. Тем, кто присматривается к вариантам SSL VPN, советую прочитать статью [4], особенное внимание, обратив на раздел «Рекомендации покупателю оборудования SSL VPN».
Приложение
Клиент SSHTerm Professional
Тема SSL-Explorer была бы не полна без рассказа об еще одном продукте 3SP клиенте SSHTerm Professional. Также написанный на языке Java SSHTerm доступен для Windows, Linux и Mac OS X. Он позволяет сетевому администратору подключаться к ресурсам SSH1, SSH2, VNC, Telnet, SFTP, а также организовывать защищенные VNC сеансы, где самостоятельно, а где используя возможности SSL-Explorer. Клиент имеет интуитивный многооконный интерфейс, что делает его удобным при одновременной работе с несколькими ресурсами.
Распространяется под свободной (до 25 пользователей) и коммерческими лицензиями.
Ссылки:
- Сайт проекта SSL-Explorer – http://3sp.com/showSslExplorer.do.
- Страница на SourceForge.net – http://sourceforge.net/projects/sslexplorer.
- Бешков А. OpenVPN, или Кроссплатформенная частная сеть. – Журнал «Системный администратор», № 8, август 2004 г. – 4-12 с. (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=08.2004;a=01).
- Джоул Снайдер. Оборудование SSL VPN – OSP.RU, №1, 2006 г.