Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
137.06 Кб
Скачать

2.5 Создание сервера openvpn.

Процесс создания сервера OpenVPN включает в себя установку пакета openvpn, подготовку файлов конфигурации, ключей и сертификатов.

Установка пакета openvpn

Устанавливаем пакет сервера OpenVPN следующим образом:

# apt-get install openvpn

Подготовка файлов конфигурации

Файлы конфигурации, сертификаты и ключи помещаем в каталог /etc/openvpn, который будет создан автоматически в процессе установки пакета openvpn.

Прежде всего, подготавливаем файлы конфигурации openssl.cnf и server.conf. Первый из этих файлов определяет конфигурацию OpenSSL, второй — конфигурацию сервера OpenVPN.

В комплекте с утилитой Easy-RSA поставляется пример файла конфигурации OpenSSL:

/home/ca/easy-rsa-master/easyrsa3/openssl-1.0.cnf

В файле openssl.cnf указан абсолютный путь к каталогу с ключами и сертификатами, который только что был создан.

Содержимое файла server.conf

Чтобы запуск сервера OpenVPN произошел успешно, создаем каталоги, сертификаты и ключи, на которые есть ссылки в файлах openssl.cnf и server.conf, а также пользователя openvpn.

Создаем каталог для журнала сервера OpenVPN:

# mkdir /var/log/openvpn/

Создаем каталог для конфигураций клиентов (пока не используем):

# mkdir /etc/openvpn/ccd

Подготовка сертификата и ключа для сервера OpenVPN

Помимо openssl.cnf и openvpn.conf в каталоге /etc/openvpn/ нам потребуются файлы, перечисленные в табл. 3.

Таблица 3. Файлы для сервера OpenVPN.

Файл

Описание

dh.pem

Файл Диффи-Хелмана для защиты трафика от расшифровки

ca.crt

Сертификат удостоверяющего центра CA

server.crt

Сертификат сервера OpenVPN

server.key

Приватный ключ сервера OpenVPN, секретный

crl.pem

Список отзыва сертификатов CRL

ta.key

Ключ HMAC для дополнительной защиты от DoS-атак и флуда

Прежде всего создаем приватный ключ и файл запроса на сертификат для сервера OpenVPN, а также получаем по созданному запросу в удостоверяющем центре CA подписанный сертификат. В результате у нас появятся файлы server.crt и server.key. Далее займемся остальными файлами, перечисленными в табл. 3.

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

Установку Easy-RSA, генерацию приватного ключа сервера OpenVPN и запроса на сертификат делаем от имени пользователя vpnoperator, не имеющего привилегий администратора. Добавим этого пользователя перед началом работ:

# adduser vpnoperator

Прежде всего, устанавливаем на сервере OpenVPN утилиту Easy-RSA и запускаем инициализацию инфраструктуры публичных ключей PKI:

$ cd /home/vpnoperator

$ wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

$ unzip master.zip

$ cd /home/vpnoperator/easy-rsa-master/easyrsa3

$ ./easyrsa init-pki

После успешной инициализации PKI в консоли появится сообщение:

init-pki complete; you may now create a CA or requests.

Your newly created PKI dir is: /home/vpnoperator/easy-rsa-master/easyrsa3/pki

Так как сервер OpenVPN не будет играть роль удостоверяющего центра, то после инициализации PKI создавать CA командой build-ca не будем.

Инфраструктура PKI будет создана в каталоге /home/vpnoperator/easy-rsa-master/easyrsa3/pki.

На следующем этапе получаем запрос на сертификат и приватный ключ сервера OpenVPN:

$ ./easyrsa gen-req server

Этой командой будет создан файл запроса server.req и приватного ключа server.key. В процессе генерации будет запрошен пароль, а также имя Common Name для сервера OpenVPN:

Generating a 2048 bit RSA private key

...............................................................................................................+++

....................................+++

writing new private key to '/home/vpnoperator/easy-rsa-master/easyrsa3/pki/private/server.key'

Enter PEM pass phrase:******

Verifying - Enter PEM pass phrase:******

-----

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.

-----

Common Name (eg: your user, host, or server name) [server]: vpn-server

Keypair and certificate request completed. Your files are:

req: /home/vpnoperator/easy-rsa-master/easyrsa3/pki/reqs/server.req

key: /home/vpnoperator/easy-rsa-master/easyrsa3/pki/private/server.key

Первый из этих файлов нужно передать на сервер удостоверяющего центра CA, он не секретный. Второй файл — секретный, и он не должен покидать пределы сервера OpenVPN.

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

Итак, создан приватный ключ сервера OpenVPN и запрос на сертификат.

