Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Beberapa contoh pengorganisasian WiFi perusahaan telah dijelaskan. Di sini saya akan menjelaskan bagaimana saya menerapkan solusi tersebut dan masalah yang saya temui saat menghubungkan pada perangkat yang berbeda. Kami akan menggunakan LDAP yang ada dengan pengguna mapan, menginstal FreeRadius dan mengkonfigurasi WPA2-Enterprise pada pengontrol Ubnt. Segalanya tampak sederhana. Mari kita lihat…

Sedikit tentang metode EAP

Sebelum melanjutkan tugas, kita perlu memutuskan metode otentikasi mana yang akan kita gunakan dalam solusi kita.

Dari wikipedia:

EAP adalah kerangka otentikasi yang sering digunakan dalam jaringan nirkabel dan koneksi point-to-point. Format ini pertama kali dijelaskan di RFC 3748 dan diperbarui di RFC 5247.
EAP digunakan untuk memilih metode autentikasi, kunci sandi, dan memproses kunci tersebut dengan plug-in yang disebut metode EAP. Ada banyak metode EAP, baik yang didefinisikan dengan EAP itu sendiri maupun dirilis oleh masing-masing vendor. EAP tidak mendefinisikan lapisan link, hanya mendefinisikan format pesan. Setiap protokol yang menggunakan EAP memiliki protokol enkapsulasi pesan EAP sendiri.

Cara-caranya sendiri:

  • LEAP adalah protokol berpemilik yang dikembangkan oleh CISCO. Kerentanan ditemukan. Saat ini tidak direkomendasikan untuk digunakan
  • EAP-TLS didukung dengan baik di antara vendor nirkabel. Ini adalah protokol yang aman karena merupakan penerus standar SSL. Menyiapkan klien cukup rumit. Anda memerlukan sertifikat klien selain kata sandi. Didukung di banyak sistem
  • EAP-TTLS - didukung secara luas di banyak sistem, menawarkan keamanan yang baik dengan menggunakan sertifikat PKI hanya di server otentikasi
  • EAP-MD5 adalah standar terbuka lainnya. Menawarkan keamanan minimal. Rentan, tidak mendukung otentikasi timbal balik dan pembuatan kunci
  • EAP-IKEv2 - berdasarkan Internet Key Exchange Protocol versi 2. Menyediakan otentikasi timbal balik dan pembuatan kunci sesi antara klien dan server
  • PEAP adalah solusi gabungan CISCO, Microsoft dan RSA Security sebagai standar terbuka. Banyak tersedia dalam produk, memberikan keamanan yang sangat baik. Mirip dengan EAP-TTLS, hanya membutuhkan sertifikat di sisi server
  • PEAPv0/EAP-MSCHAPv2 - setelah EAP-TLS, ini adalah standar kedua yang banyak digunakan di dunia. Hubungan klien-server yang digunakan di Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC - Dibuat oleh Cisco sebagai alternatif PEAPv0/EAP-MSCHAPv2. Tidak melindungi data otentikasi dengan cara apa pun. Tidak didukung pada OS Windows
  • EAP-FAST adalah teknik yang dikembangkan oleh Cisco untuk memperbaiki kekurangan LEAP. Menggunakan Kredensial Akses Terlindungi (PAC). Benar-benar belum selesai

Dari semua keragaman ini, pilihannya masih belum banyak. Diperlukan metode autentikasi: keamanan yang baik, dukungan di semua perangkat (Windows 10, macOS, Linux, Android, iOS) dan, faktanya, semakin sederhana semakin baik. Oleh karena itu, pilihan jatuh pada EAP-TTLS yang dikombinasikan dengan protokol PAP.
Mungkin timbul pertanyaan – Mengapa menggunakan PAP? karena dia mengirimkan kata sandi dengan jelas?

Ya itu betul. Komunikasi antara FreeRadius dan FreeIPA akan berlangsung persis seperti ini. Dalam mode debug, Anda dapat melacak bagaimana nama pengguna dan kata sandi dikirim. Ya, dan biarkan saja, hanya Anda yang memiliki akses ke server FreeRadius.

Anda dapat membaca lebih lanjut tentang cara kerja EAP-TTLS di sini

RADIUS Gratis

Kami akan mengupgrade FreeRadius ke CentOS 7.6. Tidak ada yang rumit disini, kami menginstalnya dengan cara biasa.

