AAA-本地認證篇

今天在這裏所提到的AAA,不是指的美國的"AAA"電池,也不是指的什麼「AAA」風景勝地,而這裏指的是計算機安全領域的協議。AAA指:鑑權,受權,計費(Authentication, Authorization, Accounting),PS:可能在每一個地方的翻譯不同,可是就是指的同一個技術。
更多關於"AAA"名詞,請看 http://zh.wikipedia.org/wiki/AAA
如何在網絡中,使用AAA協議來提升網路的安全性,今天就談談「認證「的做用。當有位大蝦,試圖經過console線纜來登陸路由器或者交換機,咱們怎麼保證該用戶登陸的是安全的,它是合法的管理員,而不是***者,有的人說,只須要設置Console接口登陸密碼,以及特權模式密碼。若是這位大蝦,要經過網絡訪問,如(SSH,Telnet),還須要設置遠程登陸的密碼。這樣一來,這位大蝦本地,和遠程管理和調試網絡設備,須要記憶多個密碼。並且你這個密碼不必定是安全的。
那爲何要使用AAA,而不是隻配置一個密碼解決問題了。使用AAA的好處是什麼?
1,配置簡單,管理方便
2,安全性高,用戶名和密碼等,能夠經過加密以後在網絡中傳輸,防止嗅探和欺騙
3,用戶記憶少,操做靈活,AAA能夠與其餘的技術綜合使用,如PPP認證由AAA完成等
而配置密碼,只是一個單一的安全性。
如何在Cisco設備上來配置AAA的認證?
實驗設備:
cisco 3640路由器1臺,PC一臺,Console線纜一根,交叉線一根
實驗拓撲:
1
實驗過程:
第一步:經過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,遠程登陸路由器
Snap1
第五步:如圖2所示,輸入剛纔再配置,登陸的用戶名nousername 和密碼nopassword。輸入的密碼是不會顯示的,否則怎麼叫密碼了,登陸成功以後,在當前路由器的用戶模式。說明咱們已經完成了aaa的認證功能,並無配置VTY的密碼,而是使用aaa完成的認證
Snap1
第六步:如圖3所示,輸入enable,嘗試進入特權模式,路由器提示以下認證錯誤。爲何了?
Snap1
第七步:當輸入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所示,
Snap5
第八步:如圖5所示,輸入剛配置的enable secret密碼,能夠登陸到特權模式。
Snap8
思考上圖中爲何出現如下錯誤提示:
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所示:提示須要,用戶名和密碼
Snap8
Snap5
第十步:輸入正確的用戶名和密碼
*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所示
Snap5
第二種:如圖8所示
Snap6
第二種配置方式,認證調用的名字是自定義的,那就須要在console和VTY接口下,調用才能夠。第一種配置在命令上會少一些,若是配置登陸認證名字爲默認「default」,是不須要在VTY和Console,再次調用一下,由於在執行認證就會去查詢本地名稱default,若是配置認證是名字爲自定義的,如」hackerjx「,就必須到VTY和Console執行調用才能夠認證經過。否則這個配置,當從console登陸根本就沒有對console作安全認證。
可是這兩配置AAA本地的認證方法,沒有必要同時在一臺設備上配置,你們能夠根據本身的狀況來配置。
相關文章
相關標籤/搜索