WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

A vállalati WiFi megszervezésére már leírtunk néhány példát. Itt leírom, hogyan valósítottam meg egy hasonló megoldást, és milyen problémákkal kellett szembenéznem, amikor különböző eszközökön csatlakoztam. A meglévő LDAP-t használjuk a regisztrált felhasználókkal, emeljük a FreeRadiust és konfiguráljuk a WPA2-Enterprise-t az Ubnt vezérlőn. Minden egyszerűnek tűnik. Lássuk…

Egy kicsit az EAP módszerekről

Mielőtt folytatnánk a feladatot, el kell döntenünk, hogy melyik hitelesítési módszert alkalmazzuk megoldásunkban.

A Wikipédiából:

Az EAP egy hitelesítési keretrendszer, amelyet gyakran használnak vezeték nélküli hálózatokban és pont-pont kapcsolatokban. A formátumot először az RFC 3748-ban írták le, majd az RFC 5247-ben frissítették.
Az EAP a hitelesítési mód kiválasztására, a kulcsok átadására és a kulcsok EAP metódusoknak nevezett beépülő modulokkal való feldolgozására szolgál. Számos EAP-módszer létezik, mindkettőt magával az EAP-vel határozták meg, és amelyeket az egyes szállítók bocsátanak ki. Az EAP nem határozza meg a kapcsolati réteget, csak az üzenet formátumát. Minden EAP-t használó protokollnak saját EAP-üzenetbeágyazási protokollja van.

Maguk a módszerek:

  • A LEAP a CISCO által kifejlesztett szabadalmaztatott protokoll. Sebezhetőséget találtak. Jelenleg nem javasolt a használata
  • Az EAP-TLS jól támogatott a vezeték nélküli gyártók körében. Ez egy biztonságos protokoll, mert az SSL szabványok utódja. Az ügyfél beállítása meglehetősen bonyolult. A jelszó mellett szükség van egy kliens tanúsítványra is. Számos rendszeren támogatott
  • EAP-TTLS – széles körben támogatott számos rendszeren, jó biztonságot nyújt a PKI tanúsítványok csak a hitelesítési szerveren történő használatával
  • Az EAP-MD5 egy másik nyílt szabvány. Minimális biztonságot nyújt. Sebezhető, nem támogatja a kölcsönös hitelesítést és a kulcsgenerálást
  • EAP-IKEv2 - az Internet Key Exchange Protocol 2-es verzióján alapul. Kölcsönös hitelesítést és munkamenetkulcs-létrehozást biztosít az ügyfél és a szerver között
  • A PEAP a CISCO, a Microsoft és az RSA Security közös megoldása, mint nyílt szabvány. Széles körben elérhető termékekben, nagyon jó biztonságot nyújt. Hasonló az EAP-TTLS-hez, csak egy tanúsítványt igényel a szerver oldalon
  • PEAPv0/EAP-MSCHAPv2 – az EAP-TLS után ez a második széles körben használt szabvány a világon. Használt kliens-szerver kapcsolat Microsoft, Cisco, Apple, Linux rendszerben
  • PEAPv1/EAP-GTC – A Cisco készítette a PEAPv0/EAP-MSCHAPv2 alternatívájaként. Semmilyen módon nem védi a hitelesítési adatokat. Windows operációs rendszeren nem támogatott
  • Az EAP-FAST a Cisco által kifejlesztett technika a LEAP hiányosságainak kijavítására. Védett hozzáférési hitelesítő adatokat (PAC) használ. Teljesen befejezetlen

A sokféleség közül a választék még mindig nem nagy. Szükség volt a hitelesítési módszerre: jó biztonság, támogatás minden eszközön (Windows 10, macOS, Linux, Android, iOS), sőt, minél egyszerűbb, annál jobb. Ezért a választás az EAP-TTLS-re esett a PAP protokollal együtt.
Felmerülhet a kérdés – Miért használjunk PAP-ot? mert tisztán továbbítja a jelszavakat?

Igen ez így van. A FreeRadius és a FreeIPA közötti kommunikáció ilyen módon történik. Hibakeresési módban nyomon követheti a felhasználónév és a jelszó elküldésének módját. Igen, és engedd el őket, csak neked van hozzáférésed a FreeRadius szerverhez.

Az EAP-TTLS munkájáról bővebben olvashat itt

FreeRADIUS

