Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Sawetara conto ngatur WiFi perusahaan wis diterangake. Ing kene aku bakal njlèntrèhaké cara aku ngleksanakake solusi kasebut lan masalah sing ditemoni nalika nyambungake ing piranti sing beda-beda. Kita bakal nggunakake LDAP ana karo pangguna diadegaké, nginstal FreeRadius lan ngatur WPA2-Enterprise ing controller Ubnt. Kabeh katon prasaja. Ayo ndeleng…

A sethitik babagan cara EAP

Sadurunge miwiti tugas, kita kudu mutusake cara otentikasi sing bakal digunakake ing solusi kita.

Saka Wikipedia:

EAP minangka kerangka otentikasi sing asring digunakake ing jaringan nirkabel lan sambungan point-to-point. Format kasebut pisanan diterangake ing RFC 3748 lan dianyari ing RFC 5247.
EAP digunakake kanggo milih cara otentikasi, nransfer kunci, lan ngolah kunci kasebut kanthi plugin sing diarani metode EAP. Ana akeh cara EAP, sing ditemtokake karo EAP dhewe lan sing dirilis dening vendor individu. EAP ora nemtokake lapisan link, mung nemtokake format pesen. Saben protokol sing nggunakake EAP duwe protokol enkapsulasi pesen EAP dhewe.

Metode kasebut dhewe:

  • LEAP minangka protokol proprietary sing dikembangake dening CISCO. Kerentanan ditemokake. Saiki ora dianjurake kanggo nggunakake
  • EAP-TLS didhukung kanthi apik ing antarane vendor nirkabel. Iki minangka protokol sing aman amarga minangka penerus standar SSL. Nyiyapake klien cukup rumit. Sampeyan mbutuhake sertifikat klien saliyane sandhi. Didhukung ing akeh sistem
  • EAP-TTLS - didhukung kanthi akeh ing akeh sistem, nawakake keamanan sing apik nggunakake sertifikat PKI mung ing server otentikasi
  • EAP-MD5 minangka standar mbukak liyane. Nawakake keamanan minimal. Rentan, ora ndhukung otentikasi bebarengan lan generasi kunci
  • EAP-IKEv2 - adhedhasar Internet Key Exchange Protocol versi 2. Nyedhiyakake bukti asli bebarengan lan panyiapan kunci sesi antarane klien lan server
  • PEAP minangka solusi gabungan antarane CISCO, Microsoft lan RSA Security minangka standar mbukak. Kasedhiya ing produk, nyedhiyakake safety sing apik banget. Padha karo EAP-TTLS, mung mbutuhake sertifikat sisih server
  • PEAPv0/EAP-MSCHAPv2 - Sawise EAP-TLS, iki minangka standar nomer loro sing digunakake ing donya. Hubungan klien-server sing digunakake ing Microsoft, Cisco, Apple, Linux
  • PEAPv1 / EAP-GTC - Digawe dening Cisco minangka alternatif kanggo PEAPv0 / EAP-MSCHAPv2. Ora nglindhungi data otentikasi kanthi cara apa wae. Ora didhukung ing OS Windows
  • EAP-FAST minangka cara sing dikembangake dening Cisco kanggo mbenerake kekurangan LEAP. Migunakake Kredensial Akses sing Dilindungi (PAC). Rampung durung rampung

Saka kabeh macem-macem iki, pilihan isih ora apik. Cara otentikasi dibutuhake: keamanan sing apik, dhukungan ing kabeh piranti (Windows 10, macOS, Linux, Android, iOS) lan, nyatane, sing luwih gampang luwih apik. Mulane, pilihan tiba ing EAP-TTLS magepokan karo protokol PAP.
Pitakonan bisa uga muncul - Napa nggunakake PAP? Sawise kabeh, iku ngirim sandhi ing teks cetha?

Pancen bener. Komunikasi antarane FreeRadius lan FreeIPA bakal kedadeyan kaya mangkene. Ing mode debug, sampeyan bisa nglacak carane jeneng pangguna lan sandhi dikirim. Ya, lan ayo padha lunga, mung sampeyan duwe akses menyang server FreeRadius.

Sampeyan bisa maca liyane babagan cara kerja EAP-TTLS kene

FreeRADIUS

Kita bakal nganyarke FreeRadius menyang CentOS 7.6. Ora ana sing rumit ing kene, kita nginstal kanthi cara biasa.

yum install freeradius freeradius-utils freeradius-ldap -y

Saka paket kasebut, versi 3.0.13 wis diinstal. Sing terakhir bisa dijupuk ing https://freeradius.org/

Sawise iki, FreeRadius wis bisa digunakake. Sampeyan bisa mbusak komentar baris ing /etc/raddb/users

steve   Cleartext-Password := "testing"

Bukak menyang server ing mode debug

freeradius -X

Lan nggawe sambungan test saka localhost

radtest steve testing 127.0.0.1 1812 testing123

Kita nampa jawaban Ditampa Akses-Nampa Id 115 saka 127.0.0.1:1812 dadi 127.0.0.1:56081 dawa 20, tegese kabeh OK. Terusna.

Nyambung modul ldap.

ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap

Lan kita bakal langsung ngganti. Kita butuh FreeRadius supaya bisa ngakses FreeIPA

mods-aktif / 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}})"
}
...

Wiwiti maneh server radius lan priksa sinkronisasi pangguna LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Ngedit eap in mods-aktif / eap
Ing kene kita bakal nambah rong conto eap. Bakal beda-beda mung ing sertifikat lan kunci. Aku bakal nerangake kenapa iki bener ing ngisor iki.

mods-aktif / 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"
           }
}

Sabanjure kita nyunting situs-aktif / standar. Aku kasengsem ing wewenang lan keasliane bagean.

situs-aktif / standar

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
}

Ing bagean wewenang kita mbusak kabeh modul sing ora perlu. Kita ninggalake mung ldap. Tambah verifikasi klien kanthi jeneng pangguna. Pramila kita nambahake rong conto eap ing ndhuwur.

Multi EAPKasunyatane yaiku nalika nyambungake sawetara piranti, kita bakal nggunakake sertifikat sistem lan nemtokake domain kasebut. Kita duwe sertifikat lan kunci saka panguwasa sertifikat sing dipercaya. Secara pribadi, miturut pendapatku, prosedur sambungan iki luwih gampang tinimbang mbuwang sertifikat sing ditandatangani dhewe ing saben piranti. Nanging sanajan tanpa sertifikat sing ditandatangani dhewe, isih ora bisa ninggalake. Piranti Samsung lan Android =< 6 versi ora ngerti carane nggunakake sertifikat sistem. Mula, kita nggawe conto eap-tamu sing kapisah karo sertifikat sing ditandatangani dhewe. Kanggo kabeh piranti liyane, kita bakal nggunakake eap-klien kanthi sertifikat sing dipercaya. Jeneng pangguna ditemtokake dening kolom Anonim nalika nyambungake piranti. Mung 3 nilai sing diidini: Tamu, Klien lan kolom kosong. Sisane dibuwang kabeh. Iki bisa diatur ing kabijakan. Aku bakal menehi conto sethithik mengko.

Ayo ngowahi wewenang lan otentikasi bagean ing situs-aktif / jero-terowongan

situs-aktif / jero-terowongan

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
}

Sabanjure, sampeyan kudu nemtokake ing kawicaksanan jeneng sing bisa digunakake kanggo login anonim. Ngedit kebijakan.d/filter.

Sampeyan kudu nemokake garis sing padha karo iki:

if (&outer.request:User-Name !~ /^(anon|@)/) {
  update request {
    Module-Failure-Message = "User-Name is not anonymized"
  }
  reject
}

Lan ing ngisor iki ing elsif nambahake nilai sing dibutuhake:

elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
  update request {
    Module-Failure-Message = "User-Name is not anonymized"
  }
  reject
}

Saiki kita kudu pindhah menyang direktori sertifikat. Ing kene kita kudu nyelehake kunci lan sertifikat saka panguwasa sertifikasi sing dipercaya, sing wis ana, lan kita kudu ngasilake sertifikat sing ditandatangani dhewe kanggo tamu.

Ngganti paramèter ing 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"

Kita nulis nilai sing padha ing file kasebut server.cnf. Kita mung ngganti
Jeneng 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"

Kita nggawe:

make

siyap. Ditampa server.crt и server.key Kita wis ndhaptar ndhuwur ing eap-tamu.

Lan pungkasan, ayo nambah titik akses menyang file kasebut klien.conf. Aku duwe 7. Supaya ora nambah saben titik kanthi kapisah, kita bakal ndhaftar mung jaringan sing ana (titik aksesku ana ing VLAN sing kapisah).

client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}

Pengontrol Ubiquiti

We mundhakaken jaringan kapisah ing controller. Ayo dadi 192.168.2.0/24
Pindhah menyang setelan -> profil. Ayo nggawe sing anyar:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kita nulis alamat lan port server radius lan sandhi sing ditulis ing file kasebut klien.conf:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Nggawe jeneng jaringan nirkabel anyar. Pilih WPA-EAP (Enterprise) minangka metode otentikasi lan nemtokake profil radius sing digawe:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kita nyimpen kabeh, aplikasi lan nerusake.

Nyetel klien

Ayo dadi miwiti karo bagean paling angel!

Windows 10

Kesulitan kasebut amarga kasunyatane Windows durung ngerti carane nyambung menyang WiFi perusahaan liwat domain. Mula, kita kudu ngunggah sertifikat kanthi manual menyang toko sertifikat sing dipercaya. Ing kene sampeyan bisa nggunakake salah siji sing ditandatangani dhewe utawa siji saka panguwasa sertifikasi. Aku bakal nggunakake sing kapindho.

Sabanjure sampeyan kudu nggawe sambungan anyar. Kanggo nindakake iki, pindhah menyang Setelan Jaringan lan Internet -> Jaringan lan Pusat Enggo bareng -> Gawe lan konfigurasi sambungan utawa jaringan anyar:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kita ngetik jeneng jaringan kanthi manual lan ngganti jinis keamanan. Banjur klik ing ngganti setelan sambungan lan ing tab Keamanan, pilih otentikasi jaringan - EAP-TTLS.

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Pindhah menyang setelan, atur rahasia otentikasi - klien. Minangka panguwasa sertifikasi sing dipercaya, pilih sertifikat sing ditambahake, centang kothak "Aja ngetokake undhangan menyang pangguna yen server ora bisa diwenehi wewenang" lan pilih metode otentikasi - sandi plaintext (PAP).

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Sabanjure, pindhah menyang paramèter tambahan lan centhang kothak "Temtokake mode otentikasi." Pilih "User Authentication" lan klik ing nyimpen Diverifikasi. Ing kene sampeyan kudu ngetik username_ldap lan password_ldap

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kita nyimpen, nglamar, nutup kabeh. Sampeyan bisa nyambung menyang jaringan anyar.

Linux

Aku nyoba ing Ubuntu 18.04, 18.10, Fedora 29, 30.

Pisanan, download sertifikat kanggo sampeyan dhewe. Aku wis ora ketemu ing Linux apa iku bisa kanggo nggunakake sertifikat sistem utawa apa ana nyimpen kuwi ing kabeh.

Kita bakal nyambung liwat domain. Mula, kita butuh sertifikat saka panguwasa sertifikasi saka ngendi sertifikat kita dituku.

Kabeh sambungan digawe ing siji jendhela. Pilih jaringan kita:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

anonim - klien
domain - domain sing sertifikat ditanggepi

Android

non-Samsung

Saka versi 7, nalika nyambungake WiFi, sampeyan bisa nggunakake sertifikat sistem kanthi mung nemtokake domain:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

domain - domain sing sertifikat ditanggepi
anonim - klien

Samsung

Nalika aku nulis ing ndhuwur, piranti Samsung ora ngerti carane nggunakake sertifikat sistem nalika nyambungake WiFi, lan padha ora duwe kemampuan kanggo nyambung liwat domain. Mulane, sampeyan kudu kanthi manual nambah sertifikat ROOT saka panguwasa sertifikasi (ca.pem, njupuk saka server Radius). Iki ngendi sing bakal ditandatangani dhewe bakal digunakake.

Ngundhuh sertifikat menyang piranti lan nginstal.

Nginstal sertifikatPerusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Ing kasus iki, sampeyan kudu nyetel pola bukak kunci layar, kode PIN utawa sandhi, yen durung disetel:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Aku nuduhake pilihan rumit kanggo nginstal sertifikat. Ing umume piranti, cukup klik ing sertifikat sing diundhuh.

Nalika sertifikat wis diinstal, sampeyan bisa nerusake menyang sambungan:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

certificate - nuduhake siji sing diinstal
pangguna anonim - tamu

MacOS

Piranti Apple mung bisa nyambung menyang EAP-TLS metu saka kothak, nanging sampeyan isih kudu nyedhiyani karo certificate. Kanggo nemtokake cara sambungan sing beda, sampeyan kudu nggunakake Apple Configurator 2. Mulane, sampeyan kudu ngundhuh dhisik menyang Mac, nggawe profil anyar lan nambah kabeh setelan WiFi sing dibutuhake.

Apple ConfiguratorPerusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Ing kene kita nuduhake jeneng jaringan kita
Jinis Keamanan - WPA2 Enterprise
Jinis EAP Ditampa - TTLS
Jeneng pangguna lan sandhi - ninggalake kosong
Otentikasi Batin - PAP
Identitas njaba - klien

Tab Trust. Ing kene kita nuduhake domain kita

Kabeh. Profil kasebut bisa disimpen, ditandatangani lan disebarake menyang piranti

Sawise profil wis siyap, sampeyan kudu ngundhuh menyang Mac lan nginstal. Sajrone proses instalasi, sampeyan kudu nemtokake usernmae_ldap lan password_ldap pangguna:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

iOS

Proses kasebut padha karo macOS. Sampeyan kudu nggunakake profil (sampeyan bisa nggunakake sing padha karo macOS. Deleng ing ndhuwur babagan carane nggawe profil ing Apple Configurator).

Download profil, instal, ketik kredensial, sambungake:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Mekaten. Kita nyiyapake server Radius, nyelarasake karo FreeIPA, lan marang titik akses Ubiquiti nggunakake WPA2-EAP.

Pitakonan sing bisa ditindakake

IN: carane nransfer profil / sertifikat kanggo pegawe?

Babagan: Aku nyimpen kabeh sertifikat / profil ing FTP karo akses liwat web. Aku nyiyapake jaringan tamu kanthi watesan kacepetan lan akses mung menyang Internet, kajaba FTP.
Otentikasi suwene 2 dina, sawise iku direset lan klien ditinggal tanpa Internet. Iku. Nalika karyawan pengin nyambung menyang WiFi, dheweke pisanan nyambung menyang jaringan tamu, mlebu menyang FTP, ngundhuh sertifikat utawa profil sing dibutuhake, nginstal, banjur bisa nyambung menyang jaringan perusahaan.

IN: kok ora nggunakake skema karo MSCHAPv2? iku luwih aman!

Babagan: sepisanan, skema iki bisa digunakake kanthi apik ing NPS (Windows Network Policy System), ing implementasine kita kudu ngonfigurasi tambahan LDAP (FreeIpa) lan nyimpen hash sandhi ing server. Tambah. Ora dianjurake kanggo nggawe setelan, amarga iki bisa nyebabake macem-macem masalah karo sinkronisasi sistem ultrasonik. Kapindho, hash yaiku MD4, mula ora nambah keamanan

IN: Apa bisa menehi wewenang piranti nggunakake alamat mac?

Babagan: Ora, iki ora aman, panyerang bisa ngapusi alamat MAC, lan luwih-luwih, wewenang alamat MAC ora didhukung ing akeh piranti.

IN: Napa nggunakake kabeh sertifikat iki? sampeyan bisa nyambung tanpa wong

Babagan: sertifikat digunakake kanggo wewenang server. Sing. Nalika nyambungake, piranti mriksa apa iku server sing bisa dipercaya utawa ora. Yen mangkono, banjur otentikasi diterusake; yen ora, sambungan ditutup. Sampeyan bisa nyambung tanpa sertifikat, nanging yen panyerang utawa pepadhamu nyiyapake server radius lan titik akses kanthi jeneng sing padha karo kita ing omah, dheweke bisa gampang nyegat kredensial pangguna (aja lali yen dikirim kanthi teks sing jelas). . Lan nalika sertifikat digunakake, mungsuh mung bakal weruh ing log dheweke mung fiktif Jeneng Pangguna - tamu utawa klien lan kesalahan jinis - Ora dingerteni CA Certificate

sethitik liyane babagan macOSBiasane, ing macOS, instal maneh sistem ditindakake liwat Internet. Ing mode pemulihan, Mac kudu disambungake menyang WiFi, lan WiFi perusahaan utawa jaringan tamu ora bakal bisa digunakake ing kene. Secara pribadi, aku nginstal jaringan liya, WPA2-PSK biasa, didhelikake, mung kanggo operasi teknis. Utawa sampeyan uga bisa nggawe bootable USB flash drive karo sistem ing advance. Nanging yen Mac sampeyan sawise 2015, sampeyan uga kudu golek adaptor kanggo flash drive iki)

Source: www.habr.com

Add a comment