Kurumsal Wi-Fi düzenlemenin bazı örnekleri daha önce açıklanmıştır. Burada benzer bir çözümü nasıl uyguladığımı ve farklı cihazlara bağlanırken karşılaştığım sorunları anlatacağım. Mevcut LDAP'yi kayıtlı kullanıcılarla kullanacağız, FreeRadius'u yükselteceğiz ve Ubnt denetleyicisinde WPA2-Enterprise'ı yapılandıracağız. Her şey basit görünüyor. Görelim…
EAP yöntemleri hakkında biraz
Göreve geçmeden önce çözümümüzde hangi kimlik doğrulama yöntemini kullanacağımıza karar vermemiz gerekiyor.
Wikipedia'dan:
EAP, kablosuz ağlarda ve noktadan noktaya bağlantılarda sıklıkla kullanılan bir kimlik doğrulama çerçevesidir. Format ilk olarak RFC 3748'de tanımlanmış ve RFC 5247'de güncellenmiştir.
EAP, bir kimlik doğrulama yöntemi seçmek, anahtarları geçirmek ve bu anahtarları EAP yöntemleri adı verilen eklentilerle işlemek için kullanılır. Hem EAP'nin kendisiyle tanımlanan hem de bireysel satıcılar tarafından yayımlanan birçok EAP yöntemi vardır. EAP bağlantı katmanını tanımlamaz, yalnızca mesaj formatını tanımlar. EAP kullanan her protokolün kendi EAP mesaj kapsülleme protokolü vardır.
Yöntemlerin kendisi:
- LEAP, CISCO tarafından geliştirilen tescilli bir protokoldür. Güvenlik açıkları bulundu. Şu anda kullanılması tavsiye edilmiyor
- EAP-TLS, kablosuz sağlayıcılar arasında iyi bir şekilde desteklenmektedir. SSL standartlarının devamı olduğundan güvenli bir protokoldür. İstemciyi ayarlamak oldukça karmaşıktır. Şifreye ek olarak bir istemci sertifikasına da ihtiyacınız var. Birçok sistemde desteklenir
- EAP-TTLS - birçok sistemde yaygın olarak desteklenir ve PKI sertifikalarını yalnızca kimlik doğrulama sunucusunda kullanarak iyi bir güvenlik sunar
- EAP-MD5 başka bir açık standarttır. Minimum güvenlik sunar. Savunmasız, karşılıklı kimlik doğrulamayı ve anahtar oluşturmayı desteklemiyor
- EAP-IKEv2 - İnternet Anahtar Değişim Protokolü sürüm 2'yi temel alır. İstemci ve sunucu arasında karşılıklı kimlik doğrulama ve oturum anahtarı oluşturulmasını sağlar
- PEAP, açık standart olarak CISCO, Microsoft ve RSA Security'nin ortak çözümüdür. Ürünlerde yaygın olarak bulunur, çok iyi güvenlik sağlar. EAP-TTLS'ye benzer, sunucu tarafında yalnızca sertifika gerektirir
- PEAPv0/EAP-MSCHAPv2 - EAP-TLS'den sonra dünyada yaygın olarak kullanılan ikinci standarttır. Microsoft, Cisco, Apple, Linux'ta kullanılan istemci-sunucu ilişkisi
- PEAPv1/EAP-GTC - Cisco tarafından PEAPv0/EAP-MSCHAPv2'ye alternatif olarak oluşturulmuştur. Kimlik doğrulama verilerini hiçbir şekilde korumaz. Windows işletim sisteminde desteklenmiyor
- EAP-FAST, Cisco tarafından LEAP'in eksikliklerini düzeltmek için geliştirilen bir tekniktir. Korumalı Erişim Kimlik Bilgisini (PAC) kullanır. Tamamen tamamlanmamış
Tüm bu çeşitlilik arasında seçim hala pek iyi değil. Kimlik doğrulama yöntemi gerekliydi: iyi güvenlik, tüm cihazlarda destek (Windows 10, macOS, Linux, Android, iOS) ve aslında ne kadar basitse o kadar iyi. Bu nedenle seçim, PAP protokolüyle birlikte EAP-TTLS'ye düştü.
Şu soru ortaya çıkabilir: Neden PAP kullanılmalı? şifreleri açıkça ilettiği için mi?
Evet bu doğru. FreeRadius ile FreeIPA arasındaki iletişim bu şekilde gerçekleşecektir. Hata ayıklama modunda kullanıcı adı ve şifrenin nasıl gönderildiğini takip edebilirsiniz. Evet, bırakın gitsinler, FreeRadius sunucusuna yalnızca siz erişebilirsiniz.
EAP-TTLS'nin çalışmaları hakkında daha fazla bilgi edinebilirsiniz
ÜcretsizRADIUS
FreeRadius, CentOS 7.6'da yükseltilecek. Burada karmaşık bir şey yok, her zamanki gibi ayarladık.
yum install freeradius freeradius-utils freeradius-ldap -y
Sürüm 3.0.13 paketlerden yüklenir. İkincisi alınabilir
Bundan sonra FreeRadius zaten çalışıyor. /etc/raddb/users dosyasındaki satırın yorumunu kaldırabilirsiniz
steve Cleartext-Password := "testing"
Hata ayıklama modunda sunucuya başlatın
freeradius -X
Ve localhost'tan bir test bağlantısı kurun
radtest steve testing 127.0.0.1 1812 testing123
Bir cevap aldım 115:127.0.0.1'den 1812:127.0.0.1 uzunluk 56081'ye Erişim-Kabul Kimliği 20 alındı, her şeyin yolunda olduğu anlamına gelir. Devam etmek.
Modülü bağlıyoruz ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Ve hemen değiştireceğiz. FreeIPA'ya erişebilmek için FreeRadius'a ihtiyacımız var
modlar etkin/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}})"
}
...
Radius sunucusunu yeniden başlatın ve LDAP kullanıcılarının senkronizasyonunu kontrol edin:
radtest user_ldap password_ldap localhost 1812 testing123
Eap'i düzenleme modlar etkin/eap
Buraya iki eap örneği ekliyoruz. Yalnızca sertifikalar ve anahtarlar açısından farklılık göstereceklerdir. Aşağıda bunun neden böyle olduğunu açıklayacağım.
modlar etkin/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"
}
}
Daha fazla düzenleme site etkin/varsayılan. Yetkilendirme ve kimlik doğrulama bölümleri ilgi çekicidir.
site etkin/varsayılan
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
}
Yetkilendirme kısmında ihtiyacımız olmayan tüm modülleri kaldırıyoruz. Yalnızca ldap'ı bırakıyoruz. Kullanıcı adına göre müşteri doğrulaması ekleyin. Bu yüzden yukarıya iki eap örneği ekledik.
Çoklu EAPGerçek şu ki, bazı cihazları bağlarken sistem sertifikalarını kullanacağız ve etki alanını belirleyeceğiz. Güvenilir bir sertifika yetkilisinden bir sertifikamız ve anahtarımız var. Şahsen bana göre böyle bir bağlantı prosedürü, her cihaza kendinden imzalı bir sertifika atmaktan daha kolaydır. Ancak kendinden imzalı sertifikalar olmasa bile yine de işe yaramadı. Samsung cihazları ve Android =< 6 versiyonları sistem sertifikalarını kullanamaz. Bu nedenle, kendinden imzalı sertifikalarla onlar için ayrı bir eap-guest örneği oluşturuyoruz. Diğer tüm cihazlar için eap istemcisini güvenilir bir sertifikayla kullanacağız. Kullanıcı Adı, cihaz bağlandığında Anonim alanı tarafından belirlenir. Yalnızca 3 değere izin verilir: Misafir, Müşteri ve boş alan. Geriye kalan her şey atılır. Siyasetçilerde yapılandırılacak. Biraz sonra bir örnek vereceğim.
Yetkilendirme ve kimlik doğrulama bölümlerini düzenleyelim. site etkin/iç tünel
site etkin/iç tünel
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
}
Daha sonra, anonim oturum açma için hangi adların kullanılabileceğini politikalarda belirtmeniz gerekir. Düzenleme politika.d/filtre.
Buna benzer satırlar bulmanız gerekiyor:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Elsif'in altına istediğiniz değerleri ekleyin:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Şimdi dizine gitmemiz gerekiyor certs. Buraya, zaten sahip olduğumuz ve eap-guest için kendinden imzalı sertifikalar oluşturmamız gereken güvenilir bir sertifika yetkilisinden gelen anahtarı ve sertifikayı koymanız gerekir.
Dosyadaki parametreleri değiştirin 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"
Dosyaya aynı değerleri yazıyoruz sunucu.cnf. Yalnızca biz değiştiririz
yaygın isim:
sunucu.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"
Yaratmak:
make
Hazır. Kabul edilmiş sunucu.crt и sunucu.anahtar yukarıda eap-guest'e zaten kayıt olduk.
Ve son olarak erişim noktalarımızı dosyaya ekleyelim. istemci.conf. Elimde 7 tane var, her noktayı ayrı ayrı eklememek için sadece bulundukları ağı yazacağız (erişim noktalarım ayrı bir VLAN'da).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Ubiquiti denetleyicisi
Denetleyicide ayrı bir ağ oluşturuyoruz. 192.168.2.0/24 olsun
Ayarlar -> profile gidin. Yeni bir tane oluşturuyoruz:
Radius sunucusunun adresini, portunu ve dosyaya yazılan şifreyi yazıyoruz. client.conf:
Yeni bir kablosuz ağ adı oluşturun. Kimlik doğrulama yöntemi olarak WPA-EAP (Kurumsal) seçeneğini seçin ve oluşturulan radius profilini belirtin:
Her şeyi kaydediyoruz, uyguluyoruz ve yolumuza devam ediyoruz.
İstemcileri ayarlama
En zor olanla başlayalım!
, Windows 10
Zorluk, Windows'un bir etki alanı aracılığıyla kurumsal WiFi'ye nasıl bağlanacağını henüz bilmemesinden kaynaklanmaktadır. Bu nedenle sertifikamızı güvenilir sertifika deposuna manuel olarak yüklememiz gerekiyor. Burada hem kendinden imzalı hem de sertifika yetkilisinden kullanabilirsiniz. İkincisini kullanacağım.
Daha sonra yeni bir bağlantı oluşturmanız gerekir. Bunu yapmak için ağ ve İnternet ayarları -> Ağ ve Paylaşım Merkezi -> Yeni bir bağlantı veya ağ oluşturun ve yapılandırın:
Ağ adını manuel olarak girin ve güvenlik türünü değiştirin. Biz tıkladıktan sonra bağlantı ayarlarını değiştir ve Güvenlik sekmesinde ağ kimlik doğrulaması - EAP-TTLS'yi seçin.
Parametrelere giriyoruz, kimlik doğrulamanın gizliliğini belirliyoruz - müşteri. Güvenilir bir sertifika yetkilisi olarak eklediğimiz sertifikayı seçin, "Sunucu yetkilendirilemiyorsa kullanıcıya davet göndermeyin" kutusunu işaretleyin ve kimlik doğrulama yöntemini seçin - şifrelenmemiş şifre (PAP).
Ardından gelişmiş ayarlara gidin ve "Kimlik doğrulama modunu belirtin" seçeneğini işaretleyin. "Kullanıcı Kimlik Doğrulaması"nı seçin ve tıklayın kimlik bilgilerini kaydet. Buraya kullanıcı adı_ldap ve şifre_ldap bilgilerini girmeniz gerekecek
Her şeyi kaydediyoruz, uyguluyoruz, kapatıyoruz. Yeni bir ağa bağlanabilirsiniz.
Linux
Ubuntu 18.04, 18.10, Fedora 29, 30'da test ettim.
Öncelikle sertifikamızı indirelim. Linux'ta sistem sertifikalarını kullanmanın mümkün olup olmadığını ve böyle bir mağazanın olup olmadığını bulamadım.
Etki alanına bağlanalım. Bu nedenle sertifikamızı satın aldığımız sertifika yetkilisinden sertifika almamız gerekmektedir.
Tüm bağlantılar tek pencerede yapılır. Ağımızı seçiyoruz:
anonim müşteri
alan adı - sertifikanın verildiği alan adı
Android
Samsung olmayan
Sürüm 7'den itibaren WiFi'ye bağlanırken yalnızca etki alanını belirterek sistem sertifikalarını kullanabilirsiniz:
alan adı - sertifikanın verildiği alan adı
anonim müşteri
Samsung
Yukarıda da yazdığım gibi Samsung cihazlar WiFi'ye bağlanırken sistem sertifikalarını nasıl kullanacaklarını bilmiyorlar ve domain üzerinden bağlanma yetenekleri de yok. Bu nedenle sertifika yetkilisinin kök sertifikasını manuel olarak eklemelisiniz (ca.pem, bunu Radius sunucusunda alıyoruz). Kendinden imzalının kullanılacağı yer burasıdır.
Sertifikayı cihazınıza indirin ve yükleyin.
Sertifika Kurulumu
Aynı zamanda, önceden ayarlanmamışsa ekran kilidi açma desenini, pin kodunu veya şifresini de ayarlamanız gerekecektir:
Sertifika yüklemenin karmaşık bir versiyonunu gösterdim. Çoğu cihazda indirilen sertifikaya tıklamanız yeterlidir.
Sertifika yüklendiğinde bağlantıya devam edebilirsiniz:
sertifika - yüklü olanı belirtin
anonim kullanıcı - misafir
macOS
Kutudan çıkan Apple cihazları yalnızca EAP-TLS'ye bağlanabilir, ancak yine de onlara bir sertifika atmanız gerekir. Farklı bir bağlantı yöntemi belirtmek için Apple Yapılandırıcı 2'yi kullanmanız gerekir. Buna göre önce onu Mac'inize indirmeli, yeni bir profil oluşturmalı ve gerekli tüm WiFi ayarlarını eklemelisiniz.
Apple Yapılandırıcı
Ağ adınızı buraya girin
Güvenlik Türü - WPA2 Kurumsal
Kabul Edilen EAP Türleri - TTLS
Kullanıcı Adı ve Şifre – boş bırakın
İç Kimlik Doğrulama - PAP
Dış Kimlik-istemci
Güven sekmesi. Burada alan adımızı belirtiyoruz
Tüm. Profil kaydedilebilir, imzalanabilir ve cihazlara dağıtılabilir
Profil hazır olduktan sonra haşhaş'a indirip yüklemeniz gerekiyor. Kurulum işlemi sırasında kullanıcının usernmae_ldap ve şifre_ldap değerlerini belirtmeniz gerekecektir:
iOS
İşlem macOS'a benzer. Bir profil kullanmanız gerekir (macOS için olanın aynısını kullanabilirsiniz. Apple Yapılandırıcıda profil nasıl oluşturulur, yukarıya bakın).
Profili indirin, yükleyin, kimlik bilgilerini girin, bağlanın:
Bu kadar. Bir Radius sunucusu kurduk, onu FreeIPA ile senkronize ettik ve Ubiquiti AP'lerine WPA2-EAP kullanmalarını söyledik.
Olası sorular
In: bir çalışana profil/sertifika nasıl aktarılır?
Hakkında: Tüm sertifikaları/profilleri web erişimi olan ftp'de saklıyorum. FTP hariç, hız sınırı ve yalnızca İnternet erişimi olan bir misafir ağı yükseltildi.
Kimlik doğrulama 2 gün sürer, ardından sıfırlanır ve istemci internetsiz kalır. O. Bir çalışan WiFi'a bağlanmak istediğinde öncelikle misafir ağına bağlanıyor, FTP'ye erişiyor, ihtiyaç duyduğu sertifikayı veya profili indiriyor, kuruyor ve ardından kurumsal ağa bağlanabiliyor.
In: neden şemayı MSCHAPv2 ile kullanmıyorsunuz? O daha güvende!
Hakkında: İlk olarak, böyle bir şema NPS'de (Windows Ağ Politikası Sistemi) iyi çalışır, uygulamamızda LDAP'yi (FreeIpa) ek olarak yapılandırmak ve şifre karmalarını sunucuda depolamak gerekir. Eklemek. çünkü ayarların yapılması önerilmez. bu, ultrasonun senkronizasyonunda çeşitli sorunlara yol açabilir. İkincisi, karma MD4'tür, dolayısıyla fazla güvenlik sağlamaz.
In: Cihazları mac adresleriyle yetkilendirmek mümkün mü?
Hakkında: HAYIR, bu güvenli değil, bir saldırgan MAC adreslerini değiştirebilir ve dahası, MAC adresleriyle yetkilendirme pek çok cihazda desteklenmez
In: genel olarak tüm bu sertifikaların kullanılması için ne gerekiyor? onlar olmadan katılabilir misin?
Hakkında: Sertifikalar sunucuyu yetkilendirmek için kullanılır. Onlar. Cihaz bağlanırken güvenilebilecek bir sunucu olup olmadığını kontrol eder. Eğer öyleyse kimlik doğrulama devam eder, değilse bağlantı kapatılır. Sertifikalar olmadan bağlanabilirsiniz, ancak bir saldırgan veya komşu evde bizimkiyle aynı adı taşıyan bir radius sunucusu ve erişim noktası kurarsa, kullanıcının kimlik bilgilerine kolayca müdahale edebilir (bunların açık metin olarak iletildiğini unutmayın). Ve bir sertifika kullanıldığında, düşman günlüklerinde yalnızca hayali Kullanıcı Adımızı (konuk veya istemci) ve bir tür hatası - Bilinmeyen CA Sertifikasını görecektir.
macOS hakkında biraz dahaGenellikle macOS'ta sistemin yeniden yüklenmesi İnternet üzerinden yapılır. Kurtarma modunda Mac'in WiFi'ye bağlı olması gerekir ve ne kurumsal WiFi'miz ne de misafir ağımız burada çalışmaz. Şahsen, yalnızca teknik işlemler için normal WPA2-PSK gizli başka bir ağ oluşturdum. Veya yine de sistemle önceden önyüklenebilir bir USB flash sürücü oluşturabilirsiniz. Ancak gelincik 2015'ten sonraysa, bu flash sürücü için yine de bir adaptör bulmanız gerekecek)
Kaynak: habr.com