CentOS7 + FreeRADIUS + daloRADIUSでWPA-EAP認証する その1
Linux CentOS7 FreeRADIUS
Published: 2019-11-11

CiscoのAPを使う為に構築して欲しいとの指示を受けたので、そのメモ。

まずはdaloRADIUSを起動する所まで。

環境

サーバー

  • CentOS7
  • PHP7.2
  • MariaDB 10.4.8
  • FreeRADIUS 3.0.13
  • daloRADIUS 1.1-2
  • httpd 2.4.6

必要なパッケージのインストール

RADIUS

サクッと標準リポジトリからインストールする。

# yum install -y freeradius freeradius-utils freeradius-mysql

Apache(httpd)

# yum install -y httpd

PHP7.2

同じく。まずはリポジトリの追加。実環境ではやってなかった気がするけど大事を取ってアップデートする。

# yum install -y epel-release
# yum update
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum update

PHP7.2とモジュール類をインストールする。

# yum --enablerepo=remi-php72 install -y mod_php php php-cli php-devel php-mcrypt php-gd php-mbstring php-mysqlnd php-pear php-pear-DB php-xml

MariaDB

リポジトリを追加してインストール。

# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# yum install -y MariaDB-server MariaDB-client

初期設定を済ませたら起動する。

# mysql_secure_installation
# systemctl start mariadb
# ststemctl enable mariadb

データベースの作成・スキーマ設定

パスワードは任意のものに変更。

# mysql -uroot -p

> create database radius;
> grant all privileges on radius.* to radius@localhost identified by 'password';
> flush privileges;
> exit

FreeRADIUSで使うスキーマの設定もしておく。

# mysql -uroot -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

FreeRADIUSのセットアップ

一通りパッケージは入れ終わったので設定していく。

設定ファイルの編集

MySQLの有効化

ここでは最初からMySQLを使うようにする。

まずはMySQLモジュールの有効化。

# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql

モジュールの設定を変更する。/etc/raddb/mods-enabled/sqlを編集する。

driver = "rlm_sql_mysql"
dialect = "mysql"
server = "localhost"
port = 3306
login = "radius"
password = "password"
read_clients = yes

sqlモジュールをradiusdから読めるようにしておく。

# chown radiusd.radiusd /etc/raddb/mods-enabled/sql

ログ出力の有効化

FreeRADIUSがデフォルトでログを出力しないので出力するようにしておく。設定ファイルは/etc/raddb/radiusd.conf

auth = yes
auth_badpass = yes
auth_goodpass = yes

Systemdユニットの書き換え

そのままではMariaDBとFreeRADIUSの起動順が前後してしまい、正常に起動しなくなる恐れがある。なので/etc/systemd/system/multi-user.target.wants/radiusd.serviceを編集してMariaDBの起動を待つようにする。

[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

自動起動の有効化

ファイルを直接書き換えたので再読込をかける。

# systemctl daemon-reload
# systemctl start radiusd
# systemctl enable radiusd

daloRADIUSのインストール

インストール手順はWordpressとかとそう変わらない。場所はお好みで。

基本的にはApache標準のドキュメントルートが楽だと思う。

# 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

データベースの設定

さっきやったのと同じようにデータベースを設定する。

# 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

dalloRADIUSの設定

/var/www/html/library/daloradius.conf.phpを編集する。さっき作ったFreeRADIUSのデータベースに繋がるようにすれば良い。

$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';

httpdの起動

アクセス制限とかしたい場合はお好みで。ここではそのまま起動する。

# systemctl start httpd
# systemctl enable httpd

daloRADIUSにアクセス

ブラウザからhttp://radiusサーバのIPアドレス/にアクセスし、daloRADIUSのログイン画面が表示される事を確認する。

daloRADIUSログイン画面

画像では日本語化されているが、デフォルトは英語になっている。

デフォルトのパスワードはradius


その2に続く。