お友達に頼まれてここ数日、Free Radiusが使えるeve-ngノードを作っていました。 色々、ハマったので備忘録として残しておきます。
EVE-NG用にdaloradiusのノードを作成した
Contents
前提条件
今回は以下の環境にRadiusServerを構築します。
- AlmaLinux-8.7-x86_64
Almaのisoイメージが必要なのでお手元にない場合は以下からダウンロードしてきます。
別に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/
今回は適当に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
が選択できるようになります。
mgmt0との接続
almaを色々と外部ネットワークと通信させる必要があるのでNetworkノードを行う必要があります。
そのためにCloud0
と接続させます。
作成したネットワークとノードをつなぎノードを起動します。
AlmalinuxのInstall
よしなに進めます。
適当にすすめてくれるはず。
お友達に頼まれたので日本語にする。
警告の表示
- 以下の警告が表示されている間はインストールができない
Password設定
- Rootのパスワードを設定する。
Rootpassword
はadmin
→検証用なのでセキュリティーは度外視
インストール先の指定
-
インストール先を指定します。
-
先ほど作成したディスクを指定します。
NW設定
- ここではNW設定を行う
- オフ→オンに切り替えることで有効化される。
- アドレスはDHCPで自動的にもらえるはずです。
- 設定完了後は警告マークが消えます。
※自動的にミラーサーバーも見つけてくれる
ソフトウェア設定
- GUIは不要なので。。。サーバーを指定する。
- インストールの開始
- インストールが終わるまでコーヒーを飲みます。
- インストール完了後はシステムの再起動を行います。
- 再起動完了後以下のような見慣れた画面になることを確認する
- NW的に到達性があれば、Teratermでも接続ができます。
いったんここでイメージを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
ログイン
Usernameはadministrator
Passwordはradius
でログイン可能。
ログイン後
このようになったらOK
完成したイメージ
要望があればアップしようかな。。。
Reference
1:HOWTOS
http://pkolesni.blogspot.com/2018/02/how-to-enable-console-at-eve-ng.html
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