А, вы в этом плане. Вообще вариант, но я думал может что за годы еще придумали. Обслуживать подобную схему пока видится сложноватым, бизнесу такое не отдашь - мозги вынесут.
Еще есть вариант использовать bepasty (со сроком жизни файла) или других аналогов пастбина для передачи конфигов.
При наличии gitlab/forgejo или какой-то еще приблуды с oci registry есть oras cli. Накручиваем пайплайн и вот она - машина для pki, которая явно бэкапится.
export-p12 (кажется так в easy-rsa) в помощь. Можно inline в виде base64 в конфиг, можно отдельно передавать для импорта в хранилище (windows cert store, mac keychain, android keystore. В ios в openvpn connect куда-то под себя) с вводом пароля для импорта.
When the --peer-fingerprint option is used, specifying a CA with --ca or --capath is optional. This allows the he --peer-fingerprint to be used as alternative to a PKI with self-signed certificates for small setups.
Вот тут я согласен с разработчиками. Хорошо, что есть возможность, но при сетапе на пару-тройку сотен динамично меняющихся людей ( условный колл-центр) это выглядит как ад. Особенно при схеме выдает иб, настраивает на тачках техпод, а ты отдаешь инфру и пайплайн.
BF-CBC планомерно выпиливается из всего. Лучше посмотреть, какие алгоритмы поддерживаются в последнем доступном клиенте (что-то типа openvpn —show-ciphers) и подкрутить конфиг. Вроде в XP уже должна быть поддержка aes128.
Вот пушить роуты в клиентов в wg самое больное место было. В netbird вроде реализовали некий аналог control channel в openvpn, но нет альтернативных клиентов (или я не нашел), а это риск однажды увидеть на мобилках «данное приложение недоступно в вашем регионе».
UPD. Про crl немного попутал. Он считывается при новом подключении или при пересогласовании уже имеющейся сессии, а там дефолт час. Т.е можно провернуть kill и с crl.pem для быстрого блока. Только я бы дергал апдейт не кроном, а какой-то тулзой, умеющей в inotify/fsevents типа lsyncd, если использовать easy-rsa на отдельной машине, а не крутить пайплайны
1) скорее избавился от обертки на баш для дерганья openssl и можно извращаться с передачей контента в openssl в стиле -in <aws s3 cp filename -) без сохранения чувствительных данных на диске
2) это описано в официальном мане openvpn. Pem перечитывается раз в час, если правильно помню, а в dir смотрит при попытке подключения. Таким образом при наличии файла и посланного kill в менеджмент сокет получается выбить сессию с минимальным лагом и без необходимости рестарта самого сервиса.
3) txqueuelen 1000, как и у eth. Буферы на сервере надо подбирать исходя из ресурсов машины и наличия тюна сетевухи. Клиенту пушил 0, чтобы использовались оптимальные значения его ОС. Почему - для лучшей утилизации канала.
4) пушить туда можно фиксированный ip, маршруты, dns сервера, домены для резолва. Тоже есть в мане. Было актуально для split-dns, но тут есть нюансы в разных клиентах. В версии 2.7 обещают это переосмыслить, но пока все в бете.
5) прожевывается легче, чем старый добрый aes-cbc/ctr.
6) можно, но не очевидно. Дергать модуль shell с конкретными флагами openssl было более наглядно.
Ну и для кучи - отключать сжатие или ставить compress stubv2 для совместимости со старыми клиентами (сами разрабы рекомендуют для секьюрности).
В итоге синтетика с локальным спидтестом при использовании udp выдавала метров 250-300 сидя на вайфае, при провайдерском тарифе 500
1) Года 4 назад отказался от easy-rsa и накрутил в ансибле нужные рычаги openssl и ямлы. 2) CRL.pem выкинул и использую crl-verify dir, куда кладется файл с именем равным серийнику серта. Дало возможность без особых танцев проводить временную блокировку подключения. 3) Подкрутил на сервере txqueuelen (в дефолте он сотка) и sndbuf/rcvbuf. 4) Для пушей использую client-config-dir - каждому пользователю улетает только то, что надо именно ему. 5) Поигрался с cipher - оставил только AEAD алгоритмы. 6) Отказался от rsa в пользу ec. Соответственно dh заменил на ecdh. Да, серты пришлось постепенно перевыдавать.
Возможно дойдут руки поиграться с их Data Channel Offload, который выносит крипту из юзерспейса, но пока производительность устраивает и так.
Как обладатель макбука, стоящего за моником, могу сказать - да, с блютусной клавы и мыша он выходит из спящего режима. Как оно там работает - до лампочки.
1) можно создать в client-config-dir конфиг DEFAULT и пушить всем клиентам одинаковые настройки. Удобно в случае отдельного openvpn для десятков человек с однотипным доступом.
2) Ещё можно указать crl-verify как директорию, в нее класть пустой файл, с условием - имя файла совпадает с серийным номером нужного сертификата в десятичном формате. Наличие такого файла проверяется при каждом подключении клиента, в то время как crl.pem перечитывается раз в час, если память не подводит. Надо разлочить - просто удаляешь нужный файл.
В моем случае domain.com это образец. user fqdn (в документациях циски его называют просто email) это же просто ID — в IKEv1 в роли него выступал ip, в IKEv2 появилось разнообразие. Т.е мы не знаем, с какого ip к нам придут, потому разрешаем any (0.0.0.0), но при этом знаем, что он должен представиться определенным образом, в данном случае в виде псевдо-email. Такая схема у меня связала strongswan с фиксированым адресом и mikrotik, который физически непонятно где, типа коворкинга.
А, вы в этом плане. Вообще вариант, но я думал может что за годы еще придумали. Обслуживать подобную схему пока видится сложноватым, бизнесу такое не отдашь - мозги вынесут.
Еще есть вариант использовать bepasty (со сроком жизни файла) или других аналогов пастбина для передачи конфигов.
При наличии gitlab/forgejo или какой-то еще приблуды с oci registry есть oras cli. Накручиваем пайплайн и вот она - машина для pki, которая явно бэкапится.
export-p12 (кажется так в easy-rsa) в помощь. Можно inline в виде base64 в конфиг, можно отдельно передавать для импорта в хранилище (windows cert store, mac keychain, android keystore. В ios в openvpn connect куда-то под себя) с вводом пароля для импорта.
С дури можно и фингерпринтами рулить
Что подразумевается под передачей приватного ключа по сети?
Вот тут я согласен с разработчиками. Хорошо, что есть возможность, но при сетапе на пару-тройку сотен динамично меняющихся людей ( условный колл-центр) это выглядит как ад. Особенно при схеме выдает иб, настраивает на тачках техпод, а ты отдаешь инфру и пайплайн.
А можно вот это чуть подробнее?
BF-CBC планомерно выпиливается из всего. Лучше посмотреть, какие алгоритмы поддерживаются в последнем доступном клиенте (что-то типа openvpn —show-ciphers) и подкрутить конфиг. Вроде в XP уже должна быть поддержка aes128.
уронить ipsec ума не надо - просто дропнуть порт.
Вот пушить роуты в клиентов в wg самое больное место было. В netbird вроде реализовали некий аналог control channel в openvpn, но нет альтернативных клиентов (или я не нашел), а это риск однажды увидеть на мобилках «данное приложение недоступно в вашем регионе».
UPD. Про crl немного попутал. Он считывается при новом подключении или при пересогласовании уже имеющейся сессии, а там дефолт час. Т.е можно провернуть kill и с crl.pem для быстрого блока. Только я бы дергал апдейт не кроном, а какой-то тулзой, умеющей в inotify/fsevents типа lsyncd, если использовать easy-rsa на отдельной машине, а не крутить пайплайны
К слову, если использовать tcp, то в опенвпн есть —port-share args. Возможно даже работает, но это не точно.
1) скорее избавился от обертки на баш для дерганья openssl и можно извращаться с передачей контента в openssl в стиле -in <aws s3 cp filename -) без сохранения чувствительных данных на диске
2) это описано в официальном мане openvpn. Pem перечитывается раз в час, если правильно помню, а в dir смотрит при попытке подключения. Таким образом при наличии файла и посланного kill в менеджмент сокет получается выбить сессию с минимальным лагом и без необходимости рестарта самого сервиса.
3) txqueuelen 1000, как и у eth. Буферы на сервере надо подбирать исходя из ресурсов машины и наличия тюна сетевухи. Клиенту пушил 0, чтобы использовались оптимальные значения его ОС. Почему - для лучшей утилизации канала.
4) пушить туда можно фиксированный ip, маршруты, dns сервера, домены для резолва. Тоже есть в мане. Было актуально для split-dns, но тут есть нюансы в разных клиентах. В версии 2.7 обещают это переосмыслить, но пока все в бете.
5) прожевывается легче, чем старый добрый aes-cbc/ctr.
6) можно, но не очевидно. Дергать модуль shell с конкретными флагами openssl было более наглядно.
Ну и для кучи - отключать сжатие или ставить compress stubv2 для совместимости со старыми клиентами (сами разрабы рекомендуют для секьюрности).
В итоге синтетика с локальным спидтестом при использовании udp выдавала метров 250-300 сидя на вайфае, при провайдерском тарифе 500
1) Года 4 назад отказался от easy-rsa и накрутил в ансибле нужные рычаги openssl и ямлы.
2) CRL.pem выкинул и использую crl-verify dir, куда кладется файл с именем равным серийнику серта. Дало возможность без особых танцев проводить временную блокировку подключения.
3) Подкрутил на сервере txqueuelen (в дефолте он сотка) и sndbuf/rcvbuf.
4) Для пушей использую client-config-dir - каждому пользователю улетает только то, что надо именно ему.
5) Поигрался с cipher - оставил только AEAD алгоритмы.
6) Отказался от rsa в пользу ec. Соответственно dh заменил на ecdh. Да, серты пришлось постепенно перевыдавать.
Возможно дойдут руки поиграться с их Data Channel Offload, который выносит крипту из юзерспейса, но пока производительность устраивает и так.
Как обладатель макбука, стоящего за моником, могу сказать - да, с блютусной клавы и мыша он выходит из спящего режима. Как оно там работает - до лампочки.
Из личного опыта:
1) можно создать в client-config-dir конфиг DEFAULT и пушить всем клиентам одинаковые настройки. Удобно в случае отдельного openvpn для десятков человек с однотипным доступом.
2) Ещё можно указать crl-verify как директорию, в нее класть пустой файл, с условием - имя файла совпадает с серийным номером нужного сертификата в десятичном формате. Наличие такого файла проверяется при каждом подключении клиента, в то время как crl.pem перечитывается раз в час, если память не подводит. Надо разлочить - просто удаляешь нужный файл.