通常、制限されたネットワークにアクセスする前には、認証を受ける必要があリます。ユーザの資格情報(例えば、ユーザ名とパスワードなど)を元に、そのユーザを認証後、どこにアクセスできるのかを制限したり、いつ接続してきて、いつ切断したのかログを残すなどが必要になります。AAAの背景はこのような考え方にあります。
AAAの意味
AAAとは、Authentication(認証)、Authorization(承認)、Accounting(アカウンティング)の頭文字をとった略語です。
- 認証:ネットワークデバイスやシステムへのアクセスが許可される前に、認可されたユーザーかどうかを検証します。
- 許可:認証されたユーザーに適用されるアクセス権と制限(できること、できないこと)を定義します。
- アカウンティング:ユーザー、開始/終了時間、実行されたアクションなどをを追跡し、記録します。
これらを実現する最も有名なプロトコルはRADIUS(Remote Authentication Dial-In User Service)です。
RADIUS
主にネットワークアクセスの認証に使用されるAAAプロトコルです。RADIUSは、サーバ、クライアントモデルで機能します。
基本的な考え方
大きく登場人物は3つです。RADIUSサーバはいわゆる認証サーバで、ユーザはRADIUSクライアントへ接続し、ネットワークへのアクセスを要求します。
接続したいユーザは、何らかの手段で、RADIUSクライアントへ自身の資格情報(ユーザ情報や証明書など)を提供します。
すると、RADIUSクライアントは、その資格情報をRADIUSプロトコルにして、そのままRADIUSサーバへ転送します。
RADIUSサーバでは、資格情報を元に、認証を行い、その結果をRADIUSクライアントへ返答することで、ユーザはRADIUSクライアント経由での、ネットワークアクセスが許可、もしくは不許可となります。
ユーザとRADIUSクライアント間が何らかの手段でというのは、どういうことでしょうか。つまり、ここはRADIUSプロトコルではないということです。ユーザはネットワークへの接続前ですので、IPアドレスを持っていない場合もあります。そのため、レイヤ2で動作し、かつ、資格情報を提供できるような別のプロトコルを使用する必要があります。例えば、IEEE802.1Xのネットワーク認証であれば、EAPがこのプロトコルに当たります。(また、どこかの機会で記事にしたいと思います)
RADIUS通信
基本的には、認証と認可として、UDPプロトコルポート1812、およびアカウンティングとしてポート1813を使用します。
認証、認可
まず、RADIUSクライアントは、ACCESS-REQUESTとしてユーザから受け取った資格情報(例えば、ユーザ名とパスワードなど)をRADIUSサーバへ送信します。
認証がOKであれは、RADIUSサーバはRADIUSクライアントへACCESS-ACCEPTを送信します。(このメッセージには属性(アトリビュート)を含めることができます。例えば、このユーザにRADIUSクライアントが割り当てるべきVLAN番号などが通知できます)
もし、認証拒否されたら、ACCESS-REJECTが送信されます。
アカウンティング
アカウンティング情報の交換は2つのメッセージで構成されています。ACCOUNTING-REQUEST と ACCOUNTING-RESPONSE です。
例えば、ユーザーがネットワークに接続している時間(開始と停止)を記録するために使用します。
コメント