CentOS7 に daloRadius をインストールし、FreeRADIUS を Web GUI で管理する
daloRadius は FreeRADIUS の管理を Web GUI で実施出来るようにしてくれるソフトウェアです。 今回は CentOS7 上に daloRadius をインストールする手順をメモしておきます。
Apache / FreeRADIUS / MariaDB のインストール
daloRadius をインストールする前に、前提となるソフトウェアをインストールしていきます。 CentOS7 標準リポジトリにある MariaDB は 5.x 系と古いので、MariaDB のリポジトリを追加します。
| curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
yum -y install MariaDB-server MariaDB-client
|
Apache, FreeRADIUS, MariaDB をインストールします。
| yum -y install \
freeradius \
freeradius-mysql \
freeradius-utils \
httpd \
mariadb-server
|
今回は以下のバージョンがインストールされました。
| # rpm -qa | grep -e freeradius -e mariadb | sort
freeradius-3.0.13-10.el7_6.x86_64
freeradius-mysql-3.0.13-10.el7_6.x86_64
freeradius-utils-3.0.13-10.el7_6.x86_64
mariadb-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-server-5.5.60-1.el7_5.x86_64
|
MariaDB
MariaDB を設定していきます。
文字コードの設定
MariaDB が既定で利用する文字コードを変更し、日本語等も利用可能にしておきます。 /etc/my.cnf.d/utf8mb4.cnf
を以下の内容で新規作成します。
| [client-mariadb]
default-character-set = utf8mb4
[mariadb]
character-set-server = utf8mb4
|
文字コードが変更されていない場合、デフォルトでは以下のように latin1
になっていました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # mysql -u root
MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
|
文字コードが変更されていれば以下のように表示されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # mysql -u root
MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.002 sec)
|
起動&自動起動
起動&自動起動の設定を行います。
| systemctl enable mariadb.service
systemctl start mariadb.service
|
初期設定
mysql_secure_installation
を実行し、root
ユーザへパスワードを設定したり、不要な設定は削除しておきます。
| mysql_secure_installation
|
データベースの作成
データベースを作成します。 MariaDB へログインします。
以下の SQL を実行し、データベースを作成します。 パスワードは任意のものへ変更します。
| create database radius;
grant all privileges on radius.* to radius@localhost identified by 'password';
flush privileges;
exit
|
スキーマの設定
スキーマの設定を行います。 FreeRADIUS のスキーマは予め用意されているので、mysql
コマンドでデータベースへ設定します。
| mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql
|
FreeRADIUS
次は FreeRADIUS を設定していきます。
SQL モジュールの設定
FreeRADIUS からバックエンドの MariaDB を利用するにはモジュールが必要になります。 適切なモジュールを有効化する為、シンボリックリンクを作成しておきます。
| ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
|
SQL モジュールへ、データベースアクセスに必要な設定を実施します。 /etc/raddb/mods-available/sql
には以下等の設定があります。
| # server = "localhost"
# port = 3306
# login = "radius"
# password = "radpass"
・
・
・
# read_clients = yes
|
上記以外にも driver
や dialect
等も MariaDB を利用するように設定変更する必要があります。 例えば以下のように実行し、MariaDB でデータベースを作成した時のパラメータに合わせて設定していきます。
| sed -i -e 's/^\tdriver = "rlm_sql_null"/\tdriver = "rlm_sql_mysql"/g' /etc/raddb/mods-available/sql
sed -i -e 's/^\tdialect = "sqlite"/\tdialect = "mysql"/g' /etc/raddb/mods-available/sql
sed -i -e 's/^#\tserver = "localhost"/\tserver = "localhost"/g' /etc/raddb/mods-available/sql
sed -i -e 's/^#\tport = 3306/\tport = 3306/g' /etc/raddb/mods-available/sql
sed -i -e 's/^#\tlogin = "radius"/\tlogin = "radius"/g' /etc/raddb/mods-available/sql
sed -i -e 's/^#\tpassword = "radpass"/\tpassword = "password"/g' /etc/raddb/mods-available/sql
sed -i -e 's/^#\tread_clients = yes/\tread_clients = yes/g' /etc/raddb/mods-available/sql
|
SQL モジュールのグループを変更しておきます。
| chgrp -h radiusd /etc/raddb/mods-enabled/sql
|
ログ取得の設定
FreeRADIUS はデフォルトで ログを取得しません。 トラブルシューティングに役立ちますので、ログを取得するよう設定変更しておきます。 設定ファイルは /etc/raddb/radiusd.conf
ですが、初期状態では以下のようになっていました。
| # cat /etc/raddb/radiusd.conf | grep auth | grep -v "#"
auth = no
auth_badpass = no
auth_goodpass = no
|
これらの設定を変更しておきます。
| sed -i -e 's/^\tauth = no/\tauth = yes/g' /etc/raddb/radiusd.conf
sed -i -e 's/^\tauth_badpass = no/\tauth_badpass = yes/g' /etc/raddb/radiusd.conf
sed -i -e 's/^\tauth_goodpass = no/\tauth_goodpass = yes/g' /etc/raddb/radiusd.conf
|
Systemd の自動起動設定
OS 起動時に FreeRADIUS も自動起動するように設定します。 通常であれば systemctl enable radiusd.service
で済むところですが、このままでは「FreeRADIUS がバックエンドで MariaDB を利用する設定にも関わらず、MariaDB よりも先に FreeRADIUS が起動するとエラーになってしまい、自動起動に失敗する」という問題が発生する可能性があります。 /etc/systemd/system/multi-user.target.wants/radiusd.service
を以下のように変更します。
変更前
変更前は以下のようになっているはずです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # cat /etc/systemd/system/radiusd.service
[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network.target ipa.service dirsrv.target krb5kdc.service
[Service]
Type=forking
PIDFile=/var/run/radiusd/radiusd.pid
ExecStartPre=-/bin/chown -R radiusd.radiusd /var/run/radiusd
ExecStartPre=/usr/sbin/radiusd -C
ExecStart=/usr/sbin/radiusd -d /etc/raddb
ExecReload=/usr/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
|
変更後
After=mariadb.service
という設定を追加し、「MariaDB の起動を待ってから FreeRADIUS が起動する」よう、起動順序を指定します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | # cat /etc/systemd/system/radiusd.service
[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network.target ipa.service dirsrv.target krb5kdc.service
After=mariadb.service
[Service]
Type=forking
PIDFile=/var/run/radiusd/radiusd.pid
ExecStartPre=-/bin/chown -R radiusd.radiusd /var/run/radiusd
ExecStartPre=/usr/sbin/radiusd -C
ExecStart=/usr/sbin/radiusd -d /etc/raddb
ExecReload=/usr/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
|
これで準備 OK です。
起動&自動起動
起動&自動起動の設定を行います。
| systemctl enable radiusd.service
systemctl start radiusd.service
|
daloRadius
daloRadius をインストールし、設定していきます。
インストール
daloRadius は PHP のソースコードで配布されています。 GitHub からソースコードをダウンロード・展開・所有者&権限の変更を行います。 展開先は Apache のドキュメントルートである /var/www/html/
にしました。
| wget https://github.com/lirantal/daloradius/archive/master.zip
unzip master.zip
mv daloradius-master/* /var/www/html/
chown -R apache.apache /var/www/html/
chmod 664 /var/www/html/library/daloradius.conf.php
|
SQL の実行
daloRadius に必要な SQL 文を実行します。
| mysql -u root -p radius < /var/www/html/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radius < /var/www/html/contrib/db/mysql-daloradius.sql
|
データベース接続の設定
daloRadius がデータベースに接続出来るよう、設定を行います。 関連する設定は /var/www/html/library/daloradius.conf.php
にあります。 以下のように実行すると関連するパラメータだけを表示出来ます。
| cat /var/www/html/library/daloradius.conf.php | grep \
-e CONFIG_DB_HOST \
-e CONFIG_DB_PORT \
-e CONFIG_DB_USER \
-e CONFIG_DB_PASS \
-e CONFIG_DB_NAME \
| grep -v CONFIG_DB_PASSWORD_ENCRYPTION
|
変更前
初期状態では以下のようになっていました。
| $configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'root';
$configValues['CONFIG_DB_PASS'] = '';
$configValues['CONFIG_DB_NAME'] = 'radius';
|
変更後
今回は以下のように変更しました。
| $configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'password';
$configValues['CONFIG_DB_NAME'] = 'radius';
|
PHP 7.x のインストール
daloRadius は PHP で実装されている為、PHP をインストールします。 CentOS7 標準リポジトリ上にある PHP は 5.x と古いので、EPEL から PHP 7.x 系をインストールします。 まず、EPEL のリポジトリを追加します。
| yum install -y epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
|
続いて PHP をインストールします。 今回は PHP 7.3 系をインストールしました。
1
2
3
4
5
6
7
8
9
10
11
12 | yum -y --enablerepo=remi-php73 install \
mod_php \
php \
php-cli \
php-devel \
php-gd \
php-mbstring \
php-mcrypt \
php-mysqlnd \
php-pear \
php-pear-DB \
php-xml
|
Apahce の起動&自動起動
PHP をインストールしたので Apahce を起動&自動起動設定しておき、PHP 関連モジュールを読み込ませます。 既に Apache が起動している場合は( start
では無く )restart
しておきます。
| systemctl enable httpd
systemctl start httpd
|
daloRadius へのログイン
ブラウザのアドレスバーに http:// ~/
と入力し、daloRadius のログイン画面が表示されることを確認します。
初期ログイン情報は以下の通りです。
項目 |
値 |
ユーザ名 |
administrator |
パスワード |
radius |
参考