...
Стенд с сервером OpenVPN и XCA поднят на Astralinux Smolensk 1.6 update 2
Установка и настройка удостоверяющего центра на сервере
...
Установка
Для начала установим системные компоненты и утилиты, необходимые для работы Рутокен ЭЦП и XCA:
...
Информация |
---|
title | Параметры конфигурационного файла |
---|
|
Секция |
---|
Столбец |
---|
|
Параметр | Значения | Описание |
---|
client |
| Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер). | dev | tap или tun | Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP. | dev-node | любая строка | Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN. | proto | udp или tcp | Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть. | remote | VPN-сервер и порт | Задает сервер, к которому должен подключаться клиент, а также сетевой порт, на котором OpenVPN принимает запросы. Можно указать несколько строк. | remote-random |
| Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке. | resolv-retry | количество секунд или infinite | Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно. | nobind |
| Клиент использует динамический порт для подключения. | user | учетная запись | Задает определенного пользователя для работы клиента (только для UNIX-систем). | group | группа | Задает определенную группу для работы клиента (только для UNIX-систем). | persist-key |
| Не перечитывает ключи при перезагрузке сервиса OpenVPN. | persist-tun |
| Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN. | http-proxy | сервер прокси и порт | Использовать прокси-сервер для подключения. | http-proxy-retry |
| Переподключаться к прокси-серверу, если связь была разорвана. | http-proxy-timeout | количество секунд | Время, через которое выполнять попытки переподключения к прокси-серверу. | mute-replay-warnings |
| Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов. | ca | пут к сертификату | Корневой сертификат удостоверяющего центра. Генерируем на сервере. | cert | пут к сертификату | Открытый ключ клиента. Генерируем на сервере. | key | пут к сертификату | Закрытый ключ клиента. Генерируем на сервере. | dh | пут к сертификату | Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана). | remote-cert-tls | сервер | Исключает возможность mitm атаки, включая верификацию сертификата сервера. | tls-client |
| Указание на то, что это клиент TLS. | tls-auth | ta.key 1 | Дополнительный уровень аутентификации посредством ключа TLS. | float |
| Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано. | keepalive | секунд1 секунд2 | Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение. | cipher | алгоритм | Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC. | comp-lzo |
| Использовать сжатие. | verb | число от 0 до 9 | Уровень детализации лога. 0 отключает отладочную информацию. | mute | число | Указывает сколько лог-сообщений может отображаться для каждой категории события. | auth-user-pass | ничего или путь к файлу | Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла. | ipchange | команда или путь к скрипту | Выполняет команду при смене IP. | connect-retry | секунд | Переподключиться к серверу через указанное количество секунд, если соединение было разорвано. | connect-retry-max | число | Сколько раз повторять соединение, если оно было разорвано. | shaper | байт | Задает максимальную скорость передачи данных для исходящего трафика. | tun-mtu | число | Задает MTU. | status | путь к файлу | Путь к фалу хранения статуса. | log | путь к файлу | Путь к лог-файлу. |
Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn --help |
|
|
Запуск OpenVPN
Запускаем сервер OpenVPN
Блок кода |
---|
$ sudo openvpn --config /home/u/openvpn/openvpn.conf |
Примечание |
---|
В "боевой" конфигурации сервер следует запускать как демон и ключи/сертификаты не должны лежать в /home |
Настройка клиентской машины
...
Установка компонентов для работы с Рутокен ЭЦП
На клиентской машине устанавливаем пакеты, необходимые для работы Рутокен ЭЦП:
Блок кода |
---|
$ sudo apt-get install pcscd libpcsclite1 libccid |
и библиотеку librtpkcs11ecp.so
Блок кода |
---|
sudo dpkg -i librtpkcs11ecp_1.8.2.0-1_amd64.deb |
Установка OpenVPN на клиенте
Устанавливаем OpenVPN:
Блок кода |
---|
$ sudo apt-get install openvpn |
Копируем с сервера сертификат Удостоверяющего Центра (УЦ) к примеру в раздел /home/client/openvpn/CA.crt
Создаем конфигурационный файл клиента
Блок кода |
---|
$ nano openvpnclient.conf |
Cо следующими параметрами:
Блок кода |
---|
client
dev tap
proto tcp
remote 192.168.56.112 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /home/asd/openvpn.conf/client/openvpn/CA.crt
pkcs11-providers /usr/lib/librtpkcs11ecp.so
pkcs11-id 'Aktiv\x20Co\x2E/Rutoken\x20ECP/2f996caf/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/3C9F594E0994420E'
pkcs11-pin-cache 300
comp-lzo
verb 3
|
В параметре pkcs11-providers указываем путь к библиотеке PKCS#11 Рутокен.
В параметре pkcs11-id
указываем ID контейнера, в котором на Рутокен ЭЦП хранятся ключ и сертификат. Узнать этот ID можно с помощью команды:
Блок кода |
---|
sudo openvpn --show-pkcs11-ids /usr/lib/librtpkcs11ecp.so |
Image Added
Подключение к VPN-серверу
Подключаемся к VPN-серверу:
Блок кода |
---|
sudo openvpn --config /home/client/openvpnclient.conf |
По запросу следует ввести PIN-код к Рутокену ЭЦП.