yum install freeradius freeradius-utils freeradius-ldap -y

Versi 3.0.13 diinstal dari paket. Yang terakhir bisa diambil https://freeradius.org/

Setelah itu, FreeRadius sudah berfungsi. Anda dapat menghapus komentar pada baris di /etc/raddb/users

steve   Cleartext-Password := "testing"

Luncurkan ke server dalam mode debug

freeradius -X

Dan buat tes koneksi dari localhost

radtest steve testing 127.0.0.1 1812 testing123

Kami menerima jawaban Menerima Id Akses-Terima 115 dari 127.0.0.1:1812 hingga 127.0.0.1:56081 panjang 20, itu berarti semuanya baik-baik saja. Teruskan.

Kami menghubungkan modul lap.

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

Dan kami akan segera mengubahnya. Kita membutuhkan FreeRadius untuk dapat mengakses 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}})"
}
...

Mulai ulang server radius dan periksa sinkronisasi pengguna LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Mengedit eap masuk mods-enabled/eap
Di sini kami menambahkan dua contoh eap. Mereka hanya berbeda dalam sertifikat dan kunci. Di bawah ini saya akan menjelaskan mengapa demikian.

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

Pengeditan lebih lanjut situs diaktifkan/default. Bagian otorisasi dan autentikasi menarik.

situs diaktifkan/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
}

Di bagian otorisasi, kami menghapus semua modul yang tidak kami perlukan. Kami hanya menyisakan ldap. Tambahkan verifikasi klien berdasarkan nama pengguna. Itu sebabnya kami menambahkan dua contoh eap di atas.

Multi EAPFaktanya adalah saat menghubungkan beberapa perangkat, kami akan menggunakan sertifikat sistem dan menentukan domain. Kami memiliki sertifikat dan kunci dari otoritas sertifikat tepercaya. Secara pribadi, menurut saya, prosedur koneksi seperti itu lebih mudah daripada membuang sertifikat yang ditandatangani sendiri di setiap perangkat. Tetapi bahkan tanpa sertifikat yang ditandatangani sendiri, hal itu tetap tidak berhasil. Perangkat Samsung dan Android =< 6 versi tidak dapat menggunakan sertifikat sistem. Oleh karena itu, kami membuat instance eap-guest terpisah untuk mereka dengan sertifikat yang ditandatangani sendiri. Untuk semua perangkat lainnya, kami akan menggunakan eap-client dengan sertifikat tepercaya. Nama Pengguna ditentukan oleh bidang Anonim saat perangkat terhubung. Hanya 3 nilai yang diperbolehkan: Tamu, Klien, dan bidang kosong. Segala sesuatu yang lain dibuang. Ini akan dikonfigurasikan pada politisi. Saya akan memberikan contohnya nanti.

Mari kita edit bagian otorisasi dan autentikasi diaktifkan situs/terowongan dalam

diaktifkan situs/terowongan dalam

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
}

Selanjutnya, Anda perlu menentukan dalam kebijakan nama mana yang dapat digunakan untuk login anonim. Mengedit kebijakan.d/filter.

Anda perlu menemukan baris yang mirip dengan ini:

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

Dan di bawah di elsif tambahkan nilai yang diinginkan:

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

Sekarang kita perlu pindah ke direktori sertifikat. Di sini Anda perlu meletakkan kunci dan sertifikat dari otoritas sertifikat tepercaya, yang sudah kita miliki dan perlukan untuk membuat sertifikat yang ditandatangani sendiri untuk eap-guest.

Ubah parameter dalam file 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"

Kami menulis nilai yang sama di file server.cnf. Kami hanya berubah
nama yang umum:

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"

Membuat:

make

Siap. Diterima server.crt и server.kunci kami sudah mendaftar di atas di eap-guest.

Dan terakhir, mari tambahkan titik akses kita ke file klien.conf. Saya punya 7. Agar tidak menambahkan setiap titik secara terpisah, kami hanya akan menulis jaringan di mana mereka berada (titik akses saya berada di VLAN terpisah).

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

Pengontrol di mana-mana

Kami meningkatkan jaringan terpisah pada pengontrol. Biarlah 192.168.2.0/24
Buka pengaturan -> profil. Kami membuat yang baru:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Kami menulis alamat dan port server radius serta kata sandi yang tertulis di file klien.conf:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Buat nama jaringan nirkabel baru. Pilih WPA-EAP (Enterprise) sebagai metode otentikasi dan tentukan profil radius yang dibuat:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Kami menyimpan semuanya, menerapkan, dan melanjutkan.

