Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: OpenVPN необходима хитрая настройка  (Прочитано 2368 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
OpenVPN необходима хитрая настройка
« : 11 Февраля 2021, 10:49:46 »
Приветствую уважаемый,

Интересует "хитрый" (или нет :)) вариант настройки VPN сети. В ходе изысканий столкнулся с проблемами или можно сказать неясностями. Большая просьба владеющих мастерством настройки сего добра помочь разобраться.

Исходные:
- Есть N-ное (много, возможно десятки или сотни) количество клиентских устройств с Linux, на которых запущен OpneVPN и подключен GSM-модем с динамическим IP.
- Есть N-ное (но значительно меньше, допустим 3-10) клиентских ПК (Windows/Linux) скажем так "операторов", с не важно каким IP, статическим или динамическим.
- Есть 1 сервер Linux/Ubuntu, у которого внешний белый статически IP и который доступен в локальной сети для операторов и из интернета для клиентских устройств.

Что хочу получить:
- Необходимо собрать всё в VPN сеть.
- Необходимо получить безопасность подключений и шифрование трафика.
- Все клиенты должны видеть друг-друга в VPN сети.
- Клиентским устройствам в VPN сети должен выдаваться постоянный IP, идеально если на стороне сервера не придётся что-то делать для этого, а в самом устройстве можно было бы прописать требуемый адрес в настройках подключения к VPN. В этом собственно первая "хитрость" и заключается.
- Идеально если для всех клиентских устройств было возможно создать одну и ту же пару сертификат-ключ, чтобы раз сделать на большую групп (устройств очень много, для каждого генерировать и после обслуживать всё это тяжело будет). А в этом заключается вторая "хитрость".

Моё решение:
Пробовал разные варианты по мотивам официальной документации и множества форумом, блогов. Но так и не получил нужного мне идеального варианта решения.

Вариант 1.
Всё получилось и хорошо работает если для каждого клиента создаю отдельную пару ключ-сертификат. За ними со стороны сервера закрепляется постоянный IP, и вроде всё хорошо, но:
- приходится каждому клиенту свои ключи выдавать, что сильно накладно в сопровождении для сотен устройств.
- нет возможности на стороне клиента указать закрепляемый ему IP адрес.

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

Конфигурации (пока для пробы все клиенты внутри локальной сети) для вариант 1.
Сервера
(Нажмите, чтобы показать/скрыть)
Клиента Linux
(Нажмите, чтобы показать/скрыть)
Клиента Windows
(Нажмите, чтобы показать/скрыть)

Для варианта 2, в конфигурацию сервера включался параметр (не взирая на то, что написано в комментарии к нему):
Цитировать
# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names.  This is recommended
# only for testing purposes.  For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE "COMMON NAME",
# UNCOMMENT THIS LINE OUT.
duplicate-cn

Так вот вопросы на который прошу помочь найти решения:
1) Как настроить так чтобы работало по варианту 2 но при этом закрепить за каждым клиентом постоянный IP и в идеале настройкой со стороны клиента?
2) Пробовал на клиентской стороне параметр ifconfig 10.8.0.9 10.5.0.100 , но он вообще никак не воспринимается судя по всему. В обоих вариантах сервер сам выдаёт IP клиенту, в пером на постоянно во втором динамически но ни в одном из случав этот клиентский параметр не учитывается.

Версия OpenVPN на всех сторонах v2.4.х (10.5.0.100 - IP адрес сервера в локальной сети).

