Виртуальные частные сети (VPN) расширяют сеть предприятия, размыкая пределы локальных сетей. С помощью VPN сотрудники, находящиеся вне предприятия, могут безопасно подключиться к корпоративной локальной сети из любой точки Internet. Аутентифицированный и зашифрованный туннель VPN прокладывается через Internet, поэтому затраты на его организацию гораздо ниже, чем на дорогостоящие двухточечные специальные сетевые каналы. Многие администраторы знакомы с решениями RRAS VPN компании Microsoft и с коммерческими VPN таких поставщиков, как Cisco Systems и Nortel Networks, но не всем известно об открытой программе OpenVPN, которая отличается высокой гибкостью и располагает функциями VPN. При значительно меньших затратах, основные функции OpenVPN такие же, как у коммерческих конкурентов. OpenVPN распространяется бесплатно, и администратору приходится тратить время лишь на настройку конфигурации.

Предприятиям, которые уже располагают коммерческой VPN, нет смысла менять ее на OpenVPN. Но если нужно организовать новую VPN для офиса филиала или лаборатории, либо требуется недорогое, безопасное решение для связи с удаленными сетями, то OpenVPN заслуживает внимания. Программа совместима со многими операционными системами, поэтому может стать альтернативой VPN-функциональности RRAS или Microsoft Internet Security and Acceleration (ISA) Server для предприятий, использующих платформу Windows. В данной статье рассматриваются основные этапы развертывания клиентского решения OpenVPN и важнейшие характеристики продукта.

Основы OpenVPN

В OpenVPN ряд основных функций защиты VPN реализован на базе протокола Secure Sockets Layer (SSL)/Transport Layer Security (TLS), а в других сетевых VPN для этого используются протоколы IP Security (IPsec) или PPTP. В отличие от других SSL VPN, достоинством которых считается безклиентская установка (соединение SSL VPN устанавливается через браузер), для OpenVPN необходим специальный клиент. Кроме того, OpenVPN представляет собой одноранговое (P2P) приложение, поэтому одну программу можно выполнять по обеим сторонам туннеля VPN.

В OpenVPN предусмотрены режимы моста (bridged) и маршрутизации (routing), в которых сетевой трафик можно направлять через единственный порт UDP или TCP по выбору администратора. По умолчанию OpenVPN использует протокол UDP и порт 1194. Любой сетевой трафик, посылаемый или принимаемый для сетевого адаптера, инкапсулируется в зашифрованный пакет и доставляется в другой конечный пункт туннеля OpenVPN, где данные расшифровываются и попадают в удаленную сеть.

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

Продукт предоставляется в соответствии с условиями лицензии Open Source GNU General Public License (GPL) и работает с Windows 2000 и более новыми версиями, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS X и Solaris. Выбрав платформу, можно загрузить новейшую версию OpenVPN с Web-узла http://openvpn.net. Во время подготовки данного обзора самой новой версией была OpenVPN 2.0-rc20. Сторонники графического интерфейса могут загрузить необязательный графический интерфейс с Web-узла OpenVPN (http://www.nilings.se/openvpn) и установить его, следуя простым инструкциям.

По сути OpenVPN представляет собой приложение командной строки, которое можно настроить на работу в качестве службы. Приложение можно запускать с огромным числом параметров настройки, сочетая ключи командной строки и элементы файла конфигурации. Полный список всех параметров опубликован на странице OpenVPN Man Page по адресу http://openvpn.net/man.html. Кроме того, для управления несколькими конечными точками туннелей на одном сервере можно использовать несколько файлов конфигурации.

Определение сетевой топологии

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

Настройка сервера

Загрузив версию для Windows, следует скопировать ее на сервер, который будет применяться в качестве сервера VPN, и запустить программу установки. Мастер проводит пользователя по этапам этой процедуры, которая состоит в развертывании OpenVPN, программы настройки графического интерфейса OpenVPN и инструмента генерации запроса сертификата. Мастер запрашивает различные параметры, но для базовой установки достаточно значений, выбираемых по умолчанию. Программы и исходные файлы можно найти в папке C:\Program Files\OpenVPN.

После завершения установки появляется дополнительный сетевой адаптер - устройство с именем TAP-Win32 Adapter V8. Если планируется настроить OpenVPN в режиме моста, то необходимо вручную организовать мостовое соединение нового адаптера с другим сетевым адаптером, уже имеющимся в системе. Если предстоит работать в режиме маршрутизации, то Windows распознает устройство как сетевой адаптер с IP-адресом. Обе конфигурации - мостовая и маршрутизации - будут рассмотрены ниже.

Но сначала следует познакомиться с основным инструментарием настройки OpenVPN. На сервере требуется перейти в каталог OpenVPN (по умолчанию C:\Program Files\OpenVPN\config), скопировать файл sample.ovpn.txt и дать ему любое другое имя с расширением .ovpn (например, myOpenVpnConfig.ovpn). В этом файле содержится подробно аннотированный пример настройки OpenVPN. После более близкого знакомства с работой OpenVPN администратор сможет создать собственный файл конфигурации OpenVPN длиной всего несколько строк.

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

remote myremote

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

; remote myremote

Если указан адрес удаленного компьютера (например, remote 10.0.0.10), то будут разрешены соединения только с этим адресом. Это одна из мер защиты двухточечного соединения VPN между двумя удаленными сетями. Однако данная конечная точка настраивается в качестве VPN-сервера OpenVPN, так что придется разрешить соединения от любых удаленных клиентов. По этой причине мы просто превратили строку в комментарий. Позднее данный VPN-сервер будет настроен как удаленный компьютер.

По умолчанию OpenVPN использует UDP-порт с номером 1194. Если порт нужно изменить - например, чтобы использовать протокол, который открывают большинство администраторов брандмауэров, такой как TCP 443 - следует отыскать строку

; port 1194

и снять комментарий, убрав точку с запятой. Затем можно изменить номер порта, указав свой. По умолчанию применяется протокол UDP, но можно использовать и TCP. UDP более эффективен, и TCP рекомендуется применять только в случаях, когда UDP не работает, например, если брандмауэр блокирует весь трафик UDP. UDP не требует дополнительных затрат ресурсов, свойственных TCP, поэтому его производительность несколько выше, благодаря меньшему размеру заголовков и отсутствию встроенной функции подтверждения доставки пакетов, как в TCP. Однако OpenVPN шифрует исходные пакеты, обеспечивая проверку ошибок и повторную передачу, поэтому общая надежность не снижается.

Затем следует выбрать сетевой протокол dev tap или dev tun. Если планируется использовать OpenVPN в режиме моста, необходимо выбрать dev tap. В данном примере выполняется настройка соединения Windows-Windows в мостовой конфигурации, поэтому выбран протокол dev tap. В файле конфигурации должен быть элемент

dev tap

Затем настраивается метод аутентификации соединения. Для соединений, требующих повышенной безопасности, следует настроить TLS с собственной парой сертификат/ключ на обоих концах соединения. В данном примере для настройки VPN-соединения используется статический ключ (другие функции шифрования OpenVPN описаны во врезке "Режимы шифрования"). Сервер будет принимать только соединения OpenVPN с таким же статическим ключом.

В меню Start, All Programs, OpenVPN следует щелкнуть на пункте Generate a static OpenVPN key. В результате запускается простая консольная программа, которая генерирует ключ и копирует его в файл C:\Program Files\OpenVPN\config\key.txt. Любой обладатель статического ключа сможет установить соединение с конечной точкой OpenVPN, поэтому его следует хранить в секрете. Данный метод похож на процедуру настройки беспроводного узла доступа Access Point (AP) со статическим ключом. Статического ключа достаточно, чтобы связать две удаленные сети через OpenVPN, но если организован конечный сервер OpenVPN со многими клиентами, то лучше применять более надежный метод аутентификации пользователей, такой как сертификаты.

Файл конфигурации OpenVPN должен содержать команду Secret, за которой следует имя файла ключа:

secret key.txt

Если пример файла конфигурации .ovpn был предварительно скопирован, то изменять команду secret не нужно, так как она включена по умолчанию. Наконец, полезно добавить в файл конфигурации следующие две команды:

verb 4
mute 10

Команда verb задает уровень детализации журнала OpenVPN, и администратор может задать значение от 0 до 11. Параметр 0 означает, что не отображается никаких выходных данных, кроме неисправимых ошибок, а параметр 11 отображает множество данных, полезных при отладке. Как правило, для большинства пользователей достаточно значения 4. Команда mute выдает множество сообщений об ошибках и статусе. Эта команда полезна, если повторные попытки клиента установить соединение заканчиваются неудачей, и нужно, чтобы журнал не засоряли экземпляры одного и того же сообщения. Параметр 10 команды mute означает, что OpenVPN будет отображать не более 10 экземпляров одного сообщения, и отбросит остальные.

Настройка конфигурации клиента

Процесс установки клиента OpenVPN похож на процедуру для сервера. Нужно развернуть ту же программу OpenVPN и создать файл конфигурации .ovpn. Параметры должны соответствовать параметрам, заданным на сервере, с немногими исключениями. С помощью надежного носителя, такого как гибкий диск, нужно скопировать статический ключ, подготовленный для сервера (key.txt), на клиентский компьютер (например, в каталог C:\Program Files\OpenVPN\config).

Конфигурация клиента OpenVPN, использующего выбираемый по умолчанию протокол UDP и порт с номером 1194, может выглядеть следующим образом:

remote 10.0.0.2
dev tap
ifconfig 192.168.0.100
255.255.255.0
secret key.txt
verb 4
mute 10

Данная конфигурация идентифицирует удаленный VPN-сервер, с которым установит соединение клиент, определяет сетевой протокол как dev tap и назначает клиентский IP-адрес для OpenVPN. Также назначаются параметры для Secret, Verb и Mute. Клиентский IP-адрес зависит от режима OpenVPN - моста или маршрутизации. В режиме моста этот адрес должен совпадать с IP-адресом локальной сети.

Мост или маршрутизация?

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

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

Рассмотрим пример с мостом. В режиме моста строится мост между OpenVPN TAP-Win32 Adapter V8 и сетевым адаптером VPN-сервера. В этом режиме любой сетевой трафик любого адаптера выглядит так, как будто оба сетевых адаптера подключены к одной подсети. Образующий мост адаптер имеет один IP-адрес. Мост между адаптерами строится в Windows, а не в файле конфигурации OpenVPN.

После установки программы OpenVPN следует открыть утилиту Network Connections в панели управления. Нажав клавишу Ctrl, следует выделить как сетевой адаптер локальной сети, так и адаптер OpenVPN TAP-Win32. Когда оба адаптера будут выделены, нужно щелкнуть правой кнопкой мыши на одном из адаптеров и выбрать пункт Bridge Connections из контекстного меню. Спустя мгновение на экране появится новый объект мостового сетевого адаптера. Этот объект функционирует как сетевой адаптер и, по умолчанию, система назначит ему IP-адрес DHCP. На одном компьютере можно создать несколько конечных точек VPN с помощью нескольких адаптеров OpenVPN TAP-Win32. Если нужно соединить их в мостовой конфигурации, то следует присоединить их к мосту, обратившись к Properties раздела Network Bridge и выбрав дополнительные адаптеры.

Если OpenVPN работает на многоузловом (multihomed) компьютере - например, компьютере с внутренним (корпоративная сеть) и внешним (общедоступный канал в Internet) интерфейсами - то подключать к мосту внешний сетевой адаптер нельзя. Мост должен соединять только внутренний (корпоративная сеть) сетевой адаптер с адаптером OpenVPN TAP-Win32, а внешний интерфейс необходимо обязательно защитить брандмауэром или другим устройством. Это все, что нужно сделать, чтобы настроить сервер для работы OpenVPN в режиме моста. Никаких изменений в серверы вносить не требуется.

