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

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL.

Установка и настройка

# whereis openvpn
# /usr/ports/security/openvpn
# cd /usr/ports/security/openvpn
# make install clean

Добавим в автозагрузку.

# echo 'openvpn_enable="YES"' >> /etc/rc.conf

Конфигурационный файл находится в /usr/local/etc/openvpn/openvpn.conf.

dev tun1 #Имя интерфейса, использовать tun-интерфейсы вместо tap
proto tcp #Ну протокол который будет использоваться
port 5000 #Порт который слушает сервер
user nobody #От какого имени запускать
group nobody #Аналогично имя группы
server 192.168.10.0 255.255.255.0 #pool ip адресов
push “route 192.168.0.0 255.255.255.0” #маршруты в локалку
tls-server
ca keys/ca.crt #коневой сертификат
cert keys/server.crt #сертификат сервера
key keys/server.key #закрытый ключ
dh keys/dh1024.pem
comp-lzo #сжатие с помощью lzo, используя адаптирующийся алгоритм.
keepalive 10 120
verb 4 # с какой подробностью вести логи
log-append /var/log/openvpn.log # файл с логами

Теперь создадим сертификаты и ключи.

В OpenVPN есть скрипт для более простого создания сертификата. Скопируем его себе в хоумку.

# cp -r /usr/local/share/doc/openvpn/easy-rsa ~/

Теперь отредактируйте файл vars.

# cd ~/easy-rsa/2.0/
# ee ./vars
export KEY_COUNTRY=”MyCountry”
export KEY_PROVINCE=”MyProvince”
export KEY_CITY=”MyCity”
export KEY_ORG=”MyCompany
export KEY_EMAIL=”me@myhost.mydomain”

Этот файл предназначен для установок переменных среды окружения, перед генерацией ключей. Запустите его при помощи точки:

# chmod u+x *
# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/easy-rsa/2.0/keys
# ./clean-all

Осталось запустить процесс генерации ключей и сертификата СА – (корневого сертификата).

# ./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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) []:MyCompany
Common Name (eg, your name or your server’s hostname) [Fort-Funston CA]:www.myhost.com
Email Address [me@myhost.mydomain]:root@myhost.com
#

 

В текущей директории появилась директория keys, в которой находятся файлы сертификата и ключ.
Теперь следует создать ключ и сертификат для сервера.
# ./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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) []:MyServer
Common Name (eg, your name or your server’s hostname) [server]:www.myhost.com
Email Address [me@myhost.mydomain]:root@myhost.com
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
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:’US’
stateOrProvinceName   :PRINTABLE:’CA’
localityName          :PRINTABLE:’SanFrancisco’
organizationName      :PRINTABLE:’Fort-Funston’
organizationalUnitName:PRINTABLE:’MyServer’
commonName            :PRINTABLE:’www.myhost.com’
emailAddress          :IA5STRING:’root@myhost.com’
Certificate is to be certified until Nov 11 01:33:30 2020 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-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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) [client]:client
Email Address [me@myhost.mydomain]:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
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:’US’
stateOrProvinceName   :PRINTABLE:’CA’
localityName          :PRINTABLE:’SanFrancisco’
organizationName      :PRINTABLE:’Fort-Funston’
commonName            :PRINTABLE:’client’
emailAddress          :IA5STRING:’me@myhost.mydomain’
Certificate is to be certified until Nov 11 01:39:13 2020 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

В заключении следует создать Diffie Hellman параметры.

# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
………………………… …………+.
…………. ……………….+………..
…+…….+………………………..+…
……………..++*++*++*
#

Посмотрим какие у нас файлы получились и что они значат.

# ls ./keys/
01.pem client.crt index.txt serial server.key
02.pem client.csr index.txt.attr serial.old
ca.crt client.key index.txt.attr.old server.crt
ca.key dh1024.pem index.txt.old server.csr
Файл                 |Машина            |Название                            |Доступ
ca.crt |Сервер и клиенты |Сертификат корневого СА |Публичный
ca.key |Только на сервере |Необходим для подписи сертификатов |Секретный
1024.pem |Только на сервере |Diffie Hellman параметры |Публичный
artur.kryukov.ru.crt |Только на сервере |Сертификат сервера |Публичный
artur.kryukov.ru.key |Только на сервере |Ключ сервера |Секретный
home.kryukov.ru.crt |Только на клиенте |Сертификат клиента |Публичный
home.kryukov.ru.key |Только на клиенте |Ключ клиента |Секретный

 

Скопируйте нужные серверу файлы в /usr/local/etc/openvpn/keys. И попробуйте запустить openvpn.

# /usr/local/etc/rc.d/openvpn start

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *