Cara menggunakan Google Authenticator dengan server OpenVPN di Ubuntu 12.04

9

Saya memiliki sistem OpenVPN yang berfungsi pada Ubuntu 12.04 dan saya ingin menambahkan Google Authenticator untuk keamanan ekstra.

Ini adalah konfigurasi openvpn saya saat ini:

dev tun
proto udp
port 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
kunci ubuserv04.key
dh dh1024.pem
server 10.10.0.0 255.255.255.0
tekan "redirect-gateway def1"
tekan "rute 192.168.0.0 255.255.255.0"
tekan "dhcp-option DNS 8.8.8.8"
tekan "dhcp-option DNS 8.8.4.4"
mengapung
log-append /var/log/openvpn-otp-1096-status.log

(Ini hanya pengaturan uji, saya tahu saya harus mengubah aspek tertentu tetapi ini berfungsi untuk saat ini.)

Pada klien saya punya:

dev tun
klien
proto udp
remote my.server.fqdn 1096
resolv-coba lagi tak terbatas
ca ubuserv04-ca.crt
cert user1.crt
kunci user1.key
kata kerja 3

Pengaturan di atas berfungsi dengan baik: tidak ada kesalahan, cepat, stabil.

Saya telah mencoba beberapa howtos untuk menjalankan Google Authenticator tetapi saya akhirnya menemukan pemecahan masalah sisi dalam artikel-artikel itu setiap waktu. Saya tidak ingin mengautentikasi terhadap basis data pengguna / kata sandi server lokal, hanya sistem yang sudah saya miliki plus Google Authenticator.

Saya menjalankan Google Authenticator; Saya menginstalnya menggunakan apt-get install libpam-google-authenticator dan telah menggunakannya sebelumnya untuk mengotentikasi sesi ssh. Itu bekerja dengan baik, tetapi saya sekarang telah menonaktifkan itu karena itu hanya server uji dan tes tertentu selesai.

Harap spesifik. Saya tahu saya harus menambahkan plugin ke konfigurasi ovpn server saya dan bahwa saya harus menambahkan sesuatu ke /etc/pam.d/openvpn tapi apa sebenarnya?

Bantuan apa pun akan sangat dihargai!

/informasi tambahan

Saya telah mengikuti artikel ini: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu Alih-alih mengkompilasi dari sumber saya telah menginstal Google Authenticator dengan apt -Dapat menginstal libpam-google-authenticator. Saya juga sudah membaca, tetapi tidak digunakan dalam kasus ini, artikel ini: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ dan http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . Dan saya sudah membaca di PAM, seperti yang disarankan;)

Sekarang, inilah beberapa pengembang yang menarik.

/etc/pam.d/openvpn memiliki ini:

akun [sukses = 2 new_authtok_reqd = selesai default = abaikan] pam_unix.so 
akun [sukses = 1 new_authtok_reqd = selesai default = abaikan] pam_winbind.so 
akun pam_deny.so yang diperlukan
akun diperlukan pam_permit.so
auth diperlukan pam_google_authenticator.so

Sesuai howto saya menyalin aslinya dari /etc/pam.d/common-account dan menambahkan baris terakhir. Sekarang jika saya mengomentari baris terakhir, koneksi OpenVPN berhasil. Jika baris terakhir tidak dikomentari, /var/log/auth.log mencatat ini:

PAM tidak dapat dlopen (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: simbol yang tidak ditentukan: pam_get_item
PAM menambahkan modul yang salah: pam_google_authenticator.so

dan /var/log/openvpn-otp-1096.log mencatat ini:

PLUGIN_CALL: fungsi plugin PLUGIN_AUTH_USER_PASS_VERIFY gagal dengan status 1: /usr/lib/openvpn/openvpn-auth-pam.so
Kesalahan Automatis TLS: Auth Nama Pengguna / Verifikasi kata sandi gagal untuk rekan
menggunakan konteks SSL / TLS
AUTH-PAM: LATAR BELAKANG: pengguna 'martin' gagal mengautentikasi: Modul tidak diketahui

Masalahnya tampaknya antara PAM dan Google Authenticator.

Google mencantumkan masalah dengan plugin lain, tetapi saya tidak dapat menemukan informasi mengenai Google Authenticator secara khusus.

Forkbeard
sumber
"Saya sudah mencoba beberapa howtos untuk menjalankan Google Authenticator" Bisakah Anda menautkan ke beberapa? Agak kabur apa yang telah Anda coba persis dan akan menyedihkan jika pengguna lain datang dengan pendekatan yang sudah Anda coba. Omong-omong, libpam-google-authenticatoruntuk otentikasi menggunakan Google Authenticator di PAM. Ini tidak ada gunanya di OpenVPN karena Anda menggunakan sertifikat di sana. Saya sarankan Anda membaca tentang apa itu PAM - Anda akan mengerti bahwa itu tidak ada hubungannya dengan OpenVPN dalam kasus Anda.
gertvdijk
@ "Ini tidak berguna di OpenVPN karena Anda menggunakan sertifikat di sana." Tidak apa-apa. Anda dapat menggunakan sertifikat dan kata sandi satu kali dari Google Authenticator melalui PAM sebagai faktor kedua untuk otentikasi di OpenVPN.
Terminal Damn
Menambahkan info tambahan ke pertanyaan awal. Tidak yakin apakah saya melakukan ini dengan benar ...
Forkbeard
@ gertvdijk: Saya mengerti maksud Anda tentang hal itu berlebihan, tetapi saya ingin menggunakan kedua sertifikat dan kata sandi satu kali. Tampaknya lebih aman bagi saya daripada menggunakan metode mana pun secara individual.
Forkbeard
Hm, sepertinya ada bug di Google Authenticator. Membangunnya dengan LDFLAGS = "- lpam" akan membantu tetapi saya tidak yakin bagaimana melakukannya, contoh pada Howtoforge (tautan dalam pertanyaan awal) tidak berfungsi, url mengembalikan 404.
Forkbeard

Jawaban:

2

Oke, Google adalah teman saya.

Saya melakukan ini:

# apt-get purge libpam-google-authenticator
# unduh https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

Tambahkan ini ke Makefile, tepat setelah lisensi:

LDFLAGS = "- lpam"

Kemudian

# make
# make install
# service openvpn restart

Selain itu, pastikan /home/username/.google_authenticator tidak memiliki hak sama sekali kecuali hak baca untuk pengguna yang akan menggunakannya.

Sekarang saya harus memasukkan nama pengguna saya itu nama pengguna lokal saya di server (akun shell saya) sebagai nama pengguna OpenVPN saya dan kode Google Authenticator 6 digit sebagai kata sandi.

Sekarang berhasil.

Terima kasih atas waktu Anda :)

(Bagaimana saya bisa menandai posting ini sebagai diselesaikan? Apakah saya hanya mengedit judul topik?)

Forkbeard
sumber
2

Jika Anda hanya ingin autentikasi OTP untuk OpenVPN, ada plugin OTP OpenVPN asli yang tersedia. Ini kompatibel dengan kunci rahasia Google Authenticator. Semua rahasia disimpan dalam satu file teks dan tidak perlu mengkonfigurasi PAM atau membuat direktori pengguna.

Lihatlah: https://github.com/evgeny-gridasov/openvpn-otp

egridasov
sumber
Terima kasih atas balasan Anda, egridasov. Karena saya memiliki pengaturan yang berfungsi sekarang saya tidak akan mencobanya tetapi saya mungkin mencobanya di sistem lain. Reneg-detik 0 bit yang saya temukan sangat membantu, saya telah mematahkan kepala saya tentang cara mendapatkan koneksi agar tidak turun setelah 3600 detik
Forkbeard