Задача звучит так, нужно запретить доступ к сети OpenVPN
устройству, а это у меня — Raspberry Pi 3 Model B
(Операционная система Raspbian Stretch
). Запрет подразумевает не просто заблокировать правила фаервола доступ, а отозвать сгенерированный сертификат на основе которого осуществляется доступ. И пометить на OpenVPN
-сервере под управлением Ubuntu 18.04 Server
— что данный сертификат нельзя использовать при подключении.
Шаг №1: Есть заметка Настройка OpenVPN клиент на Raspbian Stretch где я показал как настраивается OpenVPN
клиент на Raspbian Stretch
чтобы через него с USB
—модема (ZTE MF823D
) получить откуда угодно доступ в локальную сеть.
root@srv-vpn:~# tail -f /var/log/openvpn/openvpn-status.log | grep raspbian 192.168.0.0/24,craspbian,176.59.38.0:1104,Thu Nov 21 13:45:22 2019 10.8.0.22,craspbian,176.59.38.0:1104,Thu Nov 21 13:47:13 2019 root@srv-vpn:~# ping -n 4 10.8.0.22 connect: Invalid argument root@srv-vpn:~# ssh -l pi 10.8.0.22 "uname -a" pi@10.8.0.22's password: Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux root@srv-vpn:~#
Шаг №2: Что нужно сделать дабы теперь запретить доступ с сертификатом выданным миникомпьютеру — у меня он именуется, как: craspbian.key, craspbian.crt
. Для этого подключаюсь на свой OpenVPN
сервер через клиент SSH
со своей рабочей системы:
ekzorchik@navy:~$ ssh -l root vpn.remote.ru -p 22 root@srv-vpn:~# cd /etc/openvpn/easy-rsa/ root@srv-vpn:/etc/openvpn/easy-rsa# . ./vars root@srv-vpn:/etc/openvpn/easy-rsa# ./revoke-full craspbian Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Can't load /root/.rnd into RNG 140711028244928:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd Revoking Certificate 06. Data Base Updated Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Can't load /root/.rnd into RNG 140155723407808:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd C = RU, ST = RU, L = MOSCOW, O = RUSSIAN, OU = ekzorchik, CN = craspbian, name = EasyRSA, emailAddress = support@ekzorchik.ru error 23 at 0 depth lookup: certificate revoked error craspbian.crt: verification failed root@srv-vpn:/etc/openvpn/easy-rsa#
В выводе выше присутствует ошибка “error 23
” — это естественная ошибка в там случае когда отзывается сертификат. В результате в директории keys
создается файл: crl.pem
root@srv-vpn:/etc/openvpn/easy-rsa# ls keys/crl.pem && file keys/crl.pem keys/crl.pem keys/crl.pem: ASCII text root@srv-vpn:/etc/openvpn/easy-rsa#
Который содержит необходимую информацию для отзыва сертификата. Перемещаю его в корневую директорию /etc/openvpn:
root@srv-vpn:/etc/openvpn/easy-rsa# cp keys/crl.pem /etc/openvpn root@srv-vpn:/etc/openvpn/easy-rsa# cd ~
Далее открываю конфигурационный файл OpenVPN
-сервера и в самом низу к примеру добавляю нижеследующую строчку:
root@srv-vpn:~# nano /etc/openvpn/server.conf crl-verify /etc/openvpn/crl.pem
После не забывает сохранить внесенные изменения.
Перезапускаю OpenVPN
-сервис на сервере где работает серверная часть OpenVPN
для завершения процесса отзыва сертификата:
root@srv-vpn:~# systemctl restart openvpn
После чего когда кто-либо будет устанавливать соединение с моим OpenVPN
-сервером, сам сервис OpenVPN
будет проверять список отозванных сертификатов. Если сертификат есть – соединение будет отклонено.
А если все же клиентских сертификат нужен и нужно чтобы клиент вновь был членом OpenVPN
сети следует закомментировать строку в openvpn.conf
, но только если это один единственный отозванный сертификат. Исходя из этого нужно вести список кому и какой сертификат выдался и список отозванных сертификатов. Я делаю так, а Вы.
Итого я практически разобрал, как отзываются клиентские сертификаты на OpenVPN
сервере под управлением Ubuntu 18.04 Server amd64.
На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.