vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2017-04-17 03:46 pm

openvpn & subjectAltName

Задумался над идеей назначать клиентам OpenVPN ip-адреса по значению поля subjectAltName в их сертификатах.
RFC 5280 предусматривает тип поля IP в SubjectAltName, и OpenSSL его вполне поддерживает.

Идея хороша тем, что при подключении нового клиента не нужно вообще ничего делать на сервере. Удостоверяющий центр, выписывая клиенту сертификат (что все равно надо сделать) выделяет ему IP и DNS-имя и прописывает иъ в этот сертификат. А задача сервера - просто согласиться с тем что подписано удостоверяющим центром.

Правда, похоже просто так не получится. Что-то я не вижу там, чтобы client-connect скрипто получил доступ ко всему сертификату или хотя бы к subjectAltName.

Upd Благодаря [personal profile] dzz родилось более простое решение:
Сейчас у меня в скрипте client-connect соответствие CN сертификата клиента и выданного ему IP записывается в динамическую зону DNS. Чтобы на того клиента логиниться по имени.

Так вот - сначала надо в DNS посмотреть, и если там это CN есть, то сказать openvpn-у "этому дай вот этот адрес". А вот уж если адреса такого в DNS нет - назначать первый свободный.
Это, конечно, не гарантирует от того что адрес будет переисиользован пока клиент будет в оффлайне. но все же.
alexkuklin: (Default)

[personal profile] alexkuklin 2017-04-17 01:31 pm (UTC)(link)
а тебе так надо привязать фиксированные ip?
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 01:49 pm (UTC)(link)
У тебя так часто меняются IP-адреса серверов?
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 02:21 pm (UTC)(link)
sshd - SSH-server
ssh - SSH-client :)

Я не имел в виду обязательно промышленные серверы.
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 02:28 pm (UTC)(link)
> тогда любой windows- компьютер является SMB-сервером

Таки да :)
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 03:08 pm (UTC)(link)
> Тогда вопрос так ли часто меняются IP-адреса серверов кажется странным.

Ну, я не знал твоей специфики. Теоретически, могут быть "медленно меняющиеся" адреса.

> отдает адреса из пула в порядке прихода клиентов

Может быть, проще доработать openvpn-сервер для раздачи lease-ов?
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 03:26 pm (UTC)(link)
> А что у нас является аналогом mac-адреса?

Fingerprint открытого ключа? Ключ уникален для каждого устройства.

[identity profile] tzirechnoy [lj.rossia.org] 2017-04-17 04:44 pm (UTC)(link)
ifconfig-pool-persist
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 01:48 pm (UTC)(link)
При таком подходе не выйдет раздавать динамические адреса, кроме того, на CA ложится несвойственная ему функция по управлению адресным пулом.
dzz: Dizzy の冬 (Default)

[personal profile] dzz 2017-04-17 02:14 pm (UTC)(link)
VPN VPN-у рознь, в некоторых бывает суммарно больше клиентов, чем есть адресов в подсети.
Выделять каждому статик - довольно таки расточительно и чревато коллизиями.
stanislavvv: (Default)

[personal profile] stanislavvv 2017-04-17 01:52 pm (UTC)(link)
У меня выдавать статические ip-адреса выходило только через CN при помощи client-config-dir в конфигурации сервера и прописании файликов с именем == CN клиента со всяческими ifconfig-push

Но у меня набор клиентов, кому надо было выдавать статические ip, был фиксированным, так что выдать каждому свой сертификат и написать/сгенерить конфиг проблемы не создавало.

[identity profile] dmitrmax.livejournal.com 2017-04-17 02:52 pm (UTC)(link)
По одному сертификату в общем случае можно VPN-иться из разных мест одновременно. С фиксированным IP это не будет работать.

[identity profile] dmitrmax.livejournal.com 2017-04-17 03:09 pm (UTC)(link)
Если это, чего вы хотите, то да. Однако к устройству всё равно это никакого биндинга иметь не будет.

[identity profile] tzirechnoy [lj.rossia.org] 2017-04-17 04:55 pm (UTC)(link)
Файл с сертификатом лежыт, кстати, в месте, указанном переменной peer_cert .

А твой SubjectAltName из сертификата должэн быть в переменной X509_0_subjectAltName .

[identity profile] dreams4rent.livejournal.com 2017-04-17 06:38 pm (UTC)(link)
Если дело только в ругани ssh, то и лечить можно только ssh.
Ssh умеет сертификаты. Если сделать свой ssh ca, то можно подписывать серверные ключи, а клиентам указать этой подписи верить.
Тогда ssh не ругается при смене IP адреса.

[personal profile] hungry_ewok 2017-04-17 09:45 pm (UTC)(link)
А так что не так?:

[root@linux openvpn]# grep pool-per server.conf
ifconfig-pool-persist /etc/openvpn/ipp.txt

[root@linux openvpn]# cat ipp.txt
client7,10.8.0.4
client10,10.8.0.8
client2,10.8.0.12
client4,10.8.0.16
client3,10.8.0.20

dil: (Default)

[personal profile] dil 2017-04-18 11:31 am (UTC)(link)
Ну вообще-то, openvpn его сам подписывает, чтоб запомнить, кому какие динамические адреса выдавал, но да, можно руками подписать туда что надо, и они будут статические.

[identity profile] edo-rus.livejournal.com 2017-05-03 07:28 pm (UTC)(link)
он только дописывает?
dil: (Default)

[personal profile] dil 2017-05-04 02:33 am (UTC)(link)
Ну и читает тоже