A FreeRadius a CentOS 7.6-on fog megjelenni. Nincs itt semmi bonyolult, a szokásos módon állítjuk be.

yum install freeradius freeradius-utils freeradius-ldap -y

A 3.0.13-as verzió telepítve van a csomagokból. Ez utóbbit lehet venni https://freeradius.org/

Ezt követően a FreeRadius már működik. A sor megjegyzését az /etc/raddb/users fájlból törölheti

steve   Cleartext-Password := "testing"

Indítsa el a szervert hibakeresési módban

freeradius -X

És készíts tesztkapcsolatot a localhost-ról

radtest steve testing 127.0.0.1 1812 testing123

Megvan a válasz 115-ös hozzáférési-elfogadási azonosító érkezett 127.0.0.1:1812 és 127.0.0.1:56081 között 20 hosszúság, ez azt jelenti, hogy minden rendben van. Menj tovább.

Csatlakoztatjuk a modult ldap.

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

És azonnal megváltoztatjuk. Szükségünk van a FreeRadiusra, hogy hozzáférhessünk a FreeIPA-hoz

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

Indítsa újra a sugárkiszolgálót, és ellenőrizze az LDAP-felhasználók szinkronizálását:

radtest user_ldap password_ldap localhost 1812 testing123

Szerkesztés eap in mods-enabled/eap
Itt hozzáadjuk az eap két példányát. Csak a tanúsítványokban és a kulcsokban különböznek egymástól. Az alábbiakban elmagyarázom, miért van ez így.

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

További szerkesztés site-enabled/alapértelmezett. Az engedélyezési és hitelesítési szakaszok érdekesek.

site-enabled/alapértelmezett

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
}

Az engedélyezési részben eltávolítjuk az összes olyan modult, amelyre nincs szükségünk. Csak az ldap-ot hagyjuk. Adjon hozzá ügyfél-ellenőrzést felhasználónév alapján. Ezért adtunk hozzá két eap-példányt fent.

Több EAPA helyzet az, hogy egyes eszközök csatlakoztatásakor rendszertanúsítványokat használunk, és megadjuk a tartományt. Van egy tanúsítványunk és egy kulcsunk egy megbízható tanúsító hatóságtól. Személy szerint véleményem szerint egy ilyen csatlakozási eljárás egyszerűbb, mint minden eszközön önaláírt tanúsítványt dobni. De még önaláírt tanúsítványok nélkül sem sikerült. Samsung eszközök és Android =< 6 verziók nem használhatnak rendszertanúsítványokat. Ezért külön eap-guest példányt hozunk létre számukra önaláírt tanúsítványokkal. Az összes többi eszköz esetében az eap-klienst használjuk megbízható tanúsítvánnyal. A felhasználónevet az Anonymous mező határozza meg, amikor az eszköz csatlakoztatva van. Csak 3 érték megengedett: Vendég, Ügyfél és egy üres mező. Minden mást eldobnak. A politikusokban lesz beállítva. Kicsit később mondok egy példát.

Szerkesszük az engedélyezési és hitelesítési szakaszokat site-enabled/inner-alagút

site-enabled/inner-alagút

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
}

Ezután meg kell adnia a házirendekben, hogy mely nevek használhatók a névtelen bejelentkezéshez. Szerkesztés policy.d/filter.

Ehhez hasonló sorokat kell találnia:

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

Az elsif alatt pedig adja hozzá a kívánt értékeket:

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

Most át kell lépnünk a könyvtárba tanúsítványok. Ide kell elhelyezni a kulcsot és a tanúsítványt egy megbízható tanúsító hatóságtól, amellyel már rendelkezünk, és önaláírt tanúsítványokat kell generálnunk az eap-guest számára.

Módosítsa a fájl paramétereit 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"

Ugyanazokat az értékeket írjuk a fájlba szerver.cnf. Csak mi változunk
gyakori név:

szerver.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"

Teremt:

make

Kész. Megkapta szerver.crt и szerver.kulcs fentebb már regisztráltunk az eap-guestben.

És végül adjuk hozzá hozzáférési pontjainkat a fájlhoz kliens.conf. Nekem 7 db van belőle, hogy ne vegyen fel minden pontot külön, csak azt a hálózatot írjuk ki, amelyben találhatók (az én hozzáférési pontjaim külön VLAN-ban vannak).

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

Ubiquiti vezérlő