PS: Возможно я что-то упустил или неверно применил или вообще не возможно то, что я хочу получить, большая просьба помочь с этим разобраться.
« Последнее редактирование: 11 Февраля 2021, 12:00:40 от AKR »
Жизнь это игра для которой нет Tutorial`а

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #1 : 11 Февраля 2021, 12:36:13 »
- Идеально если для всех клиентских устройств было возможно создать одну и ту же пару сертификат-ключ, чтобы раз сделать на большую групп (устройств очень много, для каждого генерировать и после обслуживать всё это тяжело будет).
VPN IPSec/IKE2 с механизмом аутентификации MSChap 2.0 - EAP подразумевает возможность выдачи всем клиентам одного сертификата. Аутентификация клиентов производится по логину и паролю, который прописывается для каждого клиента на сервере админом в отдельности. Но это совсем не OpenVPN. StrongSwan к примеру.

Вообще, то, как ты это планируешь (аутентификация всех клиентов по одному сертификату и ключу), это трагедия. Я не говорю о том, что утечка с одной машины сертификата и ключа (а это возможно при утере компьютера, т.к. они хранятся в простых файлах) может привести к тому. что злоумышленник сможет легко зайти в твою сеть и делать там что хочет, это полбеды. Большая проблема в том, что если ты в этом случае захочешь кому то запретить доступ к сети, то для первого варианта надо будет просто отозвать сертификат нужного клиента. А во втором случае как это ты будешь делать, если у всех все одинаковое? Не зря там предупреждение стоит. Нет, этот вариант категорически небезопасен.

« Последнее редактирование: 11 Февраля 2021, 12:56:50 от AlexDem »

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #2 : 11 Февраля 2021, 12:48:33 »
VPN IPSec/IKE2 с механизмом аутентификации MSChap 2.0 - EAP подразумевает возможность выдачи всем клиентам одного сертификата. Аутентификация клиентов производится по логину и паролю, который прописывается для каждого клиента на сервере админом в отдельности. Но это совсем не OpenVPN. StrongSwan к примеру.
Это похоже, что то же но только в профиль. Получается всё равно для каждого клиента нужно будет создавать логин/пароль, т.е. каждый раз манипуляции на стороне сервера.

Вообще, то, как ты это планируешь (аутентификация всех клиентов по одному сертификату и ключу), это трагедия. Я не говорю о том, что утечка с одной машины сертификата и ключа (а это возможно при утере компьютера, т.к. они хранятся в простых файлах) может привести к тому. что злоумышленник сможет легко зайти в твою сеть и делать там что хочет, это полбеды. Большая проблема в том, что если ты захочешь кому то запретить доступ к сети, то для первого варианта надо будет просто отозвать сертификат нужного клиента. А во втором случае как это ты будешь делать, если у всех все одинаковое? Не зря там предупреждение стоит. Нет, этот вариант категорически небезопасен.
Эту трагедию я понимаю. Вопрос стоит возможно ли вообще так настроить.
Я пока пришёл к выводу, что нет. Но может просто чего-то не докопал потому решил спросить у тех кто больше знает.

Вариант с выдачей ключей с точи зрения безопасности конечно лучший (а может и единственно правильный) и про возможность отзывов всё понятно, так сейчас и сделано у меня. Хочется как-то решить в таком варианте вопрос массовости и последующей сопровождаемости большого количества клиентов. Может в этом направлении есть совет? Есть какие-нибудь инструменты для удобства сего процесса, с веб интерфейсом например, чтобы вошёл, сделал пару кликов, получил файл и дальше пошёл?

Я возгуглил и было мне писано: https://unlix.ru/%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-ip-%D1%83-openvpn-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0/
это делать надо не на клиенте, а на сервере. Сам не пробовал, попробуй, самому мне интересно, как это заработает.
Это кстати полезная опция, она фактически как улучшения первого варианта, когда IP выдаётся сервером и закрепляется за клиентом, только с этим ещё и явно можно указать какому клиенту какой IP хочется. Но всё же это со стороны сервера.

PS: Внутренний голос говорит, что должна быть какая-то простая реализация того, что мне надо :)
« Последнее редактирование: 11 Февраля 2021, 12:55:40 от AKR »
Жизнь это игра для которой нет Tutorial`а

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #3 : 11 Февраля 2021, 12:57:55 »
Это кстати полезная опция, она фактически как улучшения первого варианта, когда IP выдаётся сервером и закрепляется за клиентом, только с этим ещё и явно можно указать какому клиенту какой IP хочется. Но всё же это со стороны сервера.
Отставить... Там надо указать имя клиента, как при генерации сертификата, а если у всех один - не не заработает.

