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
- OpenVPN používá plugin openvpn-plugin-auth-pam k ověření autentizace.
- Plugin ověřuje heslo uživatele na serveru a vyžaduje druhý faktor přes protokol RADIUS v systému Multifactor.
- Multifactor zasílá uživateli potvrzovací zprávu prostřednictvím Telegram bota.
- 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 , 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í.

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.

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.

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 openvpnPlugin 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_radiusOtevřete pro editaci soubor /etc/pam_radius.conf a uveďte adresu RADIUS serveru Multifaktoru
radius.multifactor.ru shared_secret 40kde:
- 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/openvpna zapište do něj
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authprvní řá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 .
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@serverNastavení klienta
Ve konfiguračním souboru klienta povolte požadavek na uživatelské jméno a heslo
auth-user-passKontrola
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

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 .
Návod je vytvořen s příklady na CentOS 7.
Zdroj: habr.com
