Tvåfaktorsautentisering i OpenVPN med Telegram-bot

Artikeln beskriver hur du ställer in en OpenVPN-server för att möjliggöra tvåfaktorsautentisering med en Telegram-bot som skickar en bekräftelseförfrågan vid anslutning.

OpenVPN är en välkänd, gratis VPN-server med öppen källkod som används i stor utsträckning för att organisera säker anställdas åtkomst till interna organisationsresurser.

Som autentisering för att ansluta till en VPN-server används vanligtvis en kombination av nyckel och användarinloggning/lösenord. Samtidigt gör lösenordet som lagras på klienten hela uppsättningen till en enda faktor som inte ger rätt säkerhetsnivå. En angripare, som har fått tillgång till klientdatorn, får också tillgång till VPN-servern. Detta gäller särskilt för anslutningar från maskiner som kör Windows.

Att använda den andra faktorn minskar risken för obehörig åtkomst med 99 % och komplicerar inte anslutningsprocessen för användarna alls.

Låt mig göra en reservation direkt: för implementering måste du ansluta en tredje parts autentiseringsserver multifactor.ru, där du kan använda en gratis tariff för dina behov.

Funktionsprincip

  1. OpenVPN använder plugin-programmet openvpn-plugin-auth-pam för autentisering
  2. Insticksprogrammet kontrollerar användarens lösenord på servern och begär den andra faktorn via RADIUS-protokollet i Multifactor-tjänsten
  3. Multifactor skickar ett meddelande till användaren via Telegram-bot som bekräftar åtkomst
  4. Användaren bekräftar åtkomstbegäran i Telegram-chatt och ansluter till VPN

Installera en OpenVPN-server

Det finns många artiklar på Internet som beskriver processen att installera och konfigurera OpenVPN, så vi kommer inte att duplicera dem. Om du behöver hjälp finns det flera länkar till handledningar i slutet av artikeln.

Ställa in multifaktorn

Gå till Multifaktorstyrsystem, gå till avsnittet "Resurser" och skapa ett nytt VPN.
När du har skapat det kommer du att ha två alternativ tillgängliga för dig: NAS-IDentifierare и Delad hemlighet, kommer de att krävas för efterföljande konfiguration.

Tvåfaktorsautentisering i OpenVPN med Telegram-bot

I avsnittet "Grupper", gå till gruppinställningarna "Alla användare" och ta bort flaggan "Alla resurser" så att endast användare av en viss grupp kan ansluta till VPN-servern.

Skapa en ny grupp "VPN-användare", inaktivera alla autentiseringsmetoder utom Telegram och indikera att användare har tillgång till den skapade VPN-resursen.

Tvåfaktorsautentisering i OpenVPN med Telegram-bot

I avsnittet "Användare", skapa användare som kommer att ha tillgång till VPN, lägg till dem i gruppen "VPN-användare" och skicka dem en länk för att konfigurera den andra autentiseringsfaktorn. Användarinloggningen måste matcha inloggningen på VPN-servern.

Tvåfaktorsautentisering i OpenVPN med Telegram-bot

Konfigurera en OpenVPN-server

Öppna filen /etc/openvpn/server.conf och lägg till en plugin för autentisering med PAM-modulen

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

Insticksprogrammet kan finnas i katalogen /usr/lib/openvpn/plugins/ eller /usr/lib64/openvpn/plugins/ beroende på ditt system.

Därefter måste du installera pam_radius_auth-modulen

$ sudo yum install pam_radius

Öppna filen för redigering /etc/pam_radius.conf och ange adressen till multifaktorns RADIUS-server

radius.multifactor.ru   shared_secret   40

där:

  • radius.multifactor.ru — serveradress
  • shared_secret - kopiera från motsvarande VPN-inställningsparameter
  • 40 sekunder - timeout för att vänta på en förfrågan med stor marginal

De återstående servrarna måste tas bort eller kommenteras ut (sätta ett semikolon i början)

Skapa sedan en fil för tjänstetyp openvpn

$ sudo vi /etc/pam.d/openvpn

och skriv in det

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

Den första raden ansluter PAM-modulen pam_radius_auth med parametrarna:

  • skip_passwd - inaktiverar överföring av användarens lösenord till RADIUS Multifactor-servern (han behöver inte veta det).
  • client_id — ersätt [NAS-Identifier] med motsvarande parameter från VPN-resursinställningarna.
    Alla möjliga parametrar beskrivs i dokumentation för modulen.

Den andra och tredje raden inkluderar systemverifiering av inloggning, lösenord och användarrättigheter på din server tillsammans med en andra autentiseringsfaktor.

Starta om OpenVPN

$ sudo systemctl restart openvpn@server

Klientinställningar

Inkludera en begäran om användarinloggning och lösenord i klientens konfigurationsfil

auth-user-pass

Проверка

Starta OpenVPN-klienten, anslut till servern, ange ditt användarnamn och lösenord. Telegram-boten kommer att skicka en åtkomstförfrågan med två knappar

Tvåfaktorsautentisering i OpenVPN med Telegram-bot

En knapp tillåter åtkomst, den andra blockerar den.

Nu kan du säkert spara ditt lösenord på klienten; den andra faktorn kommer att på ett tillförlitligt sätt skydda din OpenVPN-server från obehörig åtkomst.

Om något inte fungerar

Kontrollera sekventiellt att du inte har missat något:

  • Det finns en användare på servern med OpenVPN med ett lösenord
  • Servern har tillgång via UDP-port 1812 till adressen radius.multifactor.ru
  • Parametrarna NAS-Identifier och Shared Secret är korrekt specificerade
  • En användare med samma inloggning har skapats i Multifactor-systemet och har fått tillgång till VPN-användargruppen
  • Användaren har konfigurerat autentiseringsmetoden via Telegram

Om du inte har ställt in OpenVPN tidigare, läs detaljerad artikel.

Instruktionerna är gjorda med exempel på CentOS 7.

Källa: will.com

Lägg en kommentar