一、CHAP认证基本介绍
1.主验证方和被验证方都有一对用户名和密码。
2.主认证方主动发起请求,向被认证方发送一个随机提出报文和本端的用户名。
3.被认证方收到的用户名查找自己用户表中与主认证相同的用户名所对应的密码,如果没找到则认证失败;如找到则把密码、本端用户名、连同先前的报文ID用MD5算法加密后的文件发回主认证方。
4.主认证方收到报文后,根据报文中被认证的用户名,在自己的本地用户数据库中查找被认证方用户名对应的密码,利用报文ID、该密码和MD5算法对原随机报文加密,然后将加密的结果和被认证方发来的加密结果进行比较。如果相同则通过认证,如果不通过则认证失败。
二、实验环境
两台路由器通过Serial 1/0/0接口互联,互联地址分别为10.0.0.1/24、10.0.0.2/24,做CHAP认证,AR1是主验证方,AR2是被验证方。
三、实验基本配置
AR1接口IP地址配置
[AR1]interface Serial 1/0/0
[AR1-Serial1/0/0]ip address 10.0.0.1 24
AR1建立验证用户
[AR1]aaa
[AR1-aaa]local-user r1 password cipher 123
[AR1-aaa]local-user r1 service-type ppp
AR2接口IP地址配置
[AR2]interface Serial 1/0/0
[AR2-Serial1/0/0]ip address 10.0.0.2 24
四、CHAP配置
1.配置命令
[AR1]int Serial 1/0/0
[AR1-Serial1/0/0]ppp authentication-mode chap
[AR2]interface Serial 1/0/0
[AR2-Serial1/0/0]ppp chap user r1
[AR2-Serial1/0/0]ppp chap password cipher 123
2.抓包结果
发现主验证方并没有发送用户名。
被验证方有主验证方的用户名。
3.主验证方接口没有配ppp chap user r1,在发起认证请求时就没有用户名,不会直接把用户数据库的用户名发给对方验证。
被验证方用户数据库里没有r1,在接口配置了chap认证用户名r1,接口配置的用户优先级大于数据库里的用户,所以被验证方发送的回复报文用户名为r1。
五、CHAP配置二
接上面的实验,如果在AR1的接口下加上ppp chap user r1,那么AR1发送的CHAP认证请求就会带有R1。
在AR1上Serial1/0/0接口上加条命令
[AR1-Serial1/0/0]ppp chap user r1
这样主验证方发送的认证请求就有用户名了。
六、CHAP配置三
继续上面的实验,AR2里没有用户数据库,AR2作为被验证方发送认证回复报文是调用Serial1/0/0接口上配置的用户名和密码,如果AR2建立了r1的用户名和密码,那么接口上可以不用配置密码,直接调用AR2本地r1用户的密码。
配置命令
[AR2]aaa
[AR2-aaa]local-user r1 password cipher 123
[AR2-aaa]local-user r1 service-type ppp
[AR2-Serial1/0/0]undo ppp chap password \\密码可以删掉,用户名不可以删,如果用户名删掉主验证方就不发送验证请求了
通过验证
AR1接口上的用户名不可以删,如果删掉的话
无法通过验证
七、实验总结
1.主验证方如果在接口不配用户名,那么发给被验证方的验证请求中不带用户名,被验证方根据接口配置的用户名和密码发送回复报文。
2.主验证方配置用户名的话,被验证方就可以根据用户名查找本地的用户数据库,找的密码,然后回复给主验证方。