著者:田中麻維
大手電機メーカー系のSierに入社後、インフラエンジニアとしてLinuxサーバーの構築や保守・運用、ソフトウェアの開発業務を経験。アイティベル入社後は、IT領域の執筆などを行う。
RADIUS認証はネットワークアクセス時に用いられる認証方式です。自社のネットワークにアクセスするユーザーやデバイスが正規のものであることを認証します。
RADIUS認証の特徴は、ユーザー(デバイス)とRADIUSサーバーの間にRADIUSクライアントが存在し、認証を仲介する点です。それぞれどのように設定するのかを理解しておきましょう。
本記事では、RADIUS認証の仕組みと認証プロトコル、設定項目、トラブルシューティングの方法を解説します。
1. RADIUS認証とは
RADIUS(Remote Authentication Dial In User Service)はネットワーク接続時に用いられる認証の仕組みです。RADIUSを使用することで、悪意のある第三者が無断で社内ネットワークにアクセスすることを防げます。
RADIUSは、AAAサービスにもとづき、「Authentication(認証)」「Authorization(認可)」「Accounting(課金)」の機能を提供します。
なお、RADIUS認証については以下の記事で解説していますので、参考にしてください。
2. RADIUSの仕組み
RADIUS認証の仕組みを知るためには、RADIUS認証の機能と、ユーザー(デバイス)、RADIUSクライアント、RADIUSサーバーの役割を理解することが非常に重要です。本章では、RADIUS認証の機能と認証の流れを解説します。
RADIUS認証の機能
RADIUS認証は以下の3者間で通信を行います。
- ユーザー(デバイス):認証要求をする
- RADIUSクライアント:認証要求を受け付けてRADIUSサーバーとのやり取りを行う
- RADIUSサーバー:認証を行う
これらの3者が連携することで、ネットワークにアクセスするための認証(Authentication)、認可(Authorization)、課金(Accounting)の各機能が提供されます。
Authentication(認証)
Authentication は、ユーザーやデバイスが正当なものであるかを確認する機能です。RADIUSサーバーに登録されているユーザー情報やディレクトリサービスの情報にもとづいて、ユーザー認証を行います。
通常のRADIUS認証では、RADIUSクライアントが「Access-Request」を送信し、RADIUSサーバーで認証後に認証が成功すると「Access-Accept」、失敗すると「Access-Reject」が返されます。
Authorization(認可)
Authorizationは、認証されたユーザーがリソースにアクセスすることを許可する機能です。VLANやSSIDごとに設定が可能で、サーバーで定義したポリシーやルールに従ってアクセスを制御します。
たとえば、WindowsのNPS(ネットワークポリシーサービス)を利用する場合、アカウントやグループごとにアクセス許可を設定し、接続の可否を決定できます。また、アクセス元のサーバーやネットワーク機器(特定のIPアドレスやMACアドレスなど)にもとづいたアクセス制御も可能です。
Accounting(課金)
Accounting は、RADIUSサーバーでユーザーの認証に関するログを取得する機能です。下記のような情報が取得できます。
- 認証日時
- ユーザーID
- 認証の成功または失敗
RADIUS認証後の「Accounting-Request」が送信され、そのあとに「Accounting-Response」を返すことによって、RADIUSクライアントに対してログの記録開始と完了が通知されます。RADIUSサーバーの設定でAccounting機能を有効・無効に設定することも可能です。
RADIUS認証の流れ
RADIUS認証の各ステップでは、以下の処理を行います。
1.ユーザー(デバイス)からRADIUSクライアントに対して接続を要求
ユーザー(デバイス)からRADIUSクライアントへ認証を要求します。ユーザー(デバイス)から送信された認証要求は、RADIUSクライアントによって受信されます。
2.RADIUSクライアントからユーザー(デバイス)に対して認証情報を要求
RADIUSクライアントは、ユーザー(デバイス)に対して認証に必要な情報を要求します。このとき、双方で通信を行うための認証プロトコルを選択します。
3.ユーザー(デバイス)が認証情報を提示
ユーザー(デバイス)は、RADIUSクライアントへ「Authentication-Request」を送信し、認証に必要な情報を提示します。送信する情報は、ユーザーIDとパスワードです。
4.RADIUSクライアントからRADIUSサーバーに認証情報を提示
RADIUSクライアントからRADIUSサーバーに対して「Access-Request」を送信し、認証情報を提示します。
また、追加で情報が必要な場合は、RADIUSサーバーから「Access-Challenge」を発行し、追加情報を要求します。この場合は、RADIUSクライアントからRADIUSサーバーへ、追加情報が含まれた「Access-Request」の再送信が必要です。
5.RADIUSサーバーが認証実施
RADIUSクライアントから受信した認証情報にもとづき認証を行います。
6.認証結果の通知
RADIUSサーバーからRADIUSクライアントへ「Access-Accept」を送信し、認証結果を通知します。認証が失敗した場合は「Access-Reject」を送信します。
7.RADIUSクライアントからユーザー(デバイス)に認証結果を通知
「Authentication-Ack」を送信し、RADIUSクライアントからユーザーへ認証結果を通知します。通知後、IPアドレスをはじめとする情報をユーザーとRADIUSクライアント間で交換します。
8.RADIUSクライアントからRADIUSサーバーへ利用開始を通知
「Accounting-Request」を送信し、RADIUSサーバーへログの記録を要求します。
9.RADIUSサーバーからRADIUSクライアントへ利用ログの記録開始を通知
RADIUSサーバーから「Accounting-Response」を送信し、ログの記録を開始します。
10.通信開始
認証されたユーザー(デバイス)がネットワークに接続し通信を行います。
ユーザーが接続を終了する際には、RADIUSクライアントから「Accounting-Request」の発行が必要です。この通知にもとづきRADIUSサーバーは「Accounting-Response」を発行し、ログの記録を終了します。
3. RADIUS認証のプロトコル
RADIUS認証で使用される認証プロトコルは、以下のとおりです。
- PAP
- CHAP
- MS-CHAPv2
- EAP
以前は、PAP(Password Authentication Protocol)、CHAP(Challenge Handshake Authentication Protocol)が使用されていました。しかし、脆弱性が多いため、現在ではMS-CHAPv2やEAP(Extensible Authentication Protocol)が広く普及しています。
なお、EAPはさらに複数の認証方式に分かれます。その中でも、EAP-TLS、EAP-TTLS、PEAP、EAP-MSCHAPv2がよく使用されています。
4. RADIUSの設定項目
RADIUSを使用する際には、ユーザー(デバイス)、RADIUSサーバー、RADIUSクライアントのそれぞれに設定が必要です。具体的な設定項目は、IPアドレス、認証ポート、共有シークレット、認証プロトコルなどです。
本章では、それぞれの設定項目を解説します。
ユーザー(デバイス)の設定
ユーザー(デバイス)に設定する項目は、以下のとおりです。
- RADIUSサーバーのIPアドレス
- 認証プロトコル
- 証明書(EAPの場合)
ユーザー(デバイス)には、RADIUSクライアントとの通信で使用する認証プロトコルを設定します。EAPを設定する場合は、使用するサーバー証明書やクライアント証明書の設定も合わせて行います。
RADIUSクライアントの設定
RADIUSクライアントに設定する項目は、以下のとおりです。
- RADIUSサーバーのIPアドレス
- 認証ポート
- 共有シークレット
- 認証プロトコル
- 認証の試行時間、試行回数
RADIUSクライアントには、RADIUSサーバーとの接続情報(IPアドレス、認証ポート、共有シークレット)と、ユーザー(デバイス)との通信で使用する認証プロトコルの設定を行います。
共有シークレットは、RADIUSクライアント、RADIUSサーバー間のパスフレーズの役割を果たします。RADIUSサーバーのIPアドレス、認証ポート、共有シークレットを正しく設定しないとRADIUSサーバーとの接続ができなくなるため、特に注意しなければなりません。
認証ポートは、デフォルトではUDPポート1812番を設定します。なお、RADIUSサーバー側で任意のポートを設定することも可能です。その場合は、RADIUSサーバー側で設定したポートに合わせましょう。
RADIUSサーバーの設定
RADIUSサーバーに必要な設定項目は、以下のとおりです。
- RADIUSサーバー構成情報
- RADIUSクライアント情報
- ユーザー情報
- 認証プロトコル
サーバーのIPアドレスやホスト名、ポート番号、ログ設定などRADIUSサーバーの構成情報以外に、RADIUSクライアントと接続するための情報(IPアドレス、共有シークレット)を登録します。このほか、ユーザー情報(ID、パスワード)の登録も必要です。
5. RADIUSのトラブルシューティング
RADIUS認証を利用した際に、トラブルが発生することもあるでしょう。問題を解決する際には、以下のステップをひとつずつ確認します。
ステップ1. ログメッセージの確認
ステップ2. 疎通確認
ステップ3. 設定確認
ステップ4. パケットキャプチャ
ステップ5. キャプチャ結果に応じて対応
それぞれのステップを解説します。
ステップ1. ログメッセージの確認
RADIUS認証で問題が発生した際には、まずログやエラーメッセージを確認します。ログやエラーメッセージから原因を特定できる可能性があるためです。
ログの出力内容やエラーメッセージはRADIUSサーバー、RADIUSクライアントの製品によって異なります。製品サポートに問い合わせのうえ、エラーメッセージの内容をもとに、適切に対処しましょう。
ステップ2. 疎通確認
次は、ユーザー(デバイス)、RADIUSクライアント、RADIUSサーバー間の疎通確認を実施します。はじめにpingコマンドで疎通確認を行い、ネットワーク経路上に問題がないか、あるいは機器に異常がないか確認しましょう。
製品によってはテストツールを備えているため、RADIUSクライアント、RADIUSサーバー双方に設定不備がないか確認することも可能です。
経路上に問題があるケースでは、機器やルーティングに問題が発生している可能性が考えられます。ひとつずつ異常がないか確認してみましょう。
ステップ3. 設定確認
ログチェックと疎通確認で問題が解決できない場合は、ユーザー(デバイス)、RADIUSクライアント、RADIUSサーバーの設定を確認します。
主な確認項目は以下のとおりです。
- RADIUSサーバーのIPアドレス(ホスト名)
- RADIUSクライアントのIPアドレス(ホスト名)
- 共有シークレット
- 認証プロトコル
- ルート証明書、サーバー証明書の設定
なお、上記のチェック項目は一例にすぎません。エラーログに照らし合わせて、設定値を確認することが重要です。
ステップ4. パケットキャプチャ
設定を確認しても原因が特定できない場合は、パケットキャプチャで通信内容を解析します。パケットキャプチャを行うことで適切でない設定を特定できたり、未知の現象を発見できたりすることもあるためです。
たとえば、以下の原因を特定できます。
- EAP通信の問題(EAP設定時)
- 証明書の有効期限切れ
- VLANタグの設定誤り(VLAN設定時)
- SSIDの誤り(Wi-Fi使用時)
通信内容の解析には専門的な知識を有する必要があるため、難しい場合にはサポートに依頼するとよいでしょう。
ステップ5. キャプチャ結果に応じて対応
キャプチャ結果に応じてユーザー(デバイス)、RADIUSクライアント、RADIUSサーバーの問題を解決します。
まとめ
RADIUS認証は、ユーザー(デバイス)、RADIUSクライアント、RADIUSサーバーで行われるネットワーク接続時の認証の仕組みです。かつては、PAPやCHAPといった認証プロトコルが使用されてきましたが、現在ではPEAP、EAP-TLSをはじめとするEAPを使用します。ユーザー(デバイス)、RADIUSクライアント、RADIUSサーバーのそれぞれに適切な設定を施し、問題が発生した際にはステップを踏んで解決することが重要です。