Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Sababaraha conto ngatur WiFi perusahaan parantos dijelaskeun. Di dieu kuring bakal ngajelaskeun kumaha kuring ngalaksanakeun solusi anu sami sareng masalah anu kuring kedah nyanghareupan nalika nyambungkeun kana alat anu béda. Kami bakal nganggo LDAP anu aya sareng pangguna anu kadaptar, ngangkat FreeRadius sareng ngonpigurasikeun WPA2-Enterprise dina controller Ubnt. Sagalana sigana basajan. Urang tingali…

A saeutik ngeunaan métode EAP

Sateuacan neraskeun tugas, urang kedah mutuskeun metode auténtikasi mana anu bakal kami anggo dina solusi kami.

Ti Wikipedia:

EAP mangrupikeun kerangka auténtikasi anu sering dianggo dina jaringan nirkabel sareng sambungan titik-ka-titik. Formatna munggaran dijelaskeun dina RFC 3748 sareng diropéa dina RFC 5247.
EAP dianggo pikeun milih metodeu auténtikasi, lulus konci, sareng ngolah konci éta nganggo plug-in anu disebut metode EAP. Aya seueur metode EAP, duanana didefinisikeun sareng EAP sorangan sareng dikaluarkeun ku padagang individu. EAP teu nangtukeun lapisan link, éta ngan nangtukeun format pesen. Unggal protokol nganggo EAP gaduh protokol enkapsulasi pesen EAP sorangan.

Métode sorangan:

  • LEAP mangrupikeun protokol proprietary anu dikembangkeun ku CISCO. Vulnerabilities kapanggih. Ayeuna henteu disarankeun pikeun dianggo
  • EAP-TLS dirojong saé diantara padagang nirkabel. Éta mangrupikeun protokol anu aman sabab éta panerusna standar SSL. Nyetél klien cukup pajeulit. Anjeun peryogi sertipikat klien salian kecap akses. Dirojong dina seueur sistem
  • EAP-TTLS - loba dirojong dina loba sistem, nawarkeun kaamanan alus ku ngagunakeun sertipikat PKI ngan dina server auténtikasi.
  • EAP-MD5 mangrupikeun standar kabuka anu sanés. Nawarkeun kaamanan minimal. Rentan, henteu ngadukung silih auténtikasi sareng generasi konci
  • EAP-IKEv2 - dumasar kana Internet Key Exchange Protocol versi 2. Nyadiakeun auténtikasi silih sarta ngadegkeun konci sési antara klien jeung server
  • PEAP mangrupikeun solusi gabungan CISCO, Microsoft sareng RSA Security salaku standar terbuka. Lega sadia dina produk, nyadiakeun kaamanan pohara alus. Sarupa jeung EAP-TTLS, merlukeun ukur sertipikat dina sisi server
  • PEAPv0/EAP-MSCHAPv2 - sanggeus EAP-TLS, ieu standar kadua loba dipaké di dunya. Hubungan klien-server dipaké dina Microsoft, Cisco, Apple, Linux
  • PEAPv1 / EAP-GTC - Dijieun ku Cisco salaku alternatif pikeun PEAPv0 / EAP-MSCHAPv2. Henteu ngajaga data auténtikasi dina cara naon waé. Henteu dirojong dina OS Windows
  • EAP-FAST mangrupikeun téknik anu dikembangkeun ku Cisco pikeun ngabenerkeun kakurangan LEAP. Ngagunakeun Kapercayaan Aksés Dilindungan (PAC). Sapinuhna tacan beres

Tina sadaya karagaman ieu, pilihanna masih henteu saé. Metodeu auténtikasi diperyogikeun: kaamanan anu saé, dukungan dina sadaya alat (Windows 10, macOS, Linux, Android, ios) sareng, saleresna, langkung saderhana langkung saé. Ku alatan éta, pilihan murag dina EAP-TTLS ditéang jeung protokol PAP.
Patarosan tiasa timbul - Naha nganggo PAP? sabab anjeunna transmits sandi dina jelas?

Sumuhun leres. Komunikasi antara FreeRadius sareng FreeIPA bakal lumangsung ku cara ieu. Dina modeu debug, anjeun tiasa ngalacak kumaha nami pangguna sareng kecap akses dikirim. Leres, sareng ngantepkeun aranjeunna, ngan anjeun gaduh aksés kana server FreeRadius.

Anjeun tiasa maca langkung seueur ngeunaan karya EAP-TTLS di dieu

FreeRADIUS

FreeRadius bakal diangkat dina CentOS 7.6. Henteu aya anu pajeulit di dieu, kami nyetél éta dina cara biasa.

yum install freeradius freeradius-utils freeradius-ldap -y

Vérsi 3.0.13 dipasang tina bungkusan. Panungtungan bisa dicokot https://freeradius.org/

Saatos éta, FreeRadius parantos damel. Anjeun tiasa uncomment garis dina /etc/raddb/users

steve   Cleartext-Password := "testing"

Ngajalankeun kana server dina modeu debug

freeradius -X

Jeung nyieun sambungan test ti localhost

radtest steve testing 127.0.0.1 1812 testing123

Meunang jawaban Narima Aksés-Tampa Id 115 ti 127.0.0.1:1812 ka 127.0.0.1:56081 panjangna 20, hartina sagalana OK. Lajengkeun.

Urang sambungkeun modul ldap.

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

Sarta kami bakal ngarobah éta langsung. Urang peryogi FreeRadius supados tiasa ngaksés FreeIPA

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

Balikan deui server radius sareng pariksa sinkronisasi pangguna LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Ngédit eap di mods-diaktipkeun / eap
Di dieu urang tambahkeun dua instansi eap. Aranjeunna bakal béda ngan dina sertipikat sareng konci. Di handap ieu kuring bakal ngajelaskeun naha ieu kitu.

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

Ngédit salajengna situs-diaktipkeun / standar. Bagian otorisasi sareng oténtikasi anu dipikaresep.

situs-diaktipkeun / 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
}

Dina bagian authorize, urang miceun kabeh modul nu urang teu butuh. Urang ninggalkeun ukur ldap. Tambahkeun verifikasi klien ku ngaran pamaké. Éta sababna urang nambihan dua conto eap di luhur.

Multi EAPKanyataanna nyaéta nalika nyambungkeun sababaraha alat, kami bakal nganggo sertipikat sistem sareng netepkeun domain. Kami ngagaduhan sertipikat sareng konci ti otoritas sertipikat anu dipercaya. Pribadi, dina pamanggih kuring, prosedur sambungan sapertos langkung gampang tibatan ngalungkeun sertipikat anu ditandatanganan diri dina unggal alat. Tapi sanaos tanpa sertipikat anu ditandatanganan diri, éta tetep henteu hasil. Alat Samsung sareng Android =<6 versi teu tiasa nganggo sertipikat sistem. Ku alatan éta, urang nyieun hiji conto misah tina eap-tamu pikeun aranjeunna kalayan sertipikat timer ditandatanganan. Pikeun sadaya alat anu sanés, kami bakal nganggo klien eap kalayan sertipikat anu dipercaya. Ngaran pamaké ditangtukeun ku widang Anonim nalika alat disambungkeun. Ngan ukur 3 nilai anu diidinan: Tamu, Klién sareng lapangan kosong. Sagalana sejenna dipiceun. Éta bakal dikonpigurasi dina politikus. Kuring gé masihan conto saeutik engké.

Hayu urang ngédit otorisasi sareng ngaoténtikasi bagian dina situs-diaktipkeun / jero-torowongan

situs-diaktipkeun / jero-torowongan

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
}

Salajengna, anjeun kedah netepkeun dina kawijakan nami mana anu tiasa dianggo pikeun login anonim. Ngédit kawijakan.d/filter.

Anjeun kedah milarian garis anu sami sareng ieu:

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

Sareng di handap dina elsif tambahkeun nilai anu dipikahoyong:

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

Ayeuna urang kudu pindah ka diréktori sertipikat. Di dieu anjeun kedah nempatkeun konci sareng sertipikat ti otoritas sertipikat anu dipercaya, anu kami parantos gaduh sareng kedah ngahasilkeun sertipikat anu ditandatanganan diri pikeun tamu eap.

Robah parameter dina 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 nyerat nilai anu sami dina file server.cnf. Urang robah wungkul
ngaran 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"

Jieun:

make

Siap. Ditampi server.crt и server.konci kami geus didaptarkeun di luhur di eap-tamu.

Sarta pamustunganana, hayu urang tambahkeun titik aksés urang kana file klien.conf. Kuring boga 7 sahijina. Dina raraga teu nambahan unggal titik misah, urang ngan bakal nulis jaringan nu aranjeunna lokasina (titik aksés kuring dina VLAN misah).

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

Ubiquiti controller

Urang ngangkat jaringan misah on controller nu. Hayu éta 192.168.2.0/24
Pindah ka setélan -> profil. Urang nyieun nu anyar:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kami nyerat alamat sareng palabuhan tina server radius sareng kecap konci anu diserat dina file klien.conf:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Jieun ngaran jaringan nirkabel anyar. Pilih WPA-EAP (Enterprise) salaku metodeu auténtikasi sareng tangtukeun profil radius anu diciptakeun:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Urang nyimpen sagalana, nerapkeun jeung ngaléngkah.

Nyetél klien

Hayu urang mimitian ku anu paling hese!

Windows 10

Kasusahna asalna tina kanyataan yén Windows henteu acan terang kumaha nyambungkeun ka WiFi perusahaan liwat domain. Ku alatan éta, urang kudu sacara manual unggah sertipikat urang ka toko sertipikat dipercaya. Di dieu anjeun tiasa nganggo anu ditandatanganan diri sareng ti otoritas sertifikasi. Abdi badé nganggo anu kadua.

Salajengna, Anjeun kudu nyieun sambungan anyar. Jang ngalampahkeun ieu, buka setélan jaringan sareng Internét -> Jaringan sareng Pusat Babagi -> Jieun sareng konpigurasikeun sambungan atanapi jaringan énggal:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Lebetkeun nami jaringan sacara manual sareng robih jinis kaamanan. Saatos urang klik dina ngarobah setelan sambungan sarta dina tab Kaamanan, pilih auténtikasi jaringan - EAP-TTLS.

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Urang lebet kana parameter, resep karusiahan auténtikasi - langganan. Salaku otoritas sertifikasi anu dipercaya, pilih sertipikat anu kami tambahkeun, centang kotak "Ulah ngaluarkeun uleman ka pangguna upami server teu tiasa otorisasi" sareng pilih metodeu auténtikasi - sandi unencrypted (PAP).

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Salajengna, buka setélan canggih, nempatkeun keletik dina "Sebutkeun mode auténtikasi". Pilih "User Auténtikasi" teras klik dina nyimpen Kapercayaan. Di dieu anjeun kedah ngasupkeun username_ldap sareng password_ldap

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Urang nyimpen sagalana, nerapkeun, nutup. Anjeun tiasa nyambung ka jaringan anyar.

Linux

Kuring diuji dina Ubuntu 18.04, 18.10, Fedora 29, 30.

Mimiti, hayu urang unduh sertipikat kami. Kuring henteu mendakan dina Linux naha mungkin nganggo sertipikat sistem sareng naha aya toko sapertos kitu.

Hayu urang nyambung ka domain. Ku alatan éta, urang peryogi sertipikat ti otoritas sertifikasi ti mana sertipikat urang dibeuli.

Sadaya sambungan dilakukeun dina hiji jandela. Pilih jaringan kami:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

anonim-klien
domain - domain nu sertipikat ieu dikaluarkeun

Android

non-Samsung

Tina vérsi 7, nalika nyambungkeun WiFi, anjeun tiasa nganggo sertipikat sistem ku ngan ukur nangtukeun domain:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

domain - domain nu sertipikat ieu dikaluarkeun
anonim-klien

Samsung

Salaku I wrote luhur, alat Samsung teu nyaho kumaha carana make sertipikat sistem nalika nyambungkeun ka WiFi, sarta aranjeunna teu boga kamampuhan pikeun nyambungkeun via domain a. Kituna, anjeun kudu sacara manual nambahkeun sertipikat akar otoritas sertifikasi (ca.pem, urang nyandak eta dina server Radius). Di dieu nyaeta dimana timer ditandatanganan bakal dipaké.

Unduh sertipikat ka alat anjeun sareng pasang.

Pamasangan SertipikatPerusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Dina waktos anu sami, anjeun kedah nyetél pola muka konci layar, kodeu pin atanapi kecap akses, upami éta henteu acan disetel:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Kuring némbongkeun versi pajeulit tina masang sertipikat. Dina kalolobaan alat, kantun klik sertipikat anu diunduh.

Nalika sertipikat dipasang, anjeun tiasa neruskeun sambungan:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

sertipikat - nunjukkeun hiji anu dipasang
pamaké anonim - tamu

macOS

Alat Apple out of the box ngan bisa nyambung ka EAP-TLS, tapi anjeun masih kudu buang sertipikat ka aranjeunna. Pikeun nangtukeun metodeu sambungan anu béda, anjeun kedah nganggo Apple Configurator 2. Sasuai, anjeun kedah ngaunduh heula kana Mac anjeun, jieun profil énggal sareng tambahkeun sadaya setélan WiFi anu diperyogikeun.

Apple ConfiguratorPerusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Lebetkeun nami jaringan anjeun di dieu
Tipe Kaamanan - WPA2 Enterprise
Ditampa Tipe EAP - TTLS
Ngaran pamaké sarta Sandi - ninggalkeun kosong
Auténtikasi Batin - PAP
Luar Identity-klien

Tab kapercayaan. Di dieu urang nangtukeun domain urang

Sadayana. Profilna tiasa disimpen, ditandatanganan sareng disebarkeun ka alat

Saatos profil parantos siap, anjeun kedah unduh kana poppy sareng pasang. Salila prosés pamasangan, anjeun kedah netepkeun usernmae_ldap sareng password_ldap pangguna:

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

Perusahaan WiFi. FreeRadius + FreeIPA + Ubiquiti

ios

Prosésna sami sareng macOS. Anjeun kedah nganggo profil (anjeun tiasa nganggo anu sami sareng macOS. Kumaha cara ngadamel profil dina Apple Configurator, tingali di luhur).

Unduh profil, pasang, asupkeun kredensial, sambungkeun:

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

Éta hungkul. Kami nyetél server Radius, nyingkronkeun sareng FreeIPA, sareng nyarios ka Ubiquiti AP nganggo WPA2-EAP.

Patarosan kamungkinan

Dina: kumaha cara nransper profil/sertipikat ka pagawe?

Ngeunaan: Kuring nyimpen sagala sertipikat / profil dina ftp kalawan aksés web. Ngangkat jaringan tamu kalawan wates speed na aksés ngan ka Internet, iwal ftp.
Auténtikasi lumangsung 2 dinten, saatos éta direset sareng klien ditinggalkeun tanpa Internét. Anu. lamun hiji pagawe hayang nyambung ka WiFi, anjeunna mimiti nyambung ka jaringan tamu, ngakses FTP, ngundeur sertipikat atawa profil manehna perlu, install deui, lajeng bisa nyambung ka jaringan perusahaan.

Dina: naha henteu nganggo skéma sareng MSCHAPv2? Manehna leuwih aman!

Ngeunaan: Anu mimiti, skéma sapertos kitu tiasa dianggo dina NPS (Windows Network Policy System), dina palaksanaan urang kedah ngonpigurasikeun tambahan LDAP (FreeIpa) sareng nyimpen sandi hashes dina server. Tambihan. teu sasaena nyieun setelan, sabab. Ieu bisa ngakibatkeun sagala rupa masalah nyingkronkeun ultrasound nu. Kadua, hash nyaéta MD4, janten henteu nambihan seueur kaamanan.

Dina: éta mungkin mun otorisasi alat ku mac-alamat?

Ngeunaan: Henteu, ieu henteu aman, panyerang tiasa ngarobih alamat MAC, komo deui otorisasi ku alamat MAC henteu didukung dina seueur alat.

Dina: Naon umumna sadayana sertipikat ieu dianggo? anjeun tiasa gabung tanpa aranjeunna?

Ngeunaan: sertipikat dipaké pikeun otorisasi server. Jelema. nalika nyambungkeun, alat mariksa naha éta téh server anu bisa dipercaya atawa henteu. Upami kitu, teras auténtikasi diteruskeun, upami henteu, sambunganna ditutup. Anjeun tiasa nyambungkeun tanpa sertipikat, tapi upami panyerang atanapi tatangga nyetél server radius sareng titik aksés anu sami sareng nami di bumi, anjeunna tiasa gampang nyegat kapercayaan pangguna (ulah hilap yén aranjeunna dikirimkeun dina téks anu jelas). Sareng nalika sertipikat dianggo, musuh bakal ningali dina log na ngan ukur nami pangguna fiksi - tamu atanapi klien sareng kasalahan jinis - Sertipikat CA anu teu dipikanyaho

langkung seueur ngeunaan macOSBiasana dina macOS, pamasangan ulang sistem dilakukeun ngalangkungan Internét. Dina modeu recovery, Mac kudu disambungkeun ka WiFi, sarta boh WiFi perusahaan urang atawa jaringan tamu moal jalan di dieu. Pribadi, abdi diangkat jaringan sejen, nu biasa WPA2-PSK, disumputkeun, ngan pikeun operasi teknis. Atanapi anjeun masih tiasa ngadamel USB flash drive bootable sareng sistem sateuacanna. Tapi upami poppy saatos 2015, anjeun masih kedah milarian adaptor pikeun flash drive ieu)

sumber: www.habr.com

Tambahkeun komentar