daloRADIUS

FreeRADIUSの認証データをMySQLに蓄えつつ、
ユーザ、パスワード、アトリビュート等をWebブラウザ経由で管理出来るフロントエンド。
 
メインラインの開発は0.9-9で終了しているが、GitHub版で稀に更新されている事がある。
SourceForge版はSQL構文エラーが出たり日本語対応していなかったりするが、
GitHub版は諸々のDB不具合解消と日本語対応が行われている。

FreeRADIUSのMySQL管理化

daloRADIUSを利用するには、FreeRADIUS環境が動いている事が前提となる。
通常のFreeRADIUSはテキストベースで認証データを管理している。
その為、daloRADIUSで読み込める様に、テキスト管理からDB管理にする必要がある。
※一度FreeRADIUSを構築した状態からMySQLへ組み替える際に、バックアップはとる事

$ mysql -u root -p
mysql> create database radius;
mysql> grant all on radius.* to radius identified by 'FreeRadiusPass';
mysql> flush privileges;
mysql> quit;

$ mysql -u radius -p radius < /etc/radius/raddb/sql/mysql/nas.sql
Enter Password: *****
$ mysql -u radius -p radius < /etc/radius/raddb/sql/mysql/schema.sql
Enter Password: *****

$ vi /etc/radius/raddb/sql/mysql/dialup.conf
=========
289 :: # Uncomment simul_count_query to enable simultaneous use checking
290 :: simul_count_query = "SELECT COUNT(*) \
291 ::     FROM ${acct_table1} \
292 ::     WHERE username = '%{SQL-User-Name}' \
293 ::     AND acctstoptime IS NULL"



FreeRADIUSのMySQL-DBを作成したら、コンフィグの変更を行う。
以下に書いてある箇所以外は全部コメントにする。

$ vi /etc/radius/raddb/sql.conf
※実際に書き換えた箇所は"server"と"password"の二箇所のみ
=========
sql {
    database = "mysql"
    driver = "rlm_sql_${database}"
    server = "RadiusServerAddress"
    login = "radius"
    password = "FreeRadiusPass"
    radius_db = "radius"

    acct_table1 = "radacct"
    acct_table2 = "radacct"
    postauth_table = "radpostauth"
    authcheck_table = "radcheck"
    authreply_table = "radreply"
    groupcheck_table = "radgroupcheck"
    groupreply_table = "radgroupreply"
    usergroup_table = "radusergroup"

    deletestalesessions = yes
    sqltrace = no
    sqltracefile = ${logdir}/sqltrace.sql
    num_sql_socks = ${thread[pool].max_servers}
    connect_failure_retry_delay = 60
    lifetime = 0
    max_queries = 0
    nas_table = "nas"

    $INCLUDE sql/${database}/dialup.conf
}
$ vi /etc/radius/raddb/radiusd.conf
※sql.confをINCLUDEする箇所のアンコメントと、instantiateステートのコメントアウト
=========
743 :: $INCLUDE sql.conf
779 :: instantiate {
785 ::     #exec
802 ::     #expr
808 ::     #daily
809 ::     #expiration
810 ::     #logintime
825 :: }
$ vi /etc/radius/raddb/sites-enabled/default
※SQL認証をONにして、File認証をコメントアウト
=========
###EAPトンネル内で許可する認証方式
069 :: authorize {
088 ::     preprocess
107 ::     mschap
136 ::     suffix
156 ::     eap {
157 ::         ok = return
158 ::     }
177 ::     sql
198 ::     expiration
199 ::     logintime
223 :: }

###アカウンティングの接続ログ書式
378 :: accounting {
406 ::     sql
432 ::     exec
443 :: }


テストデータの挿入

初期状態ではDBにユーザ情報が入っていないので、テストユーザを作成して登録しておく。
下記では、Passwordアトリビュートのみを設定している。

  • RadiusTestUser : テストユーザ名
  • RadiusTestPass : テストユーザパスワード
    ※テストが終わったら、SQLコマンドかdaloRADIUS経由でテストユーザを削除する事
    $ mysql -u radius -p
    Enter Password: *****
    mysql> use radius;
    mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('RadiusTestUser', 'Password', 'RadiusTestPass');
    Query OK, 1 row affected (0.06 sec)
    mysql> quit;

daloRADIUSコンフィグ

apacheの設定に合わせて、daloRADIUSディレクトリのオーナーとユーザを変更したり、
ディレクトリ先に対してapacheのAliasを書く必要がある。
また、daroRADIUSには"PEAR::DB"が必要なので、合わせてインストールも行う。

・SourceForge版
$ wget "http://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz" daloradius-0.9-9.tar.gz
$ tar zxvf daloradius-0.9.9.tar.gz

・GitHub版
$ git clone https://github.com/lirantal/daloradius daloradius
$ rm -rf daloradius/.git*
$ rm -rf daloradius/.ht*

$ pear install DB
$ cd /usr/local/src
$ mv daloradius-0.9-9 {$ApacheDocumentRoot}/daloradius
$ cd {$ApacheDocumentRoot}/daloradius
$ mysql -u radius -p radius < ./contrib/db/fr2-mysql-daloradius-and-freeradius.sql
Enter Password: *****
$ vi library/daloradius.conf.php
=========
26 :: $configValues['DALORADIUS_VERSION'] = '0.9-9';
27 :: $configValues['FREERADIUS_VERSION'] = '2';
28 :: $configValues['CONFIG_DB_ENGINE'] = 'mysql';
29 :: $configValues['CONFIG_DB_HOST'] = 'localhost';
30 :: $configValues['CONFIG_DB_PORT'] = '3306';
31 :: $configValues['CONFIG_DB_USER'] = 'radius';
32 :: $configValues['CONFIG_DB_PASS'] = 'FreeRadiusPass';
33 :: $configValues['CONFIG_DB_NAME'] = 'radius';


アクセス方法

Webブラウザから「http://"サーバIPアドレス"/daloradius/」に移動すれば、
daloRADIUSのログイン画面になる。
daloRADIUSの初期管理ユーザは、[ユーザ:administrator | パスワード:radius]になっている。
管理ユーザのパスワードを変更するには、以下の順番に移動して管理ユーザを編集する。

[Config] -> [Operators] -> [List Operators] -> [administrator] -> [Operator Info]


PHP7.0対応

SourceForgeで配布しているdaloRADIUSは、PHP7.0以上に対応していない。
PHP7.0環境で動かすには、MySQLモジュールの参照部分と、DBエンジン選択箇所のソースを書き換える。

# diff /daloradius/library/daloradius.conf.php /daloradius/library/daloradius.conf.php.org
---
28c28
< $configValues['CONFIG_DB_ENGINE'] = 'mysqli';
---
> $configValues['CONFIG_DB_ENGINE'] = 'mysql';
# diff /daloradius/library/opendb.php /daloradius/library/opendb.php.org
97d96
<       $dbSocket->query("SET SESSION sql_mode = '';");