|
|||||||
Установка OpenVPN на Ubuntu 18.04 LTS. Часть 1 из 12
Время создания: 20.08.2024 23:06
Автор: alensav
Текстовые метки: OpenVPN на Ubuntu 18.04 LTS
Раздел: MyTetra - INTERNET
Запись: alensav/MyTetra2/main/base/1724184386yizr417596/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Установка OpenVPN на Ubuntu 18.04 LTS. Часть 1 из 12 Теги: Linux • SSL • Ubuntu • VPN • Клиент • Ключ • Конфигурация • Настройка • Сервер • Установка OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек. OpenVPN использует сертификаты TLS/SSL для шифрования трафика между сервером и клиентами. Принцип работы TLS/SSL — сначала рукопожатие, потом передача данных. Во время рукопожатия клиент и сервер используют шифрование открытым ключом для того, чтобы определить параметры секретного ключа, используемого клиентом и сервером для шифрования во время передачи данных. Клиент инициирует рукопожатие, посылая hello-сообщение серверу со списком алгоритмов симметричного шифрования, которые он поддерживает. Сервер отвечает похожим hello-сообщением, выбрав подходящий алгоритм шифрования из списка. Далее сервер отправляет сертификат, который содержит его публичный ключ. Для проверки сертификата сервера клиент использует публичный ключ центра сертификации (CA). Далее клиент отправляет серверу сертификат, который содержит его публичный ключ, чтобы сервер мог его проверить. Для создания общего секретного ключа, который нужен для шифрования сообщений, используется протокол Диффи-Хеллмана. Протокол Диффи-Хеллмана — криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования. Рукопожатие завершается отправкой finished-сообщений, как только обе стороны готовы начать использование секретного ключа. Начинается передача данных — все сообщения между клиентом и сервером шифруются, каждый пакет имеет подпись HMAC для проверки целостности. Нам нужно будет решить следующие задачи:
Устанавка OpenVPN сервера OpenVPN доступен в репозиториях Ubuntu по умолчанию, поэтому используем apt для установки: $ sudo apt install openvpnКопировать Подготовка к работе с сертификатами OpenVPN использует сертификаты TLS/SSL для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов необходимо создать собственный центр сертификации (CA). Мы загрузим последнюю версию EasyRSA из официального репозитория и создадим инфраструктуру открытых ключей (подробнее здесь ). Согласно официальной документации OpenVPN, центр сертификации должен быть размещен на отдельном компьютере, который будет отвечать за импорт и подписание запросов сертификатов. Но у нас центр сертификации будет на том же компьютере, где мы уже установили OpenVPN-сервер. $ cd ~ $ mkdir easy-rsa $ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgz $ tar xvf EasyRSA-3.0.7.tgz $ cp -r EasyRSA-3.0.7/* easy-rsa/Копировать В OpenVPN открытый ключ называется сертификатом и имеет расширение crt, а закрытый ключ так и называется ключом и имеет расширение key. Создание центра сертификации Создаем копию файла vars.example — это пример конфигурации. Изменим в нем несколько параметров: $ cd ~/easy-rsa/ $ cp vars.example vars $ nano varsКопировать set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "Moscow"
set_var EASYRSA_REQ_CITY "Moscow"
set_var EASYRSA_REQ_ORG "Some Company"
set_var EASYRSA_REQ_EMAIL "support@some-company.com"
set_var EASYRSA_REQ_OU "IT department"Копировать В каталоге ~/easy-rsa/ есть скрипт easyrsa, который предназначен для выполнения разнообразных задач, связанных с построением центра сертификации. Запускаем этот скрипт с опцией init-pki для инициализации инфраструктуры: $ ./easyrsa init-pki Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/evgeniy/easy-rsa/pkiКопировать Создаем корневой сертификат удостоверяющего центра: $ ./easyrsa build-ca nopass Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
Generating RSA private key, 2048 bit long modulus (2 primes)
......................+++++
.................+++++
e is 65537 (0x010001)
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]: Enter State or Province Name (full name) [Moscow]: Enter Locality Name (eg, city) [Moscow]: Enter Organization Name (eg, company) [Some Company]: Enter Organizational Unit Name (eg, section) [IT department]: Enter Common Name (eg: your user, host, or server name) [Easy-RSA CA]: Some Company Auth Center Email Address [support@some-company.com]: Enter CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/evgeniy/easy-rsa/pki/ca.crtКопировать Нужно указать семь значений для нового сертификата; для шести из них будет предложено значение по умолчанию. Остается придумать универсальное имя — пусть это будет Some Company Auth Center. Корневой сертификат — это файл pki/ca.crt, а секретный ключ — это файл pki/private/ca.key. Создание ключей сервера Теперь нужно создать файл закрытого ключа vpn-server.key и файл открытого ключа (сертификат) vpn-server.crt. Также нужно создать дополнительные файлы, которые будут использоваться в процессе шифрования. Все эти файлы + файл корневого сертификата нужно скопировать в директорию /etc/openvpn/keys/ и прописать пути к ним файле конфигурации OpenVPN-сервера. Создаем закрытый и открытый ключ для vpn-сервера: $ ./easyrsa gen-req vpn-server nopass Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
Generating a RSA private key
......................+++++
.................+++++
writing new private key to '/home/evgeniy/easy-rsa/pki/easy-rsa-10544.uHxfDZ/tmp.YE17mI'
-----
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]: Enter State or Province Name (full name) [Moscow]: Enter Locality Name (eg, city) [Moscow]: Enter Organization Name (eg, company) [Some Company]: Enter Organizational Unit Name (eg, section) [IT department]:
Common Name (eg: your user, host, or server name) [vpn-server]: Some Company VPN Server Email Address [support@some-company.com]: Enter Keypair and certificate request completed. Your files are:
req: /home/evgeniy/easy-rsa/pki/reqs/vpn-server.req
key: /home/evgeniy/easy-rsa/pki/private/vpn-server.keyКопировать Здесь мы опять используем все значения по умолчанию, а задаем только универсальное имя — Some Company VPN Server. При создании закрытого ключа формируется запрос на подпись сертификата — в нашем случае это файл pki/reqs/vpn-server.req. Если бы мы все делали по правилам и центр сертификации был бы на отдельном сервере, нужно было бы передать файл файл vpn-server.req в центр сертификации и выпустить на его основе сертификат. Но в нашем случае все проще, запрос на сертификат уже в центре сертификации и нужно только выпустить (подписать) этот сертфикат. $ ./easyrsa sign-req server vpn-server Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
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 825 days:
subject=
countryName = RU
stateOrProvinceName = Moscow
localityName = Moscow
organizationName = Some Company
organizationalUnitName = IT department
commonName = Some Company VPN Server
emailAddress = support@some-company.com
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes Using configuration from /home/evgeniy/easy-rsa/pki/easy-rsa-10627.5dAbLQ/tmp.k1LXfe
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :ASN.1 12:'Moscow'
localityName :ASN.1 12:'Moscow'
organizationName :ASN.1 12:'Some Company'
organizationalUnitName:ASN.1 12:'IT department'
commonName :ASN.1 12:'Some Company VPN Server'
emailAddress :IA5STRING:'support@some-company.com'
Certificate is to be certified until Oct 1 07:24:53 2022 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home/evgeniy/easy-rsa/pki/issued/vpn-server.crtКопировать Создаем ключ Диффи-Хеллмана, который будет использоваться во время обмена ключами между клиентом и сервером: $ ./easyrsa gen-dh Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.................................................................................+.......................................
....................................................................................+....................................
.........................................................................................................................
.........................................................................................................................
..........................+.................................+............................................................
...........+.............................................................................................................
..........................................................+..............................................................
...................................................................................+.....................................
.................................................+.......................................................................
.+........................+...........+..................................................................................
...........+.............................................................................+...............................
.........................................................................................................................
.........................................................................................................++*++*++*++*
DH parameters of size 2048 created at /home/evgeniy/easy-rsa/pki/dh.pemКопировать Это может занять несколько минут. Для обеспечения дополнительного уровня аутентификации, создаем ключ TLS: $ openvpn --genkey --secret ta.keyКопировать Теперь копируем ключи и сертификаты в директорию /etc/openvpn/keys/: $ sudo cp /home/evgeniy/easy-rsa/pki/ca.crt /etc/openvpn/keys/ # корневой сертификат $ sudo cp /home/evgeniy/easy-rsa/pki/private/vpn-server.key /etc/openvpn/keys/ # закрытый ключ сервера $ sudo cp /home/evgeniy/easy-rsa/pki/issued/vpn-server.crt /etc/openvpn/keys/ # открытый ключ сервера $ sudo cp /home/evgeniy/easy-rsa/pki/dh.pem /etc/openvpn/keys/ # ключ Диффи-Хеллмана $ sudo cp /home/evgeniy/easy-rsa/ta.key /etc/openvpn/keys/ # ключ Transport Layer SecurityКопировать Создание ключей клиента Мы можем сгенерировать закрытый ключ и запрос на сертификат на клиенте, а затем отправить запрос в центр сертификации для подписания. Но мы это сделаем на сервере, где у нас установлен OpenVPN и уже есть центр серификации. Будет неправильно, если для каждого клиента на его компьютере мы будем создавать центр сертификации только для того, чтобы сгенерировать закрытый ключ. Опять напомню, что центр сертификации должен быть на отдельном сервере, где мы по мере необходимости формируем новые ключи и сертификаты. И потом просто копируем на компьютеры пользователей, чтобы они могли подключаться к VPN-серверу. Создаем закрытый ключ и запрос на подпись сертификата для пользователя Сергей Иванов: $ ./easyrsa gen-req sergey-ivanov nopass Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
Generating a RSA private key
......................+++++
.................+++++
writing new private key to '/home/evgeniy/easy-rsa/pki/easy-rsa-10968.4LofZS/tmp.z3a18Q'
-----
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]: Enter State or Province Name (full name) [Moscow]: Enter Locality Name (eg, city) [Moscow]: Enter Organization Name (eg, company) [Some Company]: Enter Organizational Unit Name (eg, section) [IT department]: Marketing department Common Name (eg: your user, host, or server name) [sergey-ivanov]: Enter Email Address [support@some-company.com]: ivanov.sergey@some-company.com Keypair and certificate request completed. Your files are:
req: /home/evgeniy/easy-rsa/pki/reqs/sergey-ivanov.req key: /home/evgeniy/easy-rsa/pki/private/sergey-ivanov.keyКопировать Обратите внимание, что в качестве Common Name мы используем предложенное значение sergey-ivanov. Для клиента лучше использовать именно такие имена, потому что может потребоваться использовать директиву файла конфигурации client-config-dir. В этом случае Common Name будет использовано в качестве имени файла — а на имена файлов налагаются некоторые ограничения. Подписываем сертификат для пользователя Сергея Иванова: $ ./easyrsa sign-req client sergey-ivanov Note: using Easy-RSA configuration from: /home/evgeniy/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1 11 Sep 2018
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 client certificate for 825 days:
subject=
countryName = RU
stateOrProvinceName = Moscow
localityName = Moscow
organizationName = Some Company
organizationalUnitName = Marketing department
commonName = sergey-ivanov
emailAddress = ivanov.sergey@some-company.com
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes Using configuration from /home/evgeniy/easy-rsa/pki/easy-rsa-11053.CzXFHp/tmp.rmFnU9
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :ASN.1 12:'Moscow'
localityName :ASN.1 12:'Moscow'
organizationName :ASN.1 12:'Some Company'
organizationalUnitName:ASN.1 12:'Marketing department'
commonName :ASN.1 12:'sergey-ivanov'
emailAddress :IA5STRING:'ivanov.sergey@some-company.com'
Certificate is to be certified until Oct 1 07:42:36 2022 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home/evgeniy/easy-rsa/pki/issued/sergey-ivanov.crtКопировать Нам надо скопировать на компьютер Иванова следующие файлы:
Но сейчас копировать не будем, а вернемся к этому, когда будем настраивать клиента.
Поиск: Linux • SSL • Ubuntu • VPN • Клиент • Ключ • Конфигурация • Настройка • Сервер • Сертификат • EasyRSA • Установка • Локальная сеть |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|