Збірка і налаштування FreeRADIUS 3 з підтримкою SQLITE

Доброго дня, шановні.
Хочу поділитися з Вами рішенням однієї творчої задачі. Сподіваюся комусь буде корисно.
Отже,

ДАНО:
малопотужна залізка з процесором arm і зібраний під неї і встановлений Debian 7 wheezy.

ЗАВДАННЯ:
поставити FreeRADIUS 3.0.X, налаштувати його на роботу з БД SQLITE. Тобто, облікові записи користувачів (яких потрібно аутентифікувати) RADIUS повинен брати з БД SQLITE.

На малюнку представлена верхнеуровневая схема взаємодії компонентів.



Чому я вирішив описати дане рішення?

Зіткнувшись з цією задачею і почавши гуглити, я був здивований тому, що докладних описів по збірці freeradius, а тим більше з підтримкою SQLITE просто немає. Тому вирішив законспектувати собі і іншим на пам'ять.

РІШЕННЯ:
Складається з 3 частин:
1) Складання Freeradius 3.0.3 (я вибрав цю версію, на більш пізніх все буде виглядати приблизно також) з підтримкою SQLite;
2) Налаштування зв'язки Freeradius і SQLite;
3) Налаштування сервера, на якому аутентифицируются користувачі (на малюнку вище — «сервер»).

1 Збірка Freeradius 3.0.3 з підтримкою SQLite
Для успішної складання radius 3.0.3 потрібно виконати наступні кроки:
1.1 Завантажити вихідний код: ftp.freeradius.org/pub/freeradius/old/freeradius-server-3.0.3.tar.gz, розпакувати в окрему папку;
1.2 Встановити через apt-get наступні пакети: libtalloc2, libtalloc-dev, libssl-dev, libperl-dev, libpam0g-dev, libsqlite3-dev, libgdbm-dev (якщо потрібна підтримка інших БД, то необхідно доставити відповідний dev пакет, наприклад mysql-dev);
1.3 Перейти в папку з розпакованим архівом з вихідними кодами і, тривіально,
./configure
make
make install 

Якщо з першого разу ./configure не відпрацює – можливо у системі не вистачає ще якихось пакетів, читаємо уважно висновок і встановлюємо їх.

2 Налаштування зв'язки Freeradius і SQLite
Для налаштування зв'язки freeradius + sqlite необхідно виконати наступні дії:

2.1 Створити і налаштувати БД користувачів sqlite

2.1.1 Створити базу sqlite і схему БД, з якою буде працювати radius:
sqlite3 /etc/raddb/sqlite_rad.db < /etc/raddb/mods-config/sql/main/sqlite/schema.sql

/etc/raddb/sqlite_rad.db – це шлях до файлу БД, Ви можете розмістити його в будь-якому зручному місці.
2.1.2 Створити УЗ користувача в БД:
sqlite3 /etc/raddb/sqlite_rad.db
insert into radcheck values ('1','user','Cleartext-Password',':=','secret');

Наведеним вище запитом до БД ми наповнюємо таблицю radcheck, в якій зберігається інформація про УЗ користувачів наступною інформацією:
Унікальний ID користувача = 1; ім'я користувача = user; атрибут УЗ = Cleartext-Password; оператор = ":="; значення атрибута = «secret». Якщо по-російськи, то ми задали пароль для УЗ user, який зберігається у вигляді відкритого тексту і його значення – «secret». Детальніше про пари атрибут-значення (av pair) і оператори порівняння можна прочитати в офіційній документації по radius і unlang. freeradius.org/radiusd/man/unlang.html

2.2 Налаштувати freeradius:

2.2.1 Конфігураційні файли всіх доступних модулів radius знаходяться в /etc/raddb/mods-available. Щоб включити їх, потрібно створити посилання на модуль в папці /etc/raddb/модов:
cd /etc/raddb/модов 
ln -s /etc/raddb/mods-available/sql sql

2.2.2 Редагуємо /etc/raddb/модов/sql, наступним чином:
sql {
............
driver = "rlm_sql_sqlite"
............
sqlite {
filename = "./etc/raddb/sqlite_rad.db"
}
............
dialect = "sqlite"
...........

Змінна filename має вказувати на файл БД, створений у пункті 2.1.1.
2.2.3 Прописуємо клієнта radius, тобто той сервер (або мережеве обладнання), користувачі якого будуть аутентифицироваться через даний radius. Для цього додаємо рядки в файл /etc/raddb/clients.conf:
client 192.168.0.4 {
secret = testing123
shortname = new_server
}

secret в даному випадку – це секретне слово radius за яким він аутентифікує клієнта.
shortname – довільне «коротке ім'я», це значення можна навіть опустити.
2.2.4 Перевіряємо, що в секції «authorize» у файлі /etc/raddb/sites-enabled/default присутній «-sql»:
authorize {
........
-sql
........


3 Налаштування клієнта RADIUS
3.1 На клієнті встановити пакет pam_radius:
apt-get install libpam-radius-auth

3.2 У файлі /etc/pam_radius_auth.conf на клієнті додати рядок:
other-server other-secret 3

де other-server – IP адреса сервера radius, other-secret – секретне слово з пункту 2.2.3 налаштування:
192.168.0.2 testing123 3

3.3 У файлі /etc/pam.d/sshd над рядками
# Standard Un*x authentication.
@include common-auth

додати рядок
auth sufficient pam_radius_auth.so


От і все. Запускаємо RADIUS і насолоджуємося PROFIT'ом.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.