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:
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
Setelah itu Anda meminta openvpn untuk mengotentikasi terhadap libpam, yang memiliki modul auth google sendiri. Tambahkan ini ke file server openvpn Anda:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Ini mengatakan kita akan menggunakan metode otentikasi pam dengan pam auth id openvpn .
Sekarang, buat pengaturan pam untuk openvpn. Edit /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
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
auth-user-pass
auth-nocache
reneg-sec 0
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.