Beberapa contoh penganjuran WiFi korporat telah pun diterangkan. Di sini saya akan menerangkan cara saya melaksanakan penyelesaian yang sama dan masalah yang saya terpaksa hadapi semasa menyambung pada peranti yang berbeza. Kami akan menggunakan LDAP sedia ada dengan pengguna berdaftar, menaikkan FreeRadius dan mengkonfigurasi WPA2-Enterprise pada pengawal Ubnt. Semuanya nampak mudah. Jom tengokβ¦
Sedikit tentang kaedah EAP
Sebelum meneruskan tugas, kami perlu memutuskan kaedah pengesahan yang akan kami gunakan dalam penyelesaian kami.
Daripada Wikipedia:
EAP ialah rangka kerja pengesahan yang sering digunakan dalam rangkaian wayarles dan sambungan titik ke titik. Format pertama kali diterangkan dalam RFC 3748 dan dikemas kini dalam RFC 5247.
EAP digunakan untuk memilih kaedah pengesahan, lulus kekunci dan memproses kunci tersebut dengan pemalam yang dipanggil kaedah EAP. Terdapat banyak kaedah EAP, kedua-duanya ditakrifkan dengan EAP sendiri dan dikeluarkan oleh vendor individu. EAP tidak mentakrifkan lapisan pautan, ia hanya mentakrifkan format mesej. Setiap protokol yang menggunakan EAP mempunyai protokol enkapsulasi mesej EAP sendiri.
Kaedah itu sendiri:
- LEAP ialah protokol proprietari yang dibangunkan oleh CISCO. Kerentanan ditemui. Pada masa ini tidak disyorkan untuk digunakan
- EAP-TLS disokong dengan baik di kalangan vendor wayarles. Ia adalah protokol selamat kerana ia adalah pengganti kepada piawaian SSL. Menyediakan pelanggan agak rumit. Anda memerlukan sijil pelanggan sebagai tambahan kepada kata laluan. Disokong pada banyak sistem
- EAP-TTLS - disokong secara meluas pada banyak sistem, menawarkan keselamatan yang baik dengan menggunakan sijil PKI hanya pada pelayan pengesahan
- EAP-MD5 ialah satu lagi standard terbuka. Menawarkan keselamatan yang minimum. Terdedah, tidak menyokong pengesahan bersama dan penjanaan kunci
- EAP-IKEv2 - berdasarkan Internet Key Exchange Protocol versi 2. Menyediakan pengesahan bersama dan penubuhan kunci sesi antara pelanggan dan pelayan
- PEAP ialah penyelesaian bersama antara CISCO, Microsoft dan RSA Security sebagai standard terbuka. Tersedia secara meluas dalam produk, memberikan keselamatan yang sangat baik. Sama seperti EAP-TTLS, hanya memerlukan sijil bahagian pelayan
- PEAPv0/EAP-MSCHAPv2 - selepas EAP-TLS, ini ialah piawaian kedua yang digunakan secara meluas di dunia. Hubungan pelanggan-pelayan terpakai dalam Microsoft, Cisco, Apple, Linux
- PEAPv1/EAP-GTC - Dicipta oleh Cisco sebagai alternatif kepada PEAPv0/EAP-MSCHAPv2. Tidak melindungi data pengesahan dalam apa jua cara. Tidak disokong pada OS Windows
- EAP-FAST ialah kaedah yang dibangunkan oleh Cisco untuk membetulkan kelemahan LEAP. Menggunakan Kredensial Akses Terlindung (PAC). Belum selesai sepenuhnya
Daripada semua kepelbagaian ini, pilihannya masih tidak bagus. Kaedah pengesahan diperlukan: keselamatan yang baik, sokongan pada semua peranti (Windows 10, macOS, Linux, Android, iOS) dan, sebenarnya, lebih mudah lebih baik. Oleh itu, pilihan jatuh pada EAP-TTLS bersamaan dengan protokol PAP.
Persoalan mungkin timbul - Mengapa menggunakan PAP? Lagipun, ia menghantar kata laluan dalam teks yang jelas?
Ya betul. Komunikasi antara FreeRadius dan FreeIPA akan berlaku dengan cara ini. Dalam mod nyahpepijat, anda boleh menjejak cara nama pengguna dan kata laluan dihantar. Ya, dan biarkan mereka pergi, hanya anda yang mempunyai akses kepada pelayan FreeRadius.
Anda boleh membaca lebih lanjut tentang cara EAP-TTLS berfungsi
FreeRADIUS
Kami akan menaik taraf FreeRadius kepada CentOS 7.6. Tidak ada yang rumit di sini, kami memasangnya dengan cara biasa.
yum install freeradius freeradius-utils freeradius-ldap -y
Versi 3.0.13 dipasang daripada pakej. Yang terakhir boleh diambil
Selepas itu, FreeRadius sudah pun berfungsi. Anda boleh menyahkomen baris dalam /etc/raddb/users
steve Cleartext-Password := "testing"
Lancarkan ke pelayan dalam mod nyahpepijat
freeradius -X
Dan buat sambungan ujian dari localhost
radtest steve testing 127.0.0.1 1812 testing123
Dapat jawapan Menerima Access-Accept Id 115 daripada 127.0.0.1:1812 hingga 127.0.0.1:56081 panjang 20, ini bermakna semuanya OK. Teruskan.
Menyambung modul ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Dan kami akan mengubahnya dengan segera. Kami memerlukan FreeRadius untuk dapat mengakses FreeIPA
mods-enabled/ldap
ldap {
server="ldap://ldap.server.com"
port=636
start_tls=yes
identity="uid=admin,cn=users,dc=server,dc=com"
password=**********
base_dn="cn=users,dc=server,dc=com"
set_auth_type=yes
...
user {
base_dn="${..base_dn}"
filter="(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
}
...
Mulakan semula pelayan jejari dan semak penyegerakan pengguna LDAP:
radtest user_ldap password_ldap localhost 1812 testing123
Mengedit eap in mods-enabled/eap
Di sini kita akan menambah dua contoh eap. Mereka akan berbeza hanya dalam sijil dan kunci. Saya akan menerangkan mengapa ini benar di bawah.
mods-enabled/eap
eap eap-client { default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_file = ${certdir}/fisrt.key
certificate_file = ${certdir}/first.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}
eap eap-guest {
default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_passwotd=blablabla
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}
Suntingan lanjut didayakan tapak/lalai. Bahagian yang membenarkan dan mengesahkan adalah menarik.
didayakan tapak/lalai
authorize {
filter_username
preprocess
if (&User-Name == "guest") {
eap-guest {
ok = return
}
}
elsif (&User-Name == "client") {
eap-client {
ok = return
}
}
else {
eap-guest {
ok = return
}
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
logintime
pap
}
authenticate {
Auth-Type LDAP {
ldap
}
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
pap
}
Dalam bahagian kebenaran, kami mengalih keluar semua modul yang tidak kami perlukan. Kami tinggalkan hanya ldap. Tambah pengesahan pelanggan mengikut nama pengguna. Itulah sebabnya kami menambah dua kejadian eap di atas.
Berbilang EAPHakikatnya ialah apabila menyambungkan beberapa peranti, kami akan menggunakan sijil sistem dan menentukan domain. Kami mempunyai sijil dan kunci daripada pihak berkuasa sijil yang dipercayai. Secara peribadi, pada pendapat saya, prosedur sambungan sedemikian lebih mudah daripada membuang sijil yang ditandatangani sendiri pada setiap peranti. Tetapi walaupun tanpa sijil yang ditandatangani sendiri, ia masih tidak berjaya. Peranti Samsung dan Android =< 6 versi tidak boleh menggunakan sijil sistem. Oleh itu, kami mencipta contoh eap-tetamu yang berasingan untuk mereka dengan sijil yang ditandatangani sendiri. Untuk semua peranti lain kami akan menggunakan eap-client dengan sijil yang dipercayai. Nama Pengguna ditentukan oleh medan Tanpa Nama semasa menyambungkan peranti. Hanya 3 nilai dibenarkan: Tetamu, Pelanggan dan medan kosong. Selebihnya semua dibuang. Ini boleh dikonfigurasikan dalam dasar. Saya akan berikan contoh sedikit kemudian.
Mari edit bahagian yang membenarkan dan mengesahkan didayakan tapak/terowong dalam
didayakan tapak/terowong dalam
authorize {
filter_username
filter_inner_identity
update control {
&Proxy-To-Realm := LOCAL
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
digest
logintime
pap
}
authenticate {
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
Auth-Type PAP {
pap
}
ldap
}
Seterusnya, anda perlu menentukan dalam dasar nama yang boleh digunakan untuk log masuk tanpa nama. Mengedit polisi.d/penapis.
Anda perlu mencari baris yang serupa dengan ini:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Dan di bawah dalam elsif tambah nilai yang dikehendaki:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Sekarang kita perlu beralih ke direktori perakuan. Di sini anda perlu meletakkan kunci dan sijil daripada pihak berkuasa sijil yang dipercayai, yang telah kami miliki dan perlu menjana sijil yang ditandatangani sendiri untuk eap-guest.
Tukar parameter dalam fail ca.cnf.
ca.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = [email protected]
commonName = "CA FreeRadius"
Kami menulis nilai yang sama dalam fail pelayan.cnf. Kita tukar sahaja
nama yang selalu digunakan:
pelayan.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = [email protected]
commonName = "Server Certificate FreeRadius"
Kami mencipta:
make
sedia. Menerima pelayan.crt ΠΈ pelayan.kunci Kami telah pun mendaftar di atas dalam eap-guest.
Dan akhirnya, mari tambah titik akses kami pada fail pelanggan.conf. Saya mempunyai 7 daripadanya. Untuk tidak menambah setiap titik secara berasingan, kami hanya akan menulis rangkaian di mana ia berada (titik akses saya berada dalam VLAN yang berasingan).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Pengawal Ubiquiti
Kami menaikkan rangkaian berasingan pada pengawal. Biarkan ia menjadi 192.168.2.0/24
Pergi ke tetapan -> profil. Kami mencipta yang baharu:
Kami menulis alamat dan port pelayan jejari dan kata laluan yang ditulis dalam fail pelanggan.conf:
Buat nama rangkaian wayarles baharu. Pilih WPA-EAP (Enterprise) sebagai kaedah pengesahan dan tentukan profil jejari yang dibuat:
Kami menyimpan segala-galanya, memohon dan teruskan.
Menyediakan pelanggan
Mari kita mulakan dengan yang paling sukar!
Windows 10
Kesukaran datang kepada fakta bahawa Windows belum tahu cara menyambung ke WiFi korporat melalui domain. Oleh itu, kami perlu memuat naik sijil kami secara manual ke kedai sijil yang dipercayai. Di sini anda boleh menggunakan kedua-dua ditandatangani sendiri dan daripada pihak berkuasa pensijilan. Saya akan menggunakan yang kedua.
Seterusnya, anda perlu membuat sambungan baharu. Untuk melakukan ini, pergi ke tetapan rangkaian dan Internet -> Rangkaian dan Pusat Perkongsian -> Buat dan konfigurasikan sambungan atau rangkaian baharu:
Masukkan nama rangkaian secara manual dan tukar jenis keselamatan. Kemudian klik pada tukar tetapan sambungan dan dalam tab Keselamatan, pilih pengesahan rangkaian - EAP-TTLS.
Kami pergi ke parameter, menetapkan kerahsiaan pengesahan - pelanggan. Sebagai pihak berkuasa pensijilan yang dipercayai, pilih sijil yang kami tambahkan, tandai kotak "Jangan keluarkan jemputan kepada pengguna jika pelayan tidak boleh dibenarkan" dan pilih kaedah pengesahan - kata laluan tidak disulitkan (PAP).
Seterusnya, pergi ke tetapan lanjutan, letakkan tanda pada "Tentukan mod pengesahan." Pilih "Pengesahan Pengguna" dan klik pada simpan kelayakan. Di sini anda perlu memasukkan username_ldap dan password_ldap
Kami menyimpan segala-galanya, memohon, menutup. Anda boleh menyambung ke rangkaian baharu.
Linux
Saya menguji pada Ubuntu 18.04, 18.10, Fedora 29, 30.
Mula-mula, muat turun sijil untuk diri sendiri. Saya tidak menemui di Linux sama ada ia boleh menggunakan sijil sistem atau sama ada terdapat kedai sedemikian sama sekali.
Kami akan menyambung melalui domain. Oleh itu, kami memerlukan sijil daripada pihak berkuasa pensijilan yang mana sijil kami dibeli.
Semua sambungan dibuat dalam satu tetingkap. Memilih rangkaian kami:
anonymous-client
domain - domain yang sijil dikeluarkan
Android
bukan Samsung
Dari versi 7, apabila menyambungkan WiFi, anda boleh menggunakan sijil sistem dengan menyatakan domain sahaja:
domain - domain yang sijil dikeluarkan
anonymous-client
Samsung
Seperti yang saya tulis di atas, peranti Samsung tidak tahu cara menggunakan sijil sistem apabila menyambung ke WiFi, dan mereka tidak mempunyai keupayaan untuk menyambung melalui domain. Oleh itu, anda mesti menambah sijil akar pihak berkuasa pensijilan secara manual (ca.pem, kami mengambilnya pada pelayan Radius). Di sinilah ditandatangani sendiri akan digunakan.
Muat turun sijil ke peranti anda dan pasangkannya.
Pemasangan Sijil
Dalam kes ini, anda perlu menetapkan corak buka kunci skrin, kod PIN atau kata laluan, jika ia belum ditetapkan:
Saya menunjukkan versi rumit untuk memasang sijil. Pada kebanyakan peranti, cuma klik pada sijil yang dimuat turun.
Apabila sijil dipasang, anda boleh meneruskan ke sambungan:
sijil - tunjukkan yang anda pasang
pengguna tanpa nama - tetamu
MacOS
Peranti Apple di luar kotak hanya boleh menyambung ke EAP-TLS, tetapi anda masih perlu melemparkan sijil kepada mereka. Untuk menentukan kaedah sambungan yang berbeza, anda perlu menggunakan Apple Configurator 2. Sehubungan itu, anda mesti memuat turunnya ke Mac anda, mencipta profil baharu dan menambah semua tetapan WiFi yang diperlukan.
Configurator Apple
Masukkan nama rangkaian anda di sini
Jenis Keselamatan - WPA2 Enterprise
Jenis EAP yang Diterima - TTLS
Nama Pengguna dan Kata Laluan - biarkan kosong
Pengesahan Dalaman - PAP
Identiti Luar-klien
Tab Amanah. Di sini kami menentukan domain kami
Semua. Profil boleh disimpan, ditandatangani dan diedarkan kepada peranti
Selepas profil sedia, anda perlu memuat turunnya ke Mac anda dan memasangnya. Semasa proses pemasangan, anda perlu menentukan usernmae_ldap dan password_ldap pengguna:
iOS
Prosesnya serupa dengan macOS. Anda perlu menggunakan profil (anda boleh menggunakan yang sama seperti untuk macOS. Cara membuat profil dalam Apple Configurator, lihat di atas).
Muat turun profil, pasang, masukkan bukti kelayakan, sambungkan:
Itu sahaja. Kami menyediakan pelayan Radius, menyegerakkannya dengan FreeIPA, dan memberitahu pusat akses Ubiquiti untuk menggunakan WPA2-EAP.
Soalan yang mungkin
V: bagaimana untuk memindahkan profil/sijil kepada pekerja?
TENTANG: Saya menyimpan semua sijil/profil di ftp dengan akses web. Meningkatkan rangkaian tetamu dengan had laju dan akses hanya ke Internet, kecuali ftp.
Pengesahan berlangsung selama 2 hari, selepas itu ia ditetapkan semula dan pelanggan dibiarkan tanpa Internet. Itu. apabila pekerja ingin menyambung ke WiFi, dia mula-mula menyambung ke rangkaian tetamu, mengakses FTP, memuat turun sijil atau profil yang dia perlukan, memasangnya, dan kemudian boleh menyambung ke rangkaian korporat.
V: mengapa tidak menggunakan skema dengan MSCHAPv2? Dia lebih selamat!
TENTANG: Pertama, skim sedemikian berfungsi dengan baik pada NPS (Sistem Dasar Rangkaian Windows), dalam pelaksanaan kami adalah perlu untuk mengkonfigurasi LDAP (FreeIpa) tambahan dan menyimpan cincang kata laluan pada pelayan. Tambah. adalah tidak digalakkan untuk membuat tetapan, kerana. ini boleh membawa kepada pelbagai masalah untuk menyegerakkan ultrasound. Kedua, cincangan ialah MD4, jadi ia tidak menambahkan banyak keselamatan.
V: adakah mungkin untuk membenarkan peranti dengan alamat mac?
TENTANG: TIDAK, ini tidak selamat, penyerang boleh menukar alamat MAC, dan lebih-lebih lagi kebenaran oleh alamat MAC tidak disokong pada banyak peranti
V: untuk apa secara amnya semua sijil ini digunakan? bolehkah anda menyertai tanpa mereka?
TENTANG: sijil digunakan untuk membenarkan pelayan. Itu. apabila menyambung, peranti menyemak sama ada ia adalah pelayan yang boleh dipercayai atau tidak. Jika ya, maka pengesahan diteruskan, jika tidak, sambungan ditutup. Anda boleh menyambung tanpa sijil, tetapi jika penyerang atau jiran menyediakan pelayan jejari dan titik akses dengan nama yang sama seperti nama kami di rumah, dia boleh memintas kelayakan pengguna dengan mudah (jangan lupa bahawa ia dihantar dalam teks yang jelas). Dan apabila sijil digunakan, musuh akan melihat dalam lognya hanya Nama Pengguna rekaan kami - tetamu atau pelanggan dan ralat jenis - Sijil CA Tidak Diketahui
sedikit lagi tentang macOSBiasanya, pada macOS, pemasangan semula sistem dilakukan melalui Internet. Dalam mod pemulihan, Mac mesti disambungkan ke WiFi dan WiFi korporat kami mahupun rangkaian tetamu tidak akan berfungsi di sini. Secara peribadi, saya membangkitkan rangkaian lain, WPA2-PSK biasa, tersembunyi, hanya untuk operasi teknikal. Atau anda juga boleh membuat pemacu kilat USB boleh boot dengan sistem terlebih dahulu. Tetapi jika popi adalah selepas 2015, anda masih perlu mencari penyesuai untuk pemacu kilat ini)
Sumber: www.habr.com