
NĂ„gra exempel pĂ„ att organisera företags WiFi har redan beskrivits. HĂ€r kommer jag att beskriva hur jag implementerade en sĂ„dan lösning och vilka problem jag stötte pĂ„ vid anslutning pĂ„ olika enheter. Vi kommer att anvĂ€nda befintlig LDAP med etablerade anvĂ€ndare, installera FreeRadius och konfigurera WPA2-Enterprise pĂ„ Ubnt-kontrollern. Allt verkar enkelt. LĂ„t oss seâŠ
Lite om EAP-metoder
Innan vi börjar med uppgiften mÄste vi bestÀmma vilken autentiseringsmetod vi ska anvÀnda i vÄr lösning.
FrÄn Wikipedia:
EAP Àr ett autentiseringsramverk som ofta anvÀnds i trÄdlösa nÀtverk och punkt-till-punkt-anslutningar. Formatet beskrevs först i RFC 3748 och uppdaterades i RFC 5247.
EAP anvÀnds för att vÀlja en autentiseringsmetod, överföra nycklar och bearbeta dessa nycklar med plugins som kallas EAP-metoder. Det finns mÄnga EAP-metoder, bÄde definierade med sjÀlva EAP och de som slÀpps av enskilda leverantörer. EAP definierar inte lÀnklagret, det definierar bara meddelandeformatet. Varje protokoll som anvÀnder EAP har sitt eget EAP-meddelandeinkapslingsprotokoll.
SjÀlva metoderna:
- LEAP Àr ett patentskyddat protokoll utvecklat av CISCO. SÄrbarheter hittades. För nÀrvarande rekommenderas inte för anvÀndning
- EAP-TLS stöds vÀl bland trÄdlösa leverantörer. Det Àr ett sÀkert protokoll eftersom det Àr efterföljaren till SSL-standarderna. Att stÀlla in klienten Àr ganska komplicerat. Du behöver ett klientcertifikat utöver lösenordet. Stöds pÄ mÄnga system
- EAP-TTLS - stöds brett pÄ mÄnga system, erbjuder bra sÀkerhet med PKI-certifikat endast pÄ autentiseringsservern
- EAP-MD5 Àr en annan öppen standard. Ger minimal sÀkerhet. SÄrbar, stöder inte ömsesidig autentisering och nyckelgenerering
- EAP-IKEv2 - baserad pÄ Internet Key Exchange Protocol version 2. Ger ömsesidig autentisering och etablering av sessionsnyckel mellan klient och server
- PEAP Àr en gemensam lösning mellan CISCO, Microsoft och RSA Security som en öppen standard. AllmÀnt tillgÀnglig i produkter, ger mycket god sÀkerhet. Liknar EAP-TTLS, krÀver endast ett certifikat pÄ serversidan
- PEAPv0/EAP-MSCHAPv2 Àr den nÀst mest anvÀnda standarden i vÀrlden efter EAP-TLS. Den anvÀnds för klient-server-kommunikation av Microsoft, Cisco och Apple. Linux
- PEAPv1/EAP-GTC â Skapad av Cisco som ett alternativ till PEAPv0/EAP-MSCHAPv2. Skyddar inte autentiseringsdata pĂ„ nĂ„got sĂ€tt. Stöds inte i Windows OS
- EAP-FAST Àr en metod utvecklad av Cisco för att rÀtta till bristerna i LEAP. AnvÀnder PAC (Protected Access Credential). Helt oavslutat
Med all denna variation Àr valet fortfarande begrÀnsat. Den autentiseringsmetod som krÀvs: god sÀkerhet, stöd pÄ alla enheter (Windows 10, macOS, Linux, Android, iOS) och faktiskt, ju enklare, desto bÀttre. DÀrför föll valet pÄ EAP-TTLS i samband med PAP-protokollet.
FrÄgan kan uppstÄ - Varför anvÀnda PAP? Den överför trots allt lösenord i klartext?
Ja det stÀmmer. Kommunikationen mellan FreeRadius och FreeIPA kommer att ske exakt sÄ hÀr. I felsökningslÀge kan du spÄra hur anvÀndarnamnet och lösenordet skickas. Ja, och slÀpp dem, bara du har tillgÄng till FreeRadius-servern.
Du kan lÀsa mer om hur EAP-TTLS fungerar
FreeRADIUS
Vi kommer att höja FreeRadius till CentOS 7.6. Det Àr inget komplicerat hÀr, vi installerar det pÄ vanligt sÀtt.
yum install freeradius freeradius-utils freeradius-ldap -yAv paketen Àr version 3.0.13 installerad. Den senare kan tas kl
Efter detta fungerar FreeRadius redan. Du kan avkommentera raden i /etc/raddb/users
steve Cleartext-Password := "testing"Starta in pÄ servern i felsökningslÀge
freeradius -XOch gör en testanslutning frÄn localhost
radtest steve testing 127.0.0.1 1812 testing123Vi fick svar Mottaget Access-Accept Id 115 frÄn 127.0.0.1:1812 till 127.0.0.1:56081 lÀngd 20, det betyder att allt Àr OK. VarsÄgod.
Anslutning av modulen ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldapOch vi kommer att Àndra det omedelbart. Vi behöver FreeRadius för att kunna komma Ät 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}})"
}
...Starta om radiusservern och kontrollera synkroniseringen av LDAP-anvÀndare:
radtest user_ldap password_ldap localhost 1812 testing123 Redigerar eap in mods-aktiverade/eap
HÀr kommer vi att lÀgga till tvÄ instanser av eap. De skiljer sig endast i certifikat och nycklar. Jag förklarar varför detta Àr sant nedan.
mods-aktiverade/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"
}
}DÀrefter redigerar vi site-enabled/default. Jag Àr intresserad av sektionerna för auktorisering och autentisering.
site-enabled/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
}I behörighetsdelen tar vi bort alla moduler som vi inte behöver. Vi lÀmnar bara ldap. LÀgg till klientverifiering efter anvÀndarnamn. Det Àr dÀrför vi har lagt till tvÄ instanser av eap ovan.
Multi EAPGrejen Àr den att nÀr vi ansluter vissa enheter anvÀnder vi systemcertifikat och anger en domÀn. Vi har ett certifikat och en nyckel frÄn en betrodd certifieringsutfÀrdare. Personligen tycker jag att den hÀr anslutningsproceduren Àr enklare Àn att installera ett sjÀlvsignerat certifikat pÄ varje enhet. Men vi kunde fortfarande inte komma undan med sjÀlvsignerade certifikat. Samsung-enheter och Android Version 6 kan inte anvÀnda systemcertifikat. DÀrför skapar vi en separat eap-guest-instans med sjÀlvsignerade certifikat för dem. För alla andra enheter anvÀnder vi eap-client med ett betrott certifikat. AnvÀndarnamnet bestÀms av fÀltet Anonym nÀr enheten ansluter. Endast tre vÀrden Àr tillÄtna: GÀst, Klient och ett tomt fÀlt. Allt annat ignoreras. Detta konfigureras i policyer. Jag ger ett exempel senare.
LÄt oss redigera behörighets- och autentiseringssektionerna i platsaktiverad/innertunnel
platsaktiverad/innertunnel
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Àrefter mÄste du ange i policyerna vilka namn som kan anvÀndas för anonym inloggning. Redigering policy.d/filter.
Du mÄste hitta linjer som liknar denna:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}Och nedan i elsif lÀgg till de nödvÀndiga vÀrdena:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}Nu mÄste vi flytta till katalogen cert. HÀr mÄste vi lÀgga nyckeln och certifikatet frÄn en betrodd certifieringsmyndighet, som vi redan har, och vi mÄste generera sjÀlvsignerade certifikat för eap-guest.
Ăndra parametrarna i filen 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 = admin@admin.ru
commonName = "CA FreeRadius"Vi skriver samma vÀrden i filen server.cnf. Vi Àndrar oss bara
vanligt namn:
server.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = admin@admin.ru
commonName = "Server Certificate FreeRadius"Vi skapar:
makeRedo. Mottagen server.crt Đž server.nyckel Vi har redan registrerat oss ovan i eap-guest.
Och slutligen, lÄt oss lÀgga till vÄra Ätkomstpunkter till filen klient.konf. Jag har 7 av dem. För att inte lÀgga till varje punkt separat kommer vi bara att registrera nÀtverket dÀr de finns (mina accesspunkter finns i ett separat VLAN).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}Ubiquiti-kontroller
Vi skapar ett separat nÀtverk pÄ styrenheten. LÄt det vara 192.168.2.0/24
GÄ till instÀllningar -> profil. LÄt oss skapa en ny:

Vi skriver ner adress och port för radiusservern och lösenordet som skrevs i filen clients.conf:

Skapa ett nytt trÄdlöst nÀtverksnamn. VÀlj WPA-EAP (Enterprise) som autentiseringsmetod och ange den skapade radieprofilen:

Vi sparar allt, applicerar det och gÄr vidare.
Skapa klienter
LÄt oss börja med det svÄraste!
Windows 10
SvÄrigheten ligger i det faktum att Windows Den kan fortfarande inte ansluta till företagets WiFi över en domÀn. SÄ vi mÄste manuellt lÀgga till vÄrt certifikat i arkivet för betrodda certifikat. Du kan anvÀnda antingen ett sjÀlvsignerat certifikat eller ett frÄn en CA. Jag kommer att anvÀnda det senare.
DÀrefter mÄste du skapa en ny anslutning. För att göra detta, gÄ till NÀtverks- och InternetinstÀllningar -> NÀtverks- och delningscenter -> Skapa och konfigurera en ny anslutning eller ett nytt nÀtverk:



Vi anger manuellt nÀtverksnamnet och Àndrar sÀkerhetstypen. Klicka sedan pÄ Àndra anslutningsinstÀllningar och pÄ fliken SÀkerhet vÀljer du nÀtverksautentisering - EAP-TTLS.



GÄ till instÀllningarna, stÀll in konfidentialitet för autentisering - klient. Som en betrodd certifieringsmyndighet, vÀlj certifikatet vi lade till, markera rutan "Ge inte en inbjudan till anvÀndaren om servern inte kan auktoriseras" och vÀlj autentiseringsmetoden - klartextlösenord (PAP).

GÄ sedan till ytterligare parametrar och markera rutan "Ange autentiseringslÀge." VÀlj "AnvÀndarautentisering" och klicka pÄ spara inloggningsuppgifter. HÀr mÄste du ange anvÀndarnamn_ldap och lösenord_ldap



Vi sparar, ansöker, stÀnger allt. Du kan ansluta till ett nytt nÀtverk.
Linux
Jag kollade pÄ Ubuntu 18.04, 18.10, Fedora 29, 30.
Ladda först ner certifikatet. Jag hittade det inte i Linux, Àr det möjligt att anvÀnda systemcertifikat och finns det en sÄdan lagring dÀr överhuvudtaget?
Vi kommer att ansluta via domÀn. DÀrför behöver vi ett certifikat frÄn den certifieringsmyndighet som vÄrt certifikat köptes frÄn.
Alla anslutningar görs i ett fönster. VÀlj vÄrt nÀtverk:

anonym - klient
domĂ€n â den domĂ€n för vilken certifikatet utfĂ€rdades
Android
icke-Samsung
FrÄn version 7, nÀr du ansluter WiFi, kan du anvÀnda systemcertifikat genom att endast ange domÀnen:

domĂ€n â den domĂ€n för vilken certifikatet utfĂ€rdades
anonym - klient
Samsung
Som jag skrev ovan vet inte Samsung-enheter hur man anvÀnder systemcertifikat nÀr man ansluter WiFi, och de har inte möjlighet att ansluta via domÀn. DÀrför mÄste du manuellt lÀgga till certifieringsmyndighetens rotcertifikat (ca.pem, ta det frÄn Radius-servern). Det Àr hÀr sjÀlvsignerad kommer att anvÀndas.
Ladda ner certifikatet till din enhet och installera det.
Installera ett certifikat



I det hÀr fallet mÄste du stÀlla in ett skÀrmupplÄsningsmönster, PIN-kod eller lösenord, om det inte redan Àr instÀllt:


Jag visade ett komplext alternativ för att installera ett certifikat. PÄ de flesta enheter klickar du helt enkelt pÄ det nedladdade certifikatet.
NÀr certifikatet Àr installerat kan du fortsÀtta till anslutningen:

certifikat - ange det du installerade
anonym anvÀndare - gÀst
macOS
Apple-enheter kan bara ansluta till EAP-TLS direkt, men du mÄste fortfarande förse dem med ett certifikat. För att ange en annan anslutningsmetod mÄste du anvÀnda Apple Configurator 2. DÀrför mÄste du först ladda ner den till din Mac, skapa en ny profil och lÀgga till alla nödvÀndiga WiFi-instÀllningar.
Apple Configurator

HÀr anger vi namnet pÄ vÄrt nÀtverk
SĂ€kerhetstyp - WPA2 Enterprise
GodkÀnda EAP-typer - TTLS
AnvÀndarnamn och lösenord - lÀmna tomt
Inre autentisering - PAP
Yttre identitet - klient
Fliken Trust. HÀr anger vi vÄr domÀn
Allt. Profilen kan sparas, signeras och distribueras till enheter
NÀr profilen Àr klar mÄste du ladda ner den till din Mac och installera den. Under installationsprocessen mÄste du ange anvÀndarens usernmae_ldap och password_ldap:



iOS
Processen Àr liknande macOSDu behöver anvÀnda en profil (du kan anvÀnda samma som för macOS(Se ovan för information om hur man skapar en profil i Apple Configurator.)
Ladda ner profilen, installera, ange referenser, anslut:






Det Àr allt. Vi satte upp Radius-servern, synkroniserade den med FreeIPA och sa Ät Ubiquiti-Ätkomstpunkterna att anvÀnda WPA2-EAP.
Möjliga frÄgor
Pà : hur överför man en profil/certifikat till en anstÀlld?
om: Jag lagrar alla certifikat/profiler pÄ FTP med Ätkomst via webben. Jag stÀller in ett gÀstnÀtverk med en hastighetsgrÀns och endast tillgÄng till Internet, med undantag för FTP.
Autentiseringen varar i 2 dagar, varefter den ÄterstÀlls och klienten lÀmnas utan internet. Den dÀr. NÀr en anstÀlld vill ansluta till WiFi ansluter han först till gÀstnÀtverket, loggar in pÄ FTP, laddar ner certifikatet eller profilen han behöver, installerar dem och kan sedan ansluta till företagets nÀtverk.
Pà : varför inte anvÀnda ett schema med MSCHAPv2? det Àr sÀkrare!
om: För det första fungerar detta system bra för NPS (Windows VÄr implementering krÀver ytterligare konfiguration av LDAP (FreeIpa) och lagring av lösenordshash pÄ servern. Ytterligare konfiguration rekommenderas inte, eftersom det kan leda till olika problem med kontosynkronisering. För det andra Àr hashen MD4, sÄ den förbÀttrar inte sÀkerheten avsevÀrt.
PĂ : Ăr det möjligt att auktorisera enheter med mac-adresser?
om: NEJ, detta Àr inte sÀkert, en angripare kan förfalska MAC-adresser, och Ànnu mer, auktorisering av MAC-adresser stöds inte pÄ mÄnga enheter
Pà : Varför anvÀnda alla dessa certifikat överhuvudtaget? du kan ansluta utan dem
om: certifikat anvÀnds för att auktorisera servern. De dÀr. Vid anslutning kontrollerar enheten om det Àr en server som gÄr att lita pÄ eller inte. Om sÄ Àr fallet fortsÀtter autentiseringen, om inte stÀngs anslutningen. Du kan ansluta utan certifikat, men om en angripare eller granne sÀtter upp en radieserver och en accesspunkt med samma namn som vÄr hemma, kan han enkelt fÄnga upp anvÀndarens autentiseringsuppgifter (glöm inte att de sÀnds i klartext) . Och nÀr ett certifikat anvÀnds, kommer fienden att se i sina loggar endast vÄrt fiktiva anvÀndarnamn - gÀst eller klient och ett typfel - OkÀnt CA-certifikat
lite mer om macOSVanligtvis pÄ macOS Ominstallationen av systemet sker via internet. I ÄterstÀllningslÀge mÄste Mac-datorn vara ansluten till WiFi, och varken vÄrt företags-WiFi eller gÀstnÀtverket kommer att fungera. Jag har personligen konfigurerat ett annat nÀtverk, ett vanligt WPA2-PSK-nÀtverk, dolt, bara för tekniska ÄtgÀrder. Alternativt kan du skapa en startbar USB-enhet med systemet installerat i förvÀg. Men om din Mac Àr frÄn efter 2015 behöver du hitta en adapter för denna USB-enhet.
KĂ€lla: will.com
