Двухфактарная аўтэнтыфікацыя ў OpenVPN з Telegram ботам

У артыкуле апісваецца настройка сервера OpenVPN для ўключэння двухфактарнай аўтэнтыфікацыі з Telegram ботам, які будзе дасылаць запыт з пацверджаннем пры падключэнні.

OpenVPN – шырока вядомы, бясплатны VPN сервер з адчыненым зыходным кодам, які паўсюдна выкарыстоўваецца для арганізацыі абароненага доступу супрацоўнікаў да ўнутраных рэсурсаў арганізацыі.

У якасці праверкі сапраўднасці для падлучэння да VPN сервера, як правіла выкарыстоўваецца камбінацыя з ключа і лагіна/пароля карыстача. Пры гэтым, захаваны на кліенце пароль ператварае ўвесь набор у адзіны фактар, які не забяспечвае належны ўзровень бяспекі. Зламыснік, атрымаўшы доступ да кліенцкага кампутара, атрымлівае доступ і да VPN сервера ў тым ліку. Асабліва гэта дакранаецца падлучэнні з машын пад кіраваннем Windows.

Выкарыстанне другога фактару на 99% скарачае рызыку неправамернага доступу і зусім не ўскладняе працэс падключэння для карыстальнікаў.

Адразу абмоўлюся, для рэалізацыі запатрабуецца падлучэнне іншага сервера аўтэнтыфікацыі multifactor.ru, у якім для сваіх патрэб можна выкарыстоўваць бясплатны тарыф.

Прынцып працы

  1. OpenVPN выкарыстоўвае ўбудову openvpn-plugin-auth-pam для праверкі сапраўднасці
  2. Убудова правярае пароль карыстача на серверы і запытвае другі фактар ​​праз RADIUS пратакол у сэрвісе Мультыфактару
  3. Мультыфактар ​​адпраўляе праз Telegram бота паведамленне карыстачу з пацверджаннем доступу
  4. Карыстальнік пацвярджае ў Telegram чаце запыт доступу і падключаецца да VPN

Устаноўка OpenVPN сервера

У інтэрнэце мноства артыкулаў, якія апісваюць працэс усталёўкі і налады OpenVPN, таму мы не будзем іх дубляваць. Калі вам патрэбна дапамога, у канцы артыкула ёсць некалькі спасылак на навучальныя матэрыялы.

Настройка Мультыфактару

зайдзіце ў сістэму кіравання Мультыфактарам, зайдзіце ў раздзел "Рэсурсы" і стварыце новы VPN.
Пасля стварэння вам будуць даступныя два параметры: NAS-IDentifier и Агульны сакрэт, яны спатрэбяцца для наступны наладкі.

Двухфактарная аўтэнтыфікацыя ў OpenVPN з Telegram ботам

У падзеле "Групы", зайдзіце ў параметры групы "All users" і прыбярыце сцяг "Усе рэсурсы", каб толькі толькі карыстачы вызначанай групы маглі падлучацца да VPN серверу.

Стварыце новую групу "VPN users", адключыце ўсе спосабы аўтэнтыфікацыі акрамя Telegram і пакажыце, што карыстачы маюць доступ да створанага рэсурсу VPN.

Двухфактарная аўтэнтыфікацыя ў OpenVPN з Telegram ботам

У раздзеле "Карыстальнікі" стварыце карыстальнікаў, якія будуць мець доступ да VPN, дадайце ў групу "VPN users" і адпраўце ім спасылку на настройку другога фактару аўтэнтыфікацыі. Лагін карыстальніка павінен супадаць з лагінам на VPN серверы.

Двухфактарная аўтэнтыфікацыя ў OpenVPN з Telegram ботам

Настройка OpenVPN сервера

Адкрыйце файл /etc/openvpn/server.conf і дадайце плягін для аўтэнтыфікацыі з дапамогай PAM модуля

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Убудова можа знаходзіцца ў дырэкторыі /usr/lib/openvpn/plugins/ або /usr/lib64/openvpn/plugins/ у залежнасці ад вашай сістэмы.

Далей неабходна ўсталяваць модуль pam_radius_auth

$ sudo yum install pam_radius

Адкрыйце для рэдагавання файл /etc/pam_radius.conf і пазначце адрас RADIUS сервера Мультыфактара

radius.multifactor.ru   shared_secret   40

дзе:

  • radius.multifactor.ru - адрас сервера
  • shared_secret — скапіруйце з адпаведнага параметру настроек VPN
  • 40 секунд - таймаўт чакання запыту з вялікім запасам

Астатнія сервера неабходна выдаліць або закаментаваць (паставіць у пачатку кропку з коскі)

Далей стварыце файл для service-type openvpn

$ sudo vi /etc/pam.d/openvpn

і ўпішыце ў яго

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

першы радок падлучае PAM модуль pam_radius_auth з параметрамі:

  • skip_passwd - адключае перадачу ў RADIUS сервер Мультыфактару пароль карыстальніка (не трэба яму ведаць).
  • client_id - устаўце замест [NAS-Identifier] які адпавядае параметр з налад VPN рэсурсу.
    Усе магчымыя параметры апісаны ў дакументацыі да модуля.

Другі і трэці радкі ўключаюць сістэмную праверку лагіна, пароля і правоў карыстальніка на вашым серверы разам з другім фактарам аўтэнтыфікацыі.

Перазапусціце OpenVPN

$ sudo systemctl restart openvpn@server

Настройка кліента

Уключыце ў канфігурацыйны файл кліента запыт лагіна і пароля карыстальніка

auth-user-pass

Праверка

Запусціце кліента для OpenVPN, падключыцеся да сервера, укажыце лагін і пароль. Ад Telegram бота прыйдзе запыт доступу з двума кнопкамі

Двухфактарная аўтэнтыфікацыя ў OpenVPN з Telegram ботам

Адна кнопка дазваляе доступ, другая блакуе.

Цяпер смела можна захоўваць пароль на кліенце, другі фактар ​​надзейна абароніць ваш OpenVPN сервер ад несанкцыянаванага доступу.

Калі нешта не працуе

Паслядоўна праверце, што вы нічога не выпусцілі:

  • На серверы з OpenVPN ёсць карыстач з усталяваным паролем
  • З сервера адкрыты доступ па UDP порце 1812 на адрас radius.multifactor.ru
  • Параметры NAS-Identifier і Shared Secret указаны карэктна
  • У сістэме Мультыфактар ​​заведзены карыстач з такім жа лагінам і яму прадстаўлены доступ у групу карыстачоў VPN
  • Карыстальнік наладзіў спосаб аўтэнтыфікацыі праз Telegram

Калі вы раней не наладжвалі OpenVPN, пачытайце разгорнуты артыкул.

Інструкцыя зроблена з прыкладамі на CentOS 7.

Крыніца: habr.com

Дадаць каментар