Установка Корпоративного VPN и прозрачного удаленного управления

Установка Корпоративного VPN и прозрачного удаленного управления

В этой статье мы обсудим VPN систему, которая предоставляет одновременно грамотные технические решения для администраторов, и простой, привлекательный интерфейс для пользователя. Решение основывается на использовании нескольких утилит с открытым кодом, таких как: OpenVPN, OpenVPN GUI, Nullsoft Scriptable Install System (NSIS) и TightVNC.

Автор: Adam Olson

Перевод: Войновича Андрея

Проблема установки канала связи между корпоративной сетью и удаленными пользователями.

В этой статье мы обсудим VPN систему, которая предоставляет одновременно грамотные технические решения для администраторов и простой, привлекательный интерфейс для пользователя. Решение основывается на использовании нескольких утилит с открытым кодом, таких как: OpenVPN, OpenVPN GUI, Nullsoft Scriptable Install System (NSIS) и TightVNC. TightVNC будет использоваться для прозрачного удаленного управления, а сама по себе программа не использует VPN технологии.

В результате мы получим корпоративный Windows 2000/XP инсталлятор, который включает не только клиентские настройки VPN и ключевую информацию, но также содержит интегрированный VNC сервер для удаленного управления и технической поддержки при подключении к VPN серверу.

Утилиты с Открытым Кодом

OpenVPN – надежное и гибкое решение для VPN, позволяющее большинству платформам семейства Unix/Linux, Windows 2000/XP, и Mac OSX безопасно устанавливать зашифрованные каналы связи между собой. Эти каналы могут быть настроены разными способами, но в этой статье мы остановимся на сети типа точка-точка (РР), которая будет одним малым или большим хабом.

OpenVPN GUI - очень удобная утилита для управления VPN для Windows 2000/XP. Пожалуй, она является самым удобным решением для конечного пользователя (например, простая в использовании иконка в панели задач). OpenVPN GUI предоставляет быстрый и простой доступ к VPN настройкам для большинства пользователей.

Nullsoft Scriptable Install System (NSIS) – open source-проект, позволяющий создавать корпоративные пакеты установки клиентского ПО.

Наверняка вы уже знакомы с термином Virtual Network Computing (VNC), а TightVNC – еще один пакет с открытым кодом, основанный на Real VNC. Пользуюсь TightVNC уже около 5 лет, и поэтому остановил свой выбор именно на этом пакете. Он очень надежен и оставил на моей работе некоторый отпечаток. Такой же результат вы сможете получить, используя любой другой VNC продукт, если захотите поэкспериментировать после прочтения этой статьи.

Требования к Центру Данных

В статье главным образом обращается внимание на сторону конечного пользователя, но она была бы неполной, если бы в ней не определялись требования к центру данных. Итак, вам понадобится защищенный выделенный сервер под управлением ОС Unix/Linux. Пожалуйста, обратите внимание на слова «выделенный» и «защищенный», так как это та машина, которая не должна быть компрометирована. Любой удаленный узел, требующий доступ к VPN, передает чувствительные данные, поэтому следует заострить внимание и здесь. Отключите все сетевые сервисы, кроме SSH и OpenVPN, если возможно, и определите строгие правила для брандмауэра. За дополнительной информацией по настройке безопасности сервера можно обратиться ко многим документам, доступным в Интернет.

Следующие примеры осуществлялись на системе под управлением Red Hat Fedora Core 2.

Чтобы скомпилировать OpenVPN, действуйте стандартным способом:

# gzip -d openvpn-2.0_rc6.tar.gz
# tar xf openvpn-2.0_rc6.tar
# cd openvpn-2.0_rc6
# ./configure
# make
# make install

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

Конфигурация OpenVPN Сервера

Для начала, создадим директорию для хранения конфигурационных файлов и VPN ключей:

# cd /etc
# mkdir openvpn
# chmod 700 openvpn
# cd openvpn

Ниже приведен полный конфигурационный файл для первого объекта сервера, который следует назвать port5023.conf:

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

### Start Config File Port 5023 ###
# local tun device
dev tun23
# interface addresses
ifconfig 10.23.0.1 10.23.0.2
# key location
secret /etc/openvpn/port5023.key
# port to listen on
port 5023
# user to run as
user nobody
group nobody
# options
comp-lzo
ping 15
verb 1
### End Config File Port 5023 ###

