ProHoster > Dvofaktorska autentifikacija u OpenVPN-u sa Telegram botom
Dvofaktorska autentifikacija u OpenVPN-u sa Telegram botom
Članak opisuje kako konfigurirati OpenVPN server da omogući dvofaktorsku autentifikaciju s Telegram botom koji će poslati zahtjev za potvrdu nakon povezivanja.
OpenVPN je dobro poznat, besplatan VPN server otvorenog koda koji se naširoko koristi da zaposlenima omogući siguran pristup internim resursima organizacije.
U pravilu se kombinacija ključa i korisničkog imena/lozinke koristi kao autentikacija za povezivanje na VPN server. U isto vrijeme, lozinka sačuvana na klijentu pretvara cijeli set u jedan faktor koji ne pruža odgovarajući nivo sigurnosti. Napadač, nakon što je dobio pristup klijentskom računaru, dobija pristup i VPN serveru. Ovo posebno važi za povezivanje sa računara koji koriste Windows.
Korištenje drugog faktora smanjuje rizik od neovlaštenog pristupa za 99% i nimalo ne komplikuje proces povezivanja za korisnike.
Odmah ću rezervirati da ćete za implementaciju morati povezati server za autentifikaciju multifactor.ru treće strane, u kojem možete koristiti besplatnu tarifu za svoje potrebe.
Kako to radi
OpenVPN koristi openvpn-plugin-auth-pam dodatak za autentifikaciju
Dodatak provjerava korisničku lozinku na serveru i traži drugi faktor preko RADIUS protokola u Multifactor servisu
Multifaktor šalje korisniku poruku putem Telegram bota sa potvrdom pristupa
Korisnik potvrđuje zahtjev za pristup u Telegram chatu i povezuje se na VPN
Instaliranje OpenVPN servera
Na Internetu postoji mnogo članaka koji opisuju proces instaliranja i konfiguracije OpenVPN-a, tako da ih nećemo duplirati. Ako vam je potrebna pomoć, na kraju članka nalazi se nekoliko veza do tutorijala.
Multifaktorsko podešavanje
Idi Višefaktorski sistem upravljanja, idite na Resursi i kreirajte novi VPN.
Nakon kreiranja, biće vam dostupne dvije opcije: NAS ID и Shared Secret, oni će biti potrebni za naknadnu konfiguraciju.
U odjeljku "Grupe" idite na postavke grupe "Svi korisnici" i poništite oznaku "Svi resursi" tako da se samo korisnici određene grupe mogu povezati na VPN server.
Kreirajte novu grupu "VPN korisnici", onemogućite sve metode provjere autentičnosti osim Telegrama i navedite da korisnici imaju pristup kreiranom VPN resursu.
U odjeljku "Korisnici" kreirajte korisnike koji će imati pristup VPN-u, dodajte "VPN korisnike" u grupu i pošaljite im link za postavljanje drugog faktora autentifikacije. Prijava korisnika mora odgovarati prijavi na VPN serveru.
Postavljanje OpenVPN servera
Otvorite fajl /etc/openvpn/server.conf i dodajte dodatak za autentifikaciju pomoću PAM modula
prvi red povezuje pam_radius_auth PAM modul sa parametrima:
skip_passwd - onemogućava prijenos korisničke lozinke na Multifactor RADIUS server (on ne mora znati).
client_id - zamijenite [NAS-Identifier] odgovarajućim parametrom iz postavki VPN resursa.
Sve moguće opcije su opisane u dokumentaciju za modul.
Drugi i treći red uključuju sistemsku provjeru prijave, lozinke i korisničkih prava na vašem serveru zajedno sa drugim faktorom provjere autentičnosti.
Ponovo pokrenite OpenVPN
$ sudo systemctl restart openvpn@server
Podešavanje klijenta
Uključite zahtjev za korisničko ime i lozinku u konfiguracijski fajl klijenta
auth-user-pass
inspekcija
Pokrenite klijent za OpenVPN, povežite se sa serverom, unesite svoje korisničko ime i lozinku. Telegram bot će dobiti zahtjev za pristup sa dva dugmeta
Jedno dugme omogućava pristup, drugo blokira.
Sada možete sigurno sačuvati lozinku na klijentu, drugi faktor će pouzdano zaštititi vaš OpenVPN server od neovlaštenog pristupa.
Ako nešto ne radi
Dosljedno provjeravajte da niste ništa propustili:
Postoji korisnik sa postavljenom lozinkom na serveru sa OpenVPN-om
Pristup sa servera preko UDP porta 1812 na adresu radius.multifactor.ru
Parametri NAS-identifikatora i Shared Secret su ispravni
U Multifactor sistemu je kreiran korisnik sa istom prijavom i odobren mu je pristup VPN grupi korisnika
Korisnik je konfigurirao način autentifikacije putem Telegrama
Ako ranije niste postavili OpenVPN, pročitajte prošireni članak.
Instrukcija je napravljena na primjerima na CentOS 7.