Saya memiliki pengaturan openVPN di mana pengguna tidak memiliki akun shell pada Debian VM yang menjalankan openVPN. Artikel-artikel yang saya temukan ketika Googling semuanya memiliki instruksi pengaturan Google Authenticator untuk pengguna * nix klasik (perlu menjalankan biner Authenticator di direktori home pengguna, misalnya).
Apakah ada dokumen yang menjelaskan cara mengintegrasikan Google Authenticator untuk server openvpn yang mengautentikasi hanya berdasarkan .ovpn
file yang digunakan pada sisi klien?
Saya melihat https://github.com/evgeny-gridasov/openvpn-otp , tetapi masih membutuhkan konfigurasi Google Authenticator.
openvpn
google-authenticator
Animesh
sumber
sumber
Jawaban:
Tidak. Tentu saja kamu tidak bisa melakukan itu. Ini akan mengalahkan tujuan 2FA. Server Anda harus memiliki cara untuk memverifikasi kredensial pengguna, dan info ini tidak boleh dikirim melalui jaringan (mis. Anda tidak dapat menggunakan hanya file client.ovpn).
Meskipun Anda tidak harus membuat pengguna unix, tetapi Anda harus membiarkan pengguna Anda menginstal kode verifikasi mereka ke server. Anda dapat menggunakan sftp dengan pengguna virtual menggunakan sertifikat mereka yang sudah dikeluarkan, https dengan otorisasi sisi klien (saling), CIFS (samba), atau ftp lama yang baik dengan ekstensi TLS atau cara lain apa pun yang memungkinkan server mengetahui kode verifikasi yang dibuat oleh pengguna . Saluran komunikasi harus aman (dienkripsi | | lokal).
Tentu saja jika pengguna Anda mengunggah file mereka sendiri, Anda tidak dapat menggunakan kredensial berbasis file agregat yang digunakan oleh openvpn-otp. Untungnya kami memiliki pilihan lain (dan jauh lebih baik) dengan menggunakan pam modul keamanan linux yang sangat baik.
Pertama-tama, Anda harus mengumpulkan file pengguna yang dibuat oleh google-authenticator dalam direktori dengan salah satu metode yang disebutkan di atas. Dalam kasus kami adalah / etc / google-auth.
Anda harus memberlakukan id pengguna tunggal untuk semua file di sini, karena Anda tidak memiliki pengguna asli. Biarkan itu openvpn . Izin harus 0400 (-r --------). Pam tidak suka kredensial dunia / grup yang dapat dibaca (tentu saja). Anda dapat dengan mudah menerapkan ini dengan samba, apache, ftp atau yang terburuk menggunakan tab cron (tidak disarankan).
Untuk tujuan pengujian, lakukan saja ini:
Setelah itu Anda meminta openvpn untuk mengotentikasi terhadap libpam, yang memiliki modul auth google sendiri. Tambahkan ini ke file server openvpn Anda:
Ini mengatakan kita akan menggunakan metode otentikasi pam dengan pam auth id openvpn .
Sekarang, buat pengaturan pam untuk openvpn. Edit /etc/pam.d/openvpn:
Di sini kami mengatakan bahwa tanpa autentikasi google yang berhasil, kami gagal segera (diperlukan), kami menggunakan file rahasia khusus alih-alih $ HOME / .google_authenticator (secret =) default dan kami mengakses file sebagai pengguna openvpn karena tidak ada userid yang terkait dengan pengguna kami. Pada baris berikutnya kami hanya mengatakan kami mengizinkan semua orang untuk terhubung setelah otentikasi berhasil. Tentu saja Anda harus menerapkan kebijakan izin Anda sendiri di sini. Anda dapat mengontrol pengguna yang diizinkan berdasarkan file, mysql db atau ldap dengan modul pam masing-masing.
Tambahkan ini ke file klien openvpn Anda
Kami menggunakan auth-user-pass untuk membiarkan klien openvpn untuk meminta nama pengguna dan kata sandi. Kami tidak suka caching ("kata sandi" berubah) dan pengunduran diri secara berkala buruk bagi kami karena alasan yang sama.
Setelah itu, Anda harus dapat terhubung tanpa openvpn-otp. Silakan pertimbangkan ini adalah metode yang jauh lebih fleksibel, karena Anda dapat menerapkan aturan yang sangat kompleks dalam file kontrol pam jika Anda mau. Anda dapat mengaktifkan / menonaktifkan pengguna berdasarkan direktori mysql atau ldap Anda tanpa menyentuh sertifikat itu misalnya.
sumber
Pengaturan: OpenVPN Server dengan 2FA (Google Authenticator) di Ubuntu Server 18.04.4 LTS untuk Raspberry Pi Hardware: Raspberry Pi 3 Model B + Rev 1.3
sumber