Заметьте, что пример настроек, показанный выше, указывает OpenVPN переключить пользовательские и групповые ID на учетную запись "nobody". Это работает, если на  вашем VPN сервере запущены только службы OpenVPN с правами nobody. Если же на этом сервере запущены другие службы под пользовательским и групповым ID nobody, следует запустить OpenVPN от других ID.

Чтобы создать статический ключ для этого VPN объекта, запустите следующую команду из /etc/openvpn:

# /usr/local/sbin/openvpn --genkey --secret port5023.key

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

Теперь вы можете запустить ваш VPN объект:

# /usr/local/sbin/openvpn --daemon --disable-occ --config \
/etc/openvpn/port5023.conf

Настройки, переданные OpenVPN:

--daemon – Запустить как демон.

--disable-occ – Этот параметр позволяет взаимодействовать двум разным версиям OpenVPN. Это очень удобно в том случае, если вы поддерживаете удаленных пользователей, которые по каким-либо причинам не получают обновления ПО.

--conf – Указание расположения конфигурационного файла.

Теперь вы должны получить основной объект VPN сервера, слушающий на 5023 порту. Если у вас возникли какие-то проблемы, читайте документацию по OpenVPN.

Сборка VPN Installer

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

В связи с тем, что мы создаем свой установщик для Windows 2000/XP, существует возможность включить независимые программы в процесс установки. Вместо простой установки VPN клиента с предопределенным ключом и конфигурационным файлом, мы также включим программу TightVNC для клиентского и серверного объекта VNC протокола.

Скачайте и установите пакет NSIS на систему под управлением Windows XP:

http://www.openvpn.se/files/nsis/nsis20b3.exe

С момента релиза этой статьи, стала доступна более новая версия NSIS. Удостоверьтесь, что вы используете версию, ссылка на которую дана выше в целях демонстрации, однако каждый шаг, описанный здесь, будет работать с более поздними версиями. Как бы то ни было, оказалось, что последняя версия NSIS требует некоторых подстроек со следующим установочным zip файлом, поэтому вам будет проще использовать версию NSIS, указанную выше.

Далее скачайте установщик на туже машину под управлением Windows XP:

http://www.openvpn.se/files/install_packages_source/openvpn_install_source-2.0-rc6-gui-1.0-beta26.zip

Этот файл был собран Mathias Sundman и включает все необходимые файлы конфигурации OpenVPN, OpenVPN GUI, и NSIS для сборки стандартного Windows installer пакета. Распакуйте этот файл на рабочий стол в папку "VPN Sources”.

Чтобы предугадать, что мы получим в конечном итоге, откройте папку VPN Sources, правой кнопкой по файлу openvpn-gui.nsi, левой кнопкой по пункту меню "Compile NSI". Через пару мгновений вы увидите файл установщика OpenVPN в той же папке. Если вы попробуете запустить этот установщик, будет установлена стандартная версия  OpenVPN. Если возникли проблемы с созданием установщика, обратитесь к следующей документации:

http://openvpn.se/files/howto/openvpn-howto_roll_your_own_installation_package.html

или

http://nsis.sourceforge.net

Сборка Корпоративного VPN Installer

В данный момент у нас имеется основной VPN сервер и стандартный Windows installer для OpenVPN, но нам важно собрать его таким образом, чтобы его можно было легко установить. Кроме того, мы хотим добавить в него программу TightVNC для удаленного администрирования и помощи.

Скачайте полный набор запускаемых файлов TightVNC 1.3dev6 без установщика с:

http://www.tightvnc.com/download.html

Теперь распакуйте вложенные файлы на рабочий стол. Нас будут интересовать следующие файлы: VNCHooks.dll, vncviewer.exe, WinVNC.exe и LICENCE.txt. Скопируйте эти файлы в папку openvpn, включающую в себя папку "VPN Sources".

Сохраните следующий пример конфигурационного файла в openvpn/config/VPN.ovpn в папке "VPN Sources":

### BEGIN CLIENT SIDE CONFIGURATION FILE ###
# vpn server to contact
remote 192.168.10.10
# port to establish connection on
port 5023
# local tunnel device
dev tun
# interface addresses
tun-mtu 1500
ifconfig 10.23.0.2 10.23.0.1
route 10.0.0.0 255.0.0.0 10.23.0.1
# key location
secret "c:\\program files\\company branded vpn\\config\\key.txt"
# enable LZO compression
comp-lzo
# moderate verbosity
verb 0
mute 10
;fragment 1300
;mssfix
; ping-restart 60
; ping-timer-rem
; persist-tun
; persist-key
; resolv-retry 86400
# keep-alive ping
ping 10
# enable LZO compression
comp-lzo
# moderate verbosity
verb 4
mute 10
### END CLIENT SIDE CONFIGURATION FILE ###

