Alt linux openvpn server

Alterator-net-openvpn

Содержание

Название пакета [ править ]

Назначение [ править ]

Модуль OpenVPN-соединения позволяет настроить OpenVPN-подключение.

Используя данный модуль можно:

  • создавать/удалять подключения к различным серверам;
  • настраивать параметры подключения.

Запуск [ править ]

Модуль OpenVPN-соединения доступен как в GUI (раздел Сеть ▷ OpenVPN-соединения ):

так и в веб-интерфейсе https://ip-address:8080 (раздел Сеть ▷ OpenVPN-соединения ):

Параметры модуля [ править ]

Использование модуля [ править ]

Создание соединения [ править ]

Для создания нового соединения необходимо отметить пункт «Сетевой туннель (TUN)» или «Виртуальное Ethernet устройство (TAP)» (должен быть выбран тот же тип, что и на стороне сервера) и нажать кнопку «Создать соединение»:

В результате станут доступны настройки соединения:

Ключ и запрос на подпись [ править ]

Далее необходимо создать SSL ключ. Для этого нужно нажать на кнопку «Управление ключами». В открывшемся окне нажать кнопку «Новый…»:

Заполнить поля «Общее имя (CN)» и «Страна (C)», поставить отметку «(Пере)создать ключ и запрос на подпись» и нажать кнопку «Подтвердить»:

Нажать на кнопку «Забрать запрос на подпись» и сохранить запрос на жесткий диск.

Подписывание запроса на OpenVPN-server [ править ]

На сервере, в «Центре управления системой» перейти в «Удостоверяющий центр», нажать кнопку «Обзор. », указать путь до запроса на подпись и нажать кнопку «Загрузить запрос»:

Нажать кнопку «Подписать» и сохранить файл output.pem на сервере.

Импорт сертификата удостоверяющего центра [ править ]

Чтобы получить сертификат удостоверяющего центра следует, на сервере, в «Центре управления системой» перейти в «Удостоверяющий центр», перейти по ссылке «Управление УЦ» (CA management). Загрузить сертификат УЦ, нажав на ссылку ca-root.pem:

Перенести файлы output.pem и ca-root.pem на компьютер клиента.

Импорт сертификат пользователя [ править ]

На клиенте в модуле «Центра управления системой» «Управление ключами» выделить ключ и нажать кнопку «Изменить»:

В открывшемся окне положить сертификат, подписанный УЦ, указав путь до файла output.pem, и нажав кнопку «Положить»:

В «Управление ключами» изменится строка «ключ (Нет сертификата)» на «ключ (Истекает и дата когда)».

Импорт сертификата УЦ [ править ]

На клиенте в модуле OpenVPN-соединение импортировать сертификат УЦ, указав путь до ca-root.pem, и нажав кнопку «Положить»:

Установка OpenVPN-соединения с OpenVPN-server’ом [ править ]

На клиенте в модуле OpenVPN-соединение необходимо указать:

  • «Состояние» — «запустить»;
  • «Сервер» — IP адрес сервера или домен;
  • «Порт» — 1194 (должен быть указан тот же порт, что и на стороне сервера);
  • «Ключ» — выбрать подписанный на сервере ключ.

Для применения настроек, нажать кнопку «Применить». Состояние с «Выключено» должно поменяться на «Включено»:

Проверить, появилось ли соединение с сервером можно командой:

Должно появиться новое соединение tun0. При обычных настройках это может выглядеть так:

Источник

OpenVPN

Материал из ALT Linux Wiki

Рассмотрена настройка OpenVPN в режиме «server» на сервере Altlinux P7 с SysVinit. В случае systemd есть отличия.

Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Содержание

Пакеты

Размещение файлов

  • /var/lib/openvpn/ — Корневой каталог после инициализации демона (chroot).
    • /var/lib/openvpn/etc/openvpn/ccd — Каталог, в котором размещаются файлы особых параметров для подключаемых клиентов (Client Config Directory).
    • /var/lib/openvpn/cache — Каталог для рабочих файлов после инициализации соединения. В файле конфигурации для таких файлов нужно писать путь /cache/файл
  • /etc/openvpn/ — Каталог с файлами настройки.
    • /etc/openvpn/ccd — Символическая ссылка на /var/lib/openvpn/etc/openvpn/ccd (файлы доступны и до, и после chroot). Требуется для отладки, когда openvpn запускается без chroot.
    • /etc/openvpn/keys/ — Каталог для хранения ключей (точнее, для информации ограниченного доступа)

