Artiklen beskriver opsætningen af en OpenVPN-server for at aktivere tofaktorautentifikation med en Telegram-bot, som sender en bekræftelsesforespørgsel ved tilslutning.
OpenVPN er en velkendt, gratis VPN-server med åben kildekode, der universelt anvendes til at skabe sikker adgang for medarbejdere til organisationens interne ressourcer.
Som regel anvendes en kombination af nøgle og brugernavn/adgangskode til autentificering ved forbindelsen til VPN-serveren. Det gemte adgangskode på klienten gør hele sættet til en enkelt faktor, som ikke sikrer tilstrækkeligt sikkerhedsniveau. Angriberen, som får adgang til klientcomputeren, får også adgang til VPN-serveren. Dette gælder især for forbindelser fra maskiner, der kører Windows.
Brugen af en anden faktor reducerer risikoen for uberettiget adgang med 99% og gør slet ikke tilslutningsprocessen mere kompliceret for brugerne.
Jeg vil straks nævne, at der kræves forbindelse til en ekstern autentificeringsserver multifactor.ru, hvor man kan bruge en gratis tarif til sine behov.
Arbejdets princip
- OpenVPN anvender plug-in openvpn-plugin-auth-pam til autentificering.
- Plug-in'en kontrollerer brugerens adgangskode på serveren og anmoder om den anden faktor via RADIUS-protokollen i Multifaktor-tjenesten.
- Multifaktor sender en besked til brugeren via Telegram-boten med bekræftelse på adgang.
- Brugeren bekræfter adgangsforespørgslen i Telegram-chatten og tilslutter sig VPN.
Installation af OpenVPN-server.
Der er mange artikler på internettet, der beskriver installationen og opsætningen af OpenVPN, så vi vil ikke duplikere dem. Hvis du har brug for hjælp, er der nogle links til træningsmaterialer i slutningen af artiklen.
Opsætning af Multifaktor.
Gå til , gå til sektionen "Ressourcer" og opret en ny VPN.
Efter oprettelsen vil to parametre være tilgængelige: NAS-IDentifier. og Shared Secret., de vil være nødvendige for den efterfølgende opsætning.

I sektionen "Grupper" skal du gå til indstillingerne for gruppen "All users" og fjerne markeringen i "Alle ressourcer", så kun brugere i en bestemt gruppe kan tilslutte sig VPN-serveren.
Opret en ny gruppe "VPN users", deaktiver alle autentificeringsmetoder undtagen Telegram, og angiv, at brugerne har adgang til den oprettede VPN-ressource.

Under "Brugere" skal du oprette brugere, der får adgang til VPN, tilføje dem til gruppen "VPN users" og sende dem et link til opsætning af den anden faktor for autentificering. Brugernavnet skal matche navnet på VPN-serveren.

Konfiguration af OpenVPN-server
Åbn filen /etc/openvpn/server.conf og tilføj en plugin til autentificering ved hjælp af PAM-modulet
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnPlugin'et kan befinde sig i mappen /usr/lib/openvpn/plugins/ eller /usr/lib64/openvpn/plugins/ afhængigt af dit system.
Dernæst skal PAM-radius_auth-modulet installeres
$ sudo yum install pam_radiusÅbn filen til redigering /etc/pam_radius.conf og angiv adressen til RADIUS-serveren Multifaktor
radius.multifactor.ru shared_secret 40hvor:
- radius.multifactor.ru er adressen til serveren
- shared_secret — kopier fra den relevante parameter i VPN-indstillingerne
- 40 sekunder — timeout for anmodningen med god margin
De øvrige servere skal slettes eller kommenteres (tilføj et semikolon i starten)
Dernæst opret en fil til service-type openvpn
$ sudo vi /etc/pam.d/openvpnog skriv i den
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authden første linje tilslutter PAM-modulet pam_radius_auth med parametrene:
- skip_passwd — deaktiverer overførslen af brugerens adgangskode til RADIUS-serveren Multifaktor (den skal ikke kende den).
- client_id — indsæt den relevante parameter fra VPN-ressourcerne i stedet for [NAS-Identifier].
Alle mulige parametre er beskrevet i .
De anden og tredje linjer inkluderer systemkontrol af login, adgangskode og brugerrettigheder på din server sammen med den anden faktor for autentificering.
Genstart OpenVPN
$ sudo systemctl restart openvpn@serverKlientkonfiguration
Aktiver login- og adgangskodeanmodningen i klientens konfigurationsfil
auth-user-passKontrol
Start klienten for OpenVPN, forbind til serveren, angiv dit brugernavn og adgangskode. Telegram-boten vil sende en anmodning om adgang med to knapper

Én knap giver adgang, den anden blokerer.
Nu kan du trygt gemme adgangskoden på klienten; den anden faktor beskytter din OpenVPN-server pålideligt mod uautoriseret adgang.
Hvis noget ikke fungerer
Tjek systematisk, at du ikke har overset noget:
- På serveren med OpenVPN er der en bruger med en opsat adgangskode
- Serveren er åbnet for adgang via UDP-port 1812 til adressen radius.multifactor.ru
- Parametrene NAS-Identifier og Shared Secret er korrekt angivet
- I Multifactor-systemet er der oprettet en bruger med det samme login, og han/hun er blevet givet adgang til VPN-brugergruppen
- Brugeren har konfigureret en autentificeringsmetode via Telegram
Hvis du ikke har konfigureret OpenVPN tidligere, så læs .
Vejledningen er lavet med eksempler på CentOS 7.
Kilde: habr.com
