OPENVPN - The Easy Tutorial - Руководство по OpenVPN

openmaniak openvpn square little blue OpenVPN openmaniak openvpn arrow right little blue Руководство по OpenVPN
Last Update: Mar 12 2008


Tool
Install
Ergonomy
Forum



details Что такое OpenVPN?
Снимки экрана
Установка
Руководство по OpenVPN
-----SECURITY MODE-----------
Прозрачный туннель
Статический ключ
SSL & PKI (Сертификаты)
-----CASE STUDY-----------
IP VPN (TUN)
Ethernet VPN (TAP)
VPN Advanced Settings
----------------
Bridging
Routing

Russian translation by Sergiy Uvarov.



⚠️⚠️⚠️
Please check our website about
attractions in Western Switzerland !! (Please use english translation).

⚠️⚠️⚠️
Merci de consulter notre site sur les
activités à faire en Suisse romande !!



openmaniak openvpn square little blue Установка OPENVPN:

Руководство по установки OpenVPN.

openmaniak openvpn square little blue АРХИТЕКТУРА КЛИЕНТ/СЕРВЕР:

При двух OpenVPN узлах (boxes) вы должны один объявить как сервер, а другой как клиент. Любой узел (box) может быть объявлен или сервером или клиентом, но в некоторых случаях только один из узелов может быть сервером, а другой клиентом. Давайте посмотрим когда это происходит.
Перед установлением VPN, клиент должнет создать соединение с сервером по специальному порту, в то время как серверу этого делать не надо. Давайте возьмем пример, где вы на работе и хотите установить VPN с домашним компьютером на прямую подсоединенным к Интернету.
В этом распространеном случае клиент может достигнуть сервера, но не наоборот. Это связано с тем, что клиент находится в локальной сети, и получает доступ в Интернет через прокси или Firewall, которые изменяют IP адрес отправителя.
Тем не менее, когда туннель создан, двунаправленная передача внутри него возможна.

openmaniak openvpn tutorial hide nat

openmaniak openvpn square little blue КОНФИГУРАЦИОННЫЙ ФАЙЛ:

Создайте файл, где вы будете хранить настройки OpenVPN.
В нашем примере мы назовем файл config.txt и сохраним его в /home/user/ или "C:\Program Files\OpenVPN\config\" директории в зависимости от операционной системы Linux/Unix или Microsoft.

Параметры настройки описаны в следующих разделах.

openmaniak openvpn square little blue НАЗНАЧЕНИЕ УЗЛА КЛИЕНТОМ/СЕРВЕРОМ:

SERVER CLIENT
# SERVER IP ADDRESS
# The Client WAN IP address is not
# needed
# SERVER IP ADDRESS
remote 100.0.0.1
#
openmaniak openvpn square little blue РЕЖИМ ТУННЕЛИРОВАНИЯ:

Вы можете выбрать между IP (TUN драйвер) или Ethernet (TAP драйвер) туннелем.
IP туннелирование называют еще режимом маршрутизации, а Ethernet туннель режимом моста.
Предпочтительно использовать IP туннелирование (включен по умолчанию), если вам не нужно передавать Ethernet трафик через туннель (например NetBIOS).

openmaniak openvpn square little blue ПОРТ ТУННЕЛЯ:

По умолчанию для туннелирования используется порт UDP 1194. Рекомендуется изменять порт только в том случае, если этого требует ваш Firwall.
Предпочтительно использовать UDP порты, так как использование TCP может привести к снижению производительности.

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

SERVER and CLIENT
# TCP OR UDP TUNNEL
# TCP tunnel

proto tcp
# UDP tunnel is recommended
proto udp
# use TCP or UDP but not both
#
# TCP OR UDP PORT

port 1194
openmaniak openvpn square little blue НАСТРОЙКИ FIREWALL:

Вы должны убедиться, что ваш OpenVPN клиент может установить соединение с сервером.
Ниже приведен пример правила безопасности, которое может быть включено в Firewall, позволяющее клиенту установить связь с сервером.



Из-за легкости конфигурирование OpenVPN, основные проблемы связанные с установлением соединения, возникают из-за ограничений на порты со стороны клиента и/или сервера.

openmaniak openvpn square little blue ETHERNET/IP ТУННЕЛЬ:

Вы можете создать или Ethernet (Мост) или IP (Маршрутизация) VPN с помощью соответствующих сетевых драйверов TAP или TUN. Эти драйвера доступны на всех платформах и входят в ядро Linux с версии 2.4. Рекомендуется использовать TUN (выбран по умолчанию), если вам не нужно передавать Ethernet трафик, например NetBIOS.
Для проверки загружены драйвера или нет, нужно выполнить команду:

#lsmod | grep tun
tun 12672 1

Заметим что "tun" драйвер включает в себя и TAP драйвер.
Если драйвер не загружен, тогда вы можете загрузить его следующим образом:

#modprobe tun
SERVER and CLIENT
# ETHERNET OR IP TUNNEL
# "dev tun" will create a routed IP tunnel

dev tun
# "dev tap" will create an Ethernet tunnel
dev tap
# use "dev tun" or "dev tap" but not both
openmaniak openvpn square little blue АРХИТЕКТУРА БЕЗОПАСНОСТИ OPENVPN:

openmaniak openvpn arrow right little blue Прозрачный туннель:

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

SERVER and CLIENT
# Client AND Server configs
# No integritiy (hash function
# algorithm)

auth none
# No encryption (cipher algorithm)
cipher none
openmaniak openvpn arrow right little blue Разделяемые ключи:

Один и тот же постоянный ключ используется между всеми VPN шлюзами.

Создание ключа описано в руководстве создания разделяемых ключей.
SERVER and CLIENT
# PRESHARED KEYS
# Linux system
static /home/user/openvpn/key.txt
# Windows system
static "C:\\Program Files\\OpenVPN\\config\\key.txt"
#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"

openmaniak openvpn arrow right little blue SSL/TLS:

- SSL/TLS сервер или клиент:

SERVER CLIENT
# SSL/TLS SERVER
tls-server
# SSL/TLS CLIENT
tls-client
- Сертификаты и открытые ключи:

Каждый узел должен иметь свои закрытый и открытый ключи, последний должен быть включен в сертификат.
Каждый узел также должен иметь CA (Certification Authority) сертификат.

Смотрите руководство по Инфраструктуре Открытых Ключей для того, чтобы узнать как создавать ключи и сертификаты.
SERVER CLIENT
# CERTIFICATES AND PRIVATE KEY
# Authority certificate (CA public key)

ca ca.key
# Server certificate (server public key)
cert server.crt
# Server private key
key server.key
# CERTIFICATES AND PRIVATE KEY
# Authority certificate (CA public key)

ca ca.key
# Client certificate (client public key)
cert client.crt
# Client private key
key client.key
Настройки Diffie-Hellmann (DH):

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

Подробоно о настройках DH смотрите руководство по SSL.


SERVER CLIENT
# Diffie-Hellman settings
dh dh1024.pem
# No DH setting on the client
#
Этот ключ будет использоваться алгоритмом симметричного шифрования и хэш функцией, как это будет показано в следующих двух параграфах.

openmaniak openvpn square little blue АЛГОРИТМ ШИФРОВАНИЯ

SERVER and CLIENT
# CIPHER ALGORITHM
cipher AES-256-CBC
- Конфиденциальность данных обеспечивается симметричными алгоритмами шифрования 3DES или AES.
По умолчанию используется алгоритм Blowfish.
Список доступных алгоритмов можно получить так:

#openvpn --show-ciphers
DES-CBC 64 bit default key (fixed)
IDEA-CBC 128 bit default key (fixed)
RC2-CBC 128 bit default key (variable)
DES-EDE-CBC 128 bit default key (fixed)
DES-EDE3-CBC 192 bit default key (fixed)
DESX-CBC 192 bit default key (fixed)
BF-CBC 128 bit default key (variable)
RC2-40-CBC 40 bit default key (variable)
CAST5-CBC 128 bit default key (variable)
RC5-CBC 128 bit default key (variable)
RC2-64-CBC 64 bit default key (variable)
AES-128-CBC 128 bit default key (fixed)
AES-192-CBC 192 bit default key (fixed)
AES-256-CBC 256 bit default key (fixed)


CBC (Cipher Block Chaining) это режим шифрования используемый блочными алгоритмами шифрования такими как AES, DES или Blowfish. CBC использует маленькие порции данных, вместо обработки всего блока за один раз. Другие доступные режимы шифрования: EBC, OFB, CFB. Рекомендуется использовать CBC.

openmaniak openvpn square little blue АЛГОРИТМЫ ХЭШ ФУНКЦИЙ

- Целостность данных (защита от их изменения) достигается использованием хэш функций.
HMAC часто используется в дополнении с SHA1 или MD5.
OpenVPN использует по умолчанию HMAC-SHA1.
Список доступных алгоритмов можно получить так:

#openvpn --show-digests
MD2 128 bit digest size
MD5 128 bit digest size
RSA-MD2 128 bit digest size
RSA-MD5 128 bit digest size
SHA 160 bit digest size
RSA-SHA 160 bit digest size
SHA1 160 bit digest size
RSA-SHA1 160 bit digest size
DSA-SHA 160 bit digest size
DSA-SHA1-old 160 bit digest size
MDC2 128 bit digest size
RSA-MDC2 128 bit digest size
DSA-SHA1 160 bit digest size
RSA-SHA1-2 160 bit digest size
DSA 160 bit digest size
RIPEMD160 160 bit digest size
RSA-RIPEMD160 160 bit digest size
MD4 128 bit digest size
RSA-MD4 128 bit digest size


