今天在这里所提到的AAA,不是指的美国的"AAA"电池,也不是指的什么“AAA”风景胜地,而这里指的是计算机安全领域的协议。AAA指:鉴权,受权,计费(Authentication, Authorization, Accounting),PS:可能在每一个地方的翻译不同,可是就是指的同一个技术。
如何在网络中,使用AAA协议来提升网路的安全性,今天就谈谈“认证“的做用。当有位大虾,试图经过console线缆来登陆路由器或者交换机,咱们怎么保证该用户登陆的是安全的,它是合法的管理员,而不是***者,有的人说,只须要设置Console接口登陆密码,以及特权模式密码。若是这位大虾,要经过网络访问,如(SSH,Telnet),还须要设置远程登陆的密码。这样一来,这位大虾本地,和远程管理和调试网络设备,须要记忆多个密码。并且你这个密码不必定是安全的。
那为何要使用AAA,而不是只配置一个密码解决问题了。使用AAA的好处是什么?
1,配置简单,管理方便
2,安全性高,用户名和密码等,能够经过加密以后在网络中传输,防止嗅探和欺骗
3,用户记忆少,操做灵活,AAA能够与其余的技术综合使用,如PPP认证由AAA完成等
而配置密码,只是一个单一的安全性。
如何在Cisco设备上来配置AAA的认证?
实验设备:
cisco 3640路由器1台,PC一台,Console线缆一根,交叉线一根
实验拓扑:
实验过程:
第一步:经过console线缆,使用超级终端或者SecureCRT登陆路由器,完成基本配置,同时将交叉线链接到路由器E1/0,t在PC的接口上配置IP为192.168.10.1,掩码255.255.255.0
Router>
enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#no ip domain-lookup
Router(config)#line console 0
Router(config-line)#no exec-t
Router(config-line)#logg syn
3640(config)#
host R3640
R3640(config)#int e1/0
R3640(config-if)#ip add 192.168.10.3 255.255.255.0
R3640(config-if)#no sh
R3640(config-if)#end
*Mar 1 00:02:02.499: %SYS-5-CONFIG_I: Configured from console by console
R3640#ping 192.168
*Mar 1 00:02:03.659: %LINK-3-UPDOWN: Interface Ethernet1/0, changed state to up
*Mar 1 00:02:04.659: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0, changed state to up
R3640#ping 192.168.10.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 12/32/44 ms
第二步:启用AAA,并配置登陆验证为local
R3640#
conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3640(config)#aaa ?
new-model Enable NEW access control commands and functions.(Disables OLD
commands.)
R3640(config)#aaa new-model 全局启用AAA功能
R3640(config)#aaa authentication login ? 当用户登陆时启用AAA认证功能,而且定义认证时调用的名字是默认的”default”,仍是本身随便定义1个
WORD Named authentication list.
default The default authentication list.
R3640(config)#aaa authentication login default ? 指定用哪一种认证方式
enable Use enable password for authentication. 使用特权密码
group Use Server-group 使用Radius或者Tacacs+协议
krb5 Use Kerberos 5 authentication. 使用Kerberos
krb5-telnet Allow logins only if already authenticated via Kerberos V
Telnet.
line Use line password for authentication. 使用线路认证方式
local Use local username authentication. 使用本地认证方式,需配置用户名和密码
local-case Use case-sensitive local username authentication.
none NO authentication. 不作认证
配置当用户登陆设备时,使用aaa本地登陆认证方式,认证调用的名字为default,认证方式为local
R3640(config)#aaa authentication login default local
配置本地登陆时,使用的用户名和密码。密码我配置的为通过MD5加密的secret密码。安全性高,在show running-config显示的是密文的。不建议配置明文的用户名和密码如(R3640(config)#username admin password admin)
密码建议配置复杂一点,要有大小写,特殊字符,和数字,长度大于8位以上。如:P@ssw0rd
R3640(config)#username nousername secret nopassword
第三步:启用认证调试,观察debug 现象
R3640#debug aaa authentication
AAA Authentication debugging is on
R3640#
第四步:如图1所示,在PC上使用telnet,远程登陆路由器
第五步:如图2所示,输入刚才再配置,登陆的用户名nousername 和密码nopassword。输入的密码是不会显示的,否则怎么叫密码了,登陆成功以后,在当前路由器的用户模式。说明咱们已经完成了aaa的认证功能,并无配置VTY的密码,而是使用aaa完成的认证
第六步:如图3所示,输入enable,尝试进入特权模式,路由器提示以下认证错误。为何了?
第七步:当输入enable,尝试登陆时,查看路由器的上的debug现象
R3640#
*Mar 1 00:38:49.347: AAA: parse name=tty130 idb type=-1 tty=-1
*Mar 1 00:38:49.347: AAA: name=tty130 flags=0x11 type=5 shelf=0 slot=0 adapter=0 port=130 channel=0
*Mar 1 00:38:49.347: AAA/MEMORY: create_user (0x637810BC) user='nousername'(登陆的用户名和密码) ruser='NULL' ds0=0 port='tty130' rem_addr='192.168.10.1'(PC IP地址) authen_type=ASCII service=ENABLE priv=15 initial_task_id='0', vrf= (id=0)
*Mar 1 00:38:49.351: AAA/AUTHEN/START (509980843): port='tty130' list='' action=LOGIN service=ENABLE 输入enable
(没有enable密码)
*Mar 1 00:38:49.351: AAA/AUTHEN/START (509980843): non-console enable - default to enable password
*Mar 1 00:38:49.351: AAA/AUTHEN/START (509980843): Method=ENABLE
R3640#
*Mar 1 00:38:49.351: AAA/AUTHEN(509980843): can't find any passwords 没有发现enable 密码
*Mar 1 00:38:49.351: AAA/AUTHEN(509980843): Status=ERROR (认证状态发生错误)
*Mar 1 00:38:49.351: AAA/AUTHEN/START (509980843): no methods left to try
*Mar 1 00:38:49.351: AAA/AUTHEN(509980843): Status=ERROR
*Mar 1 00:38:49.351: AAA/AUTHEN/START (509980843): failed to authenticate 认证失败,缘由是没有配置enable密码
*Mar 1 00:38:49.355: AAA/MEMORY: free_user (0x637810BC) user='nousername' ruser='NULL' port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 vrf= (id=0)
R3640#
第七步:若是要想远程登陆能进入到特权模式,完成配置,还须要在路由器上配置enable 密码。若是但愿让某个大虾,只活动用户模式下,那暂且能够不配,可是没有enable那不是不科学的,不敢保证,永远也不须要远程调试路由器,若是须要调试,那确定就须要enable密码才能够进入,如图4所示,
第八步:如图5所示,输入刚配置的enable secret密码,能够登陆到特权模式。
思考上图中为何出现如下错误提示:
R3640>enable
Password:
% Access denied
R3640>enable
Password:
% Password: timeout expired!
% Error in authentication.
输入enable密码,进入特权模式时,authentication debug 消息
*Mar 1 00:51:26.719: AAA/MEMORY: free_user (0x63D5B984) user='NULL' ruser='NULL' port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 vrf= (id=0)
R3640#
*Mar 1 00:51:30.667: AAA: parse name=tty130 idb type=-1 tty=-1
*Mar 1 00:51:30.667: AAA: name=tty130 flags=0x11 type=5 shelf=0 slot=0 adapter=0 port=130 channel=0
*Mar 1 00:51:30.667: AAA/MEMORY: create_user (0x63D5B984) user='nousername' ruser='NULL' ds0=0 port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 initial_task_id='0', vrf= (id=0)
*Mar 1 00:51:30.667: AAA/AUTHEN/START (2028066283): port='tty130' list='' action=LOGIN service=ENABLE
*Mar 1 00:51:30.671: AAA/AUTHEN/START (2028066283): non-console enable - default to enable password
*Mar 1 00:51:30.671: AAA/AUTHEN/START (2028066283): Method=ENABLE
R3640#
*Mar 1 00:51:30.671: AAA/AUTHEN(2028066283): Status=GETPASS 认证经过
R3640#
*Mar 1 00:51:37.599: AAA/AUTHEN/CONT (2028066283): continue_login (user='(undef)')
*Mar 1 00:51:37.599: AAA/AUTHEN(2028066283): Status=GETPASS
*Mar 1 00:51:37.599: AAA/AUTHEN/CONT (2028066283): Method=ENABLE
*Mar 1 00:51:37.623: AAA/AUTHEN(2028066283): Status=PASS
*Mar 1 00:51:37.623: AAA/MEMORY: free_user (0x63D5B984) user='NULL' ruser='NULL' port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 vrf= (id=0)
R3640#
第九步:刚才咱们验证的是远程登陆,再来验证一下,本地登陆认证这种方式,从console接口可否登录,如图6所示:提示须要,用户名和密码
第十步:输入正确的用户名和密码
*Mar 1 00:51:26.719: AAA/MEMORY: free_user (0x63D5B984) user='NULL' ruser='NULL' port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 vrf= (id=0)
R3640#
*Mar 1 00:51:30.667: AAA: parse name=tty130 idb type=-1 tty=-1
*Mar 1 00:51:30.667: AAA: name=tty130 flags=0x11 type=5 shelf=0 slot=0 adapter=0 port=130 channel=0
*Mar 1 00:51:30.667: AAA/MEMORY: create_user (0x63D5B984) user='nousername' ruser='NULL' ds0=0 port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 initial_task_id='0', vrf= (id=0)
*Mar 1 00:51:30.667: AAA/AUTHEN/START (2028066283): port='tty130' list='' action=LOGIN service=ENABLE
*Mar 1 00:51:30.671: AAA/AUTHEN/START (2028066283): non-console enable - default to enable password
*Mar 1 00:51:30.671: AAA/AUTHEN/START (2028066283): Method=ENABLE
R3640#
*Mar 1 00:51:30.671: AAA/AUTHEN(2028066283): Status=GETPASS
R3640#
*Mar 1 00:51:37.599: AAA/AUTHEN/CONT (2028066283): continue_login (user='(undef)')
*Mar 1 00:51:37.599: AAA/AUTHEN(2028066283): Status=GETPASS
*Mar 1 00:51:37.599: AAA/AUTHEN/CONT (2028066283): Method=ENABLE
*Mar 1 00:51:37.623: AAA/AUTHEN(2028066283): Status=PASS
*Mar 1 00:51:37.623: AAA/MEMORY: free_user (0x63D5B984) user='NULL' ruser='NULL' port='tty130' rem_addr='192.168.10.1' authen_type=ASCII service=ENABLE priv=15 vrf= (id=0)
进入特权模式以后,用户的级别是在15,思考,在用户模式级别是多少?经过什么命令能够查看到你当前所处的模式,是那个级别?
总结:
本地登陆认证配置有两种方法:
第一种:如图7所示
第二种:如图8所示
第二种配置方式,认证调用的名字是自定义的,那就须要在console和VTY接口下,调用才能够。第一种配置在命令上会少一些,若是配置登陆认证名字为默认“default”,是不须要在VTY和Console,再次调用一下,由于在执行认证就会去查询本地名称default,若是配置认证是名字为自定义的,如”hackerjx“,就必须到VTY和Console执行调用才能够认证经过。否则这个配置,当从console登陆根本就没有对console作安全认证。
可是这两配置AAA本地的认证方法,没有必要同时在一台设备上配置,你们能够根据本身的状况来配置。