Menyiapkan RADIUS + LDAP untuk WPA2 di Ubuntu

16

Saya menyiapkan jaringan nirkabel untuk ~ 150 pengguna. Singkatnya, saya mencari panduan untuk mengatur server RADIUS untuk mengotentikasi WPA2 terhadap LDAP. Di Ubuntu.

  • Saya mendapat LDAP yang berfungsi, tetapi karena tidak digunakan dalam produksi, ia dapat dengan mudah disesuaikan dengan perubahan apa pun yang mungkin diperlukan proyek ini.
  • Saya sudah mencari di FreeRADIUS, tetapi server RADIUS akan melakukannya.
  • Kami punya jaringan fisik terpisah hanya untuk WiFi, jadi tidak terlalu banyak kekhawatiran tentang keamanan di bagian depan itu.
  • AP kami adalah perangkat perusahaan kelas bawah HP - mereka tampaknya mendukung apa pun yang dapat Anda pikirkan.
  • Semua Server Ubuntu, sayang!

Dan berita buruknya:

  • Saya sekarang seseorang yang kurang berpengetahuan daripada saya akhirnya akan mengambil alih administrasi, jadi pengaturannya harus sesederhana mungkin.
  • Sejauh ini, pengaturan kami hanya didasarkan pada perangkat lunak dari repositori Ubuntu, dengan pengecualian aplikasi web administrasi LDAP kami dan beberapa skrip khusus kecil. Jadi tidak ada "ambil paket X, untar, ./configure"- hal jika dapat dihindari.

UPDATE 2009-08-18:

Sementara saya menemukan beberapa sumber daya yang bermanfaat, ada satu kendala serius:

Ignoring EAP-Type/tls because we do not have OpenSSL support.
Ignoring EAP-Type/ttls because we do not have OpenSSL support.
Ignoring EAP-Type/peap because we do not have OpenSSL support.

Pada dasarnya FreeRADIUS versi Ubuntu tidak mendukung SSL ( bug 183840 ), yang membuat semua jenis EAP aman tidak berguna. Kekecewaan.

Tetapi beberapa dokumentasi bermanfaat bagi siapa pun yang tertarik:

UPDATE 2009-08-19:

Saya akhirnya mengkompilasi paket FreeRADIUS saya sendiri kemarin malam - ada resep yang sangat bagus di http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html (Lihat komentar pada posting untuk instruksi terbaru).

Saya mendapat sertifikat dari http://CACert.org (Anda mungkin harus mendapatkan sertifikat "nyata" jika memungkinkan)

Kemudian saya mengikuti instruksi di http://vuksan.com/linux/dot1x/802-1x-LDAP.html . Tautan ini ke http://tldp.org/HOWTO/html_single/8021X-HOWTO/ , yang merupakan bacaan yang sangat bermanfaat jika Anda ingin tahu cara kerja keamanan WiFi.

UPDATE 2009-08-27:

Setelah mengikuti panduan di atas, saya berhasil membuat FreeRADIUS berbicara dengan LDAP:

Saya telah membuat pengguna uji di LDAP, dengan kata sandi mr2Yx36M- ini memberikan entri LDAP kira-kira dari:

uid: testuser
sambaLMPassword: CF3D6F8A92967E0FE72C57EF50F76A05
sambaNTPassword: DA44187ECA97B7C14A22F29F52BEBD90
userPassword: {SSHA}Z0SwaKO5tuGxgxtceRDjiDGFy6bRL6ja

Saat menggunakan radtest, saya dapat terhubung dengan baik:

> radtest testuser "mr2Yx36N" sbhr.dk 0 radius-private-password
Sending Access-Request of id 215 to 130.225.235.6 port 1812
    User-Name = "msiebuhr"
    User-Password = "mr2Yx36N"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
rad_recv: Access-Accept packet from host 130.225.235.6 port 1812, id=215, length=20
> 

Tetapi ketika saya mencoba melalui AP, itu tidak terbang - sementara itu mengkonfirmasi bahwa ia menemukan kata sandi NT dan LM:

...
rlm_ldap: sambaNTPassword -> NT-Password == 0x4441343431383745434139374237433134413232463239463532424542443930
rlm_ldap: sambaLMPassword -> LM-Password == 0x4346334436463841393239363745304645373243353745463530463736413035
[ldap] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?
[ldap] user testuser authorized to use remote access
rlm_ldap: ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Normalizing NT-Password from hex encoding
[pap] Normalizing LM-Password from hex encoding
...

Jelas bahwa kata sandi NT dan LM berbeda dari yang di atas, namun pesannya [ldap] user testuser authorized to use remote access- dan pengguna kemudian ditolak ...

Morten Siebuhr
sumber
Kata sandi NT dan LM disimpan terenkripsi, jadi tidak jelas apakah mereka berbeda atau tidak. Anda perlu menentukan kata sandi apa yang digunakan oleh AP, dan jika itu dilewatkan di tempat yang jelas, MD5 telah dilewatkan di tempatnya, atau ... sesuatu yang lain. Klien RADIUS dapat menggunakan sejumlah atribut RADIUS untuk kata sandi atau otentikasi mirip kata sandi. Juga, cobalah mengisi atribut kedaluwarsa.
kmarsh

Jawaban:

12

Saya akan mencoba menjawab pertanyaan LDAP di sini.

Inilah jawaban singkatnya: pastikan ldapmodul dihapus dari authenticatebagian, dan pastikan mschapmodul ada di bagian authorizedan authenticate. Dan abaikan saja kata sandi 'Tidak "dikenal baik".

Dan sekarang inilah jawaban yang sangat panjang.

Bagaimana cara kerja modul ldap?

Ketika Anda mengaktifkan ldapmodul di authorizebagian ini, inilah yang dilakukan ketika paket RADIUS diterima oleh FreeRADIUS:

  1. ia mencoba mengikat ke server LDAP (sebagai pengguna tamu, atau menggunakan identitas yang diberikan jika ada yang dikonfigurasi dalam ldap.conf)
  2. mencari entri DN pengguna menggunakan filter di bawah DN dasar (dikonfigurasi dalam ldap.conf).
  3. itu mengambil semua atribut LDAP yang bisa didapat di antara yang dikonfigurasikan ldap.attrmap, dan mengubahnya menjadi Atribut RADIUS.
  4. itu menambahkan atribut-atribut itu ke daftar item cek paket RADIUS.

Ketika Anda mengaktifkan ldapmodul di authenticatebagian ini, inilah yang dilakukan FreeRADIUS:

  1. ia mencoba mengikat ke server LDAP sebagai pengguna .
  2. jika itu dapat mengikat, maka itu adalah otentikasi yang berhasil, dan sebuah Radius-Acceptpaket akan dikirim kembali ke klien, atau yang lain, itu adalah kegagalan, yang mengarah ke sebuah Radius-Rejectpaket.

Jadi bagaimana saya bisa mengkonfigurasi FreeRADIUS untuk membuat PEAP / MS-CHAP-v2 berfungsi dengan LDAP?

Poin penting di sini adalah bahwa mengikat karena pengguna hanya akan berfungsi jika server FreeRADIUS dapat mengambil kata sandi teks-bersih pengguna dari paket RADIUS yang diterimanya. Ini hanya terjadi ketika metode otentikasi PAP atau TTLS / PAP digunakan (dan mungkin juga EAP / GTC). Hanya metode TTLS / PAP yang benar-benar aman, dan tidak tersedia secara default di Windows. Jika Anda ingin pengguna Anda terhubung dengan TTLS / PAP, Anda harus meminta mereka menginstal perangkat lunak pemohon TTLS, yang jarang menjadi pilihan. Sebagian besar waktu, ketika menggunakan WiFi dengan WPA Enterprise aman, PEAP / MS-CHAP-v2 adalah satu-satunya pilihan yang masuk akal.

Jadi intinya adalah: kecuali Anda menggunakan PAP atau TTLS / PAP, Anda dapat menghapus ldapmodul dengan aman dari authenticatebagian tersebut, dan sebenarnya, Anda harus: mengikat karena pengguna tidak akan bekerja.

Jika tes Anda berfungsi saat Anda menggunakan radtest, itu mungkin berarti bahwa ldapmodul diaktifkan di authenticatebagian: itu akan mencoba untuk mengikat sebagai pengguna, dan karena radtest menggunakan otentikasi PAP, itu akan berhasil. Tetapi itu akan gagal jika Anda mencoba terhubung melalui titik akses, karena Anda menggunakan PEAP / MS-CHAP-v2.

Yang harus Anda lakukan adalah menghapus ldapmodul dari authenticatebagian, dan pastikan Anda mengaktifkan mschapmodul di bagian authorizedan authenticate. Apa yang akan terjadi adalah bahwa mschapmodul akan menangani otentikasi menggunakan NT-Passwordatribut yang diambil dari server LDAP selama authorizefase.

Di sini sites-enabled/defaultterlihat seperti apa file Anda (tanpa semua komentar):

    ...
    authorize {
        preprocess
        suffix
        eap {
            ok = return
        }
        expiration
        logintime
    }
    authenticate {
        eap
    }
    ...

Dan inilah sites-enabled/inner-tunneltampilan file Anda :

    ...
    authorize {
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
            ok = return
        }
        ldap
        expiration
        logintime
    }
    authenticate {
        Auth-Type MS-CHAP {
            mschap
        }
        eap
    }
    ...

Bagaimana dengan peringatan kata sandi 'Tidak ada yang dikenal dengan baik'?

Nah, Anda bisa dengan aman mengabaikannya. Itu hanya ada karena ldapmodul tidak bisa menemukan UserPasswordatribut ketika mengambil detail pengguna dari server LDAP selama authorizefase. Dalam kasus Anda, Anda memiliki NT-Passwordatribut, dan itu bagus untuk PEAP/MS-CHAP-v2otentikasi.

Saya kira peringatan itu ada karena ketika ldapmodul dirancang, PEAP/MS-CHAP-v2belum ada, jadi satu-satunya hal yang tampaknya masuk akal pada saat itu adalah untuk mengambil atribut UserPassword dari server LDAP, untuk menggunakan PAP, CHAP, EAP / MD5 atau metode otentikasi semacam itu.

MiniQuark
sumber
3

Saya akan mencoba menjawab pertanyaan OpenSSL di sini: jawaban singkatnya adalah menggunakan FreeRADIUS 2.1.8 atau lebih tinggi, yang mencakup OpenSSL . Ini tersedia di backport Ubuntu Lucid dan Debian Lenny (dan mungkin juga akan berakhir di backports Ubuntu Karmic).

Inilah jawaban panjangnya:

Sayangnya, lisensi OpenSSL dulu (agak) tidak kompatibel dengan lisensi FreeRADIUS. Oleh karena itu, orang-orang Ubuntu memilih untuk menyediakan biner FreeRADIUS yang tidak tertaut dengan OpenSSL. Jika Anda menginginkan EAP / TLS, PEAP atau TTLS, Anda harus mendapatkan sumber dan mengompilasinya dengan --with-opensslopsi (seperti yang dijelaskan resep yang Anda gunakan).

Namun baru-baru ini, masalah perizinan telah diperbaiki . FreeRADIUS versi 2.1.8 atau lebih tinggi dapat dikompilasi dan didistribusikan dengan OpenSSL. Kabar buruknya adalah distribusi Ubuntu stabil terbaru (Karmic Koala) hanya mencakup FreeRADIUS 2.1.0, tanpa OpenSSL (hal yang sama berlaku untuk Debian, karena Lenny hanya mengandung FreeRADIUS 2.0.4). Saya telah memeriksa Karmic-backports, tetapi tampaknya FreeRADIUS 2.1.8 atau yang lebih baru belum diunggah di sana (tetapi mungkin akan segera ditambahkan, periksa di sini). Jadi untuk saat ini, Anda harus beralih ke Ubuntu Lucid (yang mencakup FreeRADIUS 2.1.8) atau tetap menggunakan kompilasi. Untuk pengguna Debian, segalanya sedikit lebih cerah: backports Lenny termasuk FreeRADIUS 2.1.8. Jadi jika Anda menginginkan sesuatu yang sangat stabil, dan mudah untuk menginstal dan memelihara, saya sarankan Anda menggunakan server dengan Debian Lenny, dan menginstal paket FreeRADIUS yang di-backport (ini juga memberi Anda kemungkinan untuk menulis modul python secara gratis, tanpa harus melakukan kompilasi ulang dengan semua modul eksperimental).

Saya mendapat sertifikat dari http://CACert.org (Anda mungkin harus mendapatkan sertifikat "nyata" jika memungkinkan)

Ada satu "gotcha" dengan sertifikat "asli" (sebagai lawan dari sertifikat yang ditandatangani sendiri).

Saya menggunakan satu yang ditandatangani oleh Thawte. Ini berfungsi dengan baik, dan pengguna melihat sertifikat "valid" yang indah dengan nama seperti www.my-web-site.com. Ketika pengguna menerima sertifikat, komputernya benar-benar memahami bahwa semua sertifikat yang dikeluarkan oleh otoritas sertifikat yang sama harus dipercaya (saya mengujinya dengan Windows Vista dan MacOSX Snow Leopard)! Jadi dalam kasus saya, jika seorang hacker memiliki sertifikat untuk, katakanlah, www.some-other-web-site.comjuga ditandatangani oleh Thawte, maka ia dapat menjalankan serangan Man-in-the-middle dengan mudah, tanpa peringatan yang ditampilkan di komputer pengguna!

Solusi untuk ini terletak jauh di dalam konfigurasi jaringan komputer pengguna, untuk secara spesifik menentukan bahwa hanya "www.my-web-site.com" yang dapat dipercaya. Hanya perlu satu menit, tetapi sebagian besar pengguna tidak akan tahu di mana untuk mengkonfigurasi ini kecuali Anda memberi mereka prosedur yang jelas dan pastikan setiap pengguna mengikutinya. Saya masih menggunakan sertifikat "valid", tetapi terus terang itu mengecewakan melihat bahwa Windows dan MacOSX berbagi "bug" ini: mempercayai Otoritas Sertifikat alih-alih sertifikat spesifik. Aduh...

MiniQuark
sumber
1

Menurut laporan bug, pembangunan kembali FreeRADIUS yang sederhana harus memperbaiki masalah dukungan OpenSSH. Itu hanya perlu dilakukan sekali.

Saya tidak yakin kemudahan administrasi apa yang harus dilakukan dengan pengaturan. Seringkali, semakin terlibat dan merinci pengaturan, semakin mudah untuk mengelola, karena pengaturan mencakup semua basis. Apakah maksud Anda konfigurasi harus dijatuhkan di server lain dengan mudah juga? Berapa banyak LAN nirkabel yang Anda siapkan?

Setelah dikonfigurasikan, Administrasi harus dibatasi untuk menambah, menghapus, dan memodifikasi pengguna LDAP. Ini harus cukup mudah untuk skrip dengan ldapmodify (et al) atau menemukan front end grafis LDAP yang layak dan mendokumentasikan proses dengan screenshot.

kmarsh
sumber
Pertama, Anda harus mengkompilasi ulang paket setiap kali ada pembaruan (iri dengan orang-orang Gentoo di sini :)). Di bagian lain, saya sepenuhnya setuju - jika pengaturan mencakup semua pangkalan, penerus saya akan memiliki lebih sedikit pekerjaan yang harus dilakukan (dan lebih sedikit peretasan untuk melakukan reverse-engineer).
Morten Siebuhr
0

Saya mengalami masalah yang sama. Saya harus mengunduh sumber RADIUS dan mengompilasinya sendiri.

Aaron C. de Bruyn
sumber
-1

Anda dapat menggunakan FreeRADIUS2 (dengan OpenSSL) + EAP-TLS + WPA2-Enterprice. Di sini adalah wery ditailed BAGAIMANA . Windows XP SP3 memiliki dukungan asli untuknya serta Windows 7, Android 2.3, iPhone, Symbian. Tapi saya tidak tahu tentang kompatibilitas dengan SLDAP dalam skema seperti itu.

BBK
sumber