Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)

Keperluan untuk menyediakan akses jauh kepada persekitaran korporat semakin kerap muncul, tidak kira sama ada pengguna atau rakan kongsi anda yang memerlukan akses kepada pelayan tertentu dalam organisasi anda.

Untuk tujuan ini, kebanyakan syarikat menggunakan teknologi VPN, yang telah membuktikan dirinya sebagai cara yang boleh dipercayai untuk menyediakan akses kepada sumber tempatan organisasi.

Syarikat saya tidak terkecuali, dan kami, seperti kebanyakan orang lain, menggunakan teknologi ini. Dan, seperti kebanyakan orang lain, kami menggunakan Cisco ASA 55xx sebagai gerbang akses jauh.

Apabila bilangan pengguna jauh meningkat, terdapat keperluan untuk memudahkan prosedur untuk mengeluarkan bukti kelayakan. Tetapi pada masa yang sama, ini mesti dilakukan tanpa menjejaskan keselamatan.

Bagi diri kami sendiri, kami menemui penyelesaian dalam menggunakan pengesahan dua faktor untuk menyambung melalui Cisco SSL VPN, menggunakan kata laluan sekali. Dan penerbitan ini akan memberitahu anda cara mengatur penyelesaian sedemikian dengan masa yang minimum dan kos sifar untuk perisian yang diperlukan (dengan syarat anda sudah mempunyai Cisco ASA dalam infrastruktur anda).

Pasaran penuh dengan penyelesaian berkotak untuk menjana kata laluan sekali, sambil menawarkan banyak pilihan untuk mendapatkannya, sama ada menghantar kata laluan melalui SMS atau menggunakan token, kedua-dua perkakasan dan perisian (contohnya, pada telefon mudah alih). Tetapi keinginan untuk menjimatkan wang dan keinginan untuk menjimatkan wang untuk majikan saya, dalam krisis semasa, memaksa saya mencari cara percuma untuk melaksanakan perkhidmatan untuk menjana kata laluan sekali sahaja. Yang, walaupun percuma, tidak jauh lebih rendah daripada penyelesaian komersial (di sini kami harus membuat tempahan, dengan menyatakan bahawa produk ini juga mempunyai versi komersial, tetapi kami bersetuju bahawa kos kami, dalam bentuk wang, akan menjadi sifar).

Jadi, kita perlukan:

- Imej Linux dengan set alat terbina dalam - multiOTP, FreeRADIUS dan nginx, untuk mengakses pelayan melalui web (http://download.multiotp.net/ - Saya menggunakan imej siap sedia untuk VMware)
β€” Pelayan Direktori Aktif
β€” Cisco ASA sendiri (untuk kemudahan, saya menggunakan ASDM)
β€” Mana-mana token perisian yang menyokong mekanisme TOTP (Saya, sebagai contoh, menggunakan Pengesah Google, tetapi FreeOTP yang sama akan melakukannya)

Saya tidak akan menerangkan secara terperinci bagaimana imej itu terungkap. Akibatnya, anda akan menerima Debian Linux dengan multiOTP dan FreeRADIUS telah dipasang, dikonfigurasikan untuk berfungsi bersama, dan antara muka web untuk pentadbiran OTP.

Langkah 1. Kami memulakan sistem dan mengkonfigurasinya untuk rangkaian anda
Secara lalai, sistem dilengkapi dengan kelayakan akar akar. Saya rasa semua orang meneka bahawa adalah idea yang baik untuk menukar kata laluan pengguna root selepas log masuk pertama. Anda juga perlu menukar tetapan rangkaian (secara lalai ia adalah '192.168.1.44' dengan get laluan '192.168.1.1'). Selepas itu anda boleh but semula sistem.

Mari buat pengguna dalam Active Directory otp, dengan kata laluan MySuperPassword.

Langkah 2. Sediakan sambungan dan import pengguna Active Directory
Untuk melakukan ini, kami memerlukan akses kepada konsol, dan terus ke fail multiotp.php, menggunakan mana kami akan mengkonfigurasi tetapan sambungan ke Active Directory.

Pergi ke direktori /usr/local/bin/multiotp/ dan laksanakan arahan berikut secara bergilir:

./multiotp.php -config default-request-prefix-pin=0

Menentukan sama ada pin tambahan (kekal) diperlukan apabila memasukkan pin sekali (0 atau 1)

./multiotp.php -config default-request-ldap-pwd=0

Menentukan sama ada kata laluan domain diperlukan apabila memasukkan pin sekali (0 atau 1)

./multiotp.php -config ldap-server-type=1

Jenis pelayan LDAP ditunjukkan (0 = pelayan LDAP biasa, dalam kes kami 1 = Direktori Aktif)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Menentukan format untuk mempersembahkan nama pengguna (nilai ini hanya akan memaparkan nama, tanpa domain)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Perkara yang sama, hanya untuk kumpulan

./multiotp.php -config ldap-group-attribute="memberOf"

Menentukan kaedah untuk menentukan sama ada pengguna tergolong dalam kumpulan

./multiotp.php -config ldap-ssl=1

Sekiranya saya menggunakan sambungan selamat ke pelayan LDAP (sudah tentu, ya!)

./multiotp.php -config ldap-port=636

Port untuk menyambung ke pelayan LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Alamat pelayan Active Directory anda

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Kami menunjukkan tempat untuk mula mencari pengguna dalam domain

./multiotp.php -config ldap-bind-dn="[email protected]"

Tentukan pengguna yang mempunyai hak carian dalam Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Tentukan kata laluan pengguna untuk menyambung ke Active Directory

./multiotp.php -config ldap-network-timeout=10

Menetapkan tamat masa untuk menyambung ke Active Directory

./multiotp.php -config ldap-time-limit=30

Kami menetapkan had masa untuk operasi import pengguna

./multiotp.php -config ldap-activated=1

Mengaktifkan konfigurasi sambungan Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Kami mengimport pengguna daripada Active Directory

Langkah 3. Hasilkan kod QR untuk token
Segala-galanya di sini sangat mudah. Buka antara muka web pelayan OTP dalam penyemak imbas, log masuk (jangan lupa untuk menukar kata laluan lalai untuk pentadbir!), dan klik pada butang "Cetak":

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
Hasil daripada tindakan ini akan menjadi halaman yang mengandungi dua kod QR. Kami dengan berani mengabaikan yang pertama (walaupun tulisan yang menarik Google Authenticator / Authenticator / 2 Steps Authenticator), dan sekali lagi kami dengan berani mengimbas kod kedua ke dalam token perisian pada telefon:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
(ya, saya sengaja merosakkan kod QR untuk menjadikannya tidak boleh dibaca).

Selepas melengkapkan tindakan ini, kata laluan enam digit akan mula dijana dalam aplikasi anda setiap tiga puluh saat.

Untuk memastikan, anda boleh menyemaknya dalam antara muka yang sama:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
Dengan memasukkan nama pengguna anda dan kata laluan sekali daripada aplikasi pada telefon anda. Adakah anda menerima respons positif? Jadi kita teruskan.

Langkah 4. Konfigurasi tambahan dan ujian operasi FreeRADIUS
Seperti yang saya nyatakan di atas, multiOTP sudah dikonfigurasikan untuk berfungsi dengan FreeRADIUS, yang tinggal hanyalah menjalankan ujian dan menambah maklumat tentang get laluan VPN kami ke fail konfigurasi FreeRADIUS.

Kami kembali ke konsol pelayan, ke direktori /usr/local/bin/multiotp/, masukkan:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Termasuk pembalakan yang lebih terperinci.

Dalam fail konfigurasi klien FreeRADIUS (/etc/freeradius/clinets.conf) mengulas semua baris yang berkaitan dengan localhost dan tambah dua entri:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- untuk ujian

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

β€” untuk gerbang VPN kami.

Mulakan semula FreeRADIUS dan cuba log masuk:

radtest username 100110 localhost 1812 testing321

mana nama pengguna = nama pengguna, 100110 = kata laluan yang diberikan kepada kami oleh aplikasi pada telefon, localhost = alamat pelayan RADIUS, 1812 β€” Port pelayan RADIUS, ujian321 β€” Kata laluan klien pelayan RADIUS (yang kami nyatakan dalam konfigurasi).

Hasil daripada arahan ini akan dikeluarkan kira-kira seperti berikut:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Sekarang kita perlu memastikan bahawa pengguna berjaya disahkan. Untuk melakukan ini, kita akan melihat log multiotp itu sendiri:

tail /var/log/multiotp/multiotp.log

Dan jika entri terakhir ada:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Kemudian semuanya berjalan lancar dan kami boleh selesaikan

Langkah 5: Konfigurasikan Cisco ASA
Mari kita bersetuju bahawa kami sudah mempunyai kumpulan dan dasar yang dikonfigurasikan untuk akses melalui SLL VPN, dikonfigurasikan bersama dengan Active Directory, dan kami perlu menambah pengesahan dua faktor untuk profil ini.

1. Tambah kumpulan pelayan AAA baharu:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
2. Tambahkan pelayan multiOTP kami ke kumpulan:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
3. Kita edit profil sambungan, menetapkan kumpulan pelayan Active Directory sebagai pelayan pengesahan utama:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
4. Di tab Lanjutan -> Pengesahan Kami juga memilih kumpulan pelayan Active Directory:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
5. Di tab Lanjutan -> Menengah pengesahan, pilih kumpulan pelayan yang dicipta di mana pelayan multiOTP didaftarkan. Ambil perhatian bahawa nama pengguna Sesi diwarisi daripada kumpulan pelayan AAA utama:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
Gunakan tetapan dan

Langkah 6, aka yang terakhir
Mari semak sama ada pengesahan dua faktor berfungsi untuk SLL VPN:

Pergi ke 2FA (Pengesahan dua faktor untuk ASA SSL VPN)
Voila! Apabila menyambung melalui Cisco AnyConnect VPN Client, anda juga akan diminta untuk kata laluan kedua, sekali sahaja.

Saya berharap artikel ini akan membantu seseorang, dan ia akan memberi seseorang pemikiran tentang cara menggunakannya, percuma Pelayan OTP, untuk tugas lain. Kongsi dalam komen jika anda mahu.

Sumber: www.habr.com

Tambah komen