WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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 hÀr

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 -y

Av paketen Àr version 3.0.13 installerad. Den senare kan tas kl https://freeradius.org/

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 -X

Och gör en testanslutning frÄn localhost

radtest steve testing 127.0.0.1 1812 testing123

Vi 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/ldap

Och 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:

make

Redo. 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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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.

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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).

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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 certifikatWiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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 ConfiguratorWiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

WiFi företag. FreeRadius + FreeIPA + Ubiquiti

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

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster