Удаленный доступ через OpenVPN

инструкция настройки сервера на Debian 11

Для настройки удаленного доступа к сети нашей организации мы будем использовать операционную сисему Debian 11 установленную на виртуальную машину Hyper-V.

Будем считать, что Debian 11 у нас уже установлен и все необходимые службы настроены. Доступ в сеть Интернет доступен.

Содержимое

Все операции будем проводить под главным пользователем — ROOT.

Первым делом проверим обновление системы и выполним обновление, если это необходимо.

				
					apt update
apt upgrade
				
			

Установка OpenVPN

Установим OpenVPN + EASY-RSA в нашу систему:

				
					apt -y install openvpn
				
			

Скопируем необходимые скрипты для работы EASY-RSA в папку OpenVPN, для удобства взаимодействия:

				
					cp -r /usr/share/easy-rsa /etc/openvpn/
				
			

Развертывание центра сертификации

Перейдем в каталог easy-rsa:

				
					cd /etc/openvpn/easy-rsa/
				
			

Переименуем файл vars.example в файл vars:

				
					mv vars.example vars
				
			

Теперь нам необходимо внести изменения в файл vars, в соответствии с данными нашей организации:

				
					nano vars
				
			

Находим в теле файла следующие строки, раскомментируем их и внесем нужные нам изменения. Пример на скриншоте ниже.

Вносим изменения в файл vars

Создаем инфраструктуру Центра сертификация, для этого выполним следующую команду:

				
					./easyrsa init-pki
				
			

Об успешном завершении будет свидельствовать следующее сообщение:

Сгенерируем ключ Центра сертификации. Nopass мы указываем потому, что пароль на ключ генерации нам не требуется:

				
					./easyrsa build-ca nopass
				
			

При запросе Common Name, можно оставить пустым, просто нажав Enter:

Генерация ключей для сервера и клиента

Генерация ключей для сервера OpenVPN (при запросе Enter PEM pass phrase: задайте пароль):

				
					./easyrsa build-server-full server nopass
				
			

Генерация ключей для клиента OpenVPN (при запросе Enter PEM pass phrase: задайте пароль):

				
					./easyrsa build-client-full client1 nopass
				
			

Генерация дополнительных ключей

Генерация ключа Диффи-Хеллмана (генерация займет некоторое время):

				
					./easyrsa gen-dh
				
			

Приступаем к генерации ключа аутентификации TLS:

				
					su -
cd /etc/openvpn/easy-rsa/
openvpn --genkey secret pki/tls.key
				
			

Пути к сгенерированным сертификатам и ключам

Все ключи и сертификаты, которые мы сгенерировали, находятся в следующих папках:

  • /etc/openvpn/easy-rsa/pki/ca.crt — сертификат Центра сертификации
  • /etc/openvpn/easy-rsa/pki/dh.pem — ключ Диффи Хеллмана
  • /etc/openvpn/easy-rsa/pki/private/server.key — закрытый ключ OpenVPN сервера
  • /etc/openvpn/easy-rsa/pki/private/client1.key — закрытый ключ OpenVPN клиента
  • /etc/openvpn/easy-rsa/pki/issued/server.crt — сертификат ключа OpenVPN сервера
  • /etc/openvpn/easy-rsa/pki/issued/client1.crt — сертификат ключа OpenVPN клиента

Копирование сертификатов и ключей в единую папку

Для удобства пользования, перенесем все необходимые сертификаты и ключи в единую папку.

Создадим папку keys:

				
					mkdir /etc/openvpn/keys
				
			
				
					cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/tls.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/private/client1.key /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/pki/issued/client1.crt /etc/openvpn/keys
				
			

Конфигурация OpenVPN сервера

Копируем исходный шаблон, файл server.conf в папку openvpn:

				
					cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

				
			

Правим файл server.conf под наши настройки:

				
					cd /etc/openvpn
nano server.conf
				
			

В нашей настройки сервера  OpenVPN мы установим следующие значения:

  • port 1194 — порт используемый по умолчанию для сервера OpenVPN
  • proto udp — протокол транспортного уровня (работает быстрее чем tcp, но иногда бывают ошибки)
  • dev tun — используемый виртуальный интерфейс
  • ca keys/ca.crt
  • cert keys/ server.crt
  • key keys/server key
  • dh keys/dp.pem
  • server 10.8.0.0 255.255.255.0 -пул сетевых адресов при подключении к виртуальной сети для клиентов
  • ifconfig-pool-persist /var/log/openvpn/ipp.txt — здесь будут сохраняться IP наших клиентов
  • tls-auth keys/tls.key 0
  • cipher AES-256-CBC — шифрование передоваемых данных
  • comp-lzo — сжатие передаваемых данных
  • с log и  log-append — убираем точку с запятой, для записи логов (оставляем пути по умолчанию)
  • verb 3 — уровень логирования по умолчанию

Сохраняем и закрываем файл конфигурации.

Запускаем OpenVPN сервер

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

				
					service openvpn@server start
				
			

Проверить работу нашего сервера OpenVPN вы можете следующей командой:

				
					systemctl status openvpn@server
				
			

Если вы все сделали правильно, то на экране вы должны увидеть следующее:

На этом настройка сервера закончена. Дальше необходимо подготовить конфигурацию для пользователей/клиентов.

Что дальше:

Оставьте комментарий