После настройки файлов конфигурации как на сервере, так и на клиенте, следует сохранить их и запустить программу OpenVPN, сначала на сервере. OpenVPN нужно запустить из системной панели, щелкнув правой кнопкой мыши на пиктограмме OpenVPN, а затем на кнопке Connect. На экране появится диалоговое окно OpenVPN с несколькими сообщениями о состоянии. Если соединение выполнено успешно, то пиктограмма становится желтой и программа ожидает новых соединений. Для запуска соединения OpenVPN из командной строки нужно ввести команду

openvpn config
 

Затем следует подключить клиента, повторив описанные выше шаги (Экран 1). Если соединение успешно установлено, то цвет пиктограммы станет зеленым, и появится сообщение, показанное на Экране 2. После того, как соединение установлено, можно обратиться к сетевому приложению в удаленной сети - например, протестировать соединение, направив ping-сигнал на сервер удаленной сети с клиента. Настройка бесплатной VPN с открытым исходным текстом завершена.

Какая VPN нужна предприятию?

OpenVPN надежна и устойчива к отказам сети. Если сетевое соединение прервано при активной сети VPN, то OpenVPN автоматически восстанавливает соединение после восстановления сетевого канала связи. Для простых случаев, таких как описано в данной статье, OpenVPN позволяет быстро организовать туннель OpenVPN, без серьезных дополнительных затрат. Труднее освоить продукт при использовании более сложных конфигураций - например, если требуется пользовательская аутентификация, выделение пула адресов VPN, либо прокладка нескольких туннелей за брандмауэром с помощью NAT (Network Address Translation). OpenVPN поддерживает эти режимы, но требует знания технических тонкостей. В таких случаях проще развернуть коммерческие VPN, так как у них, как правило, есть графический интерфейс и предоставляются технические консультации.

Цена коммерческих VPN также снизилась: всего за несколько тысяч долларов можно приобрести коммерческий концентратор VPN для обслуживания сотен пользователей. Кроме того, в VPN на базе UDP или TCP устранены многие несогласованности брандмауэра VPN, которые мешали работе туннелей IPsec. OpenVPN - не для всех; средним и крупным компаниям лучше по-прежнему работать с коммерческими продуктами VPN. Но в лабораториях и малых офисах, для которых имеет большое значение стоимость решения и не требуется сложной конфигурации, OpenVPN будет незаменим.


Режимы шифрования

OpenVPN поддерживает два типа шифрования: статический ключ и Transport Layer Security (TLS). В Windows статический ключ настроить легко. После установки OpenVPN на одной из сторон VPN следует запустить генератор ключей OpenVPN и скопировать новый ключ (на защищенном носителе) в папку \OpenVPN всех других компьютеров с OpenVPN, которым необходимо подсоединение к этой конечной точке OpenVPN. В файле настройки для всех конечных точек просто укажите имя файла ключа. По умолчанию OpenVPN использует для шифрования режим Blowfish Cipher Block chaining (BF-CBC), но можно выбрать и Advanced Encryption Standard (AES), Data Encryption Standard (DES), International Data Encryption Algorithm (IDEA), или какой-то иной, указав параметр шифрования в файле настройки. Приложение использует функции шифрования, аутентификации и проверки сертификатов из библиотеки OpenSSL, поэтому необходимо отслеживать обновления для OpenSSL.

OpenVPN также поддерживает TLS с использованием обмена ключами алгоритма Diffie-Hellman и ключи и сертификаты RSA. Установка сертификатов и ключей в этом случае подобна настройке других инфраструктур PKI, поддерживающих X.509 PKI для аутентификации сессии. При отсутствии опыта такой настройки следует просмотреть материалы по ссылкам на Web-сайте OpenVPN. Версии OpenVPN для Linux и UNIX имеют большее количество справочных материалов и программ для настройки TLS, чем версия для Windows. В примерах этой статьи я использовал статический ключ, чтобы сделать акцент на самом процессе настройки туннеля OpenVPN.


Джеф Фелинг (jeff@blackstatic.com) - Директор по информационной безопасности компании aQuantive. Автор книги IT Administrator's Top 10 Introductory Scripts for Windows (издательство Charles River Media).