- •Введение
- •Глава 1. Основная часть
- •1.1 Основные топологии компьютерных сетей
- •1.3 Стек протоколов tcp/ip
- •Глава 2. Специальная часть
- •2.1 Цель курсового проекта
- •2.2 Технология виртуальных частных сетей virtual private network (vpn).
- •2.3 Компоненты сети openvpn.
- •2.4 Создание удостоверяющего центра ca.
- •2.5 Создание сервера openvpn.
- •2.6 Установка и запуск по клиента openvpn.
- •2.7 Установка прокси-сервера squid.
- •Глава 3. Мероприятия по технике безопасности
- •Заключение
- •Список использованных источников
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.
