Otentikasi dua faktor di OpenVPN dengan bot Telegram

Artikel ini menjelaskan pengaturan server OpenVPN untuk mengaktifkan otentikasi dua faktor dengan bot Telegram yang akan mengirimkan permintaan konfirmasi saat menghubungkan.

OpenVPN adalah server VPN sumber terbuka terkenal dan gratis yang banyak digunakan untuk mengatur akses aman karyawan ke sumber daya internal organisasi.

Sebagai otentikasi untuk menghubungkan ke server VPN, biasanya digunakan kombinasi kunci dan login/kata sandi pengguna. Pada saat yang sama, kata sandi yang disimpan di klien mengubah seluruh rangkaian menjadi satu faktor yang tidak memberikan tingkat keamanan yang tepat. Seorang penyerang, setelah mendapatkan akses ke komputer klien, juga mendapatkan akses ke server VPN. Hal ini terutama berlaku untuk koneksi dari mesin yang menjalankan Windows.

Penggunaan faktor kedua mengurangi risiko akses tidak sah sebesar 99% dan tidak mempersulit proses koneksi bagi pengguna sama sekali.

Izinkan saya segera melakukan reservasi: untuk implementasi, Anda perlu menghubungkan server otentikasi pihak ketiga multifactor.ru, di mana Anda dapat menggunakan tarif gratis untuk kebutuhan Anda.

Prinsip operasi

  1. OpenVPN menggunakan plugin openvpn-plugin-auth-pam untuk otentikasi
  2. Plugin memeriksa kata sandi pengguna di server dan meminta faktor kedua melalui protokol RADIUS di layanan Multifaktor
  3. Multifaktor mengirimkan pesan ke pengguna melalui bot Telegram yang mengonfirmasi akses
  4. Pengguna mengonfirmasi permintaan akses dalam obrolan Telegram dan terhubung ke VPN

Menginstal server OpenVPN

Ada banyak artikel di Internet yang menjelaskan proses instalasi dan konfigurasi OpenVPN, jadi kami tidak akan menduplikasinya. Jika Anda memerlukan bantuan, ada beberapa link tutorial di akhir artikel.

Menyiapkan Multifaktor

Pergi ke Sistem kendali multifaktor, buka bagian "Sumber Daya" dan buat VPN baru.
Setelah dibuat, Anda akan memiliki dua opsi yang tersedia untuk Anda: Pengidentifikasi NAS ΠΈ Rahasia Bersama, mereka akan diperlukan untuk konfigurasi selanjutnya.

Otentikasi dua faktor di OpenVPN dengan bot Telegram

Di bagian "Grup", buka pengaturan grup "Semua pengguna" dan hapus tanda "Semua sumber daya" sehingga hanya pengguna dari grup tertentu yang dapat terhubung ke server VPN.

Buat grup baru "Pengguna VPN", nonaktifkan semua metode otentikasi kecuali Telegram dan tunjukkan bahwa pengguna memiliki akses ke sumber daya VPN yang dibuat.

Otentikasi dua faktor di OpenVPN dengan bot Telegram

Di bagian "Pengguna", buat pengguna yang akan memiliki akses ke VPN, tambahkan mereka ke grup "Pengguna VPN" dan kirimkan mereka tautan untuk mengonfigurasi faktor otentikasi kedua. Login pengguna harus cocok dengan login di server VPN.

Otentikasi dua faktor di OpenVPN dengan bot Telegram

Menyiapkan server OpenVPN

Buka filenya /etc/openvpn/server.conf dan tambahkan plugin untuk otentikasi menggunakan modul PAM

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Plugin dapat ditemukan di direktori /usr/lib/openvpn/plugins/ ΠΈΠ»ΠΈ /usr/lib64/openvpn/plugins/ tergantung pada sistem Anda.

Selanjutnya Anda perlu menginstal modul pam_radius_auth

$ sudo yum install pam_radius

Buka file untuk diedit /etc/pam_radius.conf dan tentukan alamat server RADIUS Multifaktor

radius.multifactor.ru   shared_secret   40

di mana:

  • radius.multifactor.ru β€” alamat server
  • shared_secret - salin dari parameter pengaturan VPN yang sesuai
  • 40 detik - batas waktu menunggu permintaan dengan margin besar

Server yang tersisa harus dihapus atau dikomentari (beri tanda titik koma di awal)

Selanjutnya, buat file untuk openvpn tipe layanan

$ sudo vi /etc/pam.d/openvpn

dan menuliskannya

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

Baris pertama menghubungkan modul PAM pam_radius_auth dengan parameter:

  • skip_passwd - menonaktifkan transmisi kata sandi pengguna ke server RADIUS Multifactor (dia tidak perlu mengetahuinya).
  • client_id β€” ganti [NAS-Identifier] dengan parameter yang sesuai dari pengaturan sumber daya VPN.
    Semua parameter yang mungkin dijelaskan dalam dokumentasi untuk modul.

Baris kedua dan ketiga mencakup verifikasi sistem login, kata sandi dan hak pengguna di server Anda bersama dengan faktor otentikasi kedua.

Mulai ulang OpenVPN

$ sudo systemctl restart openvpn@server

Pengaturan klien

Sertakan permintaan login pengguna dan kata sandi dalam file konfigurasi klien

auth-user-pass

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Luncurkan klien OpenVPN, sambungkan ke server, masukkan nama pengguna dan kata sandi Anda. Bot Telegram akan mengirimkan permintaan akses dengan dua tombol

Otentikasi dua faktor di OpenVPN dengan bot Telegram

Satu tombol mengizinkan akses, tombol kedua memblokirnya.

Sekarang Anda dapat menyimpan kata sandi Anda dengan aman di klien; faktor kedua akan melindungi server OpenVPN Anda dari akses tidak sah.

Jika ada sesuatu yang tidak berhasil

Periksa secara berurutan apakah Anda tidak melewatkan apa pun:

  • Ada pengguna di server dengan OpenVPN dengan kata sandi yang ditetapkan
  • Server memiliki akses melalui port UDP 1812 ke alamat radius.multifactor.ru
  • Parameter NAS-Identifier dan Shared Secret ditentukan dengan benar
  • Pengguna dengan login yang sama telah dibuat di sistem Multifaktor dan telah diberikan akses ke grup pengguna VPN
  • Pengguna telah mengkonfigurasi metode otentikasi melalui Telegram

Jika Anda belum pernah mengatur OpenVPN sebelumnya, baca artikel terperinci.

Instruksi dibuat dengan contoh pada CentOS 7.

Sumber: www.habr.com

Tambah komentar