PPP認証方式としてEAP (Extensible Authentication Protoco)を使用する方法についてまとめます。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# username <username> password <password> Router(config)# Router(config)# interface <interface> Router(config-if)# ppp authentication eap Router(config-if)# ppp eap local Router(config-if)# ppp eap identity <username> Router(config-if)# ppp eap password <password>
構成図
以下の構成で動作確認を行います。
s0/0 s0/0 +--------+ +--------+ | R1 +----------+ R2 | +--------+ +--------+ 172.16.1.1/24 172.16.2.2/24
[R1] interface Serial0/0 ip address 172.16.1.1 255.255.255.0 encapsulation ppp [R2] interface Serial0/0 ip address 172.16.2.2 255.255.255.0 encapsulation ppp
設定全文は下記ファイルです。詳細設定は下記を参照ください。
仕様説明
概要
EAPはExtensible Authentication Protocolの略で、Layer 2接続(PPP, IEEE 802など)に対する認証フレームワークです。一般的にはRADIUSサーバを用いてクライアント証明書を管理し、高度な認証を実装します。
今回は充分な検証環境が準備できなかったため、ローカルデータベースを用いた認証の動作確認を行います。
設定方法
以下のコマンドをサーバ(認証する側)に投入し、EAPによる認証を要求します。
Router(config)# interface <interface> Router(config-if)# ppp authentication eap
以下のコマンドをクライアント(認証される側)に投入し、認証される側のEAPのユーザ名(Identity)とパスワードを設定します。ユーザ名を省略した場合はホスト名がユーザ名として使用されます。
Router(config)# interface <interface> Router(config-if)# ppp eap identity <username> Router(config-if)# ppp eap password <password>
以下のコマンドをサーバ(認証する側)に投入し、ローカルデータベースに基づく認証を行います。なお、デフォルトではローカルデータベースに基づく認証は無効化されています。ローカルデータベースに基づく認証を許可する場合は”ppp eap local”を投入して下さい。
Router(config)# username <username> password <password> Router(config)# Router(config)# interface <interface> Router(config-if)# ppp eap local
認証シーケンス
サーバからクライアントにEAP Request Idenityを送信します。この時のパケットは以下のとおりです。CHAPと異なりユーザ名が含まれていない事に注意して下さい。すなわち、クライアント側はユーザ名を特定できないので、CHAPと異なり”username xxx password xxx”コマンドによるパスワード指定はできません。
Point-to-Point Protocol Extensible Authentication Protocol Code: Request (1) Id: 120 Length: 5 Type: Identity [RFC3748] (1)
クライアントはサーバにEAP Response Identityを送信し、自身のユーザ名(Identity)を返します。ユーザ名は”ppp eap identity”コマンドで指定された値です。”ppp eap identity”コマンドが省略されている場合は、ホスト名がユーザ名として使用されます。この時のパケットは以下の通りです。
Point-to-Point Protocol Extensible Authentication Protocol Code: Response (2) Id: 120 Length: 9 Type: Identity [RFC3748] (1) Identity (4 bytes): R1R2
サーバクライアント間でchallenge, responseを交換しパスワード認証を行います。この時のパケットは以下の通りです。
Point-to-Point Protocol Extensible Authentication Protocol Code: Request (1) Id: 121 Length: 24 Type: MD5-Challenge [RFC3748] (4) Value-Size: 16 Value: a5a07127931e9b7dcda522d4b474b8fd Extra data (2 bytes): 5231 Point-to-Point Protocol Extensible Authentication Protocol Code: Response (2) Id: 121 Length: 26 Type: MD5-Challenge [RFC3748] (4) Value-Size: 16 Value: 1b44051e8e2c446a55bfb03f4ea46f67 Extra data (4 bytes): 52315232
local databaseに基づくEAR認証
設定投入
R1がR2をEAPに基づき認証するように設定します。
[R1] interface Serial0/0 ppp authentication eap ppp eap local ! username R2EAP password 0 CISCO [R2] interface Serial0/0 ppp eap identity R2EAP ppp eap password CISCO
動作確認
R1, R2が互いに疎通可能である事を確認します。
[R1] R1#debug ppp authentication PPP authentication debugging is on R1# *Mar 1 00:03:04.759: Se0/0 PPP: Authorization required *Mar 1 00:03:04.779: Se0/0 EAP: O REQUEST IDENTITY id 33 len 5 *Mar 1 00:03:04.875: Se0/0 EAP: I RESPONSE IDENTITY id 33 len 10 from "R2EAP" *Mar 1 00:03:04.879: Se0/0 EAP: O REQUEST MD5 id 34 len 24 from "R1" *Mar 1 00:03:04.907: Se0/0 EAP: I RESPONSE MD5 id 34 len 27 from "R2EAP" *Mar 1 00:03:04.919: Se0/0 PPP: Sent CHAP LOGIN Request *Mar 1 00:03:04.927: Se0/0 PPP: Received LOGIN Response PASS *Mar 1 00:03:04.935: Se0/0 PPP: Sent LCP AUTHOR Request *Mar 1 00:03:04.935: Se0/0 PPP: Sent IPCP AUTHOR Request *Mar 1 00:03:04.943: Se0/0 LCP: Received AAA AUTHOR Response PASS *Mar 1 00:03:04.947: Se0/0 IPCP: Received AAA AUTHOR Response PASS *Mar 1 00:03:04.947: Se0/0 EAP: O SUCCESS id 34 len 4 *Mar 1 00:03:04.947: Se0/0 PPP: Sent CDPCP AUTHOR Request *Mar 1 00:03:04.947: Se0/0 CDPCP: Received AAA AUTHOR Response PASS *Mar 1 00:03:04.987: Se0/0 PPP: Sent IPCP AUTHOR Request R1# R1#ping 172.16.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/34/52 ms R1#
AAA 併用
設定投入
以下は、まずRADIUSサーバに問い合わせ、応答がない場合はlocal databaseを使用する例です。
[R1] aaa new-model aaa group server radius MY_RADIUS server-private 1.1.1.1 key CISCO aaa authentication ppp R1R2 group MY_RADIUS local-case ! interface Serial0/0 ppp authentication eap R1R2 ppp eap local ! username R2EAP password 0 CISCO [R2] interface Serial0/0 ppp eap identity R2EAP ppp eap password CISCO
動作確認
R1, R2が互いに疎通可能である事を確認します。
[R1] R1#debug ppp authentication PPP authentication debugging is on R1# *Mar 1 00:12:16.827: Se0/0 EAP: O REQUEST IDENTITY id 39 len 5 *Mar 1 00:12:16.879: Se0/0 EAP: I RESPONSE IDENTITY id 39 len 10 from "R2EAP" *Mar 1 00:12:16.883: Se0/0 EAP: O REQUEST MD5 id 40 len 24 from "R1" *Mar 1 00:12:16.911: Se0/0 EAP: I RESPONSE MD5 id 40 len 27 from "R2EAP" *Mar 1 00:12:16.923: Se0/0 PPP: Sent CHAP LOGIN Request *Mar 1 00:12:26.823: Se0/0 AUTH: Timeout 1 *Mar 1 00:12:26.863: Se0/0 EAP: I RESPONSE MD5 id 40 len 27 from "R2EAP" *Mar 1 00:12:26.863: Se0/0 EAP: Ignoring Additional Response *Mar 1 00:12:35.739: Se0/0 PPP: Received LOGIN Response PASS *Mar 1 00:12:35.747: Se0/0 EAP: O SUCCESS id 40 len 4 *Mar 1 00:12:36.751: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up R1# R1#ping 172.16.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/34/52 ms R1#