Dwuskładnikowe uwierzytelnienie w OpenVPN z botem Telegram

Artykuł opisuje konfigurację serwera OpenVPN w celu włączenia uwierzytelniania dwuetapowego za pomocą bota Telegram, który będzie wysyłał prośbę o potwierdzenie przy połączeniu.

OpenVPN to szeroko znany, bezpłatny serwer VPN z otwartym kodem źródłowym, który jest powszechnie stosowany w celu zapewnienia bezpiecznego dostępu pracowników do zasobów wewnętrznych organizacji.

Jako metodę uwierzytelniania dołączenia do serwera VPN zazwyczaj używa się kombinacji klucza oraz loginu/hasła użytkownika. Zapisane na kliencie hasło sprawia, że całość staje się jednym czynnikiem, co nie zapewnia odpowiedniego poziomu bezpieczeństwa. Osoba nieuprawniona, która uzyska dostęp do komputera klienta, zyskuje również dostęp do serwera VPN. Szczególnie dotyczy to połączeń z komputerów działających pod systemem Windows.

Użycie drugiego czynnika zmniejsza ryzyko nieuprawnionego dostępu o 99% i wcale nie utrudnia procesu łączenia się dla użytkowników.

Od razu zaznaczam, że do realizacji ewentualne będzie wymagane połączenie z zewnętrznym serwerem uwierzytelniającym multifactor.ru, w którym do swoich potrzeb można wykorzystać bezpłatny plan.

Zasada działania

  1. OpenVPN używa wtyczki openvpn-plugin-auth-pam do sprawdzania uwierzytelnienia.
  2. Wtyczka sprawdza hasło użytkownika na serwerze i żąda drugiego czynnika za pośrednictwem protokołu RADIUS w usłudze Multifactora.
  3. Multifactor przesyła do użytkownika wiadomość przez bota Telegram z potwierdzeniem dostępu.
  4. Użytkownik potwierdza prośbę o dostęp w czacie Telegram i łączy się z VPN.

Instalacja serwera OpenVPN.

W internecie dostępnych jest wiele artykułów opisujących proces instalacji i konfiguracji OpenVPN, dlatego nie będziemy ich powtarzać. Jeśli potrzebujesz pomocy, na końcu artykułu znajdziesz kilka linków do materiałów szkoleniowych.

Konfiguracja Multifactora.

Przejdź do system zarządzania Multifactorem., wejdź w sekcję "Zasoby" i utwórz nowy VPN.
Po utworzeniu będą dostępne dwa parametry: NAS-IDentifier. i Shared Secret., będą one potrzebne do późniejszej konfiguracji.

Dwuskładnikowe uwierzytelnienie w OpenVPN z botem Telegram

W sekcji "Grupy" wejdź w parametry grupy "Wszyscy użytkownicy" i usuń znacznik "Wszystkie zasoby", aby tylko użytkownicy określonej grupy mogli łączyć się z serwerem VPN.

Utwórz nową grupę "VPN users", wyłącz wszystkie metody uwierzytelniania z wyjątkiem Telegram i określ, że użytkownicy mają dostęp do utworzonego zasobu VPN.

Dwuskładnikowe uwierzytelnienie w OpenVPN z botem Telegram

W sekcji "Użytkownicy" utwórz użytkowników, którzy będą mieli dostęp do VPN, dodaj ich do grupy "VPN users" i wyślij im link do skonfigurowania drugiego czynnika uwierzytelniania. Login użytkownika powinien odpowiadać loginowi na serwerze VPN.

Dwuskładnikowe uwierzytelnienie w OpenVPN z botem Telegram

Konfiguracja serwera OpenVPN

Otwórz plik /etc/openvpn/server.conf i dodaj wtyczkę do uwierzytelniania za pomocą modułu PAM

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

Wtyczka może znajdować się w katalogu /usr/lib/openvpn/plugins/ lub /usr/lib64/openvpn/plugins/ w zależności od twojego systemu.

Następnie musisz zainstalować moduł pam_radius_auth

$ sudo yum install pam_radius

Otwórz do edycji plik /etc/pam_radius.conf i wskaż adres serwera RADIUS Multifactora

radius.multifactor.ru   shared_secret   40

gdzie:

  • radius.multifactor.ru — adres serwera
  • shared_secret — skopiuj z odpowiedniego parametru ustawień VPN
  • 40 sekund — czas oczekiwania na żądanie z dużym zapasem

Pozostałe serwery należy usunąć lub skomentować (wstawić na początku kropkę z przecinka)

Następnie stwórz plik dla typu usługi openvpn

$ sudo vi /etc/pam.d/openvpn

i wpisz do niego

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

pierwsza linia łączy moduł PAM pam_radius_auth z parametrami:

  • skip_passwd — wyłącza przesyłanie do serwera RADIUS Multifactora hasła użytkownika (nie musi go znać).
  • client_id — wstaw zamiast [NAS-Identifier] odpowiedni parametr z ustawień zasobów VPN.
    Wszystkie możliwe parametry są opisane w dokumentacji modułu.

Druga i trzecia linia obejmują systemową kontrolę loginu, hasła i uprawnień użytkownika na twoim serwerze razem z drugim czynnikiem uwierzytelniania.

Uruchom ponownie OpenVPN

$ sudo systemctl restart openvpn@server

Konfiguracja klienta

Włącz w pliku konfiguracyjnym klienta żądanie loginu i hasła użytkownika

auth-user-pass

Weryfikacja

Uruchom klienta OpenVPN, połącz się z serwerem, podaj login i hasło. Od bota Telegram przyjdzie żądanie dostępu z dwoma przyciskami

Dwuskładnikowe uwierzytelnienie w OpenVPN z botem Telegram

Jeden przycisk zezwala na dostęp, drugi blokuje.

Teraz śmiało możesz zapisać hasło na kliencie, drugi czynnik niezawodnie ochroni twój serwer OpenVPN przed nieautoryzowanym dostępem.

Jeśli coś nie działa

Kolejno sprawdź, czy niczego nie pominąłeś:

  • Na serwerze z OpenVPN znajduje się użytkownik z ustawionym hasłem
  • Z serwera uzyskano dostęp przez port UDP 1812 pod adresem radius.multifactor.ru
  • Parametry NAS-Identifier i Shared Secret są poprawnie określone
  • W systemie Multifactor zarejestrowano użytkownika o tym samym loginie i przyznano mu dostęp do grupy użytkowników VPN
  • Użytkownik skonfigurował metodę uwierzytelniania przez Telegram

Jeśli wcześniej nie konfigurowałeś OpenVPN, przeczytaj szczegółowy artykuł.

Instrukcja została przygotowana z przykładami na CentOS 7.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster