Guon foarbylden fan it organisearjen fan bedriuws-WiFi binne al beskreaun. Hjir sil ik beskriuwe hoe't ik in ferlykbere oplossing ymplementearre en de problemen dy't ik te krijen hie by it ferbinen op ferskate apparaten. Wy sille de besteande LDAP brûke mei registrearre brûkers, FreeRadius ferheegje en WPA2-Enterprise konfigurearje op 'e Ubnt-controller. Alles liket ienfâldich te wêzen. Litte wy sjen…
In bytsje oer EAP-metoaden
Foardat wy trochgean mei de taak, moatte wy beslute hokker autentikaasjemetoade wy sille brûke yn ús oplossing.
Fan Wikipedia:
EAP is in autentikaasjekader dat faak brûkt wurdt yn draadloze netwurken en punt-nei-punt-ferbiningen. It formaat waard earst beskreaun yn RFC 3748 en bywurke yn RFC 5247.
EAP wurdt brûkt om in autentikaasjemetoade te selektearjen, kaaien troch te jaan en dy kaaien te ferwurkjen mei plug-ins neamd EAP-metoaden. D'r binne in protte EAP-metoaden, sawol definieare mei EAP sels en frijlitten troch yndividuele leveransiers. EAP definiearret de keppelingslaach net, it definiearret allinich it berjochtformaat. Elk protokol dat EAP brûkt hat syn eigen EAP-berjochtynkapselingsprotokol.
De metoaden sels:
- LEAP is in proprietêr protokol ûntwikkele troch CISCO. Kwetsberheden fûn. It is op it stuit net oan te rieden om te brûken
- EAP-TLS wurdt goed stipe ûnder draadloze leveransiers. It is in feilich protokol om't it de opfolger is fan 'e SSL-standerts. It ynstellen fan de klant is frij yngewikkeld. Jo hawwe in klantsertifikaat nedich neist it wachtwurd. Stipe op in protte systemen
- EAP-TTLS - breed stipe op in protte systemen, biedt goede feiligens troch allinich PKI-sertifikaten te brûken op 'e autentikaasjetsjinner
- EAP-MD5 is in oare iepen standert. Biedt minimale feiligens. Kwetsber, stipet gjin wjersidige autentikaasje en kaaigeneraasje
- EAP-IKEv2 - basearre op Internet Key Exchange Protocol ferzje 2. Biedt ûnderlinge autentikaasje en sesje-kaai fêstiging tusken client en tsjinner
- PEAP is in mienskiplike oplossing fan CISCO, Microsoft en RSA Security as in iepen standert. In soad beskikber yn produkten, jout hiel goede feiligens. Fergelykber mei EAP-TTLS, fereasket allinich in sertifikaat oan 'e serverkant
- PEAPv0/EAP-MSCHAPv2 - nei EAP-TLS is dit de twadde breed brûkte standert yn 'e wrâld. Brûkte klant-tsjinner relaasje yn Microsoft, Cisco, Apple, Linux
- PEAPv1 / EAP-GTC - makke troch Cisco as alternatyf foar PEAPv0 / EAP-MSCHAPv2. Beskermet op gjin inkelde manier autentikaasjegegevens. Net stipe op Windows OS
- EAP-FAST is in technyk ûntwikkele troch Cisco om de tekoarten fan LEAP te korrigearjen. Brûkt Protected Access Credential (PAC). Folslein ûnfoltôge
Fan al dit ferskaat is de kar noch altyd net grut. De autentikaasjemetoade wie fereaske: goede feiligens, stipe op alle apparaten (Windows 10, macOS, Linux, Android, iOS) en, yn feite, hoe ienfâldiger hoe better. Dêrom foel de kar op EAP-TTLS yn gearhing mei it PAP-protokol.
De fraach kin opkomme - Wêrom brûke PAP? omdat hy stjoert wachtwurden yn it dúdlik?
Ja dat kloppet. Kommunikaasje tusken FreeRadius en FreeIPA sil op dizze manier plakfine. Yn debugmodus kinne jo folgje hoe't brûkersnamme en wachtwurd ferstjoerd wurde. Ja, en lit se gean, allinich jo hawwe tagong ta de FreeRadius-tsjinner.
Jo kinne mear lêze oer it wurk fan EAP-TTLS
FreeRADIUS
FreeRadius sil wurde ferhege op CentOS 7.6. D'r is hjir neat yngewikkeld, wy sette it op 'e gewoane manier.
yum install freeradius freeradius-utils freeradius-ldap -y
Ferzje 3.0.13 is ynstalleare fanút de pakketten. Dat lêste kin nommen wurde
Dêrnei wurket FreeRadius al. Jo kinne de rigel unkommentearje yn /etc/raddb/users
steve Cleartext-Password := "testing"
Launch yn de tsjinner yn debug modus
freeradius -X
En meitsje in testferbining fan localhost
radtest steve testing 127.0.0.1 1812 testing123
Hawwe in antwurd Untfongen tagong-akseptearje Id 115 fan 127.0.0.1:1812 oant 127.0.0.1:56081 lingte 20, it betsjut dat alles OK is. Gean dyn gong.
Wy ferbine de module ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
En wy sille it daliks feroarje. Wy hawwe FreeRadius nedich om tagong te krijen ta FreeIPA
mods-ynskeakele / 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}})"
}
...
Start de radiusserver op 'e nij en kontrolearje de syngronisaasje fan LDAP-brûkers:
radtest user_ldap password_ldap localhost 1812 testing123
Bewurkje eap yn mods-ynskeakele / eap
Hjir foegje wy twa eksimplaren fan eap ta. Se sille allinich ferskille yn sertifikaten en kaaien. Hjirûnder sil ik útlizze wêrom dit sa is.
mods-ynskeakele / 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"
}
}
Fierdere bewurking site-ynskeakele / standert. De seksjes foar autorisearjen en ferifiearje binne fan belang.
site-ynskeakele / standert
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
}
Yn 'e autorisearjende seksje ferwiderje wy alle modules dy't wy net nedich binne. Wy litte allinne ldap. Foegje kliïntferifikaasje ta troch brûkersnamme. Dêrom hawwe wy hjirboppe twa eksimplaren fan eap tafoege.
Multi EAPIt feit is dat by it ferbinen fan guon apparaten, wy sille brûke systeem sertifikaten en spesifisearje it domein. Wy hawwe in sertifikaat en in kaai fan in fertroude sertifikaatautoriteit. Persoanlik, neffens my, is sa'n ferbiningsproseduere makliker dan op elk apparaat in selstekene sertifikaat te smiten. Mar ek sûnder sels ûndertekene sertifikaten slagge it noch net. Samsung-apparaten en Android =< 6 ferzjes kinne systeemsertifikaten net brûke. Dêrom meitsje wy in aparte eksimplaar fan eap-gast foar har mei sels ûndertekene sertifikaten. Foar alle oare apparaten sille wy de eap-kliïnt brûke mei in fertroud sertifikaat. De brûkersnamme wurdt bepaald troch it Anonymous fjild as it apparaat ferbûn is. Allinich 3 wearden binne tastien: Gast, Klant en in leech fjild. Al it oare wurdt fuorthelle. It sil wurde konfigurearre yn politisy. Ik jou efkes letter in foarbyld.
Litte wy de autorisearjen en authentisearje seksjes yn site-enabled/inner-tunnel
site-enabled/inner-tunnel
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
}
Dêrnei moatte jo yn it belied oanjaan hokker nammen kinne wurde brûkt foar anonime oanmelding. Bewurkje policy.d/filter.
Jo moatte linen fine lykas dit:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
En foegje hjirûnder yn elsif de winske wearden ta:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
No moatte wy nei de map gean sertifikaten. Hjir moatte jo de kaai en sertifikaat pleatse fan in fertroude sertifikaatautoriteit, dy't wy al hawwe en moatte sels ûndertekene sertifikaten generearje foar eap-gast.
Feroarje de parameters yn it bestân 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"
Wy skriuwe deselde wearden yn 'e triem server.cnf. Wy feroarje allinnich
gewoane namme:
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"
Meitsje:
make
Klear. Untfongen server.crt и server.key wy hawwe hjirboppe al registrearre yn eap-guest.
En as lêste, litte wy ús tagongspunten tafoegje oan it bestân client.conf. Ik haw der 7. Om net elk punt apart ta te foegjen, sille wy allinich it netwurk skriuwe wêryn se sitte (myn tagongspunten binne yn in aparte VLAN).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Ubiquiti controller
Wy ferheegje in apart netwurk op 'e controller. Lit it wêze 192.168.2.0/24
Gean nei ynstellings -> profyl. Wy meitsje in nij:
Wy skriuwe it adres en de poarte fan 'e radiusserver en it wachtwurd dat yn it bestân skreaun is clients.conf:
Meitsje in nije namme foar draadloze netwurk. Selektearje WPA-EAP (Enterprise) as de autentikaasjemetoade en spesifisearje it oanmakke radiusprofyl:
Wy bewarje alles, jilde en geane fierder.
It ynstellen fan kliïnten
Litte wy begjinne mei it dreechste!
Windows 10
De swierrichheid komt del op it feit dat Windows noch net wit hoe't jo fia in domein ferbine mei bedriuws-WiFi. Dêrom moatte wy ús sertifikaat manuell uploade nei de fertroude sertifikaatwinkel. Hjir kinne jo sawol sels ûndertekene as fan 'e sertifisearringsautoriteit brûke. Ik sil de twadde brûke.
Dêrnei moatte jo in nije ferbining meitsje. Om dit te dwaan, gean nei de netwurk- en ynternetynstellingen -> Netwurk- en dielensintrum -> Meitsje en konfigurearje in nije ferbining of netwurk:
Fier de netwurknamme manuell yn en feroarje it type feiligens. Neidat wy klikke op feroarje ferbining ynstellings en yn it ljepblêd Feiligens, selektearje netwurkferifikaasje - EAP-TTLS.
Wy geane yn 'e parameters, skriuwe de fertroulikens fan autentikaasje foar - kliïnt. Selektearje as in fertroude sertifisearringsautoriteit it sertifikaat dat wy tafoege hawwe, selektearje it fakje "Gjin útnoeging oan 'e brûker as de tsjinner kin net autorisearre wurde" en selektearje de autentikaasjemetoade - unfersifere wachtwurd (PAP).
Gean dan nei de avansearre ynstellings, set in tick op "De ferifikaasjemodus spesifisearje." Selektearje "User Authentication" en klikje op bewarje bewiisbrieven. Hjir moatte jo brûkersnamme_ldap en wachtwurd_ldap ynfiere
Wy bewarje alles, oanfreegje, slute. Jo kinne ferbine mei in nij netwurk.
linux
Ik testte op Ubuntu 18.04, 18.10, Fedora 29, 30.
Litte wy earst ús sertifikaat downloade. Ik fûn yn Linux net oft it mooglik is om systeemsertifikaten te brûken en oft der sa'n winkel is.
Litte wy ferbine mei it domein. Dêrom hawwe wy in sertifikaat nedich fan 'e sertifikaasje-autoriteit wêrfan ús sertifikaat is kocht.
Alle ferbinings wurde makke yn ien finster. Selektearje ús netwurk:
anonym-kliïnt
domein - it domein wêrfoar it sertifikaat is útjûn
Android
net-Samsung
Fanôf ferzje 7 kinne jo by it ferbinen fan WiFi systeemsertifikaten brûke troch allinich it domein op te jaan:
domein - it domein wêrfoar it sertifikaat is útjûn
anonym-kliïnt
Samsung
Lykas ik hjirboppe skreau, wite Samsung-apparaten net hoe't se systeemsertifikaten brûke by it ferbinen mei WiFi, en se hawwe net de mooglikheid om te ferbinen fia in domein. Dêrom moatte jo it root-sertifikaat fan 'e sertifikaasjeautoriteit manuell tafoegje (ca.pem, wy nimme it op' e Radius-tsjinner). Hjir is wêr't sels ûndertekene sil wurde brûkt.
Download it sertifikaat nei jo apparaat en ynstallearje it.
Sertifikaat ynstallaasje
Tagelyk moatte jo it patroan foar skermûntskoatteljen, pinkoade of wachtwurd ynstelle, as it net al ynsteld is:
Ik liet in yngewikkelde ferzje sjen fan it ynstallearjen fan in sertifikaat. Klikje op de measte apparaten gewoan op it ynladen sertifikaat.
As it sertifikaat is ynstalleare, kinne jo trochgean nei de ferbining:
sertifikaat - jouwe dejinge oan dy't ynstalleare is
anonime brûker - gast
MacOS
Apple-apparaten út 'e doaze kinne allinich ferbine mei EAP-TLS, mar jo moatte noch in sertifikaat nei har smite. Om in oare ferbiningsmetoade oan te jaan, moatte jo Apple Configurator 2 brûke. Dêrom moatte jo it earst downloade nei jo Mac, in nij profyl oanmeitsje en alle nedige WiFi-ynstellingen tafoegje.
Apple Configurator
Fier jo netwurknamme hjir yn
Feiligens Type - WPA2 Enterprise
Akseptearre EAP-typen - TTLS
Brûkersnamme en wachtwurd - leech litte
Inner Autentikaasje - PAP
Outer Identity-kliïnt
Trust tab. Hjir spesifisearje wy ús domein
Alle. It profyl kin wurde bewarre, ûndertekene en ferspraat oan apparaten
Nei't it profyl klear is, moatte jo it downloade nei de poppy en ynstallearje. Tidens it ynstallaasjeproses moatte jo de usernmae_ldap en password_ldap fan de brûker opjaan:
iOS
It proses is fergelykber mei macOS. Jo moatte in profyl brûke (jo kinne itselde brûke as foar macOS. Hoe meitsje jo in profyl yn Apple Configurator, sjoch hjirboppe).
Download profyl, ynstallearje, fier referinsjes yn, ferbine:
Da's alles. Wy sette in Radius-tsjinner op, syngronisearre it mei FreeIPA, en fertelden Ubiquiti AP's om WPA2-EAP te brûken.
Mooglike fragen
Yn: hoe kinne jo in profyl / sertifikaat oerdrage oan in meiwurker?
Oer: Ik bewarje alle sertifikaten / profilen op ftp mei web tagong. Ferhege in gast netwurk mei in snelheid limyt en tagong allinnich ta it ynternet, mei útsûndering fan ftp.
Autentikaasje duorret 2 dagen, wêrnei't it wurdt reset en de klant bliuwt sûnder ynternet. Dat. as in meiwurker ferbine wol mei WiFi, makket hy earst ferbining mei it gastnetwurk, tagong ta FTP, downloadt it sertifikaat of profyl dat hy nedich is, ynstallearret it, en kin dan ferbine mei it bedriuwsnetwurk.
Yn: wêrom net skema brûke mei MSCHAPv2? Se is feiliger!
Oer: As earste wurket sa'n skema goed op NPS (Windows Network Policy System), yn ús ymplemintaasje is it nedich om ek LDAP (FreeIpa) te konfigurearjen en wachtwurd-hashes op 'e tsjinner op te slaan. Add. it is net oan te rieden om ynstellings te meitsjen, om't. dit kin liede ta ferskate problemen fan syngronisaasje fan de echografie. Twadder is de hash MD4, dus it foeget net folle feiligens ta.
Yn: is it mooglik om apparaten te autorisearjen troch mac-adressen?
Oer: NEE, dit is net feilich, in oanfaller kin MAC-adressen feroarje, en mear noch wurdt autorisaasje troch MAC-adressen net stipe op in protte apparaten
Yn: wat foar algemien al dizze sertifikaten te brûken? kinne jo meidwaan sûnder har?
Oer: sertifikaten wurde brûkt om de tsjinner te autorisearjen. Dy. by it ferbinen kontrolearret it apparaat oft it in tsjinner is dy't fertroud wurde kin of net. As it is, dan giet de autentikaasje troch, as net, is de ferbining sletten. Jo kinne ferbining meitsje sûnder sertifikaten, mar as in oanfaller of buorman in radiusserver en in tagongspunt mei deselde namme as ús thús ynstelt, kin hy de bewiisbrieven fan 'e brûker maklik ûnderskeppe (ferjit net dat se yn dúdlike tekst wurde oerbrocht). En as in sertifikaat wurdt brûkt, sil de fijân yn syn logboeken allinich ús fiktive brûkersnamme sjen - gast as kliïnt en in typeflater - Unbekend CA-sertifikaat
in bytsje mear oer macOSNormaal op macOS wurdt it opnij ynstallearjen fan it systeem fia it ynternet dien. Yn herstelmodus moat de Mac ferbûn wêze mei WiFi, en noch ús bedriuws-WiFi noch it gastnetwurk sil hjir wurkje. Persoanlik haw ik in oar netwurk opbrocht, de gewoane WPA2-PSK, ferburgen, allinich foar technyske operaasjes. Of jo kinne noch foarôf in bootbere USB-flash-drive meitsje mei it systeem. Mar as de poppy nei 2015 is, moatte jo noch in adapter fine foar dizze flash drive)
Boarne: www.habr.com