WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Nogle eksempler på organisering af virksomhedens WiFi er allerede blevet beskrevet. Her vil jeg beskrive, hvordan jeg implementerede en lignende løsning, og de problemer, jeg skulle stå over for, når jeg tilsluttede på forskellige enheder. Vi vil bruge den eksisterende LDAP med registrerede brugere, hæve FreeRadius og konfigurere WPA2-Enterprise på Ubnt-controlleren. Alt ser ud til at være enkelt. Lad os se…

Lidt om EAP metoder

Før vi fortsætter med opgaven, skal vi beslutte, hvilken godkendelsesmetode vi vil bruge i vores løsning.

Fra Wikipedia:

EAP er en autentificeringsramme, der ofte bruges i trådløse netværk og punkt-til-punkt-forbindelser. Formatet blev først beskrevet i RFC 3748 og opdateret i RFC 5247.
EAP bruges til at vælge en godkendelsesmetode, sende nøgler og behandle disse nøgler med plug-ins kaldet EAP-metoder. Der er mange EAP-metoder, både defineret med EAP selv og frigivet af individuelle leverandører. EAP definerer ikke linklaget, det definerer kun meddelelsesformatet. Hver protokol, der bruger EAP, har sin egen EAP-meddelelsesindkapslingsprotokol.

Selve metoderne:

  • LEAP er en proprietær protokol udviklet af CISCO. Sårbarheder fundet. Det anbefales i øjeblikket ikke at bruge
  • EAP-TLS er godt understøttet blandt trådløse leverandører. Det er en sikker protokol, fordi den er efterfølgeren til SSL-standarderne. Opsætning af klienten er ret kompliceret. Du skal have et klientcertifikat ud over adgangskoden. Understøttet på mange systemer
  • EAP-TTLS - bredt understøttet på mange systemer, tilbyder god sikkerhed ved kun at bruge PKI-certifikater på godkendelsesserveren
  • EAP-MD5 er en anden åben standard. Giver minimal sikkerhed. Sårbar, understøtter ikke gensidig godkendelse og nøglegenerering
  • EAP-IKEv2 - baseret på Internet Key Exchange Protocol version 2. Giver gensidig godkendelse og etablering af sessionsnøgle mellem klient og server
  • PEAP er en fælles løsning af CISCO, Microsoft og RSA Security som en åben standard. Bred tilgængelig i produkter, giver meget god sikkerhed. Svarende til EAP-TTLS, kræver kun et certifikat på serversiden
  • PEAPv0/EAP-MSCHAPv2 - efter EAP-TLS er dette den anden udbredte standard i verden. Brugt klient-server forhold i Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC - Skabt af Cisco som et alternativ til PEAPv0/EAP-MSCHAPv2. Beskytter ikke godkendelsesdata på nogen måde. Ikke understøttet på Windows OS
  • EAP-FAST er en teknik udviklet af Cisco til at rette op på manglerne ved LEAP. Bruger Protected Access Credential (PAC). Fuldstændig ufærdig

Af al denne mangfoldighed er valget stadig ikke stort. Godkendelsesmetoden var påkrævet: god sikkerhed, support på alle enheder (Windows 10, macOS, Linux, Android, iOS) og faktisk jo enklere jo bedre. Derfor faldt valget på EAP-TTLS i forbindelse med PAP-protokollen.
Spørgsmålet kan opstå - Hvorfor bruge PAP? fordi han sender adgangskoder i det klare?

Ja det er rigtigt. Kommunikation mellem FreeRadius og FreeIPA vil foregå på denne måde. I fejlretningstilstand kan du spore, hvordan brugernavn og adgangskode sendes. Ja, og lad dem gå, kun du har adgang til FreeRadius-serveren.

Du kan læse mere om arbejdet i EAP-TTLS her

FriRADIUS

FreeRadius vil blive hævet på CentOS 7.6. Der er ikke noget kompliceret her, vi sætter det på den sædvanlige måde.

