Comments 22
Спасибо за гайд! С 2FA не игрались?
2FA тут должен отрабатывать на стороне Keycloak, так что не думаю что с этим проблемы будут
Спасибо за отклики! надеюсь будет полезно)
как написали выше, 2fa можно настроить на keycloack, но в данном проекте это пока не делали
Это что-то типа hotspot’a ? Соединение выполняется по сертификатам ? Не по учетным данным пользователей?
1) Нет,не думаю что это hotspot ,но не уверен,что мы одинаково понимаем этот термин.
2) Это впн для организации доступа во внутреннюю сеть облака
3) Аутентификация происходит по учетным записям пользователей в Keycloack, аутентификация по сертификатам не производится
Не пойму как подключатся VPN клиент, если вы в нем не указываете при подключении логин и парол. Увас в конфиге отсутствует auth-user-pass значит клиент не запрашивает у пользователя логин и парол
Так клиент отправляет пользователя в браузер пройти авторизацию в keycloack. А он уже колбэком отправляет результат авторизации в openvpn, который по её результатам запускает сессию
При запуске клиента OpenVPN запустится браузер с формой от KeyCloack c предложением ввести логин и пароль, все и вся магия. То что в конфигах указывается это связь самого keycloak плагина с openvpn сервера (сервисная учетка)
При подключении клиента без auth-user-pass openvpn-сервер вызывает страницу keycloack в браузере и вы там вводите логин/пароль . при положительной аутентификации keycloack сообщает openvpn ,что аутентификация прошла и впн-канал поднимается между клиентом и сервером
Стоить заметить, что такое умеют OpenVPN клиенты с поддержкой IV_SSO=openurl,webauth А значит лесом идут линуксы с пакетами 2.6 и 2.7, и остаются только openvpn3. И значит лесом идёт настройка через GUI NetworkManager, а останется только консоль.
Хотя нет, похоже что-то появилось месяц назад https://github.com/pegasusheavy/network-manager-openvpn-sso
все верно,с консольными клиентами,особенно со старыми версиями, не все так просто и это я указывал в статье.
Хм, а сборка докера идет с овпн 2.6
https://github.com/jkroepke/openvpn-auth-oauth2/blob/main/docs/demo/docker-compose.yaml
Спасибо за статью, данная тема самого уже давно интересовала. Подскажите, а можно ли при помощи этого решения производить гранулярный доступ пользователей к подсетям через роль в keycloak? Допустим в моей корпоративной сети три типа подсетей, являющиеся подмножеством друг друга: гостевые, общие и куда хотелось бы доступ только админам давать, которые можно замапить на роли guest, user и admin. Возможно ли через keycloak динамически их менять для существующих юзеров с применением доступных маршрутов?
Простите, не очень понятно, клок должен быть опубликован за пределы КСПД для этого варианта?
Спасибо.
Вместо nginx попробуйте caddy - выпуск сертификатов автоматом. В докере с keycloak прекрасно уживается.
Или traefik, или angie - тоже получение сертификатов автоматически.
Зы. Если появится желание использовать в докере и спрятать все за caddy, то caddy собирать отсюда https://github.com/mholt/caddy-l4, чтобы была поддержка проброса овпн.
Из коробки caddy не умеет в stream для tcp и udp.
caddy:
build:
context: .
dockerfile_inline: |
FROM caddy:builder AS builder
RUN xcaddy build --with github.com/mholt/caddy-l4
FROM caddy:alpine
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
container_name: caddy-l4
restart: always
ports:
- "80:80/tcp"
- "443:443/tcp"
# - "443:443/udp"
networks:
- proxy_network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy_data:/data
- ./caddy_config:/config
Организация удаленного доступа в защищенный контур на базе Openvpn + Keycloak