EVE-NG用にdaloradiusのノードを作成した


お友達に頼まれてここ数日、Free Radiusが使えるeve-ngノードを作っていました。 色々、ハマったので備忘録として残しておきます。



前提条件

今回は以下の環境にRadiusServerを構築します。

  • AlmaLinux-8.7-x86_64

Almaのisoイメージが必要なのでお手元にない場合は以下からダウンロードしてきます。

AlmaLinux ISOs links

別にalmaじゃなくてもisoが用意できればOKだと思います。個人的にAlmaを推してるだけですんで

  • EVE-NG 5.0.1-13-Community

こちらは要望があれば導入方法をご紹介しますが。(多分そんな記事はあふれてるはずです。)

ちなみにAlmaLinuxのバージョンが9以降のものは利用できないようなので要注意

カスタムイメージの公式作成手順

基本は以下にならって作成すれば問題ありません。

https://www.eve-ng.net/index.php/documentation/howtos/howto-create-own-linux-host-image/

がそれだけでは不親切なので一応説明します。

事前準備

ディレクトリ作成

EVE-NGのServerに接続して/opt/unetlab/addons/qemu/配下に移動します。

1root@eve-ngv1:/# cd /opt/unetlab/addons/qemu/
2root@eve-ngv1:/opt/unetlab/addons/qemu#

以下の命名規則に従ってPath名を決定します。

https://www.eve-ng.net/index.php/documentation/qemu-image-namings/

image.png (3.1 kB)

今回は適当にlinux-almalinux-8.7としています。 Pathを作成し確認します。

1root@eve-ngv1:/opt/unetlab/addons/qemu# mkdir linux-almalinux-8.7
2root@eve-ngv1:/opt/unetlab/addons/qemu#
3root@eve-ngv1:/opt/unetlab/addons/qemu# mkdir linux-almalinux-8.7
4root@eve-ngv1:/opt/unetlab/addons/qemu# ls
5fortinet-FGT-v7-build0237     linux-alpine-3.15.0_normal  vios-adventerprisek9-m.spa.159-3.m3
6linux-almalinux-8.7           nxosv9k-final.7.0.3.I7.9    viosl2-adventerprisek9-m.ssa.high_iron_20220917
7linux-alpine-3.15.0_nginx_v2  nxosv9k-nxosv9000
8root@eve-ngv1:/opt/unetlab/addons/qemu#

ISOファイルのアップロード

事前に用意してあるisoファイルをWinSCPなどでEVE-NGサーバーにアップロードします。 アップロード後、ファイルが存在することを確認します。

1root@eve-ngv1:/opt/unetlab/addons/qemu# cd linux-almalinux-8.7
2root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# ls
3AlmaLinux-8.7-x86_64-boot.iso
4root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#

ISOファイルのリネーム

公式サイトによるとisoファイルをイメージとして読み込む場合、指定されたファイル名である必要があるようです。 そのため以下のように変更します。

1root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# mv AlmaLinux-8.7-x86_64-boot.iso cdrom.iso
2root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# ls
3cdrom.iso
4root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#

qcow2イメージの作成

EVE-NG上で動作させる空のイメージを作成します。 ここでは必ずvirtioa.qcow2というファイル名でイメージを作成します。 10Gと指定していますが、10Gのファイルがいきなり生成されるわけではないのでご安心を。

1root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#
2root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# /opt/qemu/bin/qemu-img create -f qcow2 virtioa.qcow2 10G
3Formatting 'virtioa.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
4root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#
5root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
6root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#

あ、そうそう/opt/unetlab/wrappers/unl_wrapper -a fixpermissionsというコマンドも忘れずに発行します。

Labの作成

通常通りLabの作成に進むとlinux-almalinux-8.7が選択できるようになります。

image.png (19.1 kB)

mgmt0との接続

almaを色々と外部ネットワークと通信させる必要があるのでNetworkノードを行う必要があります。

そのためにCloud0と接続させます。 作成したネットワークとノードをつなぎノードを起動します。