yum install freeradius freeradius-utils freeradius-ldap -y

Version 3.0.13 er installeret fra pakkerne. Sidstnævnte kan tages https://freeradius.org/

Derefter virker FreeRadius allerede. Du kan fjerne kommentering af linjen i /etc/raddb/users

steve   Cleartext-Password := "testing"

Start ind på serveren i fejlretningstilstand

freeradius -X

Og lav en testforbindelse fra localhost

radtest steve testing 127.0.0.1 1812 testing123

Fik et svar Modtaget Access-Accept Id 115 fra 127.0.0.1:1812 til 127.0.0.1:56081 længde 20, det betyder, at alt er OK. Fortsæt.

Vi forbinder modulet ldap.

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

Og vi ændrer det med det samme. Vi har brug for FreeRadius for at kunne få adgang til FreeIPA

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

Genstart radiusserveren og kontroller synkroniseringen af ​​LDAP-brugere:

radtest user_ldap password_ldap localhost 1812 testing123

Redigering eap in mods-aktiveret/eap
Her tilføjer vi to forekomster af eap. De vil kun adskille sig i certifikater og nøgler. Nedenfor vil jeg forklare, hvorfor det er sådan.

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

Yderligere redigering site-aktiveret/standard. Autorisations- og autentificeringssektionerne er af interesse.

site-aktiveret/standard

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 autorisationsafsnittet fjerner vi alle moduler, som vi ikke har brug for. Vi forlader kun ldap. Tilføj klientbekræftelse efter brugernavn. Det er derfor, vi tilføjede to forekomster af eap ovenfor.

Multi EAPFaktum er, at ved at forbinde nogle enheder vil vi bruge systemcertifikater og angive domænet. Vi har et certifikat og en nøgle fra en betroet certifikatmyndighed. Personligt er sådan en forbindelsesprocedure efter min mening nemmere end at smide et selvsigneret certifikat på hver enhed. Men selv uden selvsignerede certifikater lykkedes det stadig ikke. Samsung-enheder og Android =< 6 versioner kan ikke bruge systemcertifikater. Derfor opretter vi en separat forekomst af eap-gæst for dem med selvsignerede certifikater. For alle andre enheder vil vi bruge eap-klienten med et betroet certifikat. Brugernavnet bestemmes af feltet Anonym, når enheden er tilsluttet. Kun 3 værdier er tilladt: Gæst, Klient og et tomt felt. Alt andet kasseres. Det vil blive konfigureret i politikerne. Jeg giver et eksempel lidt senere.

Lad os redigere godkendelses- og autentificeringssektionerne i site-aktiveret/inner-tunnel

site-aktiveret/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
}

Dernæst skal du angive i politikkerne, hvilke navne der kan bruges til anonymt login. Redigering policy.d/filter.

Du skal finde linjer, der ligner denne:

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

Og nedenfor i elsif tilføjes de ønskede værdier:

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

Nu skal vi flytte til mappen CERT. Her skal du lægge nøglen og certifikatet fra en betroet certifikatmyndighed, som vi allerede har og skal generere selvsignerede certifikater til eap-guest.

Skift parametrene 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 = [email protected]
commonName = "CA FreeRadius"

Vi skriver de samme værdier i filen server.cnf. Vi ændrer kun
almindeligt navn:

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"

Skab:

make

Parat. Modtaget server.crt и server.nøgle vi har allerede registreret os ovenfor i eap-guest.

Og endelig, lad os tilføje vores adgangspunkter til filen klient.konf. Jeg har 7 af dem. For ikke at tilføje hvert punkt separat, skriver vi kun det netværk, de er placeret i (mine adgangspunkter er i et separat VLAN).

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

Ubiquiti controller