Пользователь добавил сообщение 11 Февраля 2021, 13:00:09:
Это похоже, что то же но только в профиль. Получается всё равно для каждого клиента нужно будет создавать логин/пароль, т.е. каждый раз манипуляции на стороне сервера.
Тогда я не совсем понял логику твоей хотелки. Ты хочешь, чтобы сервер выдавал клиенту его уникальный IP, но при этом не даешь клиенту никакой механизм его аутентификации на сервере, чтобы сервер понимал, что зашел именно этот клиент, которому надо дать именно этот IP. Ты не чувствуешь некого противоречия?

Пользователь добавил сообщение 11 Февраля 2021, 13:02:37:
Вариант с выдачей ключей с точи зрения безопасности конечно лучший (а может и единственно правильный)
Не факт... У меня работают 2 VPN сервера параллельно, OpenVPN + StrongSwan. Второй в части подключения клинентов на порядок проще. + не нужен отдельный клиент для Windows, все далеается штатно средствами системы (хотя не без негого гимора с импортом сертификата на клиентской машине).


Пользователь добавил сообщение 11 Февраля 2021, 13:06:45:
Есть какие-нибудь инструменты для удобства сего процесса, с веб интерфейсом например, чтобы вошёл, сделал пару кликов, получил файл и дальше пошёл?
Есть какая то вэб морда для EasyRSA, но как это работает я точно не знаю...
https://habr.com/ru/post/412815/
« Последнее редактирование: 11 Февраля 2021, 13:06:45 от AlexDem »

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #4 : 11 Февраля 2021, 13:25:31 »
Отставить... Там надо указать имя клиента, как при генерации сертификата, а если у всех один - не не заработает.
Да, это понятно. Я к тому, что в дополнение к первому варианту с отдельными ключами вполне рабочая опция если нужно явно прописывать IP, но только со стороны сервера конечно.
 
Тогда я не совсем понял логику твоей хотелки. Ты хочешь, чтобы сервер выдавал клиенту его уникальный IP, но при этом не даешь клиенту никакой механизм его аутентификации на сервере, чтобы сервер понимал, что зашел именно этот клиент, которому надо дать именно этот IP. Ты не чувствуешь некого противоречия?
Конечно чувствую, более того прямо вижу при варианте с duplicate-cn, что по факту есть эта проблема.
Были надежды на то, что я чего-то не докопал и может есть какая опция или хитрый режим, при котором идентификации при едином сертификате будет ну к примеру по MAC-адресу клиента.

Есть какая то вэб морда для EasyRSA, но как это работает я точно не знаю...
https://habr.com/ru/post/412815/
Вот что-то такое наверное предстоит использовать. Спасибо за ссылку, пока ещё не копал в этом направлении. Посмотрю, что получится.
Жизнь это игра для которой нет Tutorial`а

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #5 : 11 Февраля 2021, 13:33:13 »
при котором идентификации при едином сертификате будет ну к примеру по MAC-адресу клиента.

Всеравно этот МАС адрес клиента надо будет указать на сервере, чтобы сервер понимал, что надо ему дать како то IP. Тогда чем это лучше логина/пароля? Их хоть сменить без проблем можно. Да и потом, OpenVPN работает с виртуальным сетевым адаптером (интерфейсом) tun а у него нет МАС адреса.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #6 : 11 Февраля 2021, 15:06:22 »
приходится каждому клиенту свои ключи выдавать, что сильно накладно в сопровождении для сотен устройств.
Автоматизируйте. Либо подключайте по логину-паролю.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #7 : 11 Февраля 2021, 18:01:59 »
Автоматизируйте...
Ну видимо придётся что-то в этом направлении придумывать если не найдётся готового и удобного инструмента.

...Либо подключайте по логину-паролю.
А это очень интересно и может быть третьим и как раз тем, что мне надо решением, если в итоге каждому будет зарезервирован и присваиваться постоянно один и тот же IP. Останется только на стороне сервера заводить как-то пользователей (это пользователи системные или просто список логин/пароль?), и после этого просто клиентам их настраивать. Такой вариант выглядит очень привлекательно.
Как это сделать? Что, где прописать? Если не сложно просьба подсказать.
« Последнее редактирование: 11 Февраля 2021, 18:04:00 от AKR »
Жизнь это игра для которой нет Tutorial`а

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #8 : 11 Февраля 2021, 18:11:48 »
Как это сделать? Что, где прописать? Если не сложно просьба подсказать.
Либо возгуглть, и найти целый мануал https://nix-notes.com/bez-rubriki/avtorizacziya-klientov-openvpn-po-loginu-i-parolyu/ или https://www.ylsoftware.com/news/680 (правда не знаю, будет ли работать статичные внутренние IP, надо пробовать), либо поставить другой VPN sever, StrongSvan к примеру, он это умеет делать без плясок с бубном. Правда предстоят иные пляски,для получения постоянного IP (он по умолчанию всем динамичекские делает). Но думаю вопрос решаем, у меня самого это в планах (отдаленных).
« Последнее редактирование: 11 Февраля 2021, 18:13:41 от AlexDem »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #9 : 11 Февраля 2021, 18:58:48 »
Останется только на стороне сервера заводить как-то пользователей (это пользователи системные или просто список логин/пароль?)
У меня системные (Active Directory)