Особенности работы и конфигурации

Каждый файл конфигурации по маске /etc/openvpn/*.conf является конфигурацией отдельного экземпляра демона openvpn. Для имени экземпляра берётся имя файла без суффикса «.conf».

Настройки стартового скрипта располагаются в файле /etc/sysconfig/openvpn, по умолчанию он устанавливает следующие переменные окружения:

Стартовый скрипт /etc/init.d/openvpn может запускать и останавливать как все экземпляры демона, так и каждый по отдельности. Значение переменной MANUAL в /etc/sysconfig/openvpn указывает экземпляры, которые нужно запустить при старте системы (и при запуске стартового скрипта без параметра).

Для ручного запуска (остановки, проверки) одного экземпляра в конце командной строки указываем имя экземпляра. Например для экземпляра openvpn с конфигом /etc/openvpn/server.conf::

Когда запускаем сервис, демон openvpn запускается, читает файл конфигурации из /etc/openvpn/, читает оттуда же файлы dh, ca и ключи. Этот каталог доступен демону только при его запуске.

Дальше демон выполняет chroot в /var/lib/openvpn/ и cd в /var/lib/openvpn/cache, понижает привилегии до пользователя openvpn, затем инициализирует работу с сетью.

Размещение файлов

  • Файл конфигурации в /etc/openvpn/.
  • Все ключи в /etc/openvpn/keys/.
  • CRL в /var/lib/openvpn/etc/openvpn/.
  • Файлы настроек клиентов в /etc/openvpn/ccd/ или /var/lib/openvpn/etc/openvpn/ccd/ (сюда адресован симлинк).
  • Файл параметров DH в /etc/openvpn/ или /etc/openvpn/keys/.
  • Указанный в ifconfig-pool-persist файл демон читает и пишет от корня, в /etc/openvpn/ нужен подкаталог с правом записи для openvpn.
  • Файл, указанный в status, демон с правами рута читает и пишет от корня (в /etc/openvpn)

Совет.

Важно правильно указать права доступа. Ключи должны быть доступны только руту, конфигурации клиентов и файл отзывов сертификатов должны быть доступны на чтение пользователю openvpn:

В файле конфигурации указываем

  • ifconfig-pool-persist и status — без полного пути либо с путём /cache/
  • ca, dh, cert, key — с путём /etc/openvpn/keys/
  • client-config-dir /etc/openvpn/ccd
  • crl-verify — с путём относительно /var/lib/openvpn (например, файл копируем в /var/lib/openvpn/etc/openvpn/server.crl.pem, в конфиге указываем crl-verify /etc/openvpn/server.crl.pem)

Совет.

Если нужны несколько экземпляров сервера openvpn, файлы в параметрах status, ifconfig-pool-persist и client-config-dir указывайте разные, например, с именем экземпляра в префиксе.

Пример

Создание ключей

Создание ключей для OpenVPN тунеля средствами openssl утилиты. Проверено:(p7 systemd)

Наличие в системе установленного пакета.

Открываем файл /var/lib/ssl/openssl.cnf и меняем значение параметра policy на:

Это для того, чтобы можно было подписывать любые сертификаты. После чего создаем следующие папки и файлы:

(без этого OpenSSL будет сильно ругаться, ответ кроется в файле /var/lib/ssl/openssl.cnf ).

Создадим «самоподписанный» сертификат my-ca.crt и закрытый ключ my-ca.pem, которыми мы будем заверять/подписывать ключи и сертификаты клиентов, желающих подключиться к нашему серверу.

  • -req — запрос на создание сертификата,
  • -x509 — создать самоподписанный сертификат стандарта X.509,
  • -keyout — записать закрытый ключ в файл,
  • -out — записать сертификат в файл.

В процессе создания, первым делом, нам предложат ввести пароль для закрытого ключа (крайне важно). Придумываем пароль, вводим, подтверждаем. Далее, будет задано несколько вопросов о том, кто мы такие. Вводим международное обозначение страны, например RU, UA, CN, далее указываем регион, город/село/деревню, название нашей организации, свои ФИО, адрес электронной почты. Все. Наш корневой «самоподписанный» сертификат готов к употреблению.

Далее, нам потребуется создать пару «ключ-сертификат» для сервера и каждого клиента, желающего подключиться к нашему серверу.

Создание ключа и запроса на подпись для сервера:

  • -nodes — означает, что шифровать закрытый ключ не нужно (иначе при каждом запуске туннеля надо будет вводить пароль на ключ).

Так же вводим описание для владельца ключа, как и ранее.

И подписываем запрос на сертификат своим «самоподписанным» my-ca.crt сертификатом и ключом my-ca.pem:

  • -cert, корневой сертификат удостоверяющего центра
  • -keyfile, секретный ключ удостоверяющего центра

Отвечаем два раза положительным «игреком» (y), в итоге, получаем связку «ключ-сертификат» для сервера server.

Теперь генерируем запрос на сертификат для пользователя:

И подписываем запрос на сертификат своим «самоподписанным» my-ca.crt сертификатом и ключом my-ca.pem:

Отвечаем два раза положительным «игреком» (y), в итоге, получаем связку «ключ-сертификат» для пользователя user_1.

Последние действие — создание параметров Диффи-Хеллмана (исключительно для сервера):

Файлы запросов на сертификаты можно удалить:

В результате в каталоге /root/CA должен получиться такой набор файлов:

Разносим ключи и сертификаты по каталогам сервера и клиента.

  • my-ca.crt — для сервера и клиентов
  • my-ca.pem — только для подписи сертификатов, лучше хранить на отдельном от OpenVPN сервера компьютере
  • my-ca.crt, server.crt, server.dh, server.pem — для сервера OpenVPN
  • my-ca.crt, user_1.crt, user_1.pem — для клиента OpenVPN

Для новых клиентов создать новые ключи и отдать комплектом my-ca.crt, новый_сертификат.crt, новый_ключ.pem.

В конфигурационном файле OpenVPN сервера размещаем ссылку на эти ключи (пути до ключей подставляем свои) :

В конфигурационном файле OpenVPN клиента размещаем ссылку на эти ключи (пути до ключей подставляем свои):

Смотрим базу ключей:

Создание списка отзыва сертификатов

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

Отозвать серификат user_1.crt:

Обновить список (обязательно после каждого отзыва сертификата):

Для AltLinux файл crl.pem поместить в каталог /var/lib/openvpn

Создание ключей для OpenVPN тунеля средствами Easy-Rsa скриптов.

Утилита для работы с командной строкой (openssl) в OpenSSL является оболочкой для многих «подпрограмм», одна из которых является Easy-rsa.

Для OpenVPN версии выше 2.3 набор скриптов easy-rsa не входит в инсталляцию по умолчанию, а устанавливается отдельно.

Установим данный пакет, но для начала просмотрим кеш пакетов в системе, на наличие Easy-rsa пакета скриптов.

apt-get update && apt-cache search easy rsa | grep easy

apt-get install easy-rsa

Сделаем поиск по ключевому слову «easyrsa*» и посмотрим куда установилась утилита:

find / -name «easyrsa*»

В OpenSSL есть пример файла openssl.cnf, который находится в соответствующей папке (название директории может изменяться от версии к версии). По умолчанию openssl утилита обращается к файлу /var/lib/ssl/openssl.cnf. В большинстве случаев (и особенно при тестировании) можно использовать как раз этот файл без каких-либо изменений. Если же вы планируете более плотно поработать с сертификатами, следует поподробнее ознакомиться с содержимым файла конфигурации. В нем есть несколько полезных параметров, например, местонахождение серийных номеров и списка отозванных сертификатов (Certificate Revocation List).

Однако некоторые записи из раздела [ CA_default ] ссылаются на директории и файлы, которые, в случае их отсутствия, могут привести к проблемам при развертывании центра сертификации, и вы должны создать все необходимые файлы и папки перед тем, как подписывать CSR. В составе OpenSSL идет простая утилита CA.pl, которая упрощает весь процесс (на самом деле просто создается структура директорий, на которые ссылается файл openssl.cnf)

Заглянем в каталог /usr/share/easyrsa3:

Файл openssl-1.0.cnf, является конфигуратором для утилиты openssl, запущенной через скрипты easy-rsa. В случае с использованием скриптов easy-rsa нам не нужно думать о создании инфраструктуры каталогов PKI (Public Key Infrastructure — Инфраструктура открытых ключей). Программа упрощает процесс создания инфраструктуры каталогов.

Перейдем в каталог в котором создадим инфраструктуру каталогов для ключей и сертификатов.

Создать структуру каталогов:

В текущей директории создается каталог pki c вложенными каталогами для ключей и запросов.

Дальнейшие действия необходимо выполнять в текущей директории, иначе утилита будет выводить ошибки из-за отсутствия pki каталога в текущей директории при запуске easyrsa команды.

Ключи центра сертификации.

Создать корневой сертификат. Обязательно ввести сложный пароль и Common Name сервера, например CA-ORG:

Создать ключи Диффи-Хелмана:

Создание ключа занимает некоторое продолжительное время.

Проверим содержание каталога pki

  • ca.crt — сертификат корневого центра сертификации
  • dh.pem — ключ Диффи-Хелмана
  • ./private/ca.key — секретный ключ центра сертификации

Создать запрос на сертификат для сервера OVPN. Обращаю внимание, что сертификат будет не зашифрован (запаролен), за это отвечает параметр nopass, иначе при каждом старте OpenVPN будет запрашивать этот пароль:

easyrsa gen-req vpn-server nopass

Создать сам сертификат сервера OVPN:

easyrsa sign-req server vpn-server (client | server) — это параметр предположительно берущий настройки из файла /usr/share/easyrsa3/x509-types/server

Скопировать полученные ключи в рабочий каталог openvpn и в конфиге сервера указать полный путь к ключам.

cp ./pki/ca.crt /etc/openvpn/keys

cp ./pki/issued/vpn-server.crt /etc/openvpn/keys

cp ./pki/private/vpn-server.key /etc/openvpn/keys

cp ./pki/dh.pem /etc/openvpn/keys

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

easyrsa build-server-full vpn-server nopass — без пароля

easyrsa build-server-full vpn-server — с паролем

Процесс создания ключей клиентам аналогичен созданию ключей для сервера.

Создание запроса запароленного ключа для клиента (потребуется вводить при каждом подключении) с именем User:

easyrsa gen-req User

Если авторизация будет внешней (например ADшная), то пароль не потребуется. Создание запроса без парольного ключа для клиента:

easyrsa gen-req User nopass

Создание ключа пользователя (по дефолту сроком на 10 лет):

easyrsa sign-req client User

(client | server) — это параметр предположительно берущий настройки из файла /usr/share/easyrsa3/x509-types/client

Или cоздание ключа пользователя с ограничением действия сертификата в 90 дней (после истечения срока можно только перевыпустить):

./easyrsa sign-req client User -days 90

Клиенту передать эти файлы:

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

easyrsa build-client-full User nopass — без пароля

easyrsa build-client-full User — с паролем

Генерация файла отозванных ключей:

Сделать символическую ссылку в каталог с ключами (конечно, файл можно и скопировать, но придется делать каждый раз при отзыве сертификата):

ln -s /root/pki/crl.pem /var/lib/openvpn

В файл конфигурации openvpn сервера добавить строку

Отзыв сертификата пользователя User:

easyrsa revoke User

Каждый раз при отзыве сертификата необходимо обновлять crl.pem, чтобы внести в него изменения:

Одноименный файл ключа не может быть создан пока не отозван старый.

При попытке создать сертификат с уже имеющимся именем выдаст ошибку:

failed to update database Easy-RSA error: signing failed (openssl output above may have more detail)

Для исключения возможности mitm атаки, ошибка которого так выглядит в логах клиента:

WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.

служит параметр remote-cert-tls server.

Список валидных и отозванных сертификатов можно посмотреть в файле ./pki/index.txt.

Начало строки описания каждого сертификата начинается с букв V или R, что значит Valid и Revoked (действующий и отозванный)

При помощи OpenSSL можно создать свой собственный центр сертификации и не прибегать к услугам коммерческих центров и тем самым сэкономить немного денег.

В документации утверждается, что средства по созданию своего собственного центра сертификации были разработаны лишь в демонстрационных целях. Их никогда не планировалось использовать для работы в боевых условиях. Выдержка из документации:

«Первоначальной цель утилиты ca — продемонстрировать на примере, как происходит подпись запроса в центре сертификации, и не предполагается ее использование в реальной жизни. Тем не менее, некоторые пользователи используют утилиту ca для подписи запросов»

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

Источник

Читайте также:  C windows system32 wdi что это
Оцените статью