После удачного импорта запроса увидим следующее сообщение:

The request has been successfully imported with a short name of: vpn-server

You may now use this name to perform signing operations on this request.

Если ошибок нет, подписываем запрос на получение сертификата:

./easyrsa sign-req server vpn-server

В процессе создания подписанного сертификата будет запрошено подтверждение, а также пароль приватного ключа удостоверяющего центра CA:

You are about to sign the following certificate.

Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:

subject=

commonName = server

Type the word 'yes' to continue, or any other input to abort.

Confirm request details: yes

Using configuration from /home/ca/easy-rsa-master/easyrsa3/openssl-1.0.cnf

Enter pass phrase for /home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key:******

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

commonName :ASN.1 12:'server'

Certificate is to be certified until Jun 26 15:48:25 2024 GMT (3650 days)

Write out database with 1 new entries

Data Base Updated

Certificate created at: /home/ca/easy-rsa-master/easyrsa3/pki/issued/vpn-server.crt

Теперь сертификат получен, и он находится на сервере удостоверяющего центра в файле home/ca/easy-rsa-master/easyrsa3/pki/issued/vpn-server.crt. Этот файл нужно передать на сервер OpenVPN.

Скопируем через USB флеш-диск файл сертификата /ca/easy-rsa-master/easyrsa3/pki/issued/vpn-server.crt с сервера удостоверяющего центра в файл на сервере OpenVPN /home/vpnoperator/vpn-server.crt.

Скопируем файлы ca.crt сертификата CA, список отзыва сертификатов crl.pem и сертификат vpn-server.crt сервера OpenVPN в каталог /etc/openvpn.

Генерация файла Диффи-Хелмана

Создаем ключи Диффи-Хелмана следующей командой:

$ cd /home/vpnoperator/easy-rsa-master/easyrsa3

$ ./easyrsa gen-dh

Команда gen-dh работает довольно долго. По завершении увидим сообщение:

DH parameters of size 2048 created at /home/vpnoperator/easy-rsa-master/easyrsa3/pki/dh.pem

Скопируем файл/home/vpnoperator/easy-rsa-master/easyrsa3/pki/dh.pem в каталог /etc/openvpn/ :

# cp /home/vpnoperator/easy-rsa-master/easyrsa3/pki/dh.pem /etc/openvpn

Создание статического ключа HMAC

Для создания ключа HMAC используем команду openvpn с опциями --genkey и --secret:

# cd /etc/openvpn

# openvpn --genkey --secret ta.key

Записываем файл ta.key на USB диск.

Ревизия файлов перед запуском OpenVPN

Итак, мы получили из удостоверяющего центра подписанный сертификат сервера OpenVPN, сертификат самого удостоверяющего центра CA, список отзыва сертификатов, создали файл Диффи-Хелмана и ключ HMAC.

Перед тем как запустить демон OpenVPN, нам нужны следующие файлы:

  • openssl.cnf — файл конфигурации OpenSSL;

  • server.conf — файл конфигурации сервера OpenVPN;

  • ca.crt — cертификат удостоверяющего центра;

  • vpn-server.crt — cертификат сервера OpenVPN;

  • server.key — приватный ключ сервера OpenVPN, секретный;

  • crl.pem — cписок отзыва сертификатов;

  • dh.pem — файл Диффи-Хелмана для обеспечения защиты трафика от расшифровки;

  • ta.key — ключ HMAC для дополнительной защиты от DoS-атак и флуда.

Добавление пользователя openvpn

Добавляем непривилегированного пользователя и группу openvpn, от имени которого будет работать демон сервера OpenVPN:

# adduser --system --no-create-home --home /nonexistent --disabled-login --group openvpn

Запуск демона OpenVPN

Запускаем демон OpenVPN следующей командой:

# /etc/init.d/openvpn start

Проверка результата запуска демона OpenVPN

Если сервер OpenVPN стартовал без ошибок, убедимся с помощью команды ifconfig в том, что появился интерфейс TUN:

# ifconfig

...

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.15.0.1 P-t-P:10.15.0.1 Mask:255.255.255.0

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Если все хорошо, то в интерфейсе tun появился адрес IP 10.15.0.1. Это адрес сервера OpenVPN в нашем защищенном туннеле, заданный в файле конфигурации server.conf.

После проверки наличия интерфейса TUN убедимся, что OpenVPN занял порт 1194:

# netstat -ltupn | grep 1194

Если демон запустился нормально и порт 1194 занят сервером OpenVPN, можно переходить к установке клиента OpenVPN. При возникновении ошибок необходимо проанализировать журнал /var/log/openvpn/openvpn-server.log.