...
Блок кода |
---|
sudo apt-get install libccid libpcsclite1 pcscd xca |
Для установки библиотеки librtpkcs11ecp.so следует перейти по указанной ссылке и скачать необходимую версию:
https://www.rutoken.ru/support/download/pkcs/
Image Modified
Блок кода |
---|
sudo dpkg -i librtpkcs11ecp_1.8.2.0-1_amd64.deb |
...
Создадим сертификат УЦ: раздел "Сертификаты" → "Новый сертификат" согласно нижеуказанным скриншотам:
Создание сертификата сервера OpenVPN
...
Создадим ключ сервера OpenVPN: раздел "Закрытые ключи" → "Новый ключ", назовем его Openvpnkey, Keytype - RSA, Keysize - 2048 bit.
Создадим сертификат сервера: раздел "Сертификаты"→ "Сертификаты" согласно представленным скриншотам.
Image ModifiedImage Modified
Image Modified
Создание сертификата клиента на Рутокен ЭЦП
...
Подключение библиотеки pkcs#11
Для работы с Рутокен ЭЦП, утилите XCA нужно указать библиотеку PKCS#11 АктивСофта.
Для этого указываем путь к ней: Файл → Опции → PKCS#11 provider → "Добавить" и указываем путь до библиотеки pkcs11(/opt/aktivco/rutokenecp/x86_64/librtpkcs11ecp.so)
Image Modified
Генерация ключей на Рутокен ЭЦП
Далее подключаем Рутокен ЭЦП и создаем ключ «на борту» Рутокен ЭЦП: раздел "Закрытые ключи" → "Новый ключ" → назовем его Clientkey, Keytype - RSA(!) на рутокене, Keysize - 2048 bit.
По запросу вводим PIN-код.
Image ModifiedСоздание сертификата клиента
Image Modified
Image Modified
Image Modified
Когда XCA предложит сохранить сертфикат на токен, нажимаем «Да» и вводим PIN-код.
...
Далее экспортируем сертификат УЦ в файл CA.crt, сертификат сервера в файл Openvpn.crt и ключ сервера в файл openvpn.pem (Закрытые ключи→ Экспорт, Сертификаты → Экспорт) и сохраним их к примеру в своей домашней директории.
...
OpenVPN
...
Установка
Пакет openvpn входит в дистрибутивы ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6 , и устанавливается по умолчанию.
Для быстрой настройки можно рекомендовать дополнительно установить пакеты
- для машины, предназначенной на роль сервера:
- графический инструмент fly-admin-openvpn-server
- или инструмент командной строки astra-openvpn-server
- для клиентской машины дополнительных пакетов не требуется
При установке пакетов fly-admin-openvpn-server и astra-openvpn-server автоматически будет установлен пакет libgost-astra, поддерживающий защитное преобразование информации в соответствии с алгоритмами ГОСТ.
Устанавливаем OpenVPN:
Блок кода |
---|
$ sudo apt-get install fly-admin-openvpn |
...
Настройка
...
Создание DH (Diffie Hellman) ключа
Вы можете создать файл параметров Diffie Hellman (Диффи-Хелмана) с помощью openssl:
...
openssl dhparam -out dh1024.pem |
...
Image Added
Информация |
---|
Вы можете заменить 1024 на другие цифры, например, 2048 или 4096. Если число выше, безопасность параметров будет выше, но вашему серверу или компьютеру потребуется больше времени для генерации двух простых чисел этой длины. Более низкие номера имеют более низкую безопасность, но требуют значительно меньшего времени для создания |
Создание конфигурационного файла
Создаем конфигурационный файл сервера OpenVPN:
Блок кода |
---|
$ nano openvpn.conf |
У нас, например, он выглядит так:
...
Cо следующими параметрами:
Блок кода |
---|
port 1194
proto tcp
dev tap
ca /home/u/openvpn |
...
...
...
...
...
...
...
...
...
...
...
...
ifconfig-pool-persist ipp.txt
keepalive 10 120
cipher BF-CBC
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
|
Информация |
---|
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 |
|
|
У нас, например, он выглядит так8. Запускаем сервер OpenVPN:
$ sudo openvpn --config /home/asd/openvpn.conf
|
...