Двухфактораня авторизация клиентов OpenVPN

Простой способ организации двухфакторной аутентификации OpenVPN на FreeBSD
В дополнении к статье о развертывании OpenVPN могу добавить легкий способ дополнительной защиты сертификатов, когда при соединении нужно еще и пароль вводить.
Для этого, при генерации клиентского сертификата используем готовый скрипт build-key-pass идущий в /usr/local/share/doc/openvpn/easy-rsa/
Запускаем sh, подгружаем переменные из vars и запускаем скрипт с параметром - именем пользователя, которому выдается ключ и сертификат, на запрос вводим пароль защиты, который потом будет запрашиваться при организации соединения.
Диалог:
sh
# . ./vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on /usr/local/share/doc/openvpn/easy-rsa/keys/server
# ./build-key-pass remoteusername
Generating a 1024 bit RSA private key
..........++++++
.......++++++
writing new private key to 'remoteusername.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.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [MO]:
Locality Name (eg, city) [MOSCOW]:
Organization Name (eg, company) [myvpnserver.mydomain.ru]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:vpnclient.provider.ru
Email Address [vpnadmin@mydomain.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:superchallengepassword
An optional company name []:MYCOMPANY
Using configuration from /usr/local/share/doc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :PRINTABLE:'MO'
localityName :PRINTABLE:'MOSCOW'
organizationName :PRINTABLE:'myvpnserver.mydomain.ru'
organizationalUnitName:PRINTABLE:'IT'
commonName :PRINTABLE:'vpnclient.provider.ru'
emailAddress :IA5STRING:'vpnadmin@mydomain.ru'
Certificate is to be certified until Jan 18 09:55:44 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
# exit

Все. Запароленный сертификат готов. Точно так же отдаем его пользователю, и при организации соедиения к нашему серверу с этим сертификатом, будет получен запрос на ввод пароля.
Таким образом утеря или кража сертификата и ключа пользователя не даст слепую возможность подключения к VPN сети.

Поделиться

Опубликовать в Facebook
Опубликовать в LiveJournal

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

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

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>