image.png (18.0 kB)

AlmalinuxのInstall

よしなに進めます。

image.png (13.8 kB)

適当にすすめてくれるはず。

image.png (44.3 kB)

お友達に頼まれたので日本語にする。

image.png (97.2 kB)

警告の表示

  • 以下の警告が表示されている間はインストールができない
image.png (8.7 kB) image.png (127.5 kB)

Password設定

  • Rootのパスワードを設定する。
image.png (127.7 kB)

Rootpasswordadmin

→検証用なのでセキュリティーは度外視

インストール先の指定

  • インストール先を指定します。 image.png (124.4 kB)

  • 先ほど作成したディスクを指定します。 image.png (104.4 kB)

NW設定

  • ここではNW設定を行う
image.png (125.2 kB)
  • オフ→オンに切り替えることで有効化される。
image.png (58.4 kB)
  • アドレスはDHCPで自動的にもらえるはずです。
image.png (58.2 kB)
  • 設定完了後は警告マークが消えます。
image.png (126.1 kB)

※自動的にミラーサーバーも見つけてくれる

ソフトウェア設定

  • GUIは不要なので。。。サーバーを指定する。
image.png (150.2 kB)
  • インストールの開始
image.png (112.9 kB)
  • インストールが終わるまでコーヒーを飲みます。
image.png (47.9 kB)
  • インストール完了後はシステムの再起動を行います。
image.png (69.6 kB)
  • 再起動完了後以下のような見慣れた画面になることを確認する
image.png (21.1 kB)
  • NW的に到達性があれば、Teratermでも接続ができます。
image.png (85.2 kB)

いったんここでイメージをCommitしてしまうのもありです。 Commitの方法は別の方が載せているのを見たほうが良いかも。

そのほか、後は好きなようにパッケージをインストールしていきます。

1[root@localhost ~]# dnf install bash-completion

ISOファイルの削除

さてInstallに利用したISOファイルは削除します。

1root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# ls
2cdrom.iso  virtioa.qcow2
3root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# rm -f cdrom.iso
4root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#
5root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7# ls
6virtioa.qcow2
7root@eve-ngv1:/opt/unetlab/addons/qemu/linux-almalinux-8.7#

最低限必要なパッケージの設定追加

再度、最低限必要なパッケージの設定追加を進めていきます。

システムの更新

特にコメントはない。

1sudo dnf -y update

Apache Web ServerのInstall

1sudo dnf -y install @httpd @php
2sudo dnf -y install php-{cli,curl,mysqlnd,devel,gd,pear,mbstring,xml,pear}
3sudo pear install DB
4sudo pear install MDB2

完了したらPHPのバージョンを確認しておく。

1[root@localhost /]# php -v
2PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
3Copyright (c) 1997-2018 The PHP Group
4Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
5[root@localhost /]#

Apache および PHPを有効化してServiceも開始する

1sudo systemctl enable --now httpd php-fpm
 1[root@localhost /]# systemctl status httpd php-fpm
 2● httpd.service - The Apache HTTP Server
 3   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
 4  Drop-In: /usr/lib/systemd/system/httpd.service.d
 5           mqphp-fpm.conf
 6   Active: active (running) since Fri 2023-04-07 00:22:03 JST; 2min 33s ago
 7     Docs: man:httpd.service(8)
 8 Main PID: 28714 (httpd)
 9   Status: "Running, listening on: port 443, port 80"
10    Tasks: 213 (limit: 23631)
11   Memory: 32.1M
12   CGroup: /system.slice/httpd.service
13           tq28714 /usr/sbin/httpd -DFOREGROUND
14           tq28715 /usr/sbin/httpd -DFOREGROUND
15           tq28716 /usr/sbin/httpd -DFOREGROUND
16           tq28717 /usr/sbin/httpd -DFOREGROUND
17           mq28718 /usr/sbin/httpd -DFOREGROUND
18
19 4月 07 00:22:03 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
20 4月 07 00:22:03 localhost.localdomain httpd[28714]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localho>
21 4月 07 00:22:03 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
22 4月 07 00:22:03 localhost.localdomain httpd[28714]: Server configured, listening on: port 443, port 80
23
24● php-fpm.service - The PHP FastCGI Process Manager
25   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
26   Active: active (running) since Fri 2023-04-07 00:22:02 JST; 2min 33s ago
27 Main PID: 28700 (php-fpm)
28   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
29    Tasks: 6 (limit: 23631)
30   Memory: 21.2M
31   CGroup: /system.slice/php-fpm.service
32           tq28700 php-fpm: master process (/etc/php-fpm.conf)
33           tq28706 php-fpm: pool www
34           tq28707 php-fpm: pool www
35           tq28708 php-fpm: pool www
36           tq28709 php-fpm: pool www
37           mq28710 php-fpm: pool www
38
39 4月 07 00:22:02 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager...
40 4月 07 00:22:02 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
41
42[root@localhost /]#

MariaDBのInstallと有効化

1sudo dnf install mariadb-server -y
2sudo systemctl enable --now mariadb

SQLでよくあるセットアップ

mysqlで調べればやり方は出てきます。

 1#sudo mysql_secure_installation 
 2
 3Enter current password for root (enter for none): 
 4....
 5Set root password? [Y/n] ★ここで「Y」
 6New password:
 7Re-enter new password:
 8.....
 9Remove anonymous users? [Y/n] ★ここで「Y」
10.....
11Disallow root login remotely? [Y/n] ★ここで「Y」
12....
13Remove test database and access to it? [Y/n] ★ここで「Y」
14......
15Reload privilege tables now? [Y/n] ★ここで「Y」
16...
17Thanks for using MariaDB!

ここで作成したパスワードはMariaDBのログインでも使うので控えておく。 ここではadminにしている。

DB作成

1mysql -u root -p
 1[root@localhost /]# mysql -u root -p
 2Enter password:
 3Welcome to the MariaDB monitor.  Commands end with ; or \g.
 4Your MariaDB connection id is 18
 5Server version: 10.3.35-MariaDB MariaDB Server
 6
 7Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 8
 9Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
10
11MariaDB [(none)]>

以下を投入する。

1CREATE DATABASE radius;
2grant all privileges on radius.* to radius@localhost identified by 'radius@pass';
3FLUSH PRIVILEGES;
4\q

radius@passはまた使うので控えておく。

freeradius install

やっとfreeradiusのinstall FreeRADIUSはAlmaLinux 8のリポジトリに含まれているため、簡単にインストールできる。

パッケージの一覧表示

まずは利用可能な FreeRADIUS パッケージを一覧表示することから始めます。

1sudo dnf module list freeradius
  • 実行結果
1[root@localhost /]# sudo dnf module list freeradius
2メタデータの期限切れの最終確認: 0:40:28 時間前の 2023年04月06日 23時55分00秒 に実施しました。
3AlmaLinux 8 - AppStream
4Name                        Stream                  Profiles                   Summary
5freeradius                  3.0 [d]                 server [d]                 High-performance and highly configurable free RADIUS server
6
7ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
8[root@localhost /]#

FreeRADIUSのインストール

1sudo dnf install -y @freeradius freeradius-utils freeradius-mysql

サービスの有効化とステータス確認

1sudo systemctl enable --now radiusd.service
2systemctl status radiusd.service

Firewall設定

1sudo firewall-cmd --add-service=radius --permanent
2sudo firewall-cmd --add-service={http,https} --permanent
3sudo firewall-cmd --reload

Freeradiusデータベース設定変更

  • データベースのスキーマをインポート
1sudo su -
2mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql
  • シンボリックリンクの作成
1ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
  • SQLモジュールの変更
 1vi /etc/raddb/mods-available/sql
 2
 3##変更内容↓(あんまりよくないけど元のやつbkupとって全部書き換えた)
 4#ここから
 5sql {
 6dialect = "mysql"
 7driver = "rlm_sql_mysql"
 8
 9# Connection info:
10server = "localhost"
11port = 3306
12login = "radius"
13password = "radius@pass"
14
15# Database table configuration for everything except Oracle
16radius_db = "radius"
17}
18
19read_clients = yes
20client_table = "nas"
21#ここまで