SERVER and CLIENT
# HASH FUNCTION ALGORYTHM
auth MD5
"openvpn --show-tls" отображает алгоритмы шифрование и MAC (Message Authentication Code) используемый SSL/TLS во время установления соединения. Их не нужно путать с шифрованием и MAC используемых для обеспечения безопасности OpenVPN туннеля.

openmaniak openvpn arrow right little blue IP АДРЕСА:

Выберите адреса которые вы хотите использовать внутри туннеля.

openmaniak openvpn arrow right little blue Статические IP адреса:

В режиме маршрутизации выбираются два IP адреса (локальный и удаленный) внутри одной сети с 30 битной маской.
В режиме моста необходимо выбрать IP адрес для локального OpenVPN узла и указать маску сети, включающую IP адрес сервера.

SERVER CLIENT
# IP ADDRESSING
# IP mode example:
# Server IP: 10.8.0.1 ; Client IP: 10.8.0.2

ifconfig 10.8.0.1 10.8.0.2
# Bridge mode example
# Server IP: 10.8.0.1

ifconfig 10.8.0.1 255.255.255.0
# Use bridged or routed settings but not
# both
# Client and Server must use the same
# tunnel mode
# IP ADDRESSING
# IP mode example:
# Server IP: 10.8.0.1 ; Client IP: 10.8.0.2

ifconfig 10.8.0.2 10.8.0.1
# Bridge mode example
# Client IP: 10.8.0.2

ifconfig 10.8.0.2 255.255.255.0
# Use bridged or routed settings but not
# both
# Client and Server must use the same
# tunnel mode
openmaniak openvpn arrow right little blue Динамические IP адреса:

В этом случае сервер имеет статический IP адрес и раздает IP адреса клиентам как DHCP сервер.

SERVER CLIENT
# DHCP SETTINGS
# DHCP range
# Server will take the first IP address
server 10.8.0.0 255.255.255.0
# CLIENT ACCEPTS SERVER OPTIONS
# The client should accept options pushed
# by the server

pull
openmaniak openvpn square little blue ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ:

OpenVPN имеет много дополнительных параметров настроек, которые можно посмотреть в документации по OpenVPN.

openmaniak openvpn square little blue НАСТРОЙКИ ПРОТОКОЛА:

Подробность ведения протокола конфигурируется от 0 (минимум) до 15 (максимум). Для обычных условий достаточно будет 2-4.

# Уровень подробности.
# 0 -- только фатальные ошибки.
# 1 -- нефатальные сетевые ошибки.
# 3 -- средний уровень.
# 9 -- подробный.

SERVER and CLIENT
# LOG VERBOSITY
# log verbosity setting, 0=min 15=max

verb 3


openmaniak openvpn square little blue OPENVPN ПОЛЬЗОВАТЕЛЬ::

По причинам безопасности, всегда лучше запускать приложения без привилегий администратора.
Вы можете ограничить привилегии OpenVPN демона после его инициализации, указав ему работать под пользователем "nobody".
Используя "chroot" возможно также ограничить доступ к файлам после инициализации.

Заметим что эти настройки доступны только для Linux/Unix систем, но не Windows. Еще одна причина для использования ПО с открытым исходным кодом как Linux OS ...

SERVER and CLIENT
# OPENVPN SECURITY - Linux only
# OpenVPN User
user nobody
# After initialization, OpenVPN can only
# access a directory
# The directory can be empty
# OpenVPN process limitation

chroot /etc/openvpn/
openmaniak openvpn square little blue ЗАПУСК OPENVPN:

Используете следующий синтаксис для запуска OpenVPN.

#openvpn path-to-config-file
Ниже два примера для Linux и Windows, где "config.txt" - конфигурационный файл:

#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"
openmaniak openvpn square little blue ПРОВЕРКА ПРОТОКОЛА:

Протокол должен заканчиваться следующей строкой:

Initialization Sequence Completed

Это означает, что OpenVPN туннель создан успешно.

openmaniak openvpn square little blue ПРОВЕРКА СОЕДИНЕНИЯ:

Стандартная утилита для проверки IP соединений - ping.
VPN узел должен пинговать туннельный IP адрес другого узла.
В нашем случае, мы пингуем клиентский туннельный IP адрес из сервера:

ping 10.8.0.2
openmaniak openvpn square little blue ПРОВЕРКА OPENVPN:

Вскоре ожидается ...


openmaniak openvpn square little blue Некоторые параметры настройки OpenVPN по умолчанию:

Параметр: Значение:
Порт отправителя и получателя: UDP 1194
Режим туннелирования: IP туннель
Симметричное шифрование: Blowfish - CBC (128 bits)
Хэш-функция: HMAC - SHA1 (160 bits)
Сжатие: НЕТ
Tunnel MTU: 1500 байт
Подробность протокола: 0
Наверх