Authentication:用于验证用户的访问,如login access,ppp network access等。
Authorization:在Autentication成功验证后,Authorization用于限制用户能够执行什么操做,能够访问什么服务。
Accouting:记录Authentication及Authorization的行为。
Part I. 安全协议
1>Terminal Access Controller Access Control System Plus (TACACS+)
Cisco私有的协议。加密整个发给tacacs+ server的消息,用户的keys。
支持模块化AAA,能够将不一样的AAA功能分布于不一样的AAA Server甚至不一样的安全协议,从而能够实现不一样的AAA Server/安全协议实现不一样的AAA功能。
配置命令:
Router(config)# tacacs-server host IP_address [single-connection] [port {port_#}] [timeout {seconds}] [key {encryption_key}]
Router(config)# tacacs-server key {encryption_key} 注:
(1)single-connection:为Router与AAA Server的会话始终保留一条TCP连接,而不是默认的每次会话都打开/关闭TCP连接。
(2)配置两个tacacs-server host命令能够实现tacacs+的冗余,若是第一个server fail了,第二个server能够接管相应的服务。第一个tacacs-server host命令指定的server为主,其它为备份。
(3)配置inbound acl时须要permit tacacs+的TCP port 49。
(4)若是两个tacacs-server使用不一样的key,则须要在tacacs-server host命令中指定不一样的encryption_key,不然可使用tacacs-server key统必定制。但tacacs-server host命令中的key定义优先于tacacs-server key命令。
Troubleshooting:
命令:
#show tacacs
#debug tacacs 关于TACACS+的操做信息。
#debug tacacs events 比debug tacacs更详细的信息,包括router上运行的 TACACS+ processes消息。
Router# show tacacs
Tacacs+ Server : 10.0.0.10/49
Socket opens: 3
Socket closes: 3
Socket aborts: 0
Socket errors: 0
Socket Timeouts: 0
Failed Connect Attempts: 0
Total Packets Sent: 42
Total Packets Recv: 41
Expected Replies: 0
No current connection
2>Remote Authentication Dial-In User Service (RADIUS)
RADIUS是一个开放的标准,定义于RFC 2865和2865。
RADIUS使用一个共享的密钥,而且只加密用户的keys,而不是TACACS+的整个AAA消息。用户的keys不会明文在网络上传递。
RADIUS应用范围:
(1)使用multiple vendors设备,而且须要一个单独的安全协议用于AAA。
(2)须要实现资源记录,如跟踪用户登陆router多长时间及用户访问网络多长时间。
(3)smart card authentication systems只支持RADIUS。
(4)在用户初始化访问一个设备时,对他进行preauthentication。
RADIUS的使用限制:
(1)不支持Apple Talk's Remote Access Protocol(ARAP),the NetBIOS Frame Control Protocol(NBFCP),NetWare's Asynchronous Serveices Interface(NASI)及X.25 PAD连接。
(2)RAIUDS不支持模块化AAA操做,即只可使用RADIUS来完成所有的AAA操做。
(3)只支持one-way authentication.不支持two-way authentication(如:两个router之间的PPP CHAP Authentication).
(4)RADIUS将Authentication及Authorization功能集成为"Authentication"。
配置命令:
Router(config)# radius-server host IP_address [auth-port {port_#}] [acct-port {port_#}] [timeout {seconds}] [retransmit {retries}] [key {key_value}] [alias {hostname | IP_address}]
Router(config)# radius-server timeout {seconds}
Router(config)# radius-server retransmit {retries}
Router(config)# radius-server key {key_value}
注:
(1)RADIUS Server daemon监听Authentication消息默认使用UDP 1645.Authorization消息默认使用UDP 1646.
(2)配置inbound acl以permit UDP 1645/1646。
(3)RFC 2026中指出,RADIUS也可能使用UDP 1812/1813,一些新的RADIUS Server同时监听UDP 1645/1646及UDP 1812/1813。因此配置router inbound acl以permit相应的端口。
(4)RADIUS默认timeout为5s,retransmit为3.
Troubleshooting:
show radius statistics
debug radius [brief]
加上brief参数功能相似于debug tacacs命令,不加则相似于debug tacacs event命令。
Router# show radius statistics
Auth. Acct. Both
Maximum inQ length: NA NA 1
Maximum waitQ length: NA NA 1
Maximum doneQ length: NA NA 1
Total responses seen: 5 0 5
Packets with responses: 5 0 5
Packets without responses: 0 0 0
Average response delay(ms): 1880 0 1880
Maximum response delay(ms): 6540 0 6540
Number of Radius timeouts: 0 0 0
Duplicate ID detects: 0 0 0
3>Kerberos
其中TACACS+及RADIUS全面支持AAA。Kerberos只支持Authentication。
Item
|
TACACS+
|
RADIUS
|
Comparison
|
Connection
|
TCP
|
UDP
|
UDP has less overhead; however, with TCP, TACACS+ more quickly can detect a failed server and switch over to a backup. TCP can do this by having the router look for an RST (closed connection) message or by using TCP keepalives.
|
Encryption
|
Payload
|
Passwords
|
TACACS+ is more secure because it encrypts the entire payload, which includes all user and AAA message information; RADIUS encrypts only passwords, so everything else, including usernames and other account information, is sent in clear text.
|
Authentication and authorization
|
Separate
|
Combined
|
RADIUS combines authentication and authorization functions, which means that you must use the same server or group for these functions. TACACS+ separates them, giving you more control over the server that handles these functions.
|
WAN protocols
|
PPP, ARAP, NetBIOS, NASI, and X.25 PAD
|
PPP and SLIP
|
TACACS+ is better suited for remote-access situations that involve multiple dialup protocols, whereas RADIUS supports only PPP and SLIP.
|
Router command authorization
|
|
No
|
TACACS+ enables you to control what commands an authenticated user can execute on a router; RADIUS does not.
|
|
Basic
|
Advanced
|
The one big advantage that RADIUS has over TACACS+ is its robust accounting, which is why many ISPs use it to monitor PPP connections.
|
Part II. Server Groupings
默认使用tacacs-server host或radius-server host命令配置的AAA Server都是按命令出现的顺序分为主/备服务器,可使用aaa group server radius/tacacs+命令覆盖实现部分配置的host作为验证server。同时能够实现不一样的aaa group实现不一样的AAA功能,如group1实现Authentication,group2实现Authorization等。
配置命令:
Router(config)# aaa group server radius | tacacs+ {group_name}
Router(config-sg)# server {IP_address | hostname} [auth-port {port_#}] [acct-port {port_#}]
注:
(1)不能在aaa group server中混合使用多种安全协议。
Part III. Authentication
router支持authentication如下两种基本的访问模式。
1>Character mode:用户经过console, auxiliary, TTY, or VTY线路得到到router的 user或privileged EXEC访问。
2>Packet mode:用户经过使用 PPP, SLIP, ARAP, NASI, NetBIOS, or X.25 PAD等远程访问协议创建一个data-link layer连接。
Method lists:
指定一系列的认证方式。如group tacacs+,group radius,local,none等。
每一个authentication命令最多只能同时使用4种认证methods。
认证的结果:
Success:此method可达,且用户经过验证。
Fail:此mothod可达,但用户验证失败。
Error:有两种状况
(1)此mothod中指定的aaa server group中的一个AAA Server不可达,第二个AAA Server被尝试。
(2)此mothod指定的方式不存在,或AAA group中的全部的servers都不可达。
注:
1>若是router试图访问的全部mothods结果都是unsuccessful,则router acl会自动deny之后的authentication request。
2>若是指定的mothod是local,且没有与用户提供的用户名相匹配的username,则验证结果为Error。
Authtication Command Syntax:
aaa authtication login {认证列表名称} {验证方法}
{认证列表名称}
default:默认的authentication认证方式。
name:指定特定的认证方式列表,实现更具体的认证。
{验证方法}
enable使用enable账号密码验证
group:使用Server Group验证
krb5:使用kerberos V验证
krb5-telnet:使用kerberos V验证telnet
line:使用线路密码验证
local:使用本地账号密码验证
local-case:使用本地账号密码验证(区分大小写)
none:不进行验证
aaa authentication enable default {验证方法}
{验证方法}
enable
group
line
none
aaa authentication ppp {认证列表名称} {验证方法}
{认证列表名称}
default:默认的authentication认证方式。
name:指定特定的认证方式列表,实现更具体的认证。
{验证方法}
group
if-needed:若是用户已经经过tty线路身份验证,则在此不验证用户身份,直接经过
krb5
local-case
local
none
Authtication Configuration:
Router(config)# aaa new-model
Router(config)# aaa authentication login {default | list_name} method1 [method2...]
Router(config)# aaa authentication enable default method1 [method2...]
Router(config)# line [aux | console | tty | vty] start_line_# [end_line_#]
Router(config-line)# login authentication {default | list_name}
Router(config-line)# timeout login response {seconds}
Method Keyword
|
Description
|
enable
|
The password in the
enable secret or
enable password commands is used to perform the authentication.
|
line
|
The line
password command, on the line that the user is trying to access, is used to perform authentication.
|
local
|
The
username commands are used to perform authentication.
|
local-case
|
The
username commands are used to perform authentication. However, the username that the user enters is treated as case sensitive.
|
none
|
No authentication is performed.
|
group radius
|
All configured RADIUS servers can be used to perform authentication.
|
group tacacs+
|
All configured TACACS+ servers can be used to perform authentication.
|
group
group_name
|
Only servers in the specified
aaa group server command are used to perform authentication.
|
注:
1>aaa authentication login:User EXEC Authentication
2>aaa authentication enable:Privileged EXEC Authentication
3>timeout值为cisco router等待多长时间将此认证method认为是error。默认timeout为30s,取值范围1~300s。
4>上图列出的methods,aaa authentication enable不支持local和local-case。
Username and Password Prompts:
默认用户登陆时,cisco会给出这样的提示符:
Username:
Password:
可使用如下命令修改这些默认的提示:
Router(config)# aaa authentication username-prompt {prompt_string} Router(config)# aaa authentication password-prompt {prompt_string}
注:
TACACS+/RADIUS Server也支持修改默认的提示符,若是同时配置aaa authentication username-prompt/password-prompt命令和TACACS+/RADIUS Server配置,则cisco优先使用TACACS+/RADIUS Server配置的prompt。
Login Banners:
可使用aaa来代替默认用banner命令配置的登陆提示消息:
Router(config)# aaa authentication banner {stop_character message stop_character} 注:最多支持2996个字符。
也能够修改用户在输入无效的用户名/密码时的提示:
Router(config)# aaa authentication fail-message {stop_character message stop_character}
注:最多支持2996个字符。
Login Attempts:
默认cisco router容许用户尝试3次登陆,最后disconnect用户的连接。可使用如下命令修改容许尝试的次数:
Router(config)# aaa authentication attempts login {#_of_attempts} 注:
1>可配置的次数为1~25。
2>推荐将网络外接设备的login attempts次数修改成1,这样能够减小对密码暴力破解的机会。
Authentication Troubleshooting:
Router# debug aaa authentication
Part IV. Authorization
Authorization Command Syntax:
aaa authorization {受权类型} {受权列表名称} {受权方法}
{受权类型}
auth-proxy:当用户成功经过authentication后,此method容许用户经过router/firewall创建到连接的其它网络的多个连接,具体的的连接数在AAA Server端配置实现。
commands:限制用户能够在router上执行的命令。
config-commands:限制用户能够在router上执行的配置命令。
exec:限制用户到router的EXEC访问。其主要用于dialup环境,用户使用PPP的PAP/CHAP认证方式,在经过认证后经过router访问网络,此处能够限制其在经过认证后,只能实现网络访问,而不能EXEC到router。
network:当用户经过authentication并得到一个EXEC,其就能够在一个dailup接口上创建一个PPP/SLIP链接。此method用于限制此种行为。
reverse-access:在经过authentication后,此method能够限制用户使用router的虚拟终端反向telnet到其它设备上。
ipmobile:配置对mobile连接的受权。
configuration:限制对AAA服务的配置。
{受权列表名称}
default:默认的authentication认证方式。
name:指定特定的认证方式列表,实现更具体的认证。
{受权方法}
group
if-authtication:若是用户经过了authentication,则容许它执行相应的操做。
local
none
Authorization Configuration:
Router(config)# aaa authorization commands {level_#} {default | list_name} [method1 [method2...]]
Router(config)# line [aux | console | tty | vty] start_line_# [end_line_#]
Router(config-line)# authorization commands {level_#} {default | list_name}
Method Keyword
|
Description
|
local
|
The
username commands are used to perform authorization.
|
none
|
No authorization is performed. This parameter is typically not used.
|
group radius
|
All configured RADIUS servers can be used to perform authorization.
|
group tacacs+
|
All configured TACACS+ servers can be used to perform authorization.
|
group
group_name
|
Only servers in the specified
aaa group server command are used to perform authorization.
|
Configuration Mode Command Authorization:
通常状况使用aaa authorization后,用户执行的每一个命令都被aaa限制执行,这可能对configure termianl模式的命令有一些影响,可使用下面命令使aaa authorization忽略对configure termianl模式的命令的限制:
Router(config)# no aaa authorization config-commands
Authorization Troubleshooting:
Router# debug aaa authorization
Part V. Accounting
配置accouting主要有两部分:
1>type of accouting:记录哪些信息。
2>method:将记录的信息发送到哪。
Accouting Command Syntax:
aaa accouting
{统计类型} {统计列表名称} {统计记录方式} {统计方法}
{统计类型}
commands {level}:记录用户执行的全部的命令,包括privilege/configuration mode命令。
connection:记录router经过Telnet, LAT, TN32760, PAD, and rlogin等方式创建的到其它设备的连接信息。信息包括创建连接的用户名,日期/时间及在创建的连接上执行的命令。
exec:记录router的EXEC会话信息。信息包括用户名,会话起始日期和时间,用户设备的IP。
network:记录dialup连接的信息,如PPP/SLIP。信息包括相应连接的packets数目及bytes数目。
resource:记录dialup连接信息及phone call的资源信息。
system:记录system-level事件。如接口up/down,router reload,accouting被启用/禁止。
{统计列表名称}
default:默认的authentication认证方式。
name:指定特定的认证方式列表,实现更具体的认证。
{统计记录方式}
start-stop:在事件开始和结束时都创建相应的记录。先执行后记录。
stop-only:只在事件结束时创建相应的记录。
none:禁用对特定服务的记录。
wait-start:相似于start-stop,在事件开始和结束时都创建相应的记录。不一样的是此模式只在成功连接到AAA Server并能实现记录时才容许用户执行相应的事件,不然等待。即:先记录后执行。(此模式在Cisco IOS 12.1及之后的版本中被移除,并再也不支持)
{统计方法}
group
Methods of Accounting:
RADIUS
TACACS+
注:
1>只能使用以上两种method在aaa accouting中。
2>Cisco的RADIUS实现不能实现aaa accouting,只能使用TACACS+。
Accouting Configuration:
Router(config)# aaa accounting {system | network | exec | connection | commands level_#} {default | list_name} {start-stop | stop-only | none} [method1 [method2...]]
Router(config)# line [aux | console | tty | vty] line_# [ending_line_#]
Router(config-line)# accounting {arap | commands level_# | connection | exec} {default | list_name}
Router(config)# interface type [slot_#/]port_#
Router(config-if)# ppp accounting {default | list_name}
Service Keyword
|
Description
|
system
|
Enables accounting to capture system-level events, such as an interface status changing or the router reloading (only the
default method list is supported for this service)
|
network
|
Enables accounting for all network services, such as SLIP, PPP, NCP, and ARAP
|
exec
|
Enables accounting for EXEC sessions, listing what users logged in and when they logged into and out of the router
|
connection
|
Enables accounting for outbound connections from the router, such as Telnet and TN3270
|
commands
level_#
|
Enables accounting for commands, listing the commands (and their privilege levels) that were executed by a user
|
resource
|
Enables accounting for dialup connections, listing resource information for them
|
Suppressing Null Username Records:
当指定多种authentication mothods,并在最后使用none,且其它mothods都不可达,用户经过none成功登陆router时,accouting仍然会产生一个相应的登陆记录,不过没有相应的登陆用户名信息,由于none method不须要提供任何登陆信息。这样的记录没有太大意义,可使用如下命令来使aaa accouting不记录这样的事件:
Router(config)# aaa accounting suppress null-username
Enabling Broadcast Accounting:
aaa accouting初始的限制就是在使用多个AAA Accouting Server实现日志记录时,记录信息只会发给Primary AAA Accouting Server,并于Primary Accouting Server发送给其它Servers。
可使用如下命令,在aaa accouting命令中加入broadcast参数,将日志信息一次性的广播到全部的AAA Accouting Servers:
Router(config)# aaa accounting {system | network | exec | connection | commands level_#} {default | list_name} {start-stop | stop-only | (none} <broadcast> [method1 [method2...]]
Accounting Troubleshooting:
Router# debug aaa accounting
Router# show accounting
Router# show aaa user all
Part VI. IOS命令权限
全部有IOS命令都被分为0~15的权限级别。
默认Cisco Router只使用3个级别:
0级:包括5个命令(disable,enable,exit,help,logou),如今未用于任何线路。
1级:用户EXEC模式,全部用户登陆后的默认级别。
15级:特权EXEC模式。
1>全部用户只能够执行其权限级别如下的命令。
2>指定用户权限级别。
username {name} privilege {level} password {password}
3>查看用户权限级别。
show privilege
4>查看用户当前权限级别能够执行的命令。
?
5>修改特定命令的权限级别。 privilege {configure|exec} level {level} {command} 例: username sense privilege 7 password test privilege configure level 7 snap-server host privilege configure level 7 snap-enable traps privilege exec level 7 ping privilege exec level 7 configure terminal