Vi laver et separat netværk på controlleren. Lad det være 192.168.2.0/24
Gå til indstillinger -> profil. Vi laver en ny:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Vi skriver adressen og porten på radiusserveren og adgangskoden, der blev skrevet i filen clients.conf:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Opret et nyt trådløst netværksnavn. Vælg WPA-EAP (Enterprise) som godkendelsesmetode, og angiv den oprettede radiusprofil:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Vi gemmer alt, ansøger og går videre.

Opsætning af klienter

Lad os starte med det sværeste!

Windows 10

Vanskeligheden kommer ned til, at Windows endnu ikke ved, hvordan man opretter forbindelse til virksomhedens WiFi via et domæne. Derfor skal vi manuelt uploade vores certifikat til det betroede certifikatlager. Her kan du bruge både selvsigneret og fra certificeringsmyndigheden. Jeg vil bruge den anden.

Dernæst skal du oprette en ny forbindelse. For at gøre dette skal du gå til netværks- og internetindstillinger -> Netværks- og delingscenter -> Opret og konfigurer en ny forbindelse eller et nyt netværk:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Indtast netværksnavnet manuelt, og skift sikkerhedstypen. Efter vi har klikket på ændre forbindelsesindstillinger og på fanen Sikkerhed skal du vælge netværksgodkendelse - EAP-TTLS.

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Vi går ind i parametrene, foreskriver autentificeringens fortrolighed - kunde. Som en betroet certificeringsmyndighed skal du vælge det certifikat, vi tilføjede, markere afkrydsningsfeltet "Udgiv ikke en invitation til brugeren, hvis serveren ikke kan autoriseres", og vælg godkendelsesmetoden - ukrypteret adgangskode (PAP).

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Gå derefter til de avancerede indstillinger, sæt et flueben på "Angiv godkendelsestilstanden." Vælg "Brugergodkendelse" og klik på gemme legitimationsoplysninger. Her skal du indtaste username_ldap og password_ldap

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Vi gemmer alt, ansøger, lukker. Du kan oprette forbindelse til et nyt netværk.

Linux

Jeg testede på Ubuntu 18.04, 18.10, Fedora 29, 30.

Lad os først downloade vores certifikat. Jeg fandt ikke i Linux om det er muligt at bruge systemcertifikater og om der overhovedet er sådan en butik.

Lad os oprette forbindelse til domænet. Derfor har vi brug for et certifikat fra den certificeringsmyndighed, hvorfra vores certifikat er købt.

Alle forbindelser foretages i ét vindue. Valg af vores netværk:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

anonym-klient
domæne - det domæne, som certifikatet er udstedt for

Android

ikke-Samsung

Fra version 7, når du tilslutter WiFi, kan du bruge systemcertifikater ved kun at angive domænet:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

domæne - det domæne, som certifikatet er udstedt for
anonym-klient

Samsung

Som jeg skrev ovenfor, ved Samsung-enheder ikke, hvordan man bruger systemcertifikater, når de opretter forbindelse til WiFi, og de har ikke mulighed for at oprette forbindelse via et domæne. Derfor skal du manuelt tilføje certificeringsmyndighedens rodcertifikat (ca.pem, vi tager det på Radius-serveren). Her vil selvsigneret blive brugt.

Download certifikatet til din enhed og installer det.

Installation af certifikatWiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Samtidig skal du indstille skærmoplåsningsmønsteret, pinkoden eller adgangskoden, hvis den ikke allerede er indstillet:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Jeg viste en kompliceret version af installation af et certifikat. På de fleste enheder skal du blot klikke på det downloadede certifikat.

Når certifikatet er installeret, kan du fortsætte til forbindelsen:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

certifikat - angiv det, der blev installeret
anonym bruger - gæst

MacOS

Apple-enheder ud af æsken kan kun oprette forbindelse til EAP-TLS, men du skal stadig smide et certifikat efter dem. For at angive en anden forbindelsesmetode skal du bruge Apple Configurator 2. Derfor skal du først downloade den til din Mac, oprette en ny profil og tilføje alle de nødvendige WiFi-indstillinger.

