Как стать автором
Обновить

Комментарии 8

Спасибо, любопытно. Было бы, конечно, понятнее, если бы Вы не кучу скринов настройки и листингов выложили, а кратко описали бы принцип работы решения, а остальное можно и на Гитхаб :)

Насколько я понял, у Вас принцип такой. OpenVPN обращается к FreeRadius-серверу, а тот уже умеет для аутентификации вызывать произвольный код. Вы в качестве такого кода написали своё приложение для работы с Телеграмом.

Главный вопрос у меня (как и с другими способами 2FA) тут такой... в целом разумно не просить второй фактор, если вход осуществляется с того же самого устройства в пределах какого-то настроенного интервала времени (аналог галочки "запомнить меня на этом устройстве на N дней"). VPN, особенно с мобильных устройств, которые теряют/ловят связь, может переподключаться десятки раз в день, и мы так пользователя сильно задолбаем :) Вот этот функционал как-то реализован / реализуем в принципе?

Спасибо за ваш комментарий/вопрос :-)
Если описать только кратко идею, то наверное это был бы уже не Туториал :-) Я максимально постарался спрятать все скриншоты :-) но хотелось все таки дать туториал :-) Ну а идея: поменять параметры в двух файлах и подсунуть обработчик (он же бот), тут и на статью не наберется :-)

Да, принцип вы описали абсолютно правильно! Можно заставить Freeradius выполнять любой код, необходимо только правильно логику запрограммировать.

Например, отвечая на ваш вопрос, в самом боте через чат запросить кнопку подтверждения: не спрашивать 2FA какое-то время, положить это значение в БД и проверять при подключении - это, мне кажется, самый простой, но не безопасный способ, он не несет какой-то проверки "под капотом", если мы говорим про telegram, так как он может быть запущен не многих устройствах одновременно.
Если же использовать какое-то другое приложение вместо telegram, которое например однозначно будет запущено только на одном устройстве.... в общем тут можно рассуждать долго :-)
Не уверен, что можно передать еще какие-либо поля кроме логина и пароля. Это скорее тема для небольшого исследования, это все таки не ppp подключение, а удаленное OpenVPN.

Ну я представляю, как это можно реализовать через OAuth, который тоже можно прикрутить к OpenVPN. Проблема в том, что меня интересует не OpenVPN, а OpenConnect (спасибо за это РКН), к которому RADIUS тоже прикручивается.
По FreeRadius я совсем не эксперт, но да, логично, что в этом случае FreeRadius-сервер получает информацию только от VPN-сервера, а не напрямую от клиента, а сервер конкретное устройство не может идентифицировать. А в Telegram, даже если мы можем идентифицировать устройство, - это будет устройство, на котором запущен Telegram, а не с которого соединяется VPN-клиент. С другой стороны, если посмотреть на модель рисков, это лучше, чем ничего...

Вот только ocserv не может в статику к сожалению, а хотелось бы в замкнутом конкуре иметь статику для определённых клиентов, ovpn с tls crypt пока работает, v2 вроде как лучше обходит dpi. У меня и quic и openvpn даже wg работает внутри страны, что удивительно. Но надеяться не стоит, ocserv могут по gnutls блонуть, не панацея, вроде как sstp ещё есть но он медленнее и нет защиты от activ probing, и я без понятия будет ли он работать за обратным прокси.

По моему личному опыту, OpenVPN (UDP, с tls-crypt) внутри страны в последнее время у пользователей блокировался у одного домашнего провайдера в Мск, в одной гостинице в Иркутске и на мобильном инете в Калининграде. Плюс пользователь может уезжать за границу, и тогда его соединение с российским сервером становится трансграничным со всеми вытекающими (можно второй сервер за границей поднять, конечно, но там свои нюансы). Что и заставило задуматься об альтернативах. А для полноценного VPN не так уж много альтернатив. SSTP, да, тормозной и серверная часть под Linux (SoftEther) крива до невозможности.

У меня один вопрос.
Почему из инструкции в инструкцию, по настройке OpenVPN повторяется использование RSA и CBC, когда уже 9 лет поддерживаются эллиптические кривые?

Ответ очевиден... все еще считается безопасным и актуален для совместимости со старыми системами.

Старые инструкции, в моем конфиге шифрование aes256 ключ nist p-384

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации