Tweefactorauthenticatie in OpenVPN met Telegram-bot

Het artikel beschrijft het opzetten van een OpenVPN-server om tweefactorauthenticatie mogelijk te maken met een Telegram-bot die een bevestigingsverzoek verzendt bij het verbinden.

OpenVPN is een bekende, gratis, open-source VPN-server die veel wordt gebruikt om veilige toegang van medewerkers tot interne organisatiebronnen te organiseren.

Als authenticatie voor verbinding met een VPN-server wordt meestal een combinatie van een sleutel en gebruikerslogin/wachtwoord gebruikt. Tegelijkertijd verandert het wachtwoord dat op de client is opgeslagen de hele set in een enkele factor die niet het juiste beveiligingsniveau biedt. Een aanvaller krijgt, nadat hij toegang heeft gekregen tot de clientcomputer, ook toegang tot de VPN-server. Dit geldt vooral voor verbindingen vanaf machines waarop Windows draait.

Het gebruik van de tweede factor vermindert het risico op ongeautoriseerde toegang met 99% en bemoeilijkt het verbindingsproces voor gebruikers helemaal niet.

Laat me meteen een reservering maken: voor implementatie moet u een externe authenticatieserver multifactor.ru aansluiten, waarin u een gratis tarief kunt gebruiken voor uw behoeften.

Werking

  1. OpenVPN gebruikt de plug-in openvpn-plugin-auth-pam voor authenticatie
  2. De plug-in controleert het wachtwoord van de gebruiker op de server en vraagt ​​de tweede factor op via het RADIUS-protocol in de Multifactor-service
  3. Multifactor stuurt via de Telegram-bot een bericht naar de gebruiker waarin de toegang wordt bevestigd
  4. De gebruiker bevestigt het toegangsverzoek in de Telegram-chat en maakt verbinding met de VPN

Een OpenVPN-server installeren

Er zijn veel artikelen op internet die het proces van het installeren en configureren van OpenVPN beschrijven, dus we zullen ze niet dupliceren. Als u hulp nodig heeft, vindt u aan het einde van het artikel verschillende links naar tutorials.

Het instellen van de Multifactor

Ga naar Multifactorieel controlesysteem, ga naar het gedeelte 'Bronnen' en maak een nieuwe VPN.
Eenmaal aangemaakt, heeft u twee opties tot uw beschikking: NAS-IDentifier и Gedeeld geheim, zijn ze vereist voor de daaropvolgende configuratie.

Tweefactorauthenticatie in OpenVPN met Telegram-bot

Ga in het gedeelte 'Groepen' naar de groepsinstellingen 'Alle gebruikers' en verwijder de vlag 'Alle bronnen', zodat alleen gebruikers van een bepaalde 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 aangemaakte VPN-bron.

Tweefactorauthenticatie in OpenVPN met Telegram-bot

Maak in het gedeelte 'Gebruikers' gebruikers aan die toegang hebben tot de VPN, voeg ze toe aan de groep 'VPN-gebruikers' en stuur ze een link om de tweede authenticatiefactor te configureren. De gebruikersaanmelding moet overeenkomen met de aanmelding op de VPN-server.

Tweefactorauthenticatie in OpenVPN met Telegram-bot

Een OpenVPN-server opzetten

Open het bestand /etc/openvpn/server.conf en voeg een plug-in toe voor authenticatie met behulp van de PAM-module

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

De plug-in bevindt zich in de directory /usr/lib/openvpn/plugins/ of /usr/lib64/openvpn/plugins/ afhankelijk van uw systeem.

Vervolgens moet u de pam_radius_auth module installeren

$ sudo yum install pam_radius

Open het bestand om te bewerken /etc/pam_radius.conf en specificeer het adres van de RADIUS-server van de Multifactor

radius.multifactor.ru   shared_secret   40

waar:

  • radius.multifactor.ru — serveradres
  • shared_secret - kopieer van de overeenkomstige VPN-instellingenparameter
  • 40 seconden - time-out voor het wachten op een verzoek met een grote marge

De resterende servers moeten worden verwijderd of van commentaar worden voorzien (plaats een puntkomma aan het begin)

Maak vervolgens een bestand voor het servicetype openvpn

$ sudo vi /etc/pam.d/openvpn

en schrijf het erin

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

De eerste regel verbindt de PAM-module pam_radius_auth met de parameters:

  • skip_passwd - schakelt de overdracht van het wachtwoord van de gebruiker naar de RADIUS Multifactor-server uit (hij hoeft dit niet te weten).
  • client_id — vervang [NAS-Identifier] door de overeenkomstige parameter uit de VPN-broninstellingen.
    Alle mogelijke parameters worden beschreven in documentatie voor de module.

De tweede en derde regel omvatten systeemverificatie van de login, het wachtwoord en de gebruikersrechten op uw server, samen met een tweede authenticatiefactor.

Start OpenVPN opnieuw

$ sudo systemctl restart openvpn@server

Cliënt instellen

Voeg een verzoek om gebruikersaanmelding en wachtwoord toe aan het clientconfiguratiebestand

auth-user-pass

Проверка

Start de OpenVPN-client, maak verbinding met de server en voer uw gebruikersnaam en wachtwoord in. De Telegram-bot verzendt een toegangsverzoek met twee knoppen

Tweefactorauthenticatie in OpenVPN met Telegram-bot

Eén knop geeft toegang, de tweede blokkeert deze.

Nu kunt u uw wachtwoord veilig op de client opslaan; de tweede factor beschermt uw OpenVPN-server betrouwbaar tegen ongeoorloofde toegang.

Als iets niet werkt

Controleer achtereenvolgens of u niets gemist heeft:

  • Er is een gebruiker op de server met OpenVPN met een ingesteld wachtwoord
  • De server heeft via UDP-poort 1812 toegang tot het adres radius.multifactor.ru
  • De parameters NAS-Identifier en Shared Secret zijn correct gespecificeerd
  • Er is een gebruiker met dezelfde login aangemaakt in het Multifactor-systeem en deze heeft toegang gekregen tot de VPN-gebruikersgroep
  • De gebruiker heeft de authenticatiemethode via Telegram geconfigureerd

Als u OpenVPN nog niet eerder hebt ingesteld, lees dan dit gedetailleerd artikel.

De instructies zijn gemaakt met voorbeelden op CentOS 7.

Bron: www.habr.com

Voeg een reactie