Artikkelen beskriver oppsett av OpenVPN-server for å aktivere to-faktorautentisering med en Telegram-bot som sender en bekreftelsesforespørsel ved tilkobling.
OpenVPN er en velkjent, gratis VPN-server med åpen kildekode, som mye brukes for å gi ansatte trygg tilgang til interne ressurser i organisasjonen.
Som autentisering for tilkobling til VPN-server brukes vanligvis en kombinasjon av nøkkel og brukernavn/passord. På denne måten gjør det lagrede passordet på klienten hele settet til en enkelt faktor, noe som ikke gir tilstrekkelig sikkerhetsnivå. En angriper som får tilgang til klientdatamaskinen, får også tilgang til VPN-serveren. Dette gjelder spesielt for tilkoblinger fra maskiner som kjører Windows.
Bruken av en andre faktor reduserer risikoen for uautorisert tilgang med 99 % og kompliserer ikke tilkoblingsprosessen for brukerne.
Jeg vil umiddelbart påpeke at for implementering kreves tilkobling til den eksterne autentiseringstjenesten multifactor.ru, hvor man kan bruke den gratis planen.
Principle of Operation
- OpenVPN bruker plugin-modulen openvpn-plugin-auth-pam for autentisering.
- Plugin-modulen sjekker brukerens passord på serveren og ber om den andre faktoren via RADIUS-protokollen i Multifactor-tjenesten.
- Multifactor sender en bekreftelsesmelding til brukeren gjennom Telegram-boten.
- Brukeren bekrefter tilkoblingsforespørselen i Telegram-chatten og kobler seg til VPN.
Installasjon av OpenVPN-server.
Det finnes mange artikler på nettet som beskriver prosessen med å installere og konfigurere OpenVPN, så vi vil ikke duplisere dem. Hvis du trenger hjelp, finner du flere lenker til opplæringsmateriell på slutten av artikkelen.
Oppsett av Multifactor.
Gå til , gå til "Ressurser"-delen og opprett en ny VPN.
Etter opprettelsen vil to parametere være tilgjengelig: NAS-IDentifier. og Shared Secret., disse vil kreves for videre oppsett.

Under "Grupper", gå til gruppen "Alle brukere" og fjerne flagget for "Alle ressurser", slik at bare brukere fra en bestemt gruppe kan koble til VPN-serveren.
Opprett en ny gruppe "VPN-brukere", deaktiver alle autentiseringsmetoder unntatt Telegram, og angi at brukerne har tilgang til den opprettede VPN-ressursen.

I delen "Brukere", opprett brukere som skal ha tilgang til VPN, legg dem til i gruppen "VPN-brukere" og send dem en lenke for å sette opp den andre faktoren for autentisering. Brukernavnet må samsvare med brukernavnet på VPN-serveren.

Konfigurere OpenVPN-serveren
Åpne filen /etc/openvpn/server.conf og legg til plugin for autentisering med PAM-modulen
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnPlugin kan befinne seg i katalogen /usr/lib/openvpn/plugins/ eller /usr/lib64/openvpn/plugins/ avhengig av systemet ditt.
Deretter må pam_radius_auth-modulen installeres
$ sudo yum install pam_radiusÅpne filen for redigering /etc/pam_radius.conf og angi adressen til RADIUS-serveren for Multifaktor
radius.multifactor.ru shared_secret 40hvor:
- radius.multifactor.ru - adressen til serveren
- shared_secret - kopier fra den tilsvarende parameteren i VPN-innstillingene
- 40 sekunder - timeout for å vente på forespørselen med god margin
De andre serverne må fjernes eller kommenteres ut (sett en prikk foran med semikolon)
Deretter opprett filen for tjenestetypen openvpn
$ sudo vi /etc/pam.d/openvpnog skriv inn
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authden første linjen kobler PAM-modulen pam_radius_auth med parametrene:
- skip_passwd - deaktiverer sending av passordet til brukeren til RADIUS-serveren for Multifaktor (det trenger ikke å vite det).
- client_id - sett inn den tilsvarende parameteren fra innstillingene for VPN-ressursen i stedet for [NAS-Identifier].
Alle mulige parametere er beskrevet i .
Den andre og tredje linjen inkluderer systemgjenkjenning av pålogging, passord og brukerrettigheter på serveren din sammen med den andre faktoren for autentisering.
Start OpenVPN på nytt
$ sudo systemctl restart openvpn@serverKlientkonfigurasjon
Aktiver i klientkonfigurasjonsfilen forespørsel om brukernavn og passord
auth-user-passKontroll
Start klienten for OpenVPN, koble til serveren, oppgi brukernavn og passord. En forespørsel om tilgang vil komme fra Telegram-boten med to knapper

En knapp tillater tilgang, den andre blokkerer.
Nå kan du trygt lagre passordet på klienten, den andre faktoren beskytter OpenVPN-serveren din pålitelig mot uautorisert tilgang.
Hvis noe ikke fungerer
Sjekk systematisk hva du kan ha glemt:
- På serveren med OpenVPN finnes det en bruker med et angitt passord
- Server access is open on UDP port 1812 to the address radius.multifactor.ru
- The NAS-Identifier and Shared Secret parameters are specified correctly
- A user with the same login has been registered in the Multifactor system and granted access to the VPN user group
- The user has configured the authentication method via Telegram
If you have not previously configured OpenVPN, please read .
The guide includes examples for CentOS 7.
Kilde: habr.com
