OpenVPN

Материал из MediaWiki
Перейти к навигации Перейти к поиску

Эта статья - заготовка, шаблон. Created by Pinkbyte, 20.06.2011

Что такое OpenVPN?

OpenVPN — это программное обеспечение для построения виртуальных частных сетей (Virtual Private Network, подробнее тут). Распространяется под лицензией GNU GPL. Официальный сайт проекта — http://openvpn.net

Особенности

Типы туннелей

OpenVPN в Linux реализует туннели через драйвер TUN/TAP. Вследствие этого поддерживаются как стандартные туннели 3-го уровня (IP-туннели, tun), так и туннели 2-го уровня(Ethernet-туннели, tap). Преимуществом Ethernet-туннелей является возможность работы по ним служб, использующих широковещательную рассылку(broadcasting), а также других протоколов, кроме IP(например IPX). Однако Ethernet-туннели в OpenVPN обладают немного меньшей управляемостью (нельзя фильтровать трафик между двумя VPN-клиентами на сервере). Поэтому чаще используются IP-туннели

Поддерживаемые способы аутентификации

Аутентификация в OpenVPN возможна несколькими способами:

Статическим ключом, распространяемым на каждого клиента

Преимущества:

  • Легкость установки и развертывания

Недостатки

  • Низкая масштабируемость
  • Низкий уровень безопасности (утечка ключа приведет к возможности полностью расшифровать содержание всех перехваченных ранее сеансов)
  • Секретный ключ хранится в простом файле на каждом VPN-клиенте
  • Распространение секретного ключа на новых клиентов должно происходить через уже имеющийся защищенный канал связи (во избежание перехватов, так как при перехвате будут скомпрометированы ВСЕ клиенты)

Парой логин/пароль (как через самописный скрипт, так и с помощью плагинов: PAM, RADIUS и т.д.)

С использованием SSL-сертификатов

Преимущества

  • Высокая масштабируемость
  • Возможность отзыва скомпрометированных или более ненужных клиентских сертификатов
  • Возможность генерации сертификатов на ограниченный срок

Недостатки

  • Сложность первоначальной настройки: необходима генерация всей инфраструктуры сертификатов - CA, серверного и клиентских сертификатов на каждого клиента)

Двухфакторная аутентификация (с использованием смарт-карт)

Примеры конфигурационных файлов клиента и сервера

Сервер (Linux, тип туннеля - TAP, сертификаты и ключи - в папке /etc/openvpn/serv)

cd /etc/openvpn/serv
port 1194
proto udp
dev tap_vpn
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server-bridge 192.168.3.1 255.255.255.0 192.168.3.50 192.168.3.250
ifconfig 192.168.3.1 255.255.255.0
keepalive 10 60
client-to-client
comp-lzo
persist-key
persist-tun
mssfix 1300
float

Клиент (Linux, тип туннеля - TAP, сертификаты и ключи - в папке /etc/openvpn/home):

cd /etc/openvpn/home
client
proto udp
dev tap
ca ca.crt
dh dh1024.pem
cert phantom.crt
key phantom.key
remote server.local 1194
comp-lzo
persist-key
persist-tun
keepalive 10 60
float
resolv-retry infinite
nobind
ns-cert-type server
pull

Описание часто используемых опций конфигурации

cd - смена текущей директории. Полезна для использования относительных путей в остальных конфигурационных файлах.

proto - тип транспортного протокола, в который будут инкапсулированы IP-пакеты. Может принимать значения tcp и udp