Apple ConfiguratorWiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Indtast dit netværksnavn her
Sikkerhedstype - WPA2 Enterprise
Accepterede EAP-typer - TTLS
Brugernavn og adgangskode - lad stå tomt
Indre autentificering - PAP
Ydre Identitet-klient

Fanen Tillid. Her angiver vi vores domæne

Alle. Profilen kan gemmes, signeres og distribueres til enheder

Når profilen er klar, skal du downloade den til valmuen og installere den. Under installationsprocessen skal du angive brugerens usernmae_ldap og password_ldap:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

iOS

Processen ligner macOS. Du skal bruge en profil (du kan bruge den samme som til macOS. Sådan opretter du en profil i Apple Configurator, se ovenfor).

Download profil, installer, indtast legitimationsoplysninger, tilslut:

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

WiFi virksomhed. FreeRadius + FreeIPA + Ubiquiti

Det er alt. Vi satte en Radius-server op, synkroniserede den med FreeIPA og fortalte Ubiquiti AP'er at bruge WPA2-EAP.

Mulige spørgsmål

I: hvordan overfører man en profil/certifikat til en medarbejder?

Om: Jeg gemmer alle certifikater/profiler på ftp med webadgang. Rejste et gæstenetværk med en hastighedsgrænse og kun adgang til internettet, med undtagelse af ftp.
Autentificeringen varer i 2 dage, hvorefter den nulstilles, og klienten efterlades uden internet. At. når en medarbejder ønsker at oprette forbindelse til WiFi, opretter han først forbindelse til gæstenetværket, får adgang til FTP, downloader det certifikat eller den profil, han har brug for, installerer det og kan derefter oprette forbindelse til virksomhedens netværk.

I: hvorfor ikke bruge skema med MSCHAPv2? Hun er mere sikker!

Om: For det første fungerer en sådan ordning godt på NPS (Windows Network Policy System), i vores implementering er det nødvendigt yderligere at konfigurere LDAP (FreeIpa) og gemme adgangskode-hash på serveren. Tilføje. det er ikke tilrådeligt at lave indstillinger, fordi. dette kan føre til forskellige problemer med at synkronisere ultralyden. For det andet er hashen MD4, så det tilføjer ikke meget sikkerhed.

I: er det muligt at godkende enheder med mac-adresser?

Om: NEJ, dette er ikke sikkert, en angriber kan ændre MAC-adresser, og endnu mere er godkendelse af MAC-adresser ikke understøttet på mange enheder

I: hvad for generelt at bruge alle disse certifikater? kan du være med uden dem?

Om: certifikater bruges til at autorisere serveren. De der. når der oprettes forbindelse, tjekker enheden, om det er en server, man kan stole på eller ej. Hvis det er tilfældet, fortsætter godkendelsen, hvis ikke, lukkes forbindelsen. Du kan oprette forbindelse uden certifikater, men hvis en angriber eller nabo opsætter en radiusserver og et adgangspunkt med samme navn som vores derhjemme, kan han nemt opsnappe brugerens legitimationsoplysninger (glem ikke, at de transmitteres i klartekst). Og når et certifikat bruges, vil fjenden kun se vores fiktive brugernavn i sine logfiler - gæst eller klient og en typefejl - Ukendt CA-certifikat

lidt mere om macOSNormalt på macOS sker geninstallation af systemet via internettet. I gendannelsestilstand skal Mac'en være tilsluttet WiFi, og hverken vores virksomheds WiFi eller gæstenetværket vil fungere her. Personligt rejste jeg et andet netværk, det sædvanlige WPA2-PSK, skjult, kun til tekniske operationer. Eller du kan stadig lave et bootbart USB-flashdrev med systemet på forhånd. Men hvis valmuen er efter 2015, skal du stadig finde en adapter til dette flashdrev)

Kilde: www.habr.com

Tilføj en kommentar