ProHoster > blog > administrasi > Menyiapkan otentikasi di jaringan L2TP menggunakan Rutoken EDS 2.0 dan Rutoken PKI
Menyiapkan otentikasi di jaringan L2TP menggunakan Rutoken EDS 2.0 dan Rutoken PKI
Bermasalah
Baru-baru ini, banyak yang tidak tahu bagaimana rasanya bekerja dari rumah. Pandemi ini telah mengubah situasi dunia secara drastis; setiap orang mulai beradaptasi dengan keadaan saat ini, yaitu kenyataan bahwa meninggalkan rumah sudah menjadi tidak aman. Dan banyak yang harus segera mengatur pekerjaan dari rumah untuk karyawannya.
Namun, kurangnya pendekatan yang kompeten dalam memilih solusi untuk pekerjaan jarak jauh dapat menyebabkan kerugian yang tidak dapat diubah. Kata sandi pengguna dapat dicuri, dan ini akan memungkinkan penyerang terhubung secara tidak terkendali ke jaringan dan sumber daya TI perusahaan.
Itulah sebabnya kebutuhan untuk menciptakan jaringan VPN korporat yang andal kini semakin meningkat. Saya akan menceritakannya kepada Anda dapat diandalkan, aman ΠΈ sederhana dalam menggunakan jaringan VPN.
Ia bekerja sesuai dengan skema IPsec/L2TP, yang menggunakan kunci dan sertifikat yang tidak dapat diambil yang disimpan dalam token untuk mengautentikasi klien, dan juga mengirimkan data melalui jaringan dalam bentuk terenkripsi.
Server dengan CentOS 7 (alamat: centos.vpn.server.ad) dan klien dengan Ubuntu 20.04, serta klien dengan Windows 10, digunakan sebagai singkatan demonstrasi untuk konfigurasi.
Deskripsi sistem
VPN akan bekerja sesuai dengan skema IPSec + L2TP + PPP. Protokol Protokol Point-to-Point (PPP) beroperasi pada lapisan data link model OSI dan menyediakan otentikasi pengguna dan enkripsi data yang dikirimkan. Datanya dikemas dalam data protokol L2TP, yang sebenarnya memastikan terciptanya koneksi di jaringan VPN, namun tidak menyediakan otentikasi dan enkripsi.
Data L2TP dienkapsulasi dalam IPSec, yang juga menyediakan otentikasi dan enkripsi, namun tidak seperti PPP, otentikasi dan enkripsi terjadi pada tingkat perangkat, bukan pada tingkat pengguna.
Fitur ini memungkinkan Anda mengautentikasi pengguna hanya dari perangkat tertentu. Kami akan menggunakan protokol IPSec apa adanya dan mengizinkan otentikasi pengguna dari perangkat apa pun.
Otentikasi pengguna menggunakan kartu pintar akan dilakukan pada tingkat protokol PPP menggunakan protokol EAP-TLS.
Informasi lebih rinci tentang pengoperasian rangkaian ini dapat ditemukan di Artikel ini.
Mengapa skema ini memenuhi ketiga persyaratan jaringan VPN yang baik?
Keandalan skema ini telah teruji oleh waktu. Ini telah digunakan untuk menyebarkan jaringan VPN sejak tahun 2000.
Otentikasi pengguna yang aman disediakan oleh protokol PPP. Standar penerapan protokol PPP yang dikembangkan oleh Paul Mackerras tidak memberikan tingkat keamanan yang memadai, karena Untuk otentikasi, paling banter, otentikasi menggunakan login dan kata sandi digunakan. Kita semua tahu bahwa kata sandi login dapat dimata-matai, ditebak, atau dicuri. Namun, sudah lama sekali pengembangnya Jan Hanya Keijser Π² implementasinya Protokol ini memperbaiki masalah ini dan menambahkan kemampuan untuk menggunakan protokol berdasarkan enkripsi asimetris, seperti EAP-TLS, untuk autentikasi. Selain itu, ia menambahkan kemampuan menggunakan kartu pintar untuk otentikasi, yang membuat sistem lebih aman.
Saat ini, negosiasi aktif sedang dilakukan untuk menggabungkan kedua proyek ini dan Anda dapat yakin bahwa cepat atau lambat hal ini akan tetap terjadi. Misalnya, versi PPP yang dipatch sudah lama ada di repositori Fedora, menggunakan protokol aman untuk autentikasi.
Sampai saat ini, jaringan ini hanya dapat digunakan oleh pengguna Windows, namun rekan kami dari Universitas Negeri Moskow Vasily Shokov dan Alexander Smirnov menemukan proyek klien L2TP lama untuk Linux dan memodifikasinya. Bersama-sama, kami memperbaiki banyak bug dan kekurangan dalam pekerjaan klien, menyederhanakan instalasi dan konfigurasi sistem, bahkan ketika membangun dari sumber. Yang paling penting di antaranya adalah:
Memperbaiki masalah kompatibilitas klien lama dengan antarmuka versi baru openssl dan qt.
Menghapus pppd agar tidak meneruskan PIN token melalui file sementara.
Memperbaiki peluncuran program permintaan kata sandi yang salah melalui antarmuka grafis. Hal ini dilakukan dengan menginstal lingkungan yang benar untuk layanan xl2tpd.
Pembangunan daemon L2tpIpsecVpn sekarang dilakukan bersamaan dengan pembangunan klien itu sendiri, yang menyederhanakan proses pembangunan dan konfigurasi.
Untuk kemudahan pengembangan, sistem Azure Pipelines tersambung untuk menguji kebenaran build.
Menambahkan kemampuan untuk memaksa penurunan versi tingkat keamanan dalam konteks openssl. Hal ini berguna untuk mendukung sistem operasi baru dengan benar yang tingkat keamanan standarnya ditetapkan ke 2, dengan jaringan VPN yang menggunakan sertifikat yang tidak memenuhi persyaratan keamanan tingkat ini. Opsi ini akan berguna untuk bekerja dengan jaringan VPN lama yang sudah ada.
Versi yang diperbaiki dapat ditemukan di repositori ini.
Klien ini mendukung penggunaan kartu pintar untuk otentikasi, dan juga menyembunyikan sebanyak mungkin semua kesulitan dan kesulitan dalam menyiapkan skema ini di Linux, membuat pengaturan klien sesederhana dan secepat mungkin.
Tentu saja, untuk koneksi yang nyaman antara PPP dan GUI klien, hal ini tidak mungkin dilakukan tanpa pengeditan tambahan pada setiap proyek, namun demikian, pengeditan tersebut diminimalkan dan dikurangi seminimal mungkin:
Tetap kesalahan dalam urutan memuat konfigurasi dan menginisialisasi konteks openssl. Kesalahan ini tidak memungkinkan kami memuat apa pun dari file konfigurasi lokal /etc/ppp/openssl.cnf kecuali informasi tentang mesin openssl untuk bekerja dengan kartu pintar, yang merupakan ketidaknyamanan serius jika, misalnya, selain informasi tentang mesin, kami ingin mengatur sesuatu yang lain. Misalnya, memperbaiki tingkat keamanan saat membuat koneksi.
Sekarang Anda dapat mulai menyiapkan.
Penyetelan Server
Mari instal semua paket yang diperlukan.
Menginstal strongswan (IPsec)
Pertama-tama, mari konfigurasikan firewall untuk operasi IPSec
Setelah instalasi, Anda perlu mengkonfigurasi strongswan (salah satu implementasi IPSec). Untuk melakukan ini, edit file tersebut /etc/strongswan/ipsec.conf :
Kami juga akan menetapkan kata sandi login umum. Kata sandi yang dibagikan harus diketahui oleh semua peserta jaringan untuk otentikasi. Cara ini jelas tidak bisa diandalkan, karena kata sandi ini dapat dengan mudah diketahui oleh individu yang tidak ingin kita berikan akses ke jaringan.
Namun, fakta ini pun tidak akan mempengaruhi keamanan jaringan, karena Enkripsi data dasar dan otentikasi pengguna dilakukan oleh protokol PPP. Namun sejujurnya, perlu dicatat bahwa strongswan mendukung teknologi autentikasi yang lebih aman, misalnya, menggunakan kunci pribadi. Strongswan juga memiliki kemampuan untuk menyediakan otentikasi menggunakan kartu pintar, namun sejauh ini hanya sejumlah perangkat terbatas yang didukung dan oleh karena itu otentikasi menggunakan token Rutoken dan kartu pintar masih sulit. Mari kita atur kata sandi umum melalui file /etc/strongswan/ipsec.secrets:
Jadi, kita selesai dengan pengaturan server dasar. Konfigurasi server lainnya melibatkan penambahan klien baru.
Menambahkan klien baru
Untuk menambahkan klien baru ke jaringan, Anda harus menambahkan sertifikatnya ke daftar sertifikat tepercaya untuk klien ini.
Jika pengguna ingin menjadi anggota jaringan VPN, ia membuat pasangan kunci dan aplikasi sertifikat untuk klien ini. Jika pengguna dipercaya, maka aplikasi ini dapat ditandatangani, dan sertifikat yang dihasilkan dapat ditulis ke direktori sertifikat:
CATATAN
Untuk menghindari kebingungan, sebaiknya: Nama Umum, nama file sertifikat, dan nama pengguna unik.
Perlu juga diperiksa bahwa nama pengguna yang kita tambahkan tidak muncul di mana pun di file autentikasi lainnya, jika tidak, akan ada masalah dengan cara pengguna diautentikasi.
Sertifikat yang sama harus dikirim kembali ke pengguna.
Menghasilkan pasangan kunci dan sertifikat
Agar autentikasi berhasil, klien harus:
menghasilkan pasangan kunci;
memiliki sertifikat root CA;
memiliki sertifikat untuk pasangan kunci Anda yang ditandatangani oleh root CA.
untuk klien di Linux
Pertama, mari buat pasangan kunci pada token dan buat aplikasi untuk sertifikat:
Kirim aplikasi client.req yang muncul ke CA. Setelah Anda menerima sertifikat untuk pasangan kunci Anda, tuliskan ke token dengan id yang sama dengan kuncinya:
untuk klien Windows dan Linux (metode yang lebih universal)
Cara ini lebih universal karena memungkinkan Anda membuat kunci dan sertifikat yang akan berhasil dikenali oleh pengguna Windows dan Linux, tetapi memerlukan mesin Windows untuk menjalankan prosedur pembuatan kunci.
Sebelum membuat permintaan dan mengimpor sertifikat, Anda harus menambahkan sertifikat akar jaringan VPN ke daftar sertifikat tepercaya. Untuk melakukan ini, buka dan di jendela yang terbuka, pilih opsi βInstal sertifikatβ:
Di jendela yang terbuka, pilih menginstal sertifikat untuk pengguna lokal:
Mari instal sertifikat di penyimpanan sertifikat akar tepercaya CA:
Setelah semua tindakan ini, kami setuju dengan semua poin selanjutnya. Sistem sekarang dikonfigurasi.
Setelah ini, kami akan membuat pasangan kunci dan membuat aplikasi untuk sertifikat. Untuk melakukannya, buka PowerShell dan masukkan perintah berikut:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Kirim aplikasi client.req yang dibuat ke CA Anda dan tunggu hingga sertifikat client.pem diterima. Itu dapat ditulis ke token dan ditambahkan ke penyimpanan sertifikat Windows menggunakan perintah berikut:
certreq.exe -accept .client.pem
Perlu dicatat bahwa tindakan serupa dapat direproduksi menggunakan antarmuka grafis program mmc, namun metode ini lebih memakan waktu dan kurang dapat diprogram.
Menyiapkan klien Ubuntu
CATATAN
Menyiapkan klien di Linux saat ini cukup memakan waktu, karena... memerlukan pembuatan program terpisah dari sumbernya. Kami akan mencoba memastikan bahwa semua perubahan disertakan dalam repositori resmi dalam waktu dekat.
Untuk memastikan koneksi pada tingkat IPSec ke server, paket strongswan dan daemon xl2tp digunakan. Untuk menyederhanakan koneksi ke jaringan menggunakan kartu pintar, kami akan menggunakan paket l2tp-ipsec-vpn, yang menyediakan shell grafis untuk penyetelan koneksi yang disederhanakan.
Mari kita mulai merakit elemen langkah demi langkah, tetapi sebelum itu kita akan menginstal semua paket yang diperlukan agar VPN dapat berfungsi secara langsung:
sudo apt-get install xl2tpd strongswan libp11-3
Menginstal perangkat lunak untuk bekerja dengan token
Instal perpustakaan librtpkcs11ecp.so terbaru dari situs, juga perpustakaan untuk bekerja dengan kartu pintar:
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install
Menginstal klien L2tpIpsecVpn
Saat ini, klien juga perlu dikompilasi dari kode sumber. Ini dilakukan dengan menggunakan urutan perintah berikut:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make install
Menyiapkan klien L2tpIpsecVpn
Luncurkan klien yang diinstal:
Setelah diluncurkan, applet L2tpIpsecVPN akan terbuka. Klik kanan padanya dan konfigurasikan koneksi:
Untuk bekerja dengan token, pertama-tama, kami menunjukkan jalur ke mesin opensc dari mesin OpenSSL dan perpustakaan PKCS#11. Untuk melakukan ini, buka tab "Preferensi" untuk mengonfigurasi parameter openssl:
.
Mari tutup jendela pengaturan OpenSSL dan lanjutkan ke pengaturan jaringan. Mari tambahkan jaringan baru dengan mengklik tombol Tambah... di panel pengaturan dan masukkan nama jaringan:
Setelah ini, jaringan ini akan tersedia di panel pengaturan. Klik kanan dua kali pada jaringan baru untuk mengkonfigurasinya. Pada tab pertama Anda perlu membuat pengaturan IPsec. Mari kita atur alamat server dan kunci publik:
Setelah ini, buka tab pengaturan PPP dan tunjukkan di sana nama pengguna yang ingin kita akses jaringannya:
Setelah ini, buka tab Properti dan tentukan jalur ke kunci, sertifikat klien, dan CA:
Mari tutup tab ini dan lakukan pengaturan terakhir; untuk melakukan ini, buka tab "Pengaturan IP" dan centang kotak di sebelah opsi "Dapatkan alamat server DNS secara otomatis":
Opsi ini akan memungkinkan klien menerima alamat IP pribadi dalam jaringan dari server.
Setelah semua pengaturan, tutup semua tab dan mulai ulang klien:
Koneksi jaringan
Setelah pengaturan, Anda dapat terhubung ke jaringan. Untuk melakukan ini, buka tab applet dan pilih jaringan yang ingin kita sambungkan:
Selama proses pembuatan koneksi, klien akan meminta kami memasukkan kode PIN Rutoken:
Jika muncul notifikasi di status bar bahwa koneksi berhasil dibuat, berarti setup berhasil:
Jika tidak, ada baiknya mencari tahu mengapa koneksi tidak terjalin. Untuk melakukan ini, Anda harus melihat log program dengan memilih perintah "Informasi koneksi" di applet:
Menyiapkan klien Windows
Menyiapkan klien di Windows jauh lebih mudah daripada di Linux, karena... Semua perangkat lunak yang diperlukan sudah terpasang di dalam sistem.
Pengaturan sistem
Kami akan menginstal semua driver yang diperlukan untuk bekerja dengan Rutokens dengan mengunduhnya dari. lokasi.
Mengimpor sertifikat root untuk otentikasi
Unduh sertifikat akar server dan instal pada sistem. Untuk melakukan ini, buka dan di jendela yang terbuka, pilih opsi βInstal sertifikatβ:
Di jendela yang terbuka, pilih menginstal sertifikat untuk pengguna lokal. Jika Anda ingin sertifikat tersedia untuk semua pengguna di komputer, Anda harus memilih untuk menginstal sertifikat di komputer lokal:
Mari instal sertifikat di penyimpanan sertifikat akar tepercaya CA:
Setelah semua tindakan ini, kami setuju dengan semua poin selanjutnya. Sistem sekarang dikonfigurasi.
Menyiapkan koneksi VPN
Untuk mengatur koneksi VPN, buka panel kontrol dan pilih opsi untuk membuat koneksi baru.
Di jendela pop-up, pilih opsi untuk membuat koneksi untuk terhubung ke tempat kerja Anda:
Di jendela berikutnya, pilih koneksi VPN:
dan masukkan detail koneksi VPN, dan tentukan juga opsi untuk menggunakan kartu pintar:
Penyiapannya belum selesai. Yang tersisa hanyalah menentukan kunci bersama untuk protokol IPsec; untuk melakukan ini, buka tab "Pengaturan koneksi jaringan" dan kemudian buka tab "Properti untuk koneksi ini":
Di jendela yang terbuka, buka tab βKeamananβ, tentukan βJaringan L2TP/IPsecβ sebagai jenis jaringan dan pilih βPengaturan Lanjutanβ:
Di jendela yang terbuka, tentukan kunci IPSec bersama:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Setelah menyelesaikan penyiapan, Anda dapat mencoba menyambung ke jaringan:
Pada proses koneksi, kita akan diminta memasukkan kode PIN token:
Kami telah menyiapkan jaringan VPN yang aman dan memastikannya tidak sulit.
Ucapan Terima Kasih
Saya ingin mengucapkan terima kasih sekali lagi kepada kolega kami Vasily Shokov dan Alexander Smirnov atas kerja sama yang telah mereka lakukan untuk menyederhanakan pembuatan koneksi VPN untuk klien Linux.