Uwierzytelnianie dwuskładnikowe w OpenVPN z botem Telegram

W artykule opisano konfigurację serwera OpenVPN w celu umożliwienia uwierzytelniania dwuskładnikowego za pomocą bota Telegramu, który wyśle ​​​​prośbę o potwierdzenie podczas połączenia.

OpenVPN to dobrze znany, bezpłatny serwer VPN typu open source, który jest szeroko stosowany do organizowania bezpiecznego dostępu pracowników do wewnętrznych zasobów organizacji.

Do uwierzytelnienia połączenia z serwerem VPN zwykle używana jest kombinacja klucza i loginu/hasła użytkownika. Jednocześnie hasło przechowywane na kliencie zamienia cały zestaw w jeden czynnik, który nie zapewnia odpowiedniego poziomu bezpieczeństwa. Osoba atakująca uzyskawszy dostęp do komputera klienckiego, uzyskuje także dostęp do serwera VPN. Dotyczy to szczególnie połączeń z komputerów z systemem Windows.

Zastosowanie drugiego współczynnika zmniejsza ryzyko nieuprawnionego dostępu o 99% i wcale nie komplikuje użytkownikom procesu łączenia.

Pozwól, że dokonam rezerwacji od razu: w celu wdrożenia będziesz musiał podłączyć serwer uwierzytelniający innej firmy multifactor.ru, w którym możesz skorzystać z bezpłatnej taryfy dla swoich potrzeb.

Zasada działania

  1. OpenVPN używa wtyczki openvpn-plugin-auth-pam do uwierzytelniania
  2. Wtyczka sprawdza hasło użytkownika na serwerze i żąda drugiego czynnika poprzez protokół RADIUS w usłudze Multifactor
  3. Multifactor wysyła do użytkownika wiadomość za pośrednictwem bota Telegramu potwierdzającą dostęp
  4. Użytkownik potwierdza żądanie dostępu na czacie Telegramu i łączy się z VPN

Instalacja serwera OpenVPN

W Internecie można znaleźć wiele artykułów opisujących proces instalacji i konfiguracji OpenVPN, dlatego nie będziemy ich powielać. Jeśli potrzebujesz pomocy, na końcu artykułu znajduje się kilka linków do samouczków.

Konfigurowanie wieloczynnikowego

Idź do Wieloczynnikowy system sterowania, przejdź do sekcji „Zasoby” i utwórz nową sieć VPN.
Po utworzeniu będziesz mieć do dyspozycji dwie opcje: Identyfikator NAS и Wspólny sekret, będą one wymagane do późniejszej konfiguracji.

Uwierzytelnianie dwuskładnikowe w OpenVPN z botem Telegram

W sekcji „Grupy” przejdź do ustawień grupy „Wszyscy użytkownicy” i usuń flagę „Wszystkie zasoby”, aby z serwerem VPN mogli łączyć się tylko użytkownicy określonej grupy.

Utwórz nową grupę „Użytkownicy VPN”, wyłącz wszystkie metody uwierzytelniania z wyjątkiem Telegramu i wskaż, że użytkownicy mają dostęp do utworzonego zasobu VPN.

Uwierzytelnianie dwuskładnikowe 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 „Użytkownicy VPN” i wyślij im link umożliwiający skonfigurowanie drugiego stopnia uwierzytelnienia. Login użytkownika musi być zgodny z loginem na serwerze VPN.

Uwierzytelnianie dwuskładnikowe w OpenVPN z botem Telegram

Konfigurowanie 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 systemu.

Następnie musisz zainstalować moduł pam_radius_auth

$ sudo yum install pam_radius

Otwórz plik do edycji /etc/pam_radius.conf i podaj adres serwera RADIUS Multifactor

radius.multifactor.ru   shared_secret   40

gdzie:

  • Radius.multifactor.ru — adres serwera
  • Shared_secret - skopiuj z odpowiedniego parametru ustawień VPN
  • 40 sekund - limit czasu oczekiwania na żądanie z dużym marginesem

Pozostałe serwery należy usunąć lub skomentować (postaw średnik na początku)

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

$ sudo vi /etc/pam.d/openvpn

i wpisz to

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 transmisję hasła użytkownika do serwera RADIUS Multifactor (nie musi on go znać).
  • client_id — zamień [NAS-Identifier] na odpowiedni parametr z ustawień zasobów VPN.
    Wszystkie możliwe parametry opisano w dokumentacja modułu.

Druga i trzecia linia obejmuje systemową weryfikację loginu, hasła i uprawnień użytkownika na Twoim serwerze wraz z drugim czynnikiem uwierzytelniającym.

Uruchom ponownie OpenVPN

$ sudo systemctl restart openvpn@server

Konfiguracja klienta

Dołącz żądanie podania loginu i hasła użytkownika do pliku konfiguracyjnego klienta

auth-user-pass

Проверка

Uruchom klienta OpenVPN, połącz się z serwerem, wprowadź swoją nazwę użytkownika i hasło. Bot Telegramu wyśle ​​​​prośbę o dostęp za pomocą dwóch przycisków

Uwierzytelnianie dwuskładnikowe w OpenVPN z botem Telegram

Jeden przycisk umożliwia dostęp, drugi go blokuje.

Teraz możesz bezpiecznie zapisać swoje hasło na kliencie, a drugi czynnik niezawodnie ochroni Twój serwer OpenVPN przed nieautoryzowanym dostępem.

Jeśli coś nie działa

Sprawdź po kolei, czy niczego nie przeoczyłeś:

  • Na serwerze znajduje się użytkownik z OpenVPN z ustawionym hasłem
  • Serwer ma dostęp poprzez port UDP 1812 do adresu Radia.multifactor.ru
  • Parametry NAS-Identifier i Shared Secret są określone poprawnie
  • W systemie Multifactor został utworzony użytkownik o tym samym loginie i uzyskał dostęp do grupy użytkowników VPN
  • Użytkownik skonfigurował metodę uwierzytelniania za pośrednictwem Telegramu

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

Instrukcje są oparte na przykładach na CentOS 7.

Źródło: www.habr.com

Dodaj komentarz