A vezérlőn külön hálózatot emelünk ki. Legyen 192.168.2.0/24
Menjen a beállítások -> profilhoz. Létrehozunk egy újat:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Megírjuk a sugárkiszolgáló címét és portját, valamint a fájlba írt jelszót clients.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Hozzon létre egy új vezeték nélküli hálózatnevet. Válassza ki a WPA-EAP-t (Enterprise) hitelesítési módszerként, és adja meg a létrehozott sugárprofilt:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Mindent elmentünk, jelentkezünk és megyünk tovább.

Ügyfelek beállítása

Kezdjük a legnehezebbel!

A windows 10

A nehézség abból adódik, hogy a Windows még nem tudja, hogyan kell tartományon keresztül csatlakozni a vállalati WiFi-hez. Ezért manuálisan kell feltöltenünk tanúsítványunkat a megbízható tanúsítványtárolóba. Itt használhatja mind az önaláírt, mind a hitelesítés-szolgáltatótól származó adatokat. A másodikat fogom használni.

Ezután új kapcsolatot kell létrehoznia. Ehhez lépjen a Hálózati és internetbeállítások -> Hálózati és megosztási központ -> Új kapcsolat vagy hálózat létrehozása és konfigurálása menüpontra:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Adja meg kézzel a hálózat nevét, és módosítsa a biztonság típusát. Miután rákattintunk módosítsa a kapcsolat beállításait és a Biztonság lapon válassza a hálózati hitelesítés - EAP-TTLS lehetőséget.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Bemegyünk a paraméterekbe, előírjuk a hitelesítés titkosságát - vásárló. Megbízható hitelesítés-szolgáltatóként válassza ki az általunk hozzáadott tanúsítványt, jelölje be a "Ne adjon ki meghívót a felhasználónak, ha a szerver nem engedélyezhető" négyzetet, és válassza ki a hitelesítési módot - titkosítatlan jelszó (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ezután lépjen a speciális beállításokhoz, és jelölje be a „Hitelesítési mód megadása” lehetőséget. Válassza a "Felhasználói hitelesítés" lehetőséget, és kattintson a gombra mentse a hitelesítő adatokat. Itt meg kell adnia a username_ldap és a password_ldap mezőket

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Mindent elmentünk, jelentkezünk, bezárunk. Csatlakozhat egy új hálózathoz.

Linux

Ubuntu 18.04, 18.10, Fedora 29, 30 alatt teszteltem.

Először is töltsük le a tanúsítványunkat. Linuxban nem találtam, hogy lehet-e rendszertanúsítványt használni, és van-e egyáltalán ilyen bolt.

Csatlakozzunk a domainhez. Ezért szükségünk van egy tanúsítványra attól a tanúsító hatóságtól, amelytől a tanúsítványunkat vásároltuk.

Minden csatlakozás egy ablakban történik. Hálózatunk kiválasztása:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

névtelen-kliens
domain - az a domain, amelyre a tanúsítványt kiállították

Android

nem Samsung

A 7-es verziótól kezdve a WiFi csatlakoztatásakor csak a domain megadásával használhatja a rendszertanúsítványokat:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domain - az a domain, amelyre a tanúsítványt kiállították
névtelen-kliens

Samsung

Ahogy fentebb is írtam, a Samsung készülékek nem tudják, hogyan kell használni a rendszertanúsítványokat a WiFi-hez való csatlakozáskor, és nem tudnak domainen keresztül csatlakozni. Ezért manuálisan kell hozzáadnia a hitelesítésszolgáltató gyökértanúsítványát (ca.pem, a Radius szerveren vesszük fel). Itt az önaláírást fogják használni.

Töltse le a tanúsítványt a készülékére, és telepítse.

Tanúsítvány telepítéseWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ezzel egyidejűleg be kell állítania a képernyő feloldási mintáját, a PIN-kódot vagy a jelszót, ha még nincs beállítva:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Megmutattam a tanúsítvány telepítésének egy bonyolult változatát. A legtöbb eszközön egyszerűen kattintson a letöltött tanúsítványra.

A tanúsítvány telepítése után folytathatja a csatlakozást:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

tanúsítvány - jelölje meg azt, amelyik telepítve volt
névtelen felhasználó - vendég

MacOS

Az Apple készülékek a dobozból csak az EAP-TLS-hez tudnak csatlakozni, de továbbra is tanúsítványt kell adni nekik. Más csatlakozási mód megadásához az Apple Configurator 2-t kell használnia. Ennek megfelelően először le kell töltenie Mac gépére, létre kell hoznia egy új profilt, és hozzá kell adnia az összes szükséges WiFi beállítást.

Apple ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ide írja be a hálózat nevét
Biztonsági típus - WPA2 Enterprise
Elfogadott EAP-típusok – TTLS
Felhasználónév és jelszó - hagyja üresen
Belső hitelesítés - PAP
Külső identitás-kliens

Bizalom lap. Itt adjuk meg a domainünket

Minden. A profil menthető, aláírható és eszközökre terjeszthető

Miután elkészült a profil, le kell töltenie a mákba és telepítenie kell. A telepítési folyamat során meg kell adnia a felhasználó usernmae_ldap és password_ldap paramétereit:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

A folyamat hasonló a macOS-hez. Használnia kell egy profilt (ugyanazt használhatja, mint a macOS esetében. Hogyan hozhat létre profilt az Apple Configuratorban, lásd fent).

Profil letöltése, telepítés, hitelesítési adatok megadása, csatlakozás:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ez minden. Beállítottunk egy Radius szervert, szinkronizáltuk a FreeIPA-val, és azt mondtuk az Ubiquiti hozzáférési pontoknak, hogy WPA2-EAP-t használjanak.

Lehetséges kérdések

BAN BEN: hogyan lehet profilt/tanúsítványt átadni egy alkalmazottnak?

RÓL RŐL: Az összes tanúsítványt/profilt ftp-n tárolom webes hozzáféréssel. Sebességkorlátozással rendelkező vendéghálózatot hozott létre, és csak az internethez férhet hozzá, az ftp kivételével.
A hitelesítés 2 napig tart, utána visszaáll, és a kliens internet nélkül marad. Hogy. amikor egy alkalmazott csatlakozni szeretne a WiFi-hez, először csatlakozik a vendég hálózathoz, hozzáfér az FTP-hez, letölti a szükséges tanúsítványt vagy profilt, telepíti, majd csatlakozhat a vállalati hálózathoz.

BAN BEN: miért nem használ sémát az MSCHAPv2-vel? Biztonságban van!

RÓL RŐL: Először is, egy ilyen séma jól működik az NPS-en (Windows Network Policy System), megvalósításunk során szükség van az LDAP (FreeIpa) további konfigurálására és a jelszókivonatok tárolására a szerveren. Hozzáadás. nem célszerű beállításokat végezni, mert. ez különféle problémákhoz vezethet az ultrahang szinkronizálásában. Másodszor, a hash MD4, tehát nem ad nagy biztonságot.

BAN BEN: lehetséges az eszközök engedélyezése mac-címek alapján?

RÓL RŐL: NEM, ez nem biztonságos, a támadók megváltoztathatják a MAC-címeket, és még inkább a MAC-címek engedélyezése nem támogatott sok eszközön

BAN BEN: általában mire kell használni ezeket a tanúsítványokat? csatlakozhatsz nélkülük?

RÓL RŐL: tanúsítványokat használnak a szerver engedélyezésére. Azok. csatlakozáskor az eszköz ellenőrzi, hogy megbízható-e vagy sem. Ha igen, akkor a hitelesítés folytatódik, ha nem, a kapcsolat megszakad. Tanúsítványok nélkül is csatlakozhat, de ha egy támadó vagy szomszéd otthon beállít egy sugárkiszolgálót és a miénkkel megegyező nevű hozzáférési pontot, könnyen elkaphatja a felhasználó hitelesítő adatait (ne felejtsük el, hogy azokat tiszta szöveggel továbbítják). És amikor egy tanúsítványt használnak, az ellenség csak a fiktív felhasználói nevünket fogja látni - vendég vagy kliens - és egy típushibát - ismeretlen CA-tanúsítvány.

kicsit többet a macOS-rőlÁltalában macOS-en a rendszer újratelepítése az interneten keresztül történik. Helyreállítási módban a Macnek csatlakoznia kell a WiFi-hez, és itt sem a céges WiFi-nk, sem a vendéghálózat nem fog működni. Személy szerint egy másik hálózatot, a szokásos WPA2-PSK-t emeltem ki rejtve, csak technikai műveletekre. Vagy készíthet előre egy indítható USB flash meghajtót a rendszerrel. De ha a mák 2015 után van, akkor is találnia kell egy adaptert ehhez a flash meghajtóhoz)

Forrás: will.com

Hozzászólás