Показаны сообщения с ярлыком OpenVPN. Показать все сообщения
Показаны сообщения с ярлыком OpenVPN. Показать все сообщения

8.4.10

Настрока OpenVPN клиента под Windows

  В дополнении к этой статье нужно дополнительно указать как настраивать клиентское ПО на Windows. Для этого следует установить пакет OpenVPN на машину клиента. Скачивать его следует отсюда. Во время установки нужно подтвердить установку драйвера виртуального сетевого устройства, что создаст дополнительное сетевое соединение в папке сетевых подключений:


   Теперь следует настроить конфиг client.ovpn для клиента. В моем случае конфиг выглядит следующим образом:
client
dev tun
proto tcp
remote IP_adress 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
 Где указанные директивы значат:
client - система используется как клиентская часть.
dev tun - для соединения следует использовать устройство tun.
proto tcp - для соединения следует использовать протокол TCP.
remote - здесь следует через пробел указать удаленный адрес и порт сервера.
resolv-retry - попытки разрешения имени сервера делаем бесконечными. Для соединений с ненадежным каналом интернет.
nobind - для клиента необязательно использовать конкретный порт для соединения. Можно использовать любой специальный.
persist-key и persist-tun - сохранять состояние при перезагрузке.
ca, cert, key - пути до корневого сертификата сервера, сертификата и ключа клиента для авторизации клиента. Если указаны просто файлы, то программа будет искать их в том же каталоге где и сам конфиг.
ns-cert-type - проверка того что сертификат сервера является таковым, важная мера безопасности системы.
comp-lzo - включение сжатия данных.
verb - подробности в логе уровня 3. Нормально для вылавливания простых ошибок в настройках.
  Данный конфиг должен лежать в папке куда указывает шорткут "OpenVPN configuration file directory" в главном меню Windows:


  Щелчок по ярлыку откроет папку для когфигов OpenVPN. В эту папку следует положить конфиг и ключи созданные на сервере. Теперь запускаем графический интерфейс OpenVPN GUI для клиента, должен появиться значок в трее. Щелкнув по нему правой кнопкой мыши, вызываем меню и жмем Connect:


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

25.10.09

Создание клиент-сервер OpenVPN соединения с аутентификацией по сертификату.

Достаточно быстрый способ создания сервера, и соединения клиента с помощью NetworkManager. Я использую OpenVPN для соединения со своими серверами, и с машин под управлением Windows и Linux, что очень удобно, также данный VPN передерживается NetworkManager что облегчает его быструю настройку на Linux.

Создание туннеля OpenVPN с аутентификацией пользователей с помощью сертификатов.

Сначала установим openvpn с репозиториев на сервер:
#yum install openvpn

после установки создадим ключи для сервера и клиентов, для этого в составе пакета есть группа скриптов, которая устанавливается в /usr/share/openvpn. Скопируем оттуда каталог easy-rsa в домашнюю директорию ~ :
#cp -r /usr/share/openvpn/easy-rsa ~/

В получившемся каталоге easy-rsa будет два каталога 1.0 и 2.0, нам нужен 2.0. Вторая версия скриптов easy-rsa. В каталоге следует поправить файл vars, в котором задайте ваши данные для директив:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="PROVINCE"
export KEY_CITY="City"
export KEY_ORG="Organisation"
export KEY_EMAIL="mail@mail.com"


По умолчанию скрипт генерирует все сертификаты в каталог ./key можно оставить так. Но лучше мы будем генерировать ключи прямо в каталог openvpn, что бы не пришлось возиться с обновлением файлов после того как будем добавлять новых пользователей.  Укажем другой каталог файле vars директива KEY_DIR:
export KEY_DIR="/etc/openvpn/keys/"

Создадим каталог для наших ключей keys:
#mkdir /etc/openvpn/keys/

Укажем скриптам что брать настройки следует из vars:
#source ./vars
#./clean-all

Генерируем сертификаты для серверной части. Первый будет ca сертификат:
#./build-ca
Generating a 1024 bit RSA private key
......++++++
............++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [PROVINCE]:
Locality Name (eg, city) [City]:
Organization Name (eg, company) [Organisation]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [Organisation CA]:
Name []:
Email Address [mail@mail.com]:

Запускаем генерацию ключа (вместо server вставьте свои данные):

#./build-key-server server
Generating a 1024 bit RSA private key
............................++++++
..............................................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [PROVINCE]:
Locality Name (eg, city) [City]:
Organization Name (eg, company) [Organisation]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Name []:
Email Address [mail@mail.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:passwd
An optional company name []:
Using configuration from /root/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :PRINTABLE:'PROVINCE'
localityName :PRINTABLE:'City'
organizationName :PRINTABLE:'Organisation'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'mail@mail.com'
Certificate is to be certified until Oct 23 12:59:41 2019 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Теперь нужно сгенерировать ключ Диффи-Хелмана для защиты обмена ключами:
#./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.......................................................................+.........................................++*++*++*
В итоге в каталоге keys должно получиться примерно следующее:
-rw-r--r-- 1 root root 3883 2009-10-25 15:59 00.pem
-rw-r--r-- 1 root root 3766 2009-10-25 16:02 01.pem
-rw-r--r-- 1 root root 1233 2009-10-25 15:54 ca.crt
-rw------- 1 root root 887 2009-10-25 15:54 ca.key
-rw-r--r-- 1 root root 245 2009-10-25 16:06 dh1024.pem
-rw-r--r-- 1 root root 210 2009-10-25 16:02 index.txt
-rw-r--r-- 1 root root 20 2009-10-25 16:02 index.txt.attr
-rw-r--r-- 1 root root 21 2009-10-25 15:59 index.txt.attr.old
-rw-r--r-- 1 root root 105 2009-10-25 15:59 index.txt.old
-rw-r--r-- 1 root root 3 2009-10-25 16:02 serial
-rw-r--r-- 1 root root 3 2009-10-25 15:59 serial.old
-rw-r--r-- 1 root root 3883 2009-10-25 15:59 server.crt
-rw-r--r-- 1 root root 700 2009-10-25 15:59 server.csr
-rw------- 1 root root 887 2009-10-25 15:59 server.key

Теперь что касается клиентов создаём клиентские ключи подобным образом (вместо client вставьте свои данные). Сгенерируйте ключи для всех пользователей вашей сети, которым нужен будет доступ по VPN:
#./build-key client
Generating a 1024 bit RSA private key
.++++++
............................++++++
writing new private key to 'client.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [PROVINCE]:
Locality Name (eg, city) [City]:
Organization Name (eg, company) [Organisation]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client]:
Name []:
Email Address [mail@mail.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:passwd
An optional company name []:
Using configuration from /root/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :PRINTABLE:'PROVINCE'
localityName :PRINTABLE:'City'
organizationName :PRINTABLE:'Organisation'
commonName :PRINTABLE:'client'
emailAddress :IA5STRING:'mail@mail.com'
Certificate is to be certified until Oct 23 13:02:29 2019 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated



Теперь притупим к конфигурированию непосредственно сервера. В каталоге /usr/share/doc/openvpn-2.1/sample-config-files/ есть примеры конфигурационных файлов, нам нужен оттуда файл server.conf. Скопируем его в каталог конфигураций openvpn:
#cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/

Изменим некоторые директивы конфига под наши нужды. Укажем порт который будет слушать openvpn:
port 1194

Протокол передачи данных (Можно tcp или udp):

proto udp

Виртуальный интерфейс который будет использовать openvpn
dev tun0


Укажем виртуальную сеть которую будет использовать openvpn:
server 10.8.0.0 255.255.255.0

Укажем лог файл и его уровень для отладки:
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3

Все на этом заканчиваем с настройками сервера, запускаем службу:
#/etc/init.d/openvpn start
И укажем их местонахождение в конфиге сервера с помощью директив:
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem


Если все в норме в логе будут несколько информативных сообщений, заканчивающихся сообщением Initialization Sequence Completed.
Теперь очередь за клиентом. Скопируем с помощью носителя ключи client.crt, client.key, dh1024.pem, ca.crt из папки ~/easy-rsa/2.0/keys в папку клиента ~/.keys.
Для соединения с сетью я рекомендую использовать NetworkManager (идёт по умолчанию в Fedora). Данная система позволяет настраивать множество различных типов сетевых соединений без использования root и заносить настройки с помощью однотипных графических форм.
Для того что бы NetworkManager умел работать с OpenVPN нужно установить для него плагин из репозитариев:
#yum install NetworkManager-openvpn

После того, как плагин установиться вызовем утилиту настроек сетевых соединений в меню Система\Параметры\Сетевые соединения. Откроется нижеследующее окно:

Нажав кнопку добавить, вызовем визард VPN, в ниспадающем меню которого выберем OpenVPN:

Нажатие на кнопку Create... откроет форму в которую занесем данные о наших сертификатах. Если надо поставим галочку подключаться автоматически:


Указываем имя соединения, адрес сервера в поле Шлюз, в ниспадающем меню указываем тип соединения Сертификаты (TSL), в поле сертификат выбираем client.crt, в поле Сертификат CA указываем ca.crt, в поле личный ключ - client.key и наконец в поле пароль личного ключа вносим пароль который мы вводили при генерации ключа клиента. Если вы выбрали протокол tcp в настройках сервера то, клиенту следует указать использовать tcp, щёлкнув на кнопке Дополнительно... и поставив соответственную галку:

Все, подтверждаем наши настройки поклацав на соответствующие кнопки.
Для активации VPN щёлкните на апплете сетевых соединений. В выпавшем меню выбираем: Соединения VPN\"Имя нашего соединения" и если все настроено правильно появиться уведомление о подключении к сети. Что бы получить доступ к подсети, а не только к самому серверу, через этот VPN, необходимо включить маршрутизацию пакетов на сервере выполнив:
#echo "1" > /proc/sys/net/ipv4/ip_forward
А так же настроить iptables для того что бы он NATил пакеты из VPN. В комплекте с пакетом для этих целей идёт скрипт который облегчает эту задачу. Найдёте его по пути: /usr/share/doc/openvpn-2.1/sample-config-files/firewall.sh. Данная система позволяет также соединяться по VPN машинам под управлением Windows для чего есть соответствующий пакет на официальном сайте.
 Отозвать сертификат можно скриптом  revoke-full из каталога easy-rsa:
./revoke-full client

Популярные сообщения