Dvoufaktorová autentizace v OpenVPN s Telegram botem

V článku je popsána konfigurace serveru OpenVPN pro zapnutí dvoufaktorové autentizace s Telegram botem, který bude posílat potvrzovací žádost při připojení.

OpenVPN je široce známý, bezplatný VPN server s otevřeným zdrojovým kódem, který se používá pro zajištění bezpečného přístupu zaměstnanců k interním zdrojům organizace.

Jako metoda ověřování pro připojení k VPN serveru se obvykle používá kombinace klíče a uživatelského jména/hesla. Přitom uložené heslo na klientovi přetváří celý soubor na jeden faktor, který nezajišťuje adekvátní úroveň bezpečnosti. Pokud útočník získá přístup k klientskému počítači, získá také přístup k VPN serveru. To platí zejména pro připojení z počítačů s operačním systémem Windows.

Použití druhého faktoru snižuje riziko neoprávněného přístupu o 99 % a zcela nekomplikuje proces připojení pro uživatele.

Hned na úvod, k realizaci bude potřeba připojení k externímu autentizačnímu serveru multifactor.ru, kde můžete pro své potřeby využít bezplatný tarif.

Princip práce

  1. OpenVPN používá plugin openvpn-plugin-auth-pam k ověření autentizace.
  2. Plugin ověřuje heslo uživatele na serveru a vyžaduje druhý faktor přes protokol RADIUS v systému Multifactor.
  3. Multifactor zasílá uživateli potvrzovací zprávu prostřednictvím Telegram bota.
  4. Uživatel potvrzuje žádost o přístup v chatu Telegram a připojí se k VPN.

Instalace OpenVPN serveru

Na internetu je mnoho článků, které popisují proces instalace a konfigurace OpenVPN, a proto je nebudeme duplicovat. Pokud potřebujete pomoc, na konci článku je několik odkazů na výukové materiály.

Nastavení Multifaktoru

Přihlaste se do systém řízení Multifaktoru, přejděte do sekce "Zdroje" a vytvořte novou VPN.
Po vytvoření budou k dispozici dva parametry: NAS-IDentifier a Shared Secret, které budou potřeba pro následné nastavení.

Dvoufaktorová autentizace v OpenVPN s Telegram botem

V sekci "Skupiny" přejděte do parametrů skupiny "Všichni uživatelé" a zrušte zaškrtnutí "Všechny zdroje", aby se k VPN serveru mohli připojit pouze uživatelé určité skupiny.

Vytvořte novou skupinu "VPN uživatelé", deaktivujte všechny metody autentizace kromě Telegramu a uveďte, že uživatelé mají přístup k vytvořenému VPN zdroji.

Dvoufaktorová autentizace v OpenVPN s Telegram botem

V sekci "Uživatelé" vytvořte uživatele, kteří budou mít přístup k VPN, přidejte je do skupiny "VPN uživatelé" a zašlete jim odkaz na nastavení dvoufaktorové autentizace. Přihlašovací jméno uživatele musí odpovídat přihlašovacímu jménu na VPN serveru.

Dvoufaktorová autentizace v OpenVPN s Telegram botem

Nastavení OpenVPN serveru

Otevřete soubor /etc/openvpn/server.conf a přidejte plugin pro autentizaci pomocí modulu PAM

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

Plugin může být umístěn v adresáři /usr/lib/openvpn/plugins/ nebo /usr/lib64/openvpn/plugins/ v závislosti na vaší systému.

Dále je nutné nainstalovat modul pam_radius_auth

$ sudo yum install pam_radius

Otevřete pro editaci soubor /etc/pam_radius.conf a uveďte adresu RADIUS serveru Multifaktoru

radius.multifactor.ru   shared_secret   40

kde:

  • radius.multifactor.ru — adresa serveru
  • shared_secret — zkopírujte z odpovídajícího parametru nastavení VPN
  • 40 sekund — časový limit čekání na žádost s velkou rezervou

Ostatní servery je třeba odstranit nebo zakomentovat (na začátek umístit tečku se středníkem)

Dále vytvořte soubor pro typ služby openvpn

$ sudo vi /etc/pam.d/openvpn

a zapište do něj

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

první řádek připojuje PAM modul pam_radius_auth s parametry:

  • skip_passwd — zakazuje předávání hesla uživatele do RADIUS serveru Multifaktoru (nemusí ho znát).
  • client_id — vložte místo [NAS-Identifier] odpovídající parametr z nastavení VPN zdroje.
    Všechny možné parametry jsou popsány v dokumentaci k modulu.

Druhý a třetí řádek zahrnují systémovou kontrolu uživatelského jména, hesla a oprávnění na vašem serveru spolu s druhým faktorem autentizace.

Restartujte OpenVPN

$ sudo systemctl restart openvpn@server

Nastavení klienta

Ve konfiguračním souboru klienta povolte požadavek na uživatelské jméno a heslo

auth-user-pass

Kontrola

Spusťte klienta pro OpenVPN, připojte se k serveru, uveďte uživatelské jméno a heslo. Z Telegram bota přijde žádost o přístup se dvěma tlačítky

Dvoufaktorová autentizace v OpenVPN s Telegram botem

Jedno tlačítko povoluje přístup, druhé blokuje.

Nyní můžete s jistotou uložit heslo na klientovi, druhý faktor spolehlivě ochrání váš OpenVPN server před neoprávněným přístupem.

Pokud něco nefunguje

Postupně zkontrolujte, že jste nic nezapomněli:

  • Na serveru s OpenVPN existuje uživatel se stanoveným heslem
  • Na serveru je přístup otevřen na UDP portu 1812 na adrese radius.multifactor.ru
  • Parametry NAS-Identifier a Shared Secret jsou správně uvedeny
  • V systému Multifaktor je registrován uživatel se stejným přihlášením a byl mu udělen přístup do skupiny uživatelů VPN
  • Uživatel nastavil způsob ověřování přes Telegram

Pokud jste dříve nenastavovali OpenVPN, přečtěte si podrobný článek.

Návod je vytvořen s příklady na CentOS 7.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster