Настройка Freeradius для хранения radpostauth в альтернативной базе MySQL

Обновлено и опубликовано Опубликовано:

Данную инструкцию рассмотрим для ситуации, когда пользователи и логи Freeradius уже хранятся в базе MySQL, но необходимо сбалансировать нагрузку и отправлять логи авторизации (radpostauth) на другой сервер MySQL. Все команды приведены на примере FreeBSD.

Открываем на редактирование файл с политиками freeradius:

# ee /usr/local/etc/raddb/policy.conf

И добавляем следующее:

sql_auth_custom {
        post_auth_custom
}

* где sql_auth_custom — название политики; post_auth_custom — имя файла модуля, в котором будут находиться инструкции.

Теперь создаем новый файл в модулях freeradius:

# ee /usr/local/etc/raddb/modules/post_auth_custom

* обратите внимание, для удобства название файла post_auth_custom совпадает с содержимым политики sql_auth_custom.

Приводим содержимое нового файла к следующему виду:

sql post_auth_custom {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "192.168.0.10"
        login = "radius"
        password = "radius"
        radius_db = "radius"
        postauth_table = "radpostauth"
        sqltrace = no
        sqltracefile = /var/log/postauthtrace.sql
        num_sql_socks = 32
        connect_failure_retry_delay = 60
        sql_user_name = "%{User-Name}"
        postauth_query = "INSERT INTO ${postauth_table} \
                          (`username`, `pass`, `reply`, `authdate`, `callfrom`,`callto`,`nasip`,`acctsessionid`,`msg`) \
                          VALUES ( \
                          '%{User-Name}', \
                          '%{%{User-Password}:-%{Chap-Password}}', \
                          '%{reply:Packet-Type}', '%S', '%{Calling-Station-Id}', '%{Called-Station-Id}', '%{NAS-IP-Address}', '%{Acct-Session-Id}', '%{reply:Reply-Message}');"

}

* где post_auth_custom — название политики; 192.168.0.10 — IP-адрес альтернативного сервера MySQL; radius (login, password, radius_db) — данные для подключения к базе данных (соответственно, логин, пароль и название базы); radpostauth — имя таблицы для хранения лога.

Теперь открываем следующий файл:

# ee /usr/local/etc/raddb/sites-enabled/default

Находим секцию post-auth и добавляем следующее:

post-auth {
    ...
    sql_auth_custom
    ...

где sql_auth_custom — название нашей политики.

Для применения настроек, перезагружаем службу radiusd:

# service radius restart

После перезагрузки данные об авторизации начнут отправляться на новый сервер MySQL. На нем уже должна быть создана база с правильными именем и таблицей.

# MySQL # UNIX # Базы данных # Безопасность # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет