Radius, mysql і парочка - веб-морд - до всього цього ..., мій блог (дмитрий Гарц)
Закортіло днями мені RADIUS встановити. На питання про те, «Навіщо?», Відповім - саме з цього я почав, коли захотів створити собі хотспот. Але поки що розглянемо питання «Як я це робив, і з якими труднощами при установці боровся» ...
1. Ставимо FreeRADIUS.
urpmi freeradius freeradius-mysql libfreeradius1
Чекаємо закінчення успішної установки. Цим самим ми встановлюємо три пакети: сам сервер FreeRADIUS, модуль підтримки MySQL для FreeRADIUS, а також «базовий» набір бібліотек. Переглядаючи список пакетів, які можна встановити з офіційних репозиторіїв Mandriva, в імені яких є слово «RADIUS», я вибрав ще парочку кандидатів для установки. Все в тій же консолі від імені root вводимо наступну команду:
urpmi freeradius-web libfreeradius-devel
Що це було таке? Пакет «libfreeradius-devel» - це набір додаткових бібліотек для розробників. Не впевнений, що мені він так вже сильно буде потрібен, але як то кажуть візьмемо «про всяк випадок». А ось «freeradius-web» - це вже один з тих двох веб-інтерфейсів для управління RADIUS-сервером, установку яких я і планую описати тут. Насправді програма називається Dialup Admin. при бажанні, почитати про неї можна тут. а завантажити (якщо комусь не подобається ставити зі сховищ) - тут.
Отже, п'ять пакетів ми завантажили і встановили. Не варто навіть і сподіватися, що все це вже працює! Поки що ми тільки готуємо ту «брилу», з якої потім викарбуємо нашу «статую». І для цього нам знадобиться ще дещо.
2. Ставимо daloRADIUS.
Питань власне, виникає два:
- Чому, що не доробивши одне, ми перескакуємо на інше?
- І що це взагалі таке і навіщо воно нам потрібно?
Відповім спочатку на друге питання. daloRADIUS - це другий веб-інтерфейс для управління все тим же RADIUS-сервером. Навіщо другий, якщо один уже є? Чесно кажучи, спочатку у мене Dialup Admin просто не запустився, і я швиденько «нагугліть» інший. А потім, коли запустив їх обидва, то вирішив тут описати все це відразу. А вже кому що більше подобається - вирішуйте самі. До речі, daloRADIUS в порівнянні з Dialup Admin - новіший і більш функціонально насичений. Ну і справедливості заради мушу зазначити - в кінцевому підсумку, встановивши і спробувавши обидва ці веб-інтерфейсу, я не знайшов їх досить зручними інструментами для управління ХОТСПОТІВ. Але про це нижче в «Висновках» ...
А тепер про те, навіщо нам знадобилося встановлювати daloRADIUS до того, як завершено конфігурація «зв'язки» FreeRADIUS і MySQL. Справа в тому, що установка FreeRADIUS з модулем підтримки MySQL ще не означає автоматичного створення необхідної бази даних. Як я і говорив, це тільки «брила», над якою нам ще належить попрацювати ручками! Але повертаючись до бази - після установки 5 пакетів, описаних в першій частині, у нас на комп'ютері тільки того і з'являється, що всього-лише ... скрипт для створення в MySQL тієї самої вимагається для роботи FreeRADIUS бази даних. В принципі, ніщо не заважає відразу ж взяти цей скрипт і створити необхідну базу. І так і варто вчинити, тільки якщо Ви не плануєте ... встановити daloRADIUS. Справа в тому, що з німтакже поставляється скрипт створення бази даних MySQL для FreeRADIUS. Але, на відміну від скрипта, що поставляється з самим FreeRADIUS-сервером, скрипт, що йде в комплекті з daloRADIUS, створює більш об'ємну базу, додаючи в неї крім базових ще додаткові таблиці і поля, що вимагаються для його власної роботи. А з іншого боку, якщо спочатку створити базу за допомогою скрипта «від FreeRADIUS», то згодом, при виконанні скрипта «від daloRADIUS», першу базу доведеться знести. Так навіщо двічі робити одне і те ж? Умовив?
Так як в репозиторіях Mandriva даної програми немає, йдемо на сайт daloRADIUS або ж на сторінку проекту на SourceForge.net. У будь-якому випадку - качаємо архів з програмою. Власне, сама установка зводиться до декількох простих дій:
- Розпакувати вміст архіву.
Переходимо в ту папку, куди зберегли скачаний архів з програмою і виконуємо команду:
tar -zxvf імя_архіва.tar.gz
- Отриманий результат потрібно скопіювати в папку веб-сервера Apache.
Примітки по копіюванню. По-перше, результатом розпакування реального архіву буде папка з ім'ям зразок такого - daloradius-0.9-8. Особисто я для зручності папку цю відразу ж перейменував в просто daloradius. А по-друге, папка, в якій знаходяться документи веб-сервера Apache в моєму випадку (так налаштоване), називається / var / www / html. і саме це і показано в наведеній нижче команді. А тепер повернемося до того факту, що ми тільки що (командою наведеної вище) розпакували архів з програмою. Перебуваючи там же, виконуємо наступну команду:
cp daloradius / / var / www / html -R
- Тепер потрібно призначити власником папки з програмою того користувача, від імені якого працює веб-сервер.
У моєму випадку, це користувач apache з групи apache. Щоб змінити власника, виконуємо команду:
chown apache: apache / var / www / html / daloradius -R
- Ну і наостанок, потрібно змінити права доступу на файл конфігурації daloRADIUS.
Для цього виконуємо команду:
На цьому попередню установку daloRADIUS можна вважати закінченою.
3. Готуємо MySQL (створюємо бази).
Ну ось і дісталися ми до «висічені» нашої «статуї». Власне, до налаштування взаємодії FreeRADIUS з базою даних MySQL потрібно цю саму базу створити. Як я писав вже вище, на даному етапі у нас є тільки скрипти для її створення. І з двох можливих «претендентів» особисто я вибрав скрипт, що поставлявся в комплекті з daloRADIUS. Ось його і будемо зараз «юзати». У наведеному нижче прикладі я використовую ім'я бази «radius_db«, ім'я користувача для даної бази - «radius_user» і пароль «radius_passwd» для доступу даного користувача до даної базі. Вам же я рекомендую вибрати свої значення і підставляти їх у відповідні команди. Передбачається, що ми як і раніше перебуваємо в консолі від імені root-а. Запускаємо команду:
Якщо попросить, вводимо пароль root-а для MySQL. (Якщо ж не попросить, то рада на майбутнє - встановити цей самий пароль в цілях підвищення безпеки). Після успішного введення пароля ми потрапляємо в консоль MySQL. Про всяк випадок нагадаю, що всі команди в ній повинні закінчуватися крапкою з комою (;). Створюємо базу даних:
CREATE DATABASE radius_db;
Переходимо в тільки що створену базу даних:
Запускаємо той самий скрипт, який і створить в цій базі даних все необхідне:
Следуе врахувати, що по-перше, вся ця команда повинна бути введена одним рядком, а по-друге - в ній вказано шлях до скрипту створення бази з урахуванням мого розташування файлів daloRADIUS. При необхідності скорегуйте шлях.
Після того, як база створена (ми отримали відповідь на кшталт «Query OK, ХХХ rows affected ...»), створюємо користувача і призначаємо йому права на дану базу даних:
GRANT ALL PRIVILEGES ON radius_db. * TO 'radius_user' @ 'localhost' IDENTIFIED BY 'radius_passwd';
В даному випадку слід звернути увагу на слово «localhost», що означає, що і база даних MySQL і сервер FreeRADIUS встановлені на одному комп'ютері. В іншому випадку ім'я комп'ютера в наведеній команді потрібно буде змінити.
Тепер наша база готова, але ... тільки для випадку використання веб-інтерфейсу daloRADIUS. Якщо ж планується використовувати Dialup Admin, то нам необхідно додати в базу ще кілька таблиць. Необхідна примітка - після установки пакета freeradius-web файли програми Dialup Admin на моєму «сервері» розташувалися в папці / var / www / freeradius-web. а документація до неї - в папці / usr / share / doc / freeradius-web / sql. В папці з документацією, в папці / sql / mysql знаходяться чотири скрипта для створення яких бракує для роботи Dialup Admin додаткових таблиць. Якщо Ви ще не вийшли з консолі MySQL, то просто вводимо наведені нижче чотири команди. Якщо ж вийшли, то спочатку повертаємося в консоль MySQL командою «mysql -uroot -p» і вибираємо базу командою «use radius_db; «. А вже потім створюємо 4 нові таблиці - «badusers»
Ось так скрипт виглядав спочатку:
А ось так - після редагування:
Для наочності відмінності виділені червоним. Як ми бачимо, для виправлення першої помилки (тисячі шістьдесят сім) я просто замінив числовий нуль (0) на значення «NULL». Після цього повідомлення про невірний «умолчательную» значенні дл колонки «id» пішло. Друге повідомлення про помилку (тисячі сімдесят два) говорить нам, що ми намагаємося зробити ключовим невуществующій в таблиці (.) Стовпець «Date». І це дійсно так! Заглянувши на структуру таблиці, ми бачимо, що там з дат є тільки стовпець «IncidentDate». Саме так його я і зробив ключовим ... Подібна правка може знадобитися і для трьох інших скриптів. Після редагування повторно запускаємо створення 4 додаткових таблиць. Отримавши відповідь виду «Query OK, ХХХ rows affected ...» на всі чотири команди по створенню доп. таблиць, виходимо з консолі MySQL командою «exit«.
4. Налаштовуємо FreeRADIUS на використання бази MySQL.
На самому початку ми встановили FreeRADIUS. Пам'ятаєте? І весь цей час він тихенько працював! Не вірите? Введіть команду:
Нюанс в тому, що поки що наш FreeRADIUS не використовує базу MySQL. Щож, будемо «примушувати». Для цього необхідно виконати кілька дій. По-перше, потрібно відредагувати файл /etc/raddb/sql.conf. У ньому потрібно знайти зазначені рядки (вони не будуть йти поспіль, як в прикладі нижче) і присвоїти їм такі значення:
Усе. Налаштування взаємодії FreeRADIUS з базою даних MySQL завершена. Щоб внесені нами зміни вступили в силу, сервер FreeRADIUS потрібно перезапустити. Ми ж все ще в консолі з правами root-а? Тоді просто вводимо команду:
Якщо все добре, то спочатку ми прочитаємо «ОК» з приводу зупинки сервера freeradius, а потім - «ОК» з приводу його запуску. З цього моменту «зв'язка» FreeRADIUS з базою даних MySQL працює, і нам пора це перевірити ...
5. Перевірка «зв'язки» FreeRADIUS + MySQL
Щоб переконатися, що наш сервер працює і «спілкується» з базою даних, виконаємо наступне. Спочатку увійдемо в консоль MySQL:
Виберемо базу даних:
Вставимо в неї новий запис (в таблицю «radcheck» про користувача «sqltest» і його пароль «testpwd»):
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ( 'sqltest', 'Password', 'testpwd');
(По суті, ми тільки що «по швидкому» завели в нашому RADIUS-сервері тестового користувача). Про всяк випадок перевіримо, що запис таки була додана:
select * from radcheck where UserName = 'sqltest';
У відповідь повинна з'явиться псевдографічні таблиця, показана нижче, із записом, що задовольняє наш запит:
Якщо все добре, виходимо з консолі MySQL:
А тепер надішлемо запит нашому RADIUS-сервера:
radtest sqltest testpwd localhost 1812 testing123
І нам в ньому важлива виділена червоним кольором рядок "Access-Accept", яка підтверджує, що клієнт "sqltest" прийнятий сервером RADIUS, а значить наша "зв'язка" FreeRADIUS + MySQL працює нормально! Отже, пора прикручувати веб-інтерфейси ...
6. Налаштовуємо Dialup Admin
Налаштування програми проста і зводиться до редагування всього лише одного файлу конфігурації - /etc/freeradius-web/admin.conf. У ньому потрібно знайти зазначені рядки (вони не обов'язково будуть йти поспіль, як в прикладі нижче) і присвоїти їм такі значення:
7. Налаштовуємо daloRADIUS.
Мається на увазі, що Ви вже встановили програму і налаштували її власника і права доступу, як описано вище в пункті 2 «Ставимо daloRADIUS». Для настройки програми необхідно відредагувати всього лише один файл конфігурації - /var/www/html/daloradius/library/daloradius.conf.php. У ньому потрібно знайти зазначені рядки (вони не обов'язково будуть йти поспіль, як в прикладі нижче) і присвоїти їм такі значення:
Ну ось і все ... Ах, ну да -
Встановивши і налаштувавши обидва цих інтерфейсу, я спробував з їх допомогою покерувати своїм ХОТСПОТІВ. Але на жаль, жоден з них не здався мені досить функціональним і зручним рішенням моїх потреб. І я був змушений продовжити пошук веб-інтерфейсу до ХОТСПОТІВ. У підсумку, мій особистий вибір припав на програму Easyhotspot. Ось її можливості мене на той момент повністю влаштовували. У підсумку, спочатку я перевів її на українську мову, потім почав процес поступової модернізації ...
Почитати всі мої замітки про хотспоти: