【Radius】グローバル経由でRadius認証の検証(radtest)を行ってみた


こんにちは、システム開発部のナガタニです。
今回は、radtest コマンドを使用したグローバル経由でのRadius認証の検証を行う手順について紹介します。

正直やり方自体は特に捻りもなく割と簡単にできるのですが、ネットで調べると基本的にローカル内での検証のやり方しか出てこず...

また、Radius認証ってローカル内で完結するってことはまずありえないし、実際の運用に近い形で検証を行いたかったっていうのもあったので、今回紹介しようと思いました。

用意するもの

  1. FreeRadiusがインストールされたローカルサーバ
  2. FreeRadius, DaloRadius がインストールされたAWSサーバ

1 はradtestコマンドを使えるようにするためだけのサーバーです。
radtestコマンドを使用するには、FreeRadiusをインストールしておく必要があります。

2 は 1 で構築したローカルサーバーからグローバル経由で検証を行うためのRadiusサーバーです。
Radiusアカウントを作成したいので、アカウント管理ができるDaloRadiusをインストールしておきましょう。

今回はAWSでサーバーを構築しておりますが、ほかのプラットフォームでもできますので、自分の好きなものを使用してください。基本的にやり方は同じです。

イメージ的には 1 がRadiusクライアントで 2 がRadiusサーバといった感じになります。

FreeRadiusがインストールされたローカルサーバの構築

構築手順についてはこちらのサイトで分かりやすく書かれていますので、参考にしてください。
また、今回はradtestコマンドを使えるようにするのが目的なので、clientやuserの設定は必要ありません。

FreeRadius, DaloRadius がインストールされたAWSサーバの構築

AWSでEC2インスタンスを立ち上げて、FreeRadiusとDaloRadiusをインストールしておきます。
DaloRadiusのインストール方法はこちらのサイトで分かりやすく書かれていますので、参考にしてください。

RADIUSアカウントを登録する

上記で構築したAWSサーバにRadius認証の検証を行うためのRadiusアカウントを作成します。

DaloRadius 管理画面にログインする

インストールしたDaloRadiusにアクセスしてログインします。

特に弄ってなければ、Username:administrator, Password:radius でログインできます。

アカウントを作成する

1. Management ⇒ New User の順に選択する



2. Username Authentication に Username と password を入力して Apply をクリックする

これでアカウントが作成できました。今回はtestuser, testpassword で作成しています。
また、作成したアカウントは List Users で確認できます。



グローバルIPからの認証を許可するためClientの設定を変更する

今回はグローバルのクライアントから認証を行うため、clients.conf に以下の設定を追記します。

client all {
  ipaddr = 0.0.0.0/0
  secret = testing123
}

0.0.0.0/0 ですべてのIPからの認証を許可しております。
secret キーは今回は testing123 にしておきましょう。
これでRadiusを再起動すれば完了です。

ローカルサーバーからAWSサーバーにRadius認証を行う

これで準備が整いましたので、実際にローカルからAWSサーバに対してRadius認証を行いましょう。
ローカルサーバで以下のradtestコマンドを実行します。

$ radtest testuser testpassword {AWSサーバのIP} 1812 testing123

構成で言うと、

radtest {ユーザ名} {パスワード} {AWSサーバのIP} 1812 {secretキー}

といった形になります。

成功すると、以下のようにAccess-Acceptが返ってきます。

Sent Access-Request Id 43 from 0.0.0.0:48774 to {AWSサーバのIP}:1812 length 78
        User-Name = "testuser"
        User-Password = "testpassword"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "testpassword"

これで、グローバル経由でのRadius認証に成功しました。

Radius認証に失敗する場合

上記のradtestを実行してもレスポンスがなく以下のようにタイムアウトする場合は

(0) No reply from server for ID 43 socket 3

AWSサーバ側の1812ポートにアクセス制限がかかっている可能性があります。

インバウンドルールを編集して1812ポートのUDPを追加しましょう。

まとめ

いかがでしたでしょうか。
まあ、普通にローカルで行っているやり方と基本的に変わりはないので、そんなに難しくなかったと思います。
ただ、意外とこのやり方が載っていなかったので今回は紹介させていただきました。

少しでも参考になれば幸いでございます。

では、以上となります。
ありがとうございました!


この記事をかいた人

About the author

長谷竜弥

入社4年目です。
システム部に所属しています。
ずっと大阪で勤務していましたが、2019年の11月から横浜開発室に異動になりました。
趣味は野球で休日は草野球をしていましたが、横浜に来てからはできておらず悶々と日々を過ごしております。