さっきのPasswordはpassword = "radius@pass"で使っている。

権限の変更

1chgrp -h radiusd /etc/raddb/mods-enabled/sql

システムの再起動

1systemctl restart radiusd

daloRADIUSのinstall

daloRADIUSはFreeRADIUSを使いやすくするデータベースやUserを管理できるOSS。

ファイルのダウンロード

1wget https://github.com/lirantal/daloradius/archive/master.zip

解凍とディレクトリ移動

ダウンロードしたファイルの解凍とディレクトリ移動を行います。

1unzip master.zip
2mv daloradius-master/ daloradius

データベーススキーマのインポート

daloradiusのディレクトリに移動し、DBスキーマをインポートします。

1cd daloradius
2mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
3Enter password: ★パスワードが求めらることがある
4mysql -u root -p radius < contrib/db/mysql-daloradius.sql
5Enter password: ★パスワードが求めらることがある

ApacheWebディレクトリへの移動

daloradius配下のファイルを/var/www/html/に移動します。

1cd ..
2sudo mv daloradius /var/www/html/

daloRADIUSファイルの修正

公式や他の方が書いているにも記事もにも以下の記載が多いのですがフォルダの構成が一部変更となっています。

  • 以下だとうまくいかない
1sudo mv /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php
2sudo chown -R apache:apache /var/www/html/daloradius/
3sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

色々調べていたらこちらで出来た。

  • 正しいのはこちら
1sudo cp /var/www/html/daloradius/app/common/includes/daloradius.conf.php.sample /var/www/html/daloradius/app/common/includes/daloradius.conf.php
2sudo chown -R apache:apache /var/www/html/daloradius/
3sudo chmod 664 /var/www/html/daloradius/app/common/includes/daloradius.conf.php

SELinuxの設定

SELinuxの設定を修正する。 私はこれで完全にはまった。

1sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/daloradius(/.*)?"
2sudo restorecon -Rv /var/www/html/daloradius

phpファイルの修正

phpファイルは修正が必要なのでviとかで修正する。

1vi /var/www/html/daloradius/app/common/includes/daloradius.conf.php

パスワードが反映されていればOKなはず。

1-省略
2$configValues['CONFIG_DB_HOST'] = 'localhost';
3$configValues['CONFIG_DB_PORT'] = '3306';
4$configValues['CONFIG_DB_USER'] = 'radius';
5$configValues['CONFIG_DB_PASS'] = 'radius@pass';
6$configValues['CONFIG_DB_NAME'] = 'radius';
7-省略

サービスの再起動

1sudo systemctl restart radiusd.service httpd

GUIでの確認

URLの確認

サーバー上で表示させるには

1http://localhost/daloradius/app/operators/login.php

こちらのURLをたたけばよい。

サーバーへの到達性があれば以下でもよい。

1http://[サーバーのip address]/daloradius/app/operators/login.php

ログイン

image.png (68.6 kB)

Usernameはadministrator Passwordはradius

でログイン可能。

ログイン後

image.png (122.8 kB)

このようになったらOK

完成したイメージ

要望があればアップしようかな。。。

Reference

1:HOWTOS
http://pkolesni.blogspot.com/2018/02/how-to-enable-console-at-eve-ng.html

2:インフラボ
https://www.infrab.net/eve-ng-how-to-create-a-linux-custom-image-that-can-be-connected-with-a-serial-console-almalinux/

3:AlmaLinux 8を日本語化する
https://qiita.com/charon/items/e928b68a4254d69c61a3

4:Install FreeRADIUS and daloRADIUS on Rocky Linux 8|AlmaLinux 8
https://techviewleo.com/install-freeradius-and-daloradius-on-rocky-almalinux/

5:CentOS7 daloRADIUSのインストール
https://www.unix-power.net/networking/post-952

comments powered by Disqus