Tofaktorautentisering i OpenVPN med Telegram-bot

Artikkelen beskriver å sette opp en OpenVPN-server for å aktivere tofaktorautentisering med en Telegram-bot som sender en bekreftelsesforespørsel når du kobler til.

OpenVPN er en velkjent, gratis, åpen kildekode VPN-server som er mye brukt for å organisere sikker ansattes tilgang til interne organisasjonsressurser.

Som autentisering for tilkobling til en VPN-server brukes vanligvis en kombinasjon av nøkkel og brukerpålogging/passord. Samtidig gjør passordet som er lagret på klienten hele settet til en enkelt faktor som ikke gir riktig sikkerhetsnivå. En angriper, som har fått tilgang til klientdatamaskinen, får også tilgang til VPN-serveren. Dette gjelder spesielt for tilkoblinger fra maskiner som kjører Windows.

Bruk av den andre faktoren reduserer risikoen for uautorisert tilgang med 99 % og kompliserer ikke tilkoblingsprosessen for brukere i det hele tatt.

La meg gjøre en reservasjon med en gang: for implementering må du koble til en tredjeparts autentiseringsserver multifactor.ru, der du kan bruke en gratis tariff for dine behov.

Prinsippet om drift

  1. OpenVPN bruker openvpn-plugin-auth-pam plugin for autentisering
  2. Plugin sjekker brukerens passord på serveren og ber om den andre faktoren via RADIUS-protokollen i Multifactor-tjenesten
  3. Multifactor sender en melding til brukeren via Telegram-bot som bekrefter tilgang
  4. Brukeren bekrefter tilgangsforespørselen i Telegram-chat og kobler til VPN

Installere en OpenVPN-server

Det er mange artikler på Internett som beskriver prosessen med å installere og konfigurere OpenVPN, så vi vil ikke duplisere dem. Hvis du trenger hjelp, er det flere lenker til opplæringsprogrammer på slutten av artikkelen.

Sette opp multifaktoren

Gå til Multifaktor kontrollsystem, gå til "Ressurser"-delen og opprett en ny VPN.
Når den er opprettet, vil du ha to tilgjengelige alternativer: NAS-IDentifier и Delt hemmelighet, vil de være nødvendige for påfølgende konfigurasjon.

Tofaktorautentisering i OpenVPN med Telegram-bot

I delen "Grupper" går du til gruppeinnstillingene "Alle brukere" og fjerner flagget "Alle ressurser", slik at bare brukere av en bestemt gruppe kan koble til VPN-serveren.

Opprett en ny gruppe "VPN-brukere", deaktiver alle autentiseringsmetoder unntatt Telegram og angi at brukere har tilgang til den opprettede VPN-ressursen.

Tofaktorautentisering i OpenVPN med Telegram-bot

I delen "Brukere" oppretter du brukere som skal ha tilgang til VPN, legger dem til i gruppen "VPN-brukere" og sender dem en lenke for å konfigurere den andre autentiseringsfaktoren. Brukerpåloggingen må samsvare med påloggingen på VPN-serveren.

Tofaktorautentisering i OpenVPN med Telegram-bot

Sette opp en OpenVPN-server

Åpne filen /etc/openvpn/server.conf og legg til en plugin for autentisering ved hjelp av PAM-modulen

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

Programtillegget kan være plassert i katalogen /usr/lib/openvpn/plugins/ eller /usr/lib64/openvpn/plugins/ avhengig av systemet ditt.

Deretter må du installere pam_radius_auth-modulen

$ sudo yum install pam_radius

Åpne filen for redigering /etc/pam_radius.conf og spesifiser adressen til RADIUS-serveren til multifaktoren

radius.multifactor.ru   shared_secret   40

der:

  • radius.multifactor.ru — serveradresse
  • shared_secret - kopier fra den tilsvarende VPN-innstillingsparameteren
  • 40 sekunder - tidsavbrudd for å vente på en forespørsel med stor margin

De resterende serverne må slettes eller kommenteres ut (sett semikolon i begynnelsen)

Deretter oppretter du en fil for tjenestetype openvpn

$ sudo vi /etc/pam.d/openvpn

og skriv det 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 parameterne:

  • skip_passwd - deaktiverer overføring av brukerens passord til RADIUS Multifactor-serveren (han trenger ikke å vite det).
  • client_id — erstatt [NAS-Identifier] med den tilsvarende parameteren fra VPN-ressursinnstillingene.
    Alle mulige parametere er beskrevet i dokumentasjon for modulen.

Den andre og tredje linjen inkluderer systemverifisering av pålogging, passord og brukerrettigheter på serveren din sammen med en andre autentiseringsfaktor.

Start OpenVPN på nytt

$ sudo systemctl restart openvpn@server

Klientoppsett

Inkluder en forespørsel om brukerinnlogging og passord i klientkonfigurasjonsfilen

auth-user-pass

Проверка

Start OpenVPN-klienten, koble til serveren, skriv inn brukernavn og passord. Telegram-boten vil sende en tilgangsforespørsel med to knapper

Tofaktorautentisering i OpenVPN med Telegram-bot

En knapp gir tilgang, den andre blokkerer den.

Nå kan du trygt lagre passordet ditt på klienten; den andre faktoren vil pålitelig beskytte OpenVPN-serveren din mot uautorisert tilgang.

Hvis noe ikke fungerer

Sjekk sekvensielt at du ikke har gått glipp av noe:

  • Det er en bruker på serveren med OpenVPN med et passord satt
  • Serveren har tilgang via UDP-port 1812 til adressen radius.multifactor.ru
  • Parameterne for NAS-identifikator og Shared Secret er riktig spesifisert
  • En bruker med samme pålogging er opprettet i Multifactor-systemet og har fått tilgang til VPN-brukergruppen
  • Brukeren har konfigurert autentiseringsmetoden via Telegram

Hvis du ikke har satt opp OpenVPN før, les detaljert artikkel.

Instruksjonene er laget med eksempler på CentOS 7.

Kilde: www.habr.com

Legg til en kommentar