Nie. Oczywiście, że nie możesz tego zrobić. To pokonałoby cel 2FA. Twój serwer musi mieć sposób na weryfikację danych uwierzytelniających użytkownika, a te informacje nie powinny być przesyłane przez sieć (tzn. Nie możesz używać wyłącznie pliku client.ovpn).
Chociaż niekoniecznie musisz tworzyć użytkowników unixowych, musisz jednak pozwolić użytkownikom zainstalować ich kody weryfikacyjne na serwerze. Możesz używać sftp z wirtualnymi użytkownikami korzystającymi z ich już wydanego certyfikatu, https z autoryzacją po stronie klienta (wzajemną), CIFS (samba) lub dobrą starą ftp z rozszerzeniem TLS lub w inny sposób, który pozwala serwerowi poznać kody weryfikacyjne utworzone przez użytkowników . Kanał komunikacji powinien być bezpieczny (szyfrowany || lokalnie).
Oczywiście, jeśli użytkownicy przesyłają własne pliki, nie można użyć poświadczeń opartych na zbiorczym pliku używanych przez openvpn-otp. Na szczęście mamy inną (i znacznie lepszą) opcję, wykorzystując doskonały moduł bezpieczeństwa pam.
Przede wszystkim musisz zebrać pliki użytkownika utworzone przez google -hentator w jednym z wyżej wymienionych sposobów. W naszym przypadku będzie to / etc / google-auth.
Państwo musi egzekwować pojedynczy identyfikator użytkownika dla wszystkich plików tutaj, bo nie masz prawdziwych użytkowników. Niech to będzie OpenVPN . Uprawnienia muszą wynosić 0400 (-r --------). Pam nie lubi poświadczeń czytelnych dla świata / grupy (z pewnością). Możesz to łatwo wymusić za pomocą samby, apache, ftp lub, w najgorszym przypadku, za pomocą karty cron (niezalecane).
Dla celów testowych po prostu zrób to:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Następnie poprosisz openvpn o uwierzytelnienie wobec libpam, który ma własny moduł uwierzytelniania google. Dołącz to do pliku serwera openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Oznacza to, że użyjemy metody uwierzytelniania pam z identyfikatorem pam auth id openvpn .
Teraz utwórz konfigurację pam dla openvpn. Edytuj /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Mówimy tutaj, że bez udanego uwierzytelnienia google natychmiast zawiedziemy (wymagane), używamy specjalnego tajnego pliku zamiast domyślnego $ HOME / .google_authenticator (tajny =) i uzyskujemy dostęp do plików jako użytkownik openvpn, ponieważ nie jest powiązany żaden rzeczywisty identyfikator użytkownika z naszymi użytkownikami. W następnym wierszu stwierdzamy, że zezwalamy wszystkim na łączenie się po udanym uwierzytelnieniu. Oczywiście powinieneś wdrożyć tutaj swoją własną politykę uprawnień. Możesz kontrolować dozwolonych użytkowników za pomocą pliku, mysql db lub ldap za pomocą odpowiednich modułów pam.
Dołącz to do pliku klienta openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Używamy auth-user-pass, aby pozwolić klientowi openvpn zapytać o nazwę użytkownika i hasło. Nie lubimy buforowania (zmienia się „hasło”), a okresowe ponowne negowanie jest dla nas złe z tego samego powodu.
Następnie powinieneś być w stanie połączyć się bez openvpn-otp. Proszę wziąć pod uwagę, że jest to metoda bardziej elastyczna, ponieważ można zaimplementować bardzo złożone reguły w plikach kontrolnych pam, jeśli chcesz. Możesz włączyć / wyłączyć użytkowników na podstawie katalogu mysql lub ldap bez dotykania na przykład tych certyfikatów.