Menyiapkan klien

Mari kita mulai dari bagian tersulit!

Windows 10

Kesulitannya terletak pada kenyataan bahwa Windows belum mengetahui cara terhubung ke WiFi perusahaan melalui domain. Oleh karena itu, kami harus mengunggah sertifikat kami secara manual ke penyimpanan sertifikat tepercaya. Di sini Anda dapat menggunakan tanda tangan sendiri dan dari otoritas sertifikasi. Saya akan menggunakan yang kedua.

Selanjutnya, Anda perlu membuat koneksi baru. Untuk melakukan ini, buka pengaturan jaringan dan Internet -> Jaringan dan Pusat Berbagi -> Buat dan konfigurasikan koneksi atau jaringan baru:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Kami secara manual memasukkan nama jaringan dan mengubah jenis keamanan. Kemudian klik mengubah pengaturan koneksi dan di tab Keamanan, pilih otentikasi jaringan - EAP-TTLS.

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Kami masuk ke parameter, menentukan kerahasiaan otentikasi - klien. Sebagai otoritas sertifikasi tepercaya, pilih sertifikat yang kami tambahkan, centang kotak "Jangan berikan undangan kepada pengguna jika server tidak dapat diotorisasi" dan pilih metode otentikasi - kata sandi tidak terenkripsi (PAP).

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Selanjutnya, buka pengaturan lanjutan, beri tanda centang pada "Tentukan mode otentikasi." Pilih "Otentikasi Pengguna" dan klik menyimpan kredensial. Di sini Anda harus memasukkan nama pengguna_ldap dan kata sandi_ldap

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Kami menyimpan semuanya, menerapkan, menutup. Anda dapat terhubung ke jaringan baru.

Linux

Saya menguji di Ubuntu 18.04, 18.10, Fedora 29, 30.

Pertama, mari unduh sertifikat kita. Saya tidak menemukan di Linux apakah mungkin untuk menggunakan sertifikat sistem dan apakah ada penyimpanan seperti itu sama sekali.

Mari terhubung ke domain. Oleh karena itu, kami memerlukan sertifikat dari otoritas sertifikasi tempat sertifikat kami dibeli.

Semua koneksi dibuat dalam satu jendela. Memilih jaringan kami:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

klien anonim
domain - domain tempat sertifikat diterbitkan

Android

non-Samsung

Mulai versi 7, saat menghubungkan WiFi, Anda dapat menggunakan sertifikat sistem dengan menentukan domain saja:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

domain - domain tempat sertifikat diterbitkan
klien anonim

Samsung

Seperti yang saya tulis di atas, perangkat Samsung tidak tahu cara menggunakan sertifikat sistem saat tersambung ke WiFi, dan tidak memiliki kemampuan untuk tersambung melalui domain. Oleh karena itu, Anda harus menambahkan sertifikat root dari otoritas sertifikasi secara manual (ca.pem, kami mengambilnya di server Radius). Di sinilah tanda tangan sendiri akan digunakan.

Unduh sertifikat ke perangkat Anda dan instal.

Memasang sertifikatPerusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Dalam hal ini, Anda perlu menyetel pola buka kunci layar, kode PIN, atau kata sandi, jika belum disetel:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Saya menunjukkan versi rumit dalam memasang sertifikat. Di sebagian besar perangkat, cukup klik pada sertifikat yang diunduh.

Ketika sertifikat diinstal, Anda dapat melanjutkan ke koneksi:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

sertifikat - tunjukkan yang telah diinstal
pengguna anonim - tamu

MacOS

Perangkat Apple yang dikeluarkan dari kemasannya hanya dapat terhubung ke EAP-TLS, tetapi Anda masih perlu memberikan sertifikat ke perangkat tersebut. Untuk menentukan metode koneksi lain, Anda perlu menggunakan Apple Configurator 2. Oleh karena itu, Anda harus mengunduhnya terlebih dahulu ke Mac Anda, membuat profil baru, dan menambahkan semua pengaturan WiFi yang diperlukan.

Apple ConfiguratorPerusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Masukkan nama jaringan Anda di sini
Jenis Keamanan - Perusahaan WPA2
Jenis EAP yang Diterima - TTLS
Nama Pengguna dan Kata Sandi - biarkan kosong
Otentikasi Batin - PAP
Klien Identitas Luar

tab kepercayaan. Di sini kami menentukan domain kami

Semua. Profil dapat disimpan, ditandatangani, dan didistribusikan ke perangkat

Setelah profil siap, Anda perlu mengunduhnya ke Mac dan menginstalnya. Selama proses instalasi, Anda perlu menentukan usernmae_ldap dan password_ldap pengguna:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

iOS

Prosesnya mirip dengan macOS. Anda perlu menggunakan profil (Anda dapat menggunakan profil yang sama seperti untuk macOS. Cara membuat profil di Apple Configurator, lihat di atas).

Unduh profil, instal, masukkan kredensial, sambungkan:

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Perusahaan WiFi. Radius Gratis + IPA Gratis + Ubiquiti

Itu saja. Kami menyiapkan server Radius, menyinkronkannya dengan FreeIPA, dan meminta Ubiquiti AP untuk menggunakan WPA2-EAP.

Pertanyaan yang mungkin

Dalam: bagaimana cara mentransfer profil/sertifikat ke karyawan?

Tentang: Saya menyimpan semua sertifikat/profil di ftp dengan akses web. Mengangkat jaringan tamu dengan batas kecepatan dan akses hanya ke Internet, kecuali ftp.
Otentikasi berlangsung 2 hari, setelah itu diatur ulang dan klien dibiarkan tanpa Internet. Itu. Ketika seorang karyawan ingin terhubung ke WiFi, pertama-tama dia terhubung ke jaringan tamu, masuk ke FTP, mengunduh sertifikat atau profil yang dia perlukan, menginstalnya, dan kemudian dapat terhubung ke jaringan perusahaan.

Dalam: mengapa tidak menggunakan skema dengan MSCHAPv2? Dia lebih aman!

Tentang: Pertama, skema seperti itu berfungsi dengan baik di NPS (Sistem Kebijakan Jaringan Windows), dalam implementasi kami perlu untuk mengkonfigurasi tambahan LDAP (FreeIpa) dan menyimpan hash kata sandi di server. Menambahkan. tidak disarankan untuk melakukan pengaturan, karena. hal ini dapat menyebabkan berbagai masalah sinkronisasi USG. Kedua, hashnya adalah MD4, jadi tidak menambah banyak keamanan.

Dalam: apakah mungkin untuk mengotorisasi perangkat berdasarkan alamat Mac?

Tentang: TIDAK, ini tidak aman, penyerang dapat mengubah alamat MAC, dan terlebih lagi otorisasi berdasarkan alamat MAC tidak didukung di banyak perangkat

Dalam: Mengapa menggunakan semua sertifikat ini? Anda dapat terhubung tanpa mereka

Tentang: sertifikat digunakan untuk mengotorisasi server. Itu. Saat terhubung, perangkat memeriksa apakah itu server yang bisa dipercaya atau tidak. Jika ya, maka otentikasi dilanjutkan; jika tidak, koneksi ditutup. Anda dapat terhubung tanpa sertifikat, tetapi jika penyerang atau tetangga menyiapkan server radius dan titik akses dengan nama yang sama dengan milik kita di rumah, dia dapat dengan mudah mencegat kredensial pengguna (jangan lupa bahwa kredensial tersebut dikirimkan dalam bentuk teks yang jelas) . Dan ketika sertifikat digunakan, musuh hanya akan melihat di lognya Nama Pengguna fiktif kami - tamu atau klien dan kesalahan ketik - Sertifikat CA Tidak Dikenal

sedikit lebih banyak tentang MacOSBiasanya di MacOS, instalasi ulang sistem dilakukan melalui Internet. Dalam mode pemulihan, Mac harus terhubung ke WiFi, dan WiFi perusahaan maupun jaringan tamu kami tidak akan berfungsi di sini. Secara pribadi, saya mengangkat jaringan lain, WPA2-PSK biasa, tersembunyi, hanya untuk operasi teknis. Atau Anda masih dapat membuat USB flash drive yang dapat di-boot dengan sistem terlebih dahulu. Tetapi jika poppynya setelah tahun 2015, Anda masih perlu mencari adaptor untuk flash drive ini)

Sumber: www.habr.com

Tambah komentar