Hyper-Vを利用したサーバ検証環境の構築 その6 RADIUSの再構築
1. 前書き
前回の続きです。
RADIUSをAzureADと連携させるためにfreeradius-oauth2-perlを使うつもりでした。前回記載した構築手順が誤っていたようなので、再構築します。前回のサーバは破棄し、新たに作り直します。
2. Ubuntuの準備(手順省略)
利用しているバージョンは22.04です。
3. FreeRADIUSのインストール
FreeRADIUS 3.2を利用することにしました。freeradius-oauth2-perlとnetworkradiusの手順に従って作業します。
gitからfreeradius-oauth2-perlをcloneします。 場所は/opt
配下です。ほかの場所だとソースコードを変更することになります。注意してください。
# gitにproxyを設定 user@freeradius:~$ git config --global http.proxy http://10.24.1.10:8080 # gitからfreeradius-oauth2-perlをクローン user@freeradius:~$ cd /opt user@freeradius:/opt$ git clone https://github.com/jimdigriz/freeradius-oauth2-perl.git user@freeradius:/opt$ cd freeradius-oauth2-perl user@freeradius:/opt/freeradius-oauth2-perl$
freeradius-oauth2-perlを準備します。
user@freeradius:~$ sudo apt-get -y install --no-install-recommends ca-certificates curl libjson-pp-perl libwww-perl
NetworkRADIUS PGP 公開キーを追加します。
Proxy経由でcurlするため、-x
オプションを追加しています。
user@freeradius:~$ curl -s 'https://packages.networkradius.com/pgp/packages%40networkradius.com' -x http://10.24.1.10:8080 | \ sudo tee /etc/apt/keyrings/packages.networkradius.com.asc > /dev/null
すべての freeradius パッケージが Network RADIUS リポジトリからインストールされるようにします。
user@freeradius:~$ printf 'Package: /freeradius/\nPin: origin "packages.networkradius.com"\nPin-Priority: 999\n' | \ sudo tee /etc/apt/preferences.d/networkradius > /dev/null
APT ソース リストを追加します。
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.networkradius.com.asc] http://packages.networkradius.com/freeradius-3.2/ubuntu/jammy jammy main" | \ sudo tee /etc/apt/sources.list.d/networkradius.list > /dev/null
最後に、APT データベースを更新し、パッケージをインストールします。
sudo apt-get update sudo apt-get install freeradius
正常にインストールされたか確認します。
user@freeradius:~$ dpkg-query --showformat '${Maintainer}\n' -W freeradius Network RADIUS SARL <info@networkradius.com>
出力に「Network RADIUS SARL」と表示されていることを確認します。前回のインストール方法だと「Ubuntu」と表示されてしまいました。
4. OAuth2の為の、アプリの登録(AzureAD)
このページを参考に、AzureADでアプリの登録をします。なおAzureADそのものの作成はここでは省略します。
この登録でメモが必要な値は以下の2つです。
- アプリケーション(クライアント)ID
クライアントシークレットの値
クライアントシークレットの値は、作成時以降は非表示になってしまうので注意してください。AzureActiveDirectoryの画面に遷移し、「追加」→「アプリの登録」を選択します。
- 名前に[freeradius-oauth2-perl]を入力、この組織ディレクトリのみに含まれるアカウント (既定のディレクトリ のみ - シングル テナント)、リダイレクトURIは空白で登録します。
- 「証明書とシークレット」に移動し、「新しいクライアント シークレット」をクリックします。
この「値」は 今後の設定で使いますが、この画面を抜けたら見れなくなるので、必ずメモしてください。
- APIアクセス許可を追加します。
- 「Microsoft Graph」をクリックし、「Directory.Read.All」を有効にします。
- 「規定のディレクトリに管理者の同意を与えます」をクリックして「はい」を押します。
以上でAzureADの準備は終わりです。
5. FreeRADIUSのConfig設定
oauth2.0認証を有効にするための手順です。編集するのは以下2つのファイルです。
/etc/freeradius/proxy.conf
/etc/freeradius/sites-enabled/default
proxy.confを編集する
proxy.confには凡例でrealm example.com
の記載がありますので、それより前に以下を記載します。
%{Realm}
はそのままでexample.onmicrosoft.com
を読み込みます。
realm example.onmicrosoft.com { oauth2 { discovery = "https://login.microsoftonline.com/%{Realm}/v2.0" client_id = "4. でメモしたアプリケーション(クライアント)ID" client_secret = "4. でメモしたクライアントシークレットの値" cache_password = yes } }
※discoveryのURLはどうやらhttps://login.microsoftonline.com/%{Realm}/v2.0/.well-known/openid-configuration
を取ってくるようです。
defaultを編集する
authorize
では、-ldap
の後、コメント化された#daily
の前にOAuth2
を追加する必要があります。authenticate
では、一番最後にAuth-Type oauth2{oauth2}
を追加します。post-auth
では、コメント化された#ldap
の後、そしてexec
の前にoauth2
を追加する必要があります。
authorize { ... -ldap oauth2 #if (updated) { # # # uncomment to enforce the group membership 'network-users' # if (!(&OAuth2-Group && &OAuth2-Group[*] == "network-users")) { # reject # } # # # uncomment to use group membership for VLAN assignment # update { # Tunnel-Type := VLAN # Tunnel-Medium-Type := IEEE-802 # Tunnel-Private-Group-ID := 11 # } # if (&OAuth2-Group) { # if (&OAuth2-Group[*] == "staff") { # update { # Tunnel-Private-Group-ID := 13 # } # } elsif (&OAuth2-Group[*] == "students") { # update { # Tunnel-Private-Group-ID := 15 # } # } else { # update { # Tunnel-Private-Group-ID := 17 # } # } # } # #} #daily ... } ... authenticate { ... # Auth-Type eap { # ... # } Auth-Type oauth2 { oauth2 } } post-auth { ... #ldap oauth2 exec ... }
FreeRADIUSの再起動と接続テスト
systemctl restart freeradius
でサービス再起動する。
以下コマンドで接続テストを実施。
radtest radius@example.onmicrosoft.com password 10.24.2.10 1813 testing123
Received Access-Accept
すれば成功です。
6. 書ききれなかったこと
いくつかありますので、次回記載します。