Beberapa contoh pengorganisasian WiFi perusahaan telah dijelaskan. Di sini saya akan menjelaskan bagaimana saya menerapkan solusi tersebut dan masalah yang saya temui saat menghubungkan pada perangkat yang berbeda. Kami akan menggunakan LDAP yang ada dengan pengguna mapan, menginstal FreeRadius dan mengkonfigurasi WPA2-Enterprise pada pengontrol Ubnt. Segalanya tampak sederhana. Mari kita lihat…
Sedikit tentang metode EAP
Sebelum melanjutkan tugas, kita perlu memutuskan metode otentikasi mana yang akan kita gunakan dalam solusi kita.
Dari wikipedia:
EAP adalah kerangka otentikasi yang sering digunakan dalam jaringan nirkabel dan koneksi point-to-point. Format ini pertama kali dijelaskan di RFC 3748 dan diperbarui di RFC 5247.
EAP digunakan untuk memilih metode autentikasi, kunci sandi, dan memproses kunci tersebut dengan plug-in yang disebut metode EAP. Ada banyak metode EAP, baik yang didefinisikan dengan EAP itu sendiri maupun dirilis oleh masing-masing vendor. EAP tidak mendefinisikan lapisan link, hanya mendefinisikan format pesan. Setiap protokol yang menggunakan EAP memiliki protokol enkapsulasi pesan EAP sendiri.
Cara-caranya sendiri:
- LEAP adalah protokol berpemilik yang dikembangkan oleh CISCO. Kerentanan ditemukan. Saat ini tidak direkomendasikan untuk digunakan
- EAP-TLS didukung dengan baik di antara vendor nirkabel. Ini adalah protokol yang aman karena merupakan penerus standar SSL. Menyiapkan klien cukup rumit. Anda memerlukan sertifikat klien selain kata sandi. Didukung di banyak sistem
- EAP-TTLS - didukung secara luas di banyak sistem, menawarkan keamanan yang baik dengan menggunakan sertifikat PKI hanya di server otentikasi
- EAP-MD5 adalah standar terbuka lainnya. Menawarkan keamanan minimal. Rentan, tidak mendukung otentikasi timbal balik dan pembuatan kunci
- EAP-IKEv2 - berdasarkan Internet Key Exchange Protocol versi 2. Menyediakan otentikasi timbal balik dan pembuatan kunci sesi antara klien dan server
- PEAP adalah solusi gabungan CISCO, Microsoft dan RSA Security sebagai standar terbuka. Banyak tersedia dalam produk, memberikan keamanan yang sangat baik. Mirip dengan EAP-TTLS, hanya membutuhkan sertifikat di sisi server
- PEAPv0/EAP-MSCHAPv2 - setelah EAP-TLS, ini adalah standar kedua yang banyak digunakan di dunia. Hubungan klien-server yang digunakan di Microsoft, Cisco, Apple, Linux
- PEAPv1/EAP-GTC - Dibuat oleh Cisco sebagai alternatif PEAPv0/EAP-MSCHAPv2. Tidak melindungi data otentikasi dengan cara apa pun. Tidak didukung pada OS Windows
- EAP-FAST adalah teknik yang dikembangkan oleh Cisco untuk memperbaiki kekurangan LEAP. Menggunakan Kredensial Akses Terlindungi (PAC). Benar-benar belum selesai
Dari semua keragaman ini, pilihannya masih belum banyak. Diperlukan metode autentikasi: keamanan yang baik, dukungan di semua perangkat (Windows 10, macOS, Linux, Android, iOS) dan, faktanya, semakin sederhana semakin baik. Oleh karena itu, pilihan jatuh pada EAP-TTLS yang dikombinasikan dengan protokol PAP.
Mungkin timbul pertanyaan – Mengapa menggunakan PAP? karena dia mengirimkan kata sandi dengan jelas?
Ya itu betul. Komunikasi antara FreeRadius dan FreeIPA akan berlangsung persis seperti ini. Dalam mode debug, Anda dapat melacak bagaimana nama pengguna dan kata sandi dikirim. Ya, dan biarkan saja, hanya Anda yang memiliki akses ke server FreeRadius.
Anda dapat membaca lebih lanjut tentang cara kerja EAP-TTLS
RADIUS Gratis
Kami akan mengupgrade FreeRadius ke CentOS 7.6. Tidak ada yang rumit disini, kami menginstalnya dengan cara biasa.
yum install freeradius freeradius-utils freeradius-ldap -y
Versi 3.0.13 diinstal dari paket. Yang terakhir bisa diambil
Setelah itu, FreeRadius sudah berfungsi. Anda dapat menghapus komentar pada baris di /etc/raddb/users
steve Cleartext-Password := "testing"
Luncurkan ke server dalam mode debug
freeradius -X
Dan buat tes koneksi dari localhost
radtest steve testing 127.0.0.1 1812 testing123
Kami menerima jawaban Menerima Id Akses-Terima 115 dari 127.0.0.1:1812 hingga 127.0.0.1:56081 panjang 20, itu berarti semuanya baik-baik saja. Teruskan.
Kami menghubungkan modul lap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Dan kami akan segera mengubahnya. Kita membutuhkan 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}})"
}
...
Mulai ulang server radius dan periksa sinkronisasi pengguna LDAP:
radtest user_ldap password_ldap localhost 1812 testing123
Mengedit eap masuk mods-enabled/eap
Di sini kami menambahkan dua contoh eap. Mereka hanya berbeda dalam sertifikat dan kunci. Di bawah ini saya akan menjelaskan mengapa demikian.
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"
}
}
Pengeditan lebih lanjut situs diaktifkan/default. Bagian otorisasi dan autentikasi menarik.
situs diaktifkan/default
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
}
Di bagian otorisasi, kami menghapus semua modul yang tidak kami perlukan. Kami hanya menyisakan ldap. Tambahkan verifikasi klien berdasarkan nama pengguna. Itu sebabnya kami menambahkan dua contoh eap di atas.
Multi EAPFaktanya adalah saat menghubungkan beberapa perangkat, kami akan menggunakan sertifikat sistem dan menentukan domain. Kami memiliki sertifikat dan kunci dari otoritas sertifikat tepercaya. Secara pribadi, menurut saya, prosedur koneksi seperti itu lebih mudah daripada membuang sertifikat yang ditandatangani sendiri di setiap perangkat. Tetapi bahkan tanpa sertifikat yang ditandatangani sendiri, hal itu tetap tidak berhasil. Perangkat Samsung dan Android =< 6 versi tidak dapat menggunakan sertifikat sistem. Oleh karena itu, kami membuat instance eap-guest terpisah untuk mereka dengan sertifikat yang ditandatangani sendiri. Untuk semua perangkat lainnya, kami akan menggunakan eap-client dengan sertifikat tepercaya. Nama Pengguna ditentukan oleh bidang Anonim saat perangkat terhubung. Hanya 3 nilai yang diperbolehkan: Tamu, Klien, dan bidang kosong. Segala sesuatu yang lain dibuang. Ini akan dikonfigurasikan pada politisi. Saya akan memberikan contohnya nanti.
Mari kita edit bagian otorisasi dan autentikasi diaktifkan situs/terowongan dalam
diaktifkan situs/terowongan 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
}
Selanjutnya, Anda perlu menentukan dalam kebijakan nama mana yang dapat digunakan untuk login anonim. Mengedit kebijakan.d/filter.
Anda perlu menemukan baris yang mirip dengan ini:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Dan di bawah di elsif tambahkan nilai yang diinginkan:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Sekarang kita perlu pindah ke direktori sertifikat. Di sini Anda perlu meletakkan kunci dan sertifikat dari otoritas sertifikat tepercaya, yang sudah kita miliki dan perlukan untuk membuat sertifikat yang ditandatangani sendiri untuk eap-guest.
Ubah parameter dalam file 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 di file server.cnf. Kami hanya berubah
nama yang umum:
server.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"
Membuat:
make
Siap. Diterima server.crt и server.kunci kami sudah mendaftar di atas di eap-guest.
Dan terakhir, mari tambahkan titik akses kita ke file klien.conf. Saya punya 7. Agar tidak menambahkan setiap titik secara terpisah, kami hanya akan menulis jaringan di mana mereka berada (titik akses saya berada di VLAN terpisah).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Pengontrol di mana-mana
Kami meningkatkan jaringan terpisah pada pengontrol. Biarlah 192.168.2.0/24
Buka pengaturan -> profil. Kami membuat yang baru:
Kami menulis alamat dan port server radius serta kata sandi yang tertulis di file klien.conf:
Buat nama jaringan nirkabel baru. Pilih WPA-EAP (Enterprise) sebagai metode otentikasi dan tentukan profil radius yang dibuat:
Kami menyimpan semuanya, menerapkan, dan melanjutkan.
Menyiapkan klien
Mari kita mulai dari bagian tersulit!
Windows 10
Kesulitannya terletak pada kenyataan bahwa Windows belum mengetahui cara terhubung ke WiFi perusahaan melalui domain. Oleh karena itu, kami harus mengunggah sertifikat kami secara manual ke penyimpanan sertifikat tepercaya. Di sini Anda dapat menggunakan tanda tangan sendiri dan dari otoritas sertifikasi. Saya akan menggunakan yang kedua.
Selanjutnya, Anda perlu membuat koneksi baru. Untuk melakukan ini, buka pengaturan jaringan dan Internet -> Jaringan dan Pusat Berbagi -> Buat dan konfigurasikan koneksi atau jaringan baru:
Kami secara manual memasukkan nama jaringan dan mengubah jenis keamanan. Kemudian klik mengubah pengaturan koneksi dan di tab Keamanan, pilih otentikasi jaringan - EAP-TTLS.
Kami masuk ke parameter, menentukan kerahasiaan otentikasi - klien. Sebagai otoritas sertifikasi tepercaya, pilih sertifikat yang kami tambahkan, centang kotak "Jangan berikan undangan kepada pengguna jika server tidak dapat diotorisasi" dan pilih metode otentikasi - kata sandi tidak terenkripsi (PAP).
Selanjutnya, buka pengaturan lanjutan, beri tanda centang pada "Tentukan mode otentikasi." Pilih "Otentikasi Pengguna" dan klik menyimpan kredensial. Di sini Anda harus memasukkan nama pengguna_ldap dan kata sandi_ldap
Kami menyimpan semuanya, menerapkan, menutup. Anda dapat terhubung ke jaringan baru.
Linux
Saya menguji di Ubuntu 18.04, 18.10, Fedora 29, 30.
Pertama, mari unduh sertifikat kita. Saya tidak menemukan di Linux apakah mungkin untuk menggunakan sertifikat sistem dan apakah ada penyimpanan seperti itu sama sekali.
Mari terhubung ke domain. Oleh karena itu, kami memerlukan sertifikat dari otoritas sertifikasi tempat sertifikat kami dibeli.
Semua koneksi dibuat dalam satu jendela. Memilih jaringan kami:
klien anonim
domain - domain tempat sertifikat diterbitkan
Android
non-Samsung
Mulai versi 7, saat menghubungkan WiFi, Anda dapat menggunakan sertifikat sistem dengan menentukan domain saja:
domain - domain tempat sertifikat diterbitkan
klien anonim
Samsung
Seperti yang saya tulis di atas, perangkat Samsung tidak tahu cara menggunakan sertifikat sistem saat tersambung ke WiFi, dan tidak memiliki kemampuan untuk tersambung melalui domain. Oleh karena itu, Anda harus menambahkan sertifikat root dari otoritas sertifikasi secara manual (ca.pem, kami mengambilnya di server Radius). Di sinilah tanda tangan sendiri akan digunakan.
Unduh sertifikat ke perangkat Anda dan instal.
Memasang sertifikat
Dalam hal ini, Anda perlu menyetel pola buka kunci layar, kode PIN, atau kata sandi, jika belum disetel:
Saya menunjukkan versi rumit dalam memasang sertifikat. Di sebagian besar perangkat, cukup klik pada sertifikat yang diunduh.
Ketika sertifikat diinstal, Anda dapat melanjutkan ke koneksi:
sertifikat - tunjukkan yang telah diinstal
pengguna anonim - tamu
MacOS
Perangkat Apple yang dikeluarkan dari kemasannya hanya dapat terhubung ke EAP-TLS, tetapi Anda masih perlu memberikan sertifikat ke perangkat tersebut. Untuk menentukan metode koneksi lain, Anda perlu menggunakan Apple Configurator 2. Oleh karena itu, Anda harus mengunduhnya terlebih dahulu ke Mac Anda, membuat profil baru, dan menambahkan semua pengaturan WiFi yang diperlukan.
Apple Configurator
Masukkan nama jaringan Anda di sini
Jenis Keamanan - Perusahaan WPA2
Jenis EAP yang Diterima - TTLS
Nama Pengguna dan Kata Sandi - biarkan kosong
Otentikasi Batin - PAP
Klien Identitas Luar
tab kepercayaan. Di sini kami menentukan domain kami
Semua. Profil dapat disimpan, ditandatangani, dan didistribusikan ke perangkat
Setelah profil siap, Anda perlu mengunduhnya ke Mac dan menginstalnya. Selama proses instalasi, Anda perlu menentukan usernmae_ldap dan password_ldap pengguna:
iOS
Prosesnya mirip dengan macOS. Anda perlu menggunakan profil (Anda dapat menggunakan profil yang sama seperti untuk macOS. Cara membuat profil di Apple Configurator, lihat di atas).
Unduh profil, instal, masukkan kredensial, sambungkan:
Itu saja. Kami menyiapkan server Radius, menyinkronkannya dengan FreeIPA, dan meminta Ubiquiti AP untuk menggunakan WPA2-EAP.
Pertanyaan yang mungkin
Dalam: bagaimana cara mentransfer profil/sertifikat ke karyawan?
Tentang: Saya menyimpan semua sertifikat/profil di ftp dengan akses web. Mengangkat jaringan tamu dengan batas kecepatan dan akses hanya ke Internet, kecuali ftp.
Otentikasi berlangsung 2 hari, setelah itu diatur ulang dan klien dibiarkan tanpa Internet. Itu. Ketika seorang karyawan ingin terhubung ke WiFi, pertama-tama dia terhubung ke jaringan tamu, masuk ke FTP, mengunduh sertifikat atau profil yang dia perlukan, menginstalnya, dan kemudian dapat terhubung ke jaringan perusahaan.
Dalam: mengapa tidak menggunakan skema dengan MSCHAPv2? Dia lebih aman!
Tentang: Pertama, skema seperti itu berfungsi dengan baik di NPS (Sistem Kebijakan Jaringan Windows), dalam implementasi kami perlu untuk mengkonfigurasi tambahan LDAP (FreeIpa) dan menyimpan hash kata sandi di server. Menambahkan. tidak disarankan untuk melakukan pengaturan, karena. hal ini dapat menyebabkan berbagai masalah sinkronisasi USG. Kedua, hashnya adalah MD4, jadi tidak menambah banyak keamanan.
Dalam: apakah mungkin untuk mengotorisasi perangkat berdasarkan alamat Mac?
Tentang: TIDAK, ini tidak aman, penyerang dapat mengubah alamat MAC, dan terlebih lagi otorisasi berdasarkan alamat MAC tidak didukung di banyak perangkat
Dalam: Mengapa menggunakan semua sertifikat ini? Anda dapat terhubung tanpa mereka
Tentang: sertifikat digunakan untuk mengotorisasi server. Itu. Saat terhubung, perangkat memeriksa apakah itu server yang bisa dipercaya atau tidak. Jika ya, maka otentikasi dilanjutkan; jika tidak, koneksi ditutup. Anda dapat terhubung tanpa sertifikat, tetapi jika penyerang atau tetangga menyiapkan server radius dan titik akses dengan nama yang sama dengan milik kita di rumah, dia dapat dengan mudah mencegat kredensial pengguna (jangan lupa bahwa kredensial tersebut dikirimkan dalam bentuk teks yang jelas) . Dan ketika sertifikat digunakan, musuh hanya akan melihat di lognya Nama Pengguna fiktif kami - tamu atau klien dan kesalahan ketik - Sertifikat CA Tidak Dikenal
sedikit lebih banyak tentang MacOSBiasanya di MacOS, instalasi ulang sistem dilakukan melalui Internet. Dalam mode pemulihan, Mac harus terhubung ke WiFi, dan WiFi perusahaan maupun jaringan tamu kami tidak akan berfungsi di sini. Secara pribadi, saya mengangkat jaringan lain, WPA2-PSK biasa, tersembunyi, hanya untuk operasi teknis. Atau Anda masih dapat membuat USB flash drive yang dapat di-boot dengan sistem terlebih dahulu. Tetapi jika poppynya setelah tahun 2015, Anda masih perlu mencari adaptor untuk flash drive ini)
Sumber: www.habr.com