Enkele voorbeelde van die organisering van korporatiewe WiFi is reeds beskryf. Hier sal ek beskryf hoe ek 'n soortgelyke oplossing geïmplementeer het en die probleme waarmee ek te kampe gehad het wanneer ek op verskillende toestelle koppel. Ons sal die bestaande LDAP met geregistreerde gebruikers gebruik, FreeRadius verhoog en WPA2-Enterprise op die Ubnt-beheerder instel. Alles blyk eenvoudig te wees. Kom ons kyk…
'n Bietjie oor EAP-metodes
Voordat ons met die taak voortgaan, moet ons besluit watter verifikasiemetode ons in ons oplossing sal gebruik.
Van Wikipedia:
EAP is 'n verifikasieraamwerk wat dikwels in draadlose netwerke en punt-tot-punt-verbindings gebruik word. Die formaat is die eerste keer beskryf in RFC 3748 en bygewerk in RFC 5247.
EAP word gebruik om 'n stawingsmetode te kies, sleutels deur te gee en daardie sleutels te verwerk met inproppe genoem EAP-metodes. Daar is baie EAP-metodes, beide gedefinieer met EAP self en vrygestel deur individuele verskaffers. EAP definieer nie die skakellaag nie, dit definieer slegs die boodskapformaat. Elke protokol wat EAP gebruik, het sy eie EAP-boodskap-inkapselingsprotokol.
Die metodes self:
- LEAP is 'n eie protokol wat deur CISCO ontwikkel is. Kwesbaarhede gevind. Dit word tans nie aanbeveel om te gebruik nie
- EAP-TLS word goed ondersteun onder draadlose verskaffers. Dit is 'n veilige protokol omdat dit die opvolger van die SSL-standaarde is. Die opstel van die kliënt is redelik ingewikkeld. Jy benodig 'n kliëntsertifikaat bykomend tot die wagwoord. Ondersteun op baie stelsels
- EAP-TTLS - wyd ondersteun op baie stelsels, bied goeie sekuriteit deur PKI-sertifikate slegs op die verifikasiebediener te gebruik
- EAP-MD5 is nog 'n oop standaard. Bied minimale sekuriteit. Kwesbaar, ondersteun nie wedersydse verifikasie en sleutelgenerering nie
- EAP-IKEv2 - gebaseer op Internet Key Exchange Protocol weergawe 2. Verskaf wedersydse verifikasie en sessiesleutel vestiging tussen kliënt en bediener
- PEAP is 'n gesamentlike oplossing van CISCO, Microsoft en RSA Security as 'n oop standaard. Wyd beskikbaar in produkte, bied baie goeie sekuriteit. Soortgelyk aan EAP-TTLS, vereis slegs 'n sertifikaat aan die bedienerkant
- PEAPv0/EAP-MSCHAPv2 - na EAP-TLS is dit die tweede algemeen gebruikte standaard in die wêreld. Gebruik kliënt-bediener verhouding in Microsoft, Cisco, Apple, Linux
- PEAPv1/EAP-GTC - Geskep deur Cisco as 'n alternatief vir PEAPv0/EAP-MSCHAPv2. Beskerm op geen manier verifikasiedata nie. Word nie op Windows OS ondersteun nie
- EAP-FAST is 'n tegniek wat deur Cisco ontwikkel is om die tekortkominge van LEAP reg te stel. Gebruik Protected Access Credential (PAC). Heeltemal onvoltooid
Van al hierdie diversiteit is die keuse steeds nie groot nie. Die verifikasiemetode was nodig: goeie sekuriteit, ondersteuning op alle toestelle (Windows 10, macOS, Linux, Android, iOS) en, in werklikheid, hoe eenvoudiger, hoe beter. Daarom het die keuse geval op EAP-TTLS in samewerking met die PAP-protokol.
Die vraag kan ontstaan - Waarom PAP gebruik? omdat hy wagwoorde duidelik versend?
Ja, dis reg. Kommunikasie tussen FreeRadius en FreeIPA sal op hierdie manier plaasvind. In ontfoutmodus kan jy naspoor hoe gebruikersnaam en wagwoord gestuur word. Ja, en laat hulle gaan, net jy het toegang tot die FreeRadius-bediener.
Jy kan meer lees oor die werk van EAP-TTLS
FreeRADIUS
FreeRadius sal op CentOS 7.6 verhoog word. Hier is niks ingewikkeld nie, ons stel dit op die gewone manier.
yum install freeradius freeradius-utils freeradius-ldap -y
Weergawe 3.0.13 is vanaf die pakkette geïnstalleer. Laasgenoemde kan geneem word
Daarna werk FreeRadius reeds. Jy kan die reël in /etc/raddb/users verwyder
steve Cleartext-Password := "testing"
Begin in die bediener in ontfoutmodus
freeradius -X
En maak 'n toetsverbinding vanaf localhost
radtest steve testing 127.0.0.1 1812 testing123
Het 'n antwoord Ontvang toegang-aanvaar ID 115 vanaf 127.0.0.1:1812 tot 127.0.0.1:56081 lengte 20, dit beteken alles is reg. Gaan voort.
Ons verbind die module ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
En ons sal dit dadelik verander. Ons het FreeRadius nodig om toegang tot FreeIPA te kry
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}})"
}
...
Herbegin die radiusbediener en kontroleer die sinchronisasie van LDAP-gebruikers:
radtest user_ldap password_ldap localhost 1812 testing123
Redigeer eap in mods-geaktiveer/eap
Hier voeg ons twee gevalle van eap by. Hulle sal slegs verskil in sertifikate en sleutels. Hieronder sal ek verduidelik hoekom dit so is.
mods-geaktiveer/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"
}
}
Verdere redigering webwerf-geaktiveer/verstek. Die magtig en verifieer afdelings is van belang.
webwerf-geaktiveer/verstek
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
}
In die magtigingsafdeling verwyder ons alle modules wat ons nie nodig het nie. Ons laat net ldap. Voeg kliëntverifikasie by gebruikernaam by. Daarom het ons twee gevalle van eap hierbo bygevoeg.
Multi EAPDie feit is dat wanneer ons sommige toestelle koppel, ons stelselsertifikate sal gebruik en die domein sal spesifiseer. Ons het 'n sertifikaat en 'n sleutel van 'n betroubare sertifikaatowerheid. Persoonlik, na my mening, is so 'n verbindingsprosedure makliker as om 'n selfgetekende sertifikaat op elke toestel te gooi. Maar selfs sonder selfondertekende sertifikate het dit steeds nie uitgewerk nie. Samsung-toestelle en Android =< 6 weergawes kan nie stelselsertifikate gebruik nie. Daarom skep ons 'n aparte instansie van eap-guest vir hulle met selfondertekende sertifikate. Vir alle ander toestelle sal ons die eap-kliënt met 'n vertroude sertifikaat gebruik. Die Gebruikersnaam word deur die Anoniem-veld bepaal wanneer die toestel gekoppel is. Slegs 3 waardes word toegelaat: Gas, Kliënt en 'n leë veld. Alles anders word weggegooi. Dit sal in politici gekonfigureer word. Ek sal 'n bietjie later 'n voorbeeld gee.
Kom ons redigeer die magtig- en staaf-afdelings in terrein-geaktiveer/binnetonnel
terrein-geaktiveer/binnetonnel
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
}
Vervolgens moet u in die beleide spesifiseer watter name vir anonieme aanmelding gebruik kan word. Redigering policy.d/filter.
Jy moet lyne soortgelyk aan hierdie vind:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
En onder in elsif voeg die verlangde waardes by:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Nou moet ons na die gids beweeg sertifikate. Hier moet jy die sleutel en sertifikaat van 'n betroubare sertifikaatowerheid plaas, wat ons reeds het en selfondertekende sertifikate vir eap-guest moet genereer.
Verander die parameters in die lêer 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"
Ons skryf dieselfde waardes in die lêer bediener.cnf. Ons verander net
algemene naam:
bediener.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"
Skep:
make
Gereed. Ontvang bediener.crt и bediener.sleutel ons het reeds hierbo in eap-guest geregistreer.
En laastens, kom ons voeg ons toegangspunte by die lêer kliënt.conf. Ek het 7 van hulle. Om nie elke punt afsonderlik by te voeg nie, sal ons net die netwerk skryf waarin hulle geleë is (my toegangspunte is in 'n aparte VLAN).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Ubiquiti kontroleerder
Ons skep 'n aparte netwerk op die beheerder. Laat dit 192.168.2.0/24 wees
Gaan na instellings -> profiel. Ons skep 'n nuwe een:
Ons skryf die adres en poort van die radius-bediener en die wagwoord wat in die lêer geskryf is clients.conf:
Skep 'n nuwe draadlose netwerknaam. Kies WPA-EAP (Enterprise) as die verifikasiemetode en spesifiseer die geskepte radiusprofiel:
Ons bêre alles, doen aansoek en gaan aan.
Die opstel van kliënte
Kom ons begin met die moeilikste!
Windows 10
Die moeilikheid kom daarop neer dat Windows nog nie weet hoe om via 'n domein aan korporatiewe WiFi te koppel nie. Daarom moet ons ons sertifikaat handmatig na die vertroude sertifikaatwinkel oplaai. Hier kan jy beide selfondertekende en van die sertifiseringsowerheid gebruik. Ek sal die tweede een gebruik.
Vervolgens moet u 'n nuwe verbinding skep. Om dit te doen, gaan na die netwerk- en internetinstellings -> Netwerk- en delingsentrum -> Skep en konfigureer 'n nuwe verbinding of netwerk:
Voer die netwerknaam handmatig in en verander die tipe sekuriteit. Nadat ons op geklik het konneksieinstellings verander en in die Sekuriteit-oortjie, kies netwerkverifikasie - EAP-TTLS.
Ons gaan na die parameters, skryf die vertroulikheid van verifikasie voor - kliënt. As 'n betroubare sertifiseringsowerheid, kies die sertifikaat wat ons bygevoeg het, merk die blokkie "Moenie 'n uitnodiging aan die gebruiker uitreik as die bediener nie gemagtig kan word nie" en kies die verifikasiemetode - ongeënkripteerde wagwoord (PAP).
Gaan dan na die gevorderde instellings, maak 'n regmerkie op "Spesifiseer die verifikasiemodus." Kies "Gebruikersbekragtiging" en klik op stoor geloofsbriewe. Hier sal jy username_ldap en password_ldap moet invoer
Ons bêre alles, doen aansoek, maak toe. Jy kan aan 'n nuwe netwerk koppel.
Linux
Ek het getoets op Ubuntu 18.04, 18.10, Fedora 29, 30.
Kom ons laai eers ons sertifikaat af. Ek het nie in Linux gevind of dit moontlik is om stelselsertifikate te gebruik en of daar hoegenaamd so 'n winkel is nie.
Kom ons koppel aan die domein. Daarom benodig ons 'n sertifikaat van die sertifiseringsowerheid by wie ons sertifikaat gekoop is.
Alle verbindings word in een venster gemaak. Kies ons netwerk:
anonieme-kliënt
domein - die domein waarvoor die sertifikaat uitgereik is
Android
nie-Samsung
Vanaf weergawe 7, wanneer u WiFi koppel, kan u stelselsertifikate gebruik deur slegs die domein te spesifiseer:
domein - die domein waarvoor die sertifikaat uitgereik is
anonieme-kliënt
Samsung
Soos ek hierbo geskryf het, weet Samsung-toestelle nie hoe om stelselsertifikate te gebruik wanneer hulle aan WiFi koppel nie, en hulle het nie die vermoë om via 'n domein te koppel nie. Daarom moet u die wortelsertifikaat van die sertifiseringsowerheid handmatig byvoeg (ca.pem, ons neem dit op die Radius-bediener). Hier is waar self-onderteken gebruik sal word.
Laai die sertifikaat af na jou toestel en installeer dit.
Sertifikaat installasie
Terselfdertyd sal jy die skermontsluitpatroon, pinkode of wagwoord moet stel, as dit nie reeds gestel is nie:
Ek het 'n ingewikkelde weergawe van die installering van 'n sertifikaat gewys. Op die meeste toestelle, klik eenvoudig op die afgelaaide sertifikaat.
Wanneer die sertifikaat geïnstalleer is, kan jy voortgaan na die verbinding:
sertifikaat - dui die een aan wat geïnstalleer is
anonieme gebruiker - gas
MacOS
Apple-toestelle uit die boks kan net aan EAP-TLS koppel, maar jy moet steeds 'n sertifikaat na hulle gooi. Om 'n ander verbindingsmetode te spesifiseer, moet jy Apple Configurator 2 gebruik. Gevolglik moet jy dit eers na jou Mac aflaai, 'n nuwe profiel skep en al die nodige WiFi-instellings byvoeg.
Apple Configurator
Voer jou netwerknaam hier in
Sekuriteit Tipe - WPA2 Enterprise
Aanvaarde EAP-tipes - TTLS
Gebruikersnaam en wagwoord - laat leeg
Innerlike verifikasie - PAP
Uiterlike Identiteit-kliënt
Vertroue-oortjie. Hier spesifiseer ons ons domein
Almal. Die profiel kan gestoor, onderteken en na toestelle versprei word
Nadat die profiel gereed is, moet jy dit na die papawer aflaai en installeer. Tydens die installasieproses sal jy die usernmae_ldap en password_ldap van die gebruiker moet spesifiseer:
IOS
Die proses is soortgelyk aan macOS. Jy moet 'n profiel gebruik (jy kan dieselfde een as vir macOS gebruik. Hoe om 'n profiel in Apple Configurator te skep, sien hierbo).
Laai profiel af, installeer, voer geloofsbriewe in, koppel:
Dis al. Ons het 'n Radius-bediener opgestel, dit met FreeIPA gesinkroniseer en Ubiquiti AP's aangesê om WPA2-EAP te gebruik.
Moontlike vrae
IN: hoe om 'n profiel/sertifikaat aan 'n werknemer oor te dra?
OOR: Ek stoor alle sertifikate/profiele op ftp met webtoegang. Het 'n gasnetwerk met 'n spoedbeperking en slegs toegang tot die internet verhoog, met die uitsondering van ftp.
Stawing duur vir 2 dae, waarna dit teruggestel word en die kliënt sonder die internet gelaat word. Daardie. wanneer 'n werknemer aan WiFi wil koppel, koppel hy eers aan die gasnetwerk, kry toegang tot FTP, laai die sertifikaat of profiel af wat hy benodig, installeer dit en kan dan aan die korporatiewe netwerk koppel.
IN: hoekom nie skema met MSCHAPv2 gebruik nie? Sy is veiliger!
OOR: Eerstens werk so 'n skema goed op NPS (Windows Network Policy System), in ons implementering is dit nodig om addisioneel LDAP (FreeIpa) op te stel en wagwoord-hashes op die bediener te stoor. Voeg by. dit is nie raadsaam om instellings te maak nie, want. dit kan lei tot verskeie probleme om die ultraklank te sinchroniseer. Tweedens, die hash is MD4, so dit voeg nie veel sekuriteit by nie.
IN: is dit moontlik om toestelle volgens Mac-adresse te magtig?
OOR: NEE, dit is nie veilig nie, 'n aanvaller kan MAC-adresse verander, en meer nog word magtiging deur MAC-adresse nie op baie toestelle ondersteun nie
IN: wat vir oor die algemeen al hierdie sertifikate om te gebruik? kan jy sonder hulle aansluit?
OOR: sertifikate word gebruik om die bediener te magtig. Dié. wanneer dit koppel, kyk die toestel of dit 'n bediener is wat vertrou kan word of nie. As dit is, gaan die verifikasie voort, indien nie, word die verbinding gesluit. Jy kan sonder sertifikate koppel, maar as 'n aanvaller of buurman 'n radiusbediener en 'n toegangspunt met dieselfde naam as ons s'n by die huis opstel, kan hy maklik die gebruiker se geloofsbriewe onderskep (moenie vergeet dat dit in duidelike teks versend word nie). En wanneer 'n sertifikaat gebruik word, sal die vyand slegs ons fiktiewe Gebruikersnaam in sy logboeke sien - gas of kliënt en 'n tipe fout - Onbekende CA-sertifikaat
'n bietjie meer oor macOSGewoonlik op macOS word die stelsel herinstalleer via die internet. In herstelmodus moet die Mac aan WiFi gekoppel wees, en nie ons korporatiewe WiFi of die gasnetwerk sal hier werk nie. Persoonlik het ek 'n ander netwerk, die gewone WPA2-PSK, weggesteek, net vir tegniese bedrywighede. Of jy kan steeds vooraf 'n selflaaibare USB-flash drive met die stelsel maak. Maar as die papawer na 2015 is, sal jy steeds 'n adapter vir hierdie flash drive moet kry)
Bron: will.com