Ubuntu Server 22.04にFreeRadiusをインストール

コンピューター

物理サーバーの上に置いたUbuntu Server 22.04のゲストOSに、FreeRadiusをインスト―ルします。

Install FreeRADIUS & daloRADIUS on Ubuntu 22.04 or 20.04 + MySQL/MariaDB - ByteXD
FreeRADIUS is a free and open-source implementation of the RADIUS protocol. It’s the most popular and widely deployed open-source RADIUS server, being also

こちらのページを参考にしますが、ファイアウォール(ufw)はOpenSSHなどもあるので後回しで設定していきます。

LAMPスタックインストール

ベツページ

UFWは後回し。

MariaDBのrootパスワードはとりあえず設定。「2d7nBPuXGnDF」に。

FreeRadiusインストール

sudo apt -y install freeradius freeradius-mysql freeradius-utils

インストールして、デバッグモードでの起動(いったんサービスを停止して、オプション「-X」で起動)をしてみたらエラーが出ています。

Failed binding to auth address 127.0.0.1 port 18120 bound to server inner-tunnel: Address already in use
/etc/freeradius/3.0/sites-enabled/inner-tunnel[33]: Error binding to port for 127.0.0.1 port 18120

サービスを停止してもプロセスが動いているからという話があったのですが、私の環境では止まっているのかプロセスは表示されませんでした。

Failed binding to auth address 127.0.0.1 port 18120 bound to server inner-tunnel: Address already in use
I have configure freeradius following this tutorial. But when I run a command "freeradius -X" I got the following error radiusd: Opening IP address...
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:6010          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      -
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN      -
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN      -
tcp6       0      0 ip6-localhost:6010      [::]:*                  LISTEN      -
tcp6       0      0 [::]:http               [::]:*                  LISTEN      -
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      -
udp        0      0 localhost:18120         0.0.0.0:*                           -
udp        0      0 0.0.0.0:radius          0.0.0.0:*                           -
udp        0      0 0.0.0.0:radius-acct     0.0.0.0:*                           -
udp        0      0 localhost:domain        0.0.0.0:*                           -
udp        0      0 tek2tech-ubuntu:bootpc  0.0.0.0:*                           -
udp        0      0 0.0.0.0:53590           0.0.0.0:*                           -
udp6       0      0 [::]:radius             [::]:*                              -
udp6       0      0 [::]:radius-acct        [::]:*                              -
udp6       0      0 [::]:35295              [::]:*                              -
udp6       0      0 tek2tech-:dhcpv6-client [::]:*                              -

と思ったのですが、Apacheは動いているのでsudoをつけてやり直したら表示されました。再起動するだけでも大丈夫のようです。

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:6010          0.0.0.0:*               LISTEN      1054/sshd: [email protected]
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      709/sshd: /usr/sbin
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN      9374/mariadbd
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN      644/systemd-resolve
tcp6       0      0 ip6-localhost:6010      [::]:*                  LISTEN      1054/sshd: [email protected]
tcp6       0      0 [::]:http               [::]:*                  LISTEN      18381/apache2
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      709/sshd: /usr/sbin
udp        0      0 localhost:18120         0.0.0.0:*                           24982/freeradius
udp        0      0 0.0.0.0:radius          0.0.0.0:*                           24982/freeradius
udp        0      0 0.0.0.0:radius-acct     0.0.0.0:*                           24982/freeradius
udp        0      0 localhost:domain        0.0.0.0:*                           644/systemd-resolve
udp        0      0 tek2tech-ubuntu:bootpc  0.0.0.0:*                           642/systemd-network
udp        0      0 0.0.0.0:53590           0.0.0.0:*                           24982/freeradius
udp6       0      0 [::]:radius             [::]:*                              24982/freeradius
udp6       0      0 [::]:radius-acct        [::]:*                              24982/freeradius
udp6       0      0 [::]:35295              [::]:*                              24982/freeradius
udp6       0      0 tek2tech-:dhcpv6-client [::]:*                              642/systemd-network

「sudo kill 24982(freeradiusのプロセスID)」で再度デバッグを起動したところ、動作確認できました。

Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on proxy address * port 45642
Listening on proxy address :: port 49754
Ready to process requests

「sudo systemctl enable –now freeradius」でサービス起動登録して終了です。

ファイアウォール登録

sudo ufw app list

をしてみましたが、ApacheとかOpenSSHと違って簡単に設定できるリストはないようですので、ApacheとOpenSSHと合わせて許可を出します。

sudo ufw allow in "Apache"
sudo ufw allow in "OpenSSH"
sudo ufw allow to any port 1812 proto udp
sudo ufw allow to any port 1813 proto udp
sudo ufw enable

FreeRadiusのデータベース作成

ここから先は、一部フロントエンドのdaloRADIUS用の設定も混ざってきます。

CREATE DATABASE radius;
CREATE USER 'radius'@'localhost' IDENTIFIED by 'Somestrongpassword_321';
GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost';
FLUSH PRIVILEGES;
quit;

WordPressのデータベース作成の手順とだいたい同じですね。(参考ページと同じユーザー名、パスワードにしています。)

スーパーユーザーで、設定をデータベースに流します。

sudo su -
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
sudo su - (ユーザー名)

途中で聞かれるパスワードは、データベースのrootユーザーパスワードです。

$sudo mysql -e "use radius;show tables;"

+------------------+
| Tables_in_radius |
+------------------+
| nas              |
| radacct          |
| radcheck         |
| radgroupcheck    |
| radgroupreply    |
| radpostauth      |
| radreply         |
| radusergroup     |
+------------------+

Free RadiusでMySQL使用する設定

次に、FreeRadiusからSQLへアクセスするように変更します。

sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/

「sudo nano /etc/freeradius/3.0/mods-enabled/sql」で、

dialect = “sqlite” → dialect = “sqlite”

driver = “rlm_sql_null” → driver = “rlm_sql_${dialect}”

を設定すると、MySQL(or MariaDB)でアクセスできるようになります。

その他の設定

他に、SSL認証を行う設定の部分はテスト用サーバーなのでOFFにしたり、ちょこちょこと前述サイトの通りいじります。

最後に、設定ファイルのパーミッションを変更するため、所有者変更を行います。

#ファイルのグループとユーザーを変更
sudo chgrp -h freerad /etc/freeradius/3.0/mods-available/sql
sudo chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql

#再起動
sudo systemctl restart freeradius.service

daloRADIUSをインストール

FreeRadiusのウェブベースのフロントエンド、daloRADIUSをインストールします。LAMPスタックにしているのはdaloRADIUS用です。zipファイルをダウンロードしてきてユーザーのホームディレクトリに展開し、/var/www/html下へインストールという流れです。

  1. 作者のGithubからダウンロード
  2. 解凍してサーバーにアップロード
  3. コマンド
cd ~
cd daloradius-master
sudo mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
sudo mysql -u root -p radius < contrib/db/mysql-daloradius.sql
cd ..
sudo mv daloradius-master /var/www/html/daloradius
sudo chown -R www-data:www-data /var/www/html/daloradius/
sudo cp /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php
sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php
sudo nano /var/www/html/daloradius/library/daloradius.conf.php

テキストエディタでデータベースユーザーのパスワードを更新します。

sudo systemctl restart freeradius.service apache2

 

コメント

タイトルとURLをコピーしました