Налаштування RADIUS + LDAP для WPA2 на Ubuntu


16

Я встановлюю бездротову мережу для ~ 150 користувачів. Коротше кажучи, я шукаю посібник для встановлення RADIUS-сервера для автентифікації WPA2 проти LDAP. На Ubuntu.

  • Я отримав робочий LDAP, але оскільки він не використовується у виробництві, він може бути дуже легко адаптований до будь-яких змін, які цього проекту можуть вимагати.
  • Я дивився на FreeRADIUS, але будь-який RADIUS сервер зробить.
  • Ми отримали окрему фізичну мережу лише для WiFi, тому не надто багато турбот про безпеку на цьому фронті.
  • Наші AP - це найнижчі підприємства компанії HP - вони, здається, підтримують все, що ви можете придумати.
  • Усі сервери Ubuntu, дитина!

І погані новини:

  • Я зараз хтось менш обізнаний, ніж я, врешті-решт візьме на себе адміністрацію, тому налаштування має бути максимально тривіальним.
  • Поки наша установка базується лише на програмному забезпеченні з репозиторіїв Ubuntu, за винятком нашого веб-додатку для адміністрування LDAP та кількох невеликих спеціальних сценаріїв. Так що жодного "завантажувального пакета X, untar, ./configure"-things, якщо це неможливо.

ОНОВЛЕННЯ 2009-08-18:

Хоча я знайшов кілька корисних ресурсів, є одна серйозна перешкода:

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.

В основному версія Ubuntu FreeRADIUS не підтримує SSL ( помилка 183840 ), що робить усі захищені типи EAP марними. Бампер.

Але кілька корисних документів для всіх, хто цікавиться:

ОНОВЛЕННЯ 2009-08-19:

Я вчора ввечері склав власний пакет FreeRADIUS - на http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html (див. Див. Справді хороший рецепт) коментарі до публікації для оновлених інструкцій).

Я отримав сертифікат від http://CACert.org (ви, ймовірно, повинні отримати "справжній" серт, якщо це можливо)

Потім я дотримувався вказівок на веб-сайті http://vuksan.com/linux/dot1x/802-1x-LDAP.html . Це посилання на http://tldp.org/HOWTO/html_single/8021X-HOWTO/ , які дуже варто прочитати, якщо ви хочете знати, як працює безпека Wi-Fi.

ОНОВЛЕННЯ 2009-08-27:

Дотримуючись вищезазначеного керівництва, мені вдалося змусити FreeRADIUS поговорити з LDAP:

Я створив тестового користувача в LDAP з паролем mr2Yx36M- це дає запис LDAP приблизно:

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

Під час використання radtestя можу добре підключити:

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

Але коли я пробую AP, він не летить - хоча він підтверджує, що він з'ясовує паролі NT і 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
...

Зрозуміло, що паролі NT і LM відрізняються від вищезазначених, але повідомлення [ldap] user testuser authorized to use remote access- і користувач пізніше відхиляється ...


Паролі NT та LM зберігаються в зашифрованому вигляді, тому не очевидно, різняться вони чи ні. Потрібно визначити, яким паролем користується AP, і якщо він буде виданий у відкритому доступі, на його місце передається MD5 або ... щось інше. Клієнти RADIUS можуть використовувати будь-яку кількість атрибутів RADIUS для автентифікації паролем або паролем. Також спробуйте заповнити атрибут закінчення терміну дії.
kmarsh

Відповіді:


12

Я спробую відповісти на питання LDAP тут.

Ось коротка відповідь: переконайтесь, що ldapмодуль вилучено з authenticateрозділу, і переконайтеся, що mschapмодуль присутній authorizeі в authenticateрозділі, і в ньому . І просто ігноруйте пароль «Ні», добре відомий «.

А тепер ось (дуже) довга відповідь.

Як працює модуль ldap?

Коли ви активуєте ldapмодуль у authorizeрозділі, це робиться, коли пакет RADIUS отримує FreeRADIUS:

  1. він намагається прив’язатись до сервера LDAP (як запрошений користувач або використовуючи задану ідентифікацію, якщо він налаштований ldap.conf)
  2. він здійснює пошук запису DN користувача за допомогою фільтра під базовим DN (налаштований у ldap.conf).
  3. він отримує всі атрибути LDAP, які він може отримати серед налаштованих ldap.attrmap, і перетворює їх в атрибути RADIUS.
  4. він додає ці атрибути до списку контрольних елементів пакету RADIUS.

Коли ви активуєте ldapмодуль у authenticateрозділі, це робить FreeRADIUS:

  1. він намагається приєднатись до сервера LDAP як користувача .
  2. якщо він може зв’язати, то це успішна аутентифікація, і Radius-Acceptпакет буде відправлений назад клієнту, або, інакше, це збій, що призводить до отримання Radius-Rejectпакету.

Тож як я можу налаштувати FreeRADIUS так, щоб PEAP / MS-CHAP-v2 працював з LDAP?

Тут важливим моментом є те, що прив'язка, оскільки користувач працюватиме лише у тому випадку, якщо сервер FreeRADIUS зможе отримати пароль відкритого тексту користувача з отриманого ним пакету RADIUS. Це лише в тому випадку, коли використовуються методи аутентифікації PAP або TTLS / PAP (і, можливо, також EAP / GTC). Тільки метод TTLS / PAP дійсно захищений, і він недоступний за замовчуванням у Windows. Якщо ви хочете, щоб ваші користувачі з'єднувались з TTLS / PAP, вам потрібно, щоб вони встановили програмне забезпечення супроводу TTLS, що рідко є варіантом. Більшу частину часу під час розгортання WiFi з WPA Enterprise securiy PEAP / MS-CHAP-v2 є єдиним розумним варіантом.

Отже, суть полягає в тому, що: якщо ви не використовуєте PAP або TTLS / PAP, ви можете спокійно видалити ldapмодуль із authenticateрозділу, а власне, вам слід: прив’язати, оскільки користувач не працюватиме.

Якщо ваш тест працює під час використання radtest, це, ймовірно, означає, що ldapмодуль активований у authenticateрозділі: він намагатиметься зв’язатись як користувач, а оскільки radtest використовує автентифікацію PAP, він матиме успіх. Але це не вдасться, якщо ви спробуєте підключитися через точку доступу, оскільки ви використовуєте PEAP / MS-CHAP-v2.

Що потрібно зробити, це вийняти ldapмодуль із authenticateрозділу та переконайтесь, що ви активуєте mschapмодуль як authorizeу authenticateрозділі, так і в ньому . Що станеться, mschapмодуль піклується про автентифікацію за допомогою NT-Passwordатрибута, який отримується з сервера LDAP протягом authorizeфази.

Ось як sites-enabled/defaultповинен виглядати ваш файл (без усіх коментарів):

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

І ось як sites-enabled/inner-tunnelмає виглядати ваш файл:

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

А що з попередженням «Ні», добре відомого пароля?

Ну, ви можете сміливо ігнорувати це. Це просто тому, що ldapмодуль не міг знайти UserPasswordатрибут, коли під час authorizeфази вибирав реквізити користувача з сервера LDAP . У вашому випадку у вас є NT-Passwordатрибут, і це цілком чудово для PEAP/MS-CHAP-v2автентифікації.

Я думаю, що попередження існує тому, що коли ldapмодуль був розроблений, PEAP/MS-CHAP-v2він ще не існував, тому єдине, що, здавалося, має сенс на той час, - це отримати атрибут UserPassword з сервера LDAP, щоб використовувати PAP, CHAP, EAP / MD5 або такі методи аутентифікації.


3

Я спробую відповісти на питання OpenSSL тут: коротка відповідь - це використовувати FreeRADIUS 2.1.8 або вище, що включає OpenSSL . Він доступний у списках Ubuntu Lucid та Debian Lenny (і, ймовірно, в кінцевому підсумку і в Ubuntu Karmic).

Ось довга відповідь:

На жаль, раніше ліцензія OpenSSL була (дещо) несумісною з ліцензією FreeRADIUS. Тому люди Ubuntu вирішили надати бінарний файл FreeRADIUS, не пов'язаний з OpenSSL. Якщо ви хотіли EAP / TLS, PEAP або TTLS, вам потрібно було отримати джерела та скласти їх з --with-opensslопцією (як пояснюється рецептом, який ви використовували).

Але останнім часом проблема ліцензування була виправлена . FreeRADIUS версії 2.1.8 або вище можна компілювати та розповсюджувати за допомогою OpenSSL. Погана новина полягає в тому, що останній стабільний дистрибутив Ubuntu (Karmic Koala) включає лише FreeRADIUS 2.1.0, без OpenSSL (те ж саме стосується Debian, оскільки Lenny містить лише FreeRADIUS 2.0.4). Я перевірив Karmic-backports, але здається, що FreeRADIUS 2.1.8 або вище не було ще завантажено туди (але це може бути додано незабаром, перевірте це тут). Тож наразі потрібно перейти на Ubuntu Lucid (до складу якого входить FreeRADIUS 2.1.8) або дотримуватися компіляції. Для користувачів Debian все дещо яскравіше: до списку Lenny входить FreeRADIUS 2.1.8. Тож якщо ви хочете чогось дуже стабільного та простого в установці та обслуговуванні, я пропоную вам розгорнути сервер із Debian Lenny та встановити підтримуваний пакет FreeRADIUS (він також дає можливість записувати модулі python безкоштовно, не потребуючи перекомпіляції з всі експериментальні модулі).

Я отримав сертифікат від http://CACert.org (ви, ймовірно, повинні отримати "справжній" сертифікат, якщо це можливо)

Є одна "gotcha" з "справжніми" сертифікатами (на відміну від самопідписаних сертифікатів).

Я використав один, підписаний Thawte. Це прекрасно працює, і користувачі бачать прекрасний "дійсний" сертифікат, який називається щось подібне www.my-web-site.com. Коли користувач приймає сертифікат, його комп'ютер фактично розуміє, що всі сертифікати, видані одним і тим же органом сертифікації, слід довіряти (я тестував це на Windows Vista та MacOSX Snow Leopard)! Тож у моєму випадку, якщо хакер має сертифікат на, скажімо, www.some-other-web-site.comтакож підписаний Thawte, він може легко запустити атаку "Людина в середині" без будь-якого попередження на комп'ютері користувача!

Рішення цього полягає в глибокій мережевій конфігурації комп'ютера користувача, щоб конкретно вказати, що слід довіряти лише "www.my-web-site.com". Це займе хвилину, але більшість користувачів не знатимуть, де це налаштувати, якщо ви не надасте їм чітку процедуру та не переконаєтесь, що кожен користувач її виконує. Я все ще використовую "дійсні" сертифікати, але, чесно кажучи, розчаровує, що і Windows, і MacOSX поділяють цю "помилку": довіряючи сертифікаційному органу замість конкретного сертифіката. О ...


1

Відповідно до звіту про помилки, просте відновлення FreeRADIUS повинно вирішити проблему підтримки OpenSSH. Це потрібно зробити лише один раз.

Я не впевнений, яка простота адміністрування пов'язана з налаштуванням. Часто, чим активніше і детальніше налаштування, тим простіше його адмініструвати, оскільки налаштування охоплювала всі основи. Ви маєте на увазі, що конфігурацію також потрібно легко скинути на інші сервери? Скільки бездротових локальних мереж ви налаштовуєте?

Після конфігурації Адміністрація має бути обмежена користувачем LDAP, який додає, видаляє та змінює. Вони повинні бути досить простими, щоб або скрипт з ldapmodify (та ін.), Або знайти гідний графічний передній край LDAP та документувати процеси за допомогою скріншотів.


По-перше, вам доведеться перекомпілювати пакунок щоразу, коли надається оновлення (заздрять Gentoo-люди тут :)). З інших частин я повністю згоден - якщо налаштування покриє всі бази, моєму наступнику доведеться менше працювати (і менше хаків для реверсивного інженера).
Morten Siebuhr


-1

Ви можете використовувати FreeRADIUS2 (з OpenSSL) + EAP-TLS + WPA2-Enterprice. Ось надзвичайно деталізований HOW-TO . Windows XP SP3 має вбудовану підтримку, а також Windows 7, Android 2.3, iPhone, Symbian. Але я не знаю про сумісність зі SLDAP в такій схемі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.