plugin openvpn-plugin-auth-pam.so openvpn
verify-client-cert optional

Пользователь добавил сообщение 11 Февраля 2021, 19:06:39:
если в итоге каждому будет зарезервирован и присваиваться постоянно один и тот же IP
Зачем?
« Последнее редактирование: 11 Февраля 2021, 19:06:39 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #10 : 12 Февраля 2021, 08:51:52 »
Либо возгуглть, и найти целый мануал
Спасибо, похоже на что-то интерессное, сегодня попробую.

У меня системные (Active Directory)
Мне такое не подходит. Нужно управлять подключением клиентских устройств в большом количестве и это не пользователи (не люди).

Зачем?
Чтобы условный "Оператор" через сеть VPN в любой момент и всегда мог подключится к конкретному клиентскому устройству по известному, постоянному IP.
Жизнь это игра для которой нет Tutorial`а

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #11 : 12 Февраля 2021, 10:34:27 »
Чтобы условный "Оператор" через сеть VPN в любой момент и всегда мог подключится к конкретному клиентскому устройству по известному, постоянному IP.
Для этого достаточно открыть на сервере /var/log/openvpn-status.log и посмотреть IP нужного пользователя.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #12 : 12 Февраля 2021, 12:34:12 »
Нужно управлять подключением клиентских устройств в большом количестве и это не пользователи (не люди).
Какая нахрен разница?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AKR

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #13 : 12 Февраля 2021, 14:52:17 »
Для этого достаточно открыть на сервере /var/log/openvpn-status.log и посмотреть IP нужного пользователя.
Не совсем. Это ещё можно сделать когда человек выступает оператором, а если допустим некая система. Всё гораздо сложнее на самом деле, я привожу описание того, что мне нужно достичь исходя их множество нюансов.

Какая нахрен разница?…
Просто огромная, в одном случае нужно заводить пользователей в AD для каждого клиента/устройства ещё и сам AD организовывать, а в другом это просто запись в MySQL базе из одной табличке, к примеру прям на том же сервере. И это всё ещё должно просто сопровождаться.
Я к тому, что накладных расходов времени, ресурсов с AD ведется значительно больше.
« Последнее редактирование: 12 Февраля 2021, 14:54:13 от AKR »
Жизнь это игра для которой нет Tutorial`а

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: OpenVPN необходима хитрая настройка
« Ответ #14 : 12 Февраля 2021, 15:40:53 »
Просто огромная, в одном случае нужно заводить пользователей в AD для каждого клиента/устройства ещё и сам AD организовывать, а в другом это просто запись
Да вы прикалываетесь?…
Достаточно один раз настроить AD, потом ПРОСТО добавлять пользователей. Те же "записи в табличке", только с функционалом, в разы превышающим любой MySQL.
Что вас так тянет на доморощенные недорешения, почему не сделать сразу нормально? Чтобы через год не переделывать? Задолбали.

Как вы реплицировать и масштабировать своё MySQL'ное решение будете вообще?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.