В этом примере множество параметров, и я советую вам поэкспериментировать с различными настройками. Сейчас задействованы необходимое число параметров, остальные – закомментированы при помощи «;». Самыми важными настройками будут: IP адрес вашего VPN сервера, номер порта VPN шлюза, расположение файла ключа и адрес VPN интерфейса. Также не стоит забывать о команде маршрута, указанной выше.

Перед тем, как продолжить, вам необходимо скопировать содержимое /etc/openvpn/port5023.key на ваш VPN сервер в openvpn/config/key.txt в папку "VPN Sources". В результате новый VPN installer получит правильный ключ, который будет использоваться при создании зашифрованного VPN туннеля.

Для завершения сборки корпоративного VPN installer, откройте папку "VPN Sources" и отредактируйте openvpn-gui.nsi. Удалите первый раздел кода с:

!include "MUI.nsh"
!include "setpath.nsi"
!define MASTER "x:\openvpn\exp\openvpn"
!define HOME "openvpn"
!define BIN "${HOME}\bin"
!define MUI_PRODUCT "Company Branded VPN"
!define OPENVPN_VERSION "2.0"
!define GUI_VERSION "2.0"
!define MYCERT_VERSION "0.3.2b"
!define MUI_VERSION "-"
;!define MUI_VERSION "${OPENVPN_VERSION}-gui-${GUI_VERSION}"
!define TAP "tap0801"
!define TAPDRV "${TAP}.sys"

Теперь найдите строку, которая начинается с "OutFile" и замените ее на:

OutFile "Company Branded VPN.exe"

Затем разместите строку:

File "${HOME}\openvpn.exe"

И добавьте строго под ней (перезаписывая одноименные разделы)

 SetOutPath "c:\program files\TightVNC"
nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -kill'

File "${HOME}\vncviewer.exe"
File "${HOME}\WinVNC.exe"
File "${HOME}\LICENCE.txt"
File "${HOME}\VNCHooks.dll"
nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -reinstall'
nsExec::ExecToLog 'net start winvnc'
SectionEnd
Section "OpenVPN GUI" SecGUI
SetOverwrite on
SetOutPath "$INSTDIR\bin"
File "${HOME}\openvpn-gui.exe"
SetOutPath "$INSTDIR\config"
File "${HOME}\config\VPN.ovpn"
File "${HOME}\config\key.txt"
CreateDirectory "$INSTDIR\log"
SectionEnd
 

Далее расположите эти строки:

Delete "$INSTDIR\config\README.txt"
Delete "$INSTDIR\config\sample.${SERV_CONFIG_EXT}.txt"
and replace them with:
Delete "$INSTDIR\config\key.txt"
Delete "$INSTDIR\config\README.txt"
Delete "$INSTDIR\config\VPN.ovpn"

Это делается для того, чтобы при удалении VPN пакета был и удален закрытый ключ.

Наконец, в папке "VPN Sources\openvpn" переименуйте openvpn-2.0_rc6.zip в openvpn-2.0.zip, а openvpn-gui-1.0-beta26.zip в openvpn-gui-2.0.zip. Я рекомендую сделать это, так как это позволит сохранить версию основного OpenVPN приложения без внесенных нами изменений.

Вернитесь в папку "VPN Sources", кликните правой кнопкой по openvpn-gui.nsi и левой кнопкой по пункту меню compile NSI. Если вы правильно выполнили все шаги, то в папке "VPN Sources" появится  файл "Company Branded VPN.exe". Он будет содержать полный пример конфигурации, правильный ключ и корпоративный вид. Кроме того, из этого файла будет установлен TightVNC, зарегистрирован как Windows Service, и будет запускаться по запросу пользователя для облегчения удаленного администрирования с использования безопасного удаленного доступа.

Ссылки

NSIS Web site -- http://nsis.sourceforge.net

OpenVPN Web site -- http://www.openvpn.net

OpenVPN GUI Web site -- http://openvpn.se

Real VNC Web site -- http://www.realvnc.com

TightVNC Web site -- http://www.tightvnc.com

Ученые доказали: чтение нашего канала продлевает жизнь!

Ладно, не доказали. Но мы работаем над этим

Поучаствуйте в эксперименте — подпишитесь