In dit artikel wordt de configuratie van de OpenVPN-server beschreven voor het inschakelen van twee-factor-authenticatie met een Telegram-bot, die een bevestigingsverzoek zal sturen bij verbinding.
OpenVPN is een veelgebruikte, gratis VPN-server met een open source-code die op grote schaal wordt gebruikt voor het creƫren van beveiligde toegang voor medewerkers tot de interne bronnen van de organisatie.
Als authenticatie voor verbinding met de VPN-server wordt meestal een combinatie van een sleutel en gebruikersnaam/wachtwoord gebruikt. Het opgeslagen wachtwoord op de client maakt de gehele set tot ƩƩn factor, wat niet het gewenste niveau van beveiliging garandeert. Een kwaadwillende die toegang krijgt tot de clientcomputer, krijgt ook toegang tot de VPN-server. Dit geldt vooral voor verbindingen vanaf machines die Windows gebruiken.
Het gebruik van een tweede factor vermindert het risico op ongeoorloofde toegang met 99% en maakt het verbindingsproces voor gebruikers helemaal niet ingewikkelder.
Ik wil meteen opmerken dat voor de implementatie een externe authenticatieserver van multifactor.ru vereist is, waar je een gratis tarief voor je behoeften kunt gebruiken.
Werking principe
- OpenVPN gebruikt de plugin openvpn-plugin-auth-pam voor authenticatie
- De plugin controleert het wachtwoord van de gebruiker op de server en vraagt het tweede factor via het RADIUS-protocol van de Multifactorservice
- Multifactor verzendt via een Telegram-bot een bericht naar de gebruiker ter bevestiging van de toegang
- De gebruiker bevestigt het toegang verzoek in de Telegram-chat en maakt verbinding met de VPN
Installatie van de OpenVPN-server
Er zijn veel artikelen op internet die het proces van installatie en configuratie van OpenVPN beschrijven, dus we zullen ze niet dupliceren. Als je hulp nodig hebt, zijn er aan het einde van het artikel een aantal links naar leermaterialen.
Configuratie van Multifactor
Ga naar , ga naar de sectie "Hulpmiddelen" en maak een nieuwe VPN aan.
Na het aanmaken zijn er twee parameters beschikbaar: NAS-IDentifier en Gedeeld geheim, deze zijn nodig voor de volgende configuratie.

In de sectie "Groepen", ga naar de groepsinstellingen van "Alle gebruikers" en verwijder het vinkje bij "Alle middelen", zodat alleen gebruikers van een specifieke groep verbinding kunnen maken met de VPN-server.
Maak een nieuwe groep "VPN gebruikers", schakel alle authenticatiemethoden uit behalve Telegram en geef aan dat gebruikers toegang hebben tot de gemaakte VPN-bron.

Maak in het tabblad "Gebruikers" gebruikers aan die toegang hebben tot de VPN, voeg ze toe aan de groep "VPN gebruikers" en stuur hen een link om de tweede factor authenticatie in te stellen. De gebruikersnaam moet overeenkomen met de inloggegevens op de VPN-server.

Configuratie van de OpenVPN-server
Open het bestand /etc/openvpn/server.conf en voeg de plugin voor authenticatie via de PAM-module toe
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnDe plugin kan zich bevinden in de directory /usr/lib/openvpn/plugins/ of /usr/lib64/openvpn/plugins/ afhankelijk van uw systeem.
Vervolgens moet de pam_radius_auth-module worden geĆÆnstalleerd
$ sudo yum install pam_radiusOpen het bestand voor bewerking /etc/pam_radius.conf en geef het adres van de RADIUS-multifactorauthenticatieserver op
radius.multifactor.ru shared_secret 40waarbij:
- radius.multifactor.ru ā het adres van de server
- shared_secret ā kopieer uit de relevante parameter in de VPN-instellingen
- 40 seconden ā timeout voor het wachten op een verzoek met een ruime marge
Verwijder of becommentarieer (plaats een puntkomma aan het begin) de overige servers
Maak vervolgens een bestand aan voor service-type openvpn
$ sudo vi /etc/pam.d/openvpnen voeg het volgende toe
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authde eerste regel schakelt de PAM-module pam_radius_auth in met de parameters:
- skip_passwd ā schakelt de overdracht van het wachtwoord van de gebruiker naar de RADIUS-multifactorauthenticiteitserver uit (deze hoeft het niet te weten).
- client_id ā vervang [NAS-Identifier] door de relevante parameter uit de VPN-broninstellingen.
Alle mogelijke parameters zijn beschreven in de .
De tweede en derde regels omvatten de systeemcontrole van de inloggegevens, het wachtwoord en de rechten van de gebruiker op uw server samen met de tweede factor authenticatie.
Herstart OpenVPN
$ sudo systemctl restart openvpn@serverConfiguratie van de cliƫnt
Schakel in het configuratiebestand van de cliƫnt de verzoek om gebruikersnaam en wachtwoord in
auth-user-passControle
Start de cliƫnt voor OpenVPN, maak verbinding met de server en geef inloggegevens op. Er komt een toegang verzoek van de Telegram-bot met twee knoppen.

Een knop staat toegang toe, de andere blokkeert toegang.
Nu kunt u het wachtwoord veilig opslaan in de cliƫnt; de tweede factor beschermt uw OpenVPN-server betrouwbaar tegen ongeoorloofde toegang.
Als er iets niet werkt
Controleer stap voor stap of u niets bent vergeten:
- Op de server met OpenVPN is er een gebruiker met een ingesteld wachtwoord.
- Toegang tot de server via UDP-poort 1812 op het adres radius.multifactor.ru
- De parameters NAS-Identifier en Shared Secret zijn correct opgegeven
- In het Multifactorsysteem is een gebruiker met dezelfde inlog gemaakt en heeft hij toegang gekregen tot de VPN-gebruikersgroep
- De gebruiker heeft de verificatiemethode via Telegram ingesteld
Als u OpenVPN eerder niet heeft geconfigureerd, lees dan .
De instructie is gemaakt met voorbeelden op CentOS 7.
Bron: habr.com
