らくがきちょう

なんとなく

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 になっていました。

# 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)

文字コードが変更されていれば以下のように表示されます。

# 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 へログインします。

mysql -u root -p

以下の 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

上記以外にも driverdialect 等も 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 を以下のように変更します。

変更前

変更前は以下のようになっているはずです。

# 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 が起動する」よう、起動順序を指定します。

# 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 系をインストールしました。

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 のログイン画面が表示されることを確認します。

f:id:sig9:20190617011139p:plain:w800

初期ログイン情報は以下の通りです。

項目
ユーザ名 administrator
パスワード radius

参考