Tofaktorautentisering i OpenVPN med Telegram-bot

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

  1. OpenVPN bruker plugin-modulen openvpn-plugin-auth-pam for autentisering.
  2. Plugin-modulen sjekker brukerens passord på serveren og ber om den andre faktoren via RADIUS-protokollen i Multifactor-tjenesten.
  3. Multifactor sender en bekreftelsesmelding til brukeren gjennom Telegram-boten.
  4. 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 administrasjonssystemet for Multifactor., 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.

Tofaktorautentisering i OpenVPN med Telegram-bot

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.

Tofaktorautentisering i OpenVPN med Telegram-bot

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.

Tofaktorautentisering i OpenVPN med Telegram-bot

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 openvpn

Plugin 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 40

hvor:

  • 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/openvpn

og skriv inn

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

den 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 dokumentasjonen for modulen.

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@server

Klientkonfigurasjon

Aktiver i klientkonfigurasjonsfilen forespørsel om brukernavn og passord

auth-user-pass

Kontroll

Start klienten for OpenVPN, koble til serveren, oppgi brukernavn og passord. En forespørsel om tilgang vil komme fra Telegram-boten med to knapper

Tofaktorautentisering i OpenVPN med Telegram-bot

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 detailed article.

The guide includes examples for CentOS 7.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster