Сборка и настройка 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
    checkinstall 

    Если с первого раза ./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'ом.
    • +11
    • 11,9k
    • 2
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 2
    • 0
      Пару замечаний к посту.
      make install

      За что же вы так систему свою ненавидите?
      Cleartext-Password

      Жесть, а чего не шифрованный? Хотя-бы так «perl -e 'print(crypt(»passme",«salt»)."\n");'" и в Crypt-Password, если уж заморачиваться не охота.

      • 0
        Спасибо, учту.
        Насчет Cleartext — это просто для примера.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.