Сборка и настройка 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/mods-enabled:

cd /etc/raddb/mods-enabled  ln -s /etc/raddb/mods-available/sql sql

2.2.2 Редактируем /etc/raddb/mods-enabled/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’ом.

ссылка на оригинал статьи http://habrahabr.ru/post/274251/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *