网络设备 密码、用户级别 AAA授权 的管理
一.进入 特权模式 密码
设置访问网络设备特权模式口令
cisco>enable
cisco#config terminal
cisco(config)#enable password 密码
enable password存在的问题是它将口令以可阅读文本的形式储存在 running-config和startup-config中
特别说明:
Router(config)#enable password ?
7 Specifies a HIDDEN password will follow
LINE The UNENCRYPTED (cleartext) 'enable' password
level Set exec level password
7
是思科自有的加密协议type7,比较简单,容易破解,这里的用法是 enable password 7 ……
后面是加入密文才有效。这个密文通常要在以前备份的配置里拷贝才行,用于配置恢复时使用。
比如你设置enable password cisco
然后使用service password-encryption命令开启加密
在show running-config里面能够看到enable password 7 104D000A0618
104D000A0618这个值你就可以直接写在enable password 7后面,实际就是cisco密文加密的结果
LINE
直接输入密码,不加密,明文显示
level (后面讲)
设置用户级别密码 指定密码作用于哪个级别(实际操作中会将密码加密保存)
共15个等级 最低为1 最高为15(相当于root权限)
进入对应的级别输入 相应的密码
如:Router>enable 5 (此时应输入5级密码)
在网络设备中,默认情况下,除了使能加密口令外,其它所有口令都以明文格式储存在startup-config 和 running-config中。使用 service password-encryption 命令后,所有系统口令都将以加密形式存储。
加密系统所有口令
cisco(config)# service password-encryption
加密的方式是cisco私有加密方式
取消系统口令加密
cisco(config)# no service password-encryption
取消加密不会将已加密的口令恢复为可阅读文本,但是新设置的密码将会以明文存在
二.使能密码
思科引入新的口令控制特权模式访问,即加密口令,使能密码
设置访问网络设备特权模式加密口令
cisco>enable
cisco#config terminal
cisco(config)#enable secret 密码
采用了MD5加密,如果配置了加密口令,则不在使用未加密口令,两种口令不能并列使用
特别说明:
Router(config)#enable secret ?
0 Specifies an UNENCRYPTED password will follow
5 Specifies an ENCRYPTED secret will follow
LINE The UNENCRYPTED (cleartext) 'enable' secret
level Set exec level password
其实对于Secret 选项来说,密码肯定是会被加密的。
假设我要设置的密码为cisco
0 是指:我现在即将输入的密码是原始密码,是:cisco
5 是指:就是输入cisco 的MD5值:$1$XNRo$8FSa/XSF9DbmF6VbK6L6K
level : 设置用户级别密码 指定密码作用于哪个级别
三.控制台登录密码
配置console 访问密码
cisco>enable
cisco# config terminal
cisco(config)# line console 0 切换为控制台0号 线路配置模式
cisco(config)# password 密码 设置密码
cisco(config)# login 将控制台线路设置为登陆需要输入口令 才能访问(否则即使设置密码也不需要输入)
四.辅助线路
配置vty访问密码
cisco>enable
cisco#config terminal
cisco(config)#line aux 0 对aux0号 线路进行配置
cisco(config)#password 密码 设置密码
cisco(config)#login 将控制台线路设置为登陆需要输入口令 才能访问(否则即使设置密码也不需要输入)
五.虚拟终端线路(vty 同步)(tty异步) telnet ssh
配置vty访问密码
cisco>enable
cisco#config terminal
cisco(config)#line vty 0 15 对vty0到15号 线路进行配置(最大允许16个人同时登陆,VTY线路的编号)
cisco(config)#password 密码 设置密码
cisco(config)#login 将控制台线路设置为登陆需要输入口令 才能访问(否则即使设置密码也不需要输入)
特别说明:
Router(config-line)#login ?
authentication authenticate using aaa method list
local Local password checking
authentication 配置Telnet口登录进行AAA认证(后面讲)
local 如果设置 local 则指明使用本地数据库进行身份验证,将要输入 用户名 和 密码
首先必须要用username xxx password xxx命令
来创建你的用户并且给你的用户设置密码
特别说明,在默认情况下,除了password secret外,所有cisco密码都以明文形式,存贮在路由器的配置,这些密码通过 show running-config命令来查看。这是非常不安全的行为。
为提高密码安全性,可进行如下配置。
1.设置最短密码长度
cisco IOS 12.3 以后的版本,可以利用命令
security passwords min-length 长度
设置0~16位的最短字符长度,启用后,user passwords、enable secret、line passwords、都会遵循此设置
2.禁用无用连接
在线路配置模式下,使用
Router(config-line)#exec-timeout 时间
该命令来控制管理接口连接时间,
3.加密配置文件中的所有密码
加密系统所有口令
cisco(config)# service password-encryption
加密的方式是cisco私有加密方式,是一种可逆的加密,建议使用与enable 不同的密码
取消系统口令加密
cisco(config)# no service password-encryption
取消加密不会将已加密的口令恢复为可阅读文本,但是新设置的密码将会以明文存在
4.使用本地数据库中的用户和密码执行登陆验证,有两种配置方式
Router(config)# username 用户名 passwords 密码
Router(config)# username 用户名 secret 密码 (用md5加密,安全性更高)
然后在线路配置中,启用本地登陆验证
Router(config-line)#login local
5.其它的登陆安全措施
R1(config)#login block-for 60 attempts 3 within 30
//30s内连续登录失败3次后,等待60s(进入安静期)后才能再次登录
R1(config)#login quiet-mode access-class 10
//安静期内ACL10指定的计算机仍可以远程访问本路由器
R1(config)#login delay 2 //登录成功后有2s延迟,即2s后才能再次登录
R1(config)#login on-failure log //登录失败会在日志中记录
R1(config)#login on-success log //登录成功会在日志中记录
R1(config)#security authentication failure rate 5 log
//连续登录失败5次后,默认等待15s后才能再次登录,并会产生日志,IOS12.3(1)
验证配置可以使用 show login
6.设置标语
配置旗标消息:
R1(config)#banner motd @ @ //每日报告旗标(MOTD Message-of-the-day banner) 连接时
R1(config)#banner login@ @ //登录旗标 登录前
R1(config)#banner exec @ @ //EXEC旗标 登陆后
R1(config)#banner incoming@ @ //传入旗标
在与反向Telnet线路连接的终端上显示,该旗标有助于向用户提供指令;
R1(config)#banner slip-ppp@ @ //SLIP-PPP旗标
常用于兼容非Cisco系列线路Internet协议(如:SLIP和PPP拨号软件连接中),如果使用默
认旗标,会导致连接问题。
用户级别控制:
Cisco IOS提供从0到15的16个优先权等级:
①默认情况下IOS有3个预定义的用户等级,分别为:
优先权等级0:包括disable、enable、exit、help和logout命令;
优先权等级1:User EXEC mode,即用户模式(R1>)的所有用户级命令;
优先权等级15:Privileged EXEC mode(启用模式),包括R1#提示的所有启动级命令。
②2至14等级用于用户自定义的模式;
cisco(config)# enable secret level 级别 密码
设置从用户模式进入各级别 特权模式的密码
R1(config)# username user3 privilege 5 secret 密码
创建优先权等级5的user3用户
③ R1(config)# privilege mode level 级别 命令
命令可以更改、移动或设置上述任一级别的命令优先权,
mode:是指路由器上的不同模式
cisco(config)#privilege ?
configure Global configuration mode
exec Exec mode
interface Interface configuration mode
line Line configuration mode
router Router configuration mode
示例: R1(config)#privilege configure level 5 interface
//移动等级15的“interface”命令到等级5
R1(config)#privilege configure level 5 ping
//等级5及以上才可以使用 ping 命令
④“R1(config-line)#privilege level level 命令可以修改给定线路的优先权等级。
示例:R1(config)#line vty 3 4
R1(config-line)#privilege level 1 //修改VTY线路3-4的默认优先权等级为1
使用 show privilege 命令显示当前级别
AAA认证:
一、简介
AAA是Authentication(认证)Authorization授权 Account记帐的简称;
它们不是必须的也不是要同时一起使用的;
他们可以使用路由器设备本地数据库,也可以使用外部数据库(ACS);
首先我们要认证,即通过密码验证;我们就算没有设置其实也用到了认证,就是登陆路由器要输入的密码,
这个叫enable,
我们在配置了,username abc password aaa
username abc secret password
使用这个帐号的话,叫local;
这二种是本地的数据库。
如果要用到认证服务器,如 tacacs+ radius 就属于group 服务器组方式了,这时你必须要在tacacs+ radius中选一个,同时还最多可选三个其它的认证方式;当然如果你对你的服务器和网络环境有信心的话可以不选。
二、配置教程
1、使用它们都是三个步骤
1、建立帐户数据库(本地或认证服务器);
2、定义列表;
3、应用到接口和链路;
2、首先我们要启用AAA功能
Router(config)# aaa new-model
3、一般来说第二步定义一个本地数据库防止配置失误造成无法登陆
Router(config)# Username abc password aaa
4、定义认证配置
认证相当于在问你是谁,你要回答我是哪个;但不可能不停的在问就算不烦嗓子也疼啊,只有在进门时我会问下你是谁,开保险柜时我在问下你是谁,或者是检查指纹测试瞳孔什么的等等;所以我们要对动作进行认证定义。
Router(config)#aaa authentication 行为 列表名 认证方法
行为主要有以下三种:
aaa authentication login ――――――当有一个登陆行为时进行认证;
aaa authentication ppp ――――――对基于PPP协议的一些网络应用进行认证;
aaa authentication enable ――――――对使用enable命令进入特权模式时进行认证;
列表名是自己定义的,这样我们可以把各种认证方式互相组合保存成一个个列表,用的时候方便,修改起来也方便,我改了一个列表里的认证方式那么所有使用这个列表的地方都改了,不需要去一个个地方去改了。
Dedautl列表是一个系统自己建立的列表名作为缺省列表。它与我们自己建的列表没有任何区别,只不过他是系统建的而已。
3、认证方法,就是指我们是查口令呢还是看指纹还是其它等等,也就是把我们的回答和谁进行分析比较。主要有以
下几种:
关键字 |
描述 |
enable | 使用enabel口令认证; |
krb5 | 使用Kerberos5来认证; |
line | 使用线路口令来认证; |
local | 使用本地用户数据库来认证; |
none | 不认证; |
group radius | 使用radius服务器来认证; |
group tacacs+ | 使用tacacs+服务器来认证; |
local-case 使用本地验证(对大小写敏感)
每个列表中必须定义一种认证方法,最多可以定义四种方法,当第一种认证不通过再使用第二种,以此类推。
例如我们定义
Router(config)# aaa authentication login 二号方案 group tacacs+ local
//我们定义了一个名叫二号方案认证方式,就是先去tacacs+服务器验证,如果不成功在试试用本地帐号来试;
Router(config)# aaa authentication login 三号方案 group local enable
//我们定义了一个名叫三号方案认证方式,就是先用本地帐号验证,如果不成功就用enable密码来验证;
五、应用到接口和链路
我们上面做了那么多但是还没有效果为什么呢,就好像我们做好了报警器,指纹验证器但没装到门上你说可有效果,那当然是不行的了,我们是定义了当登陆时就启用一个列表名字叫二号方案的认证方式,但只有我们把他装到门上才能有效果啊,有人说太麻烦应该定义好了就能用,那就惨了,你给自己家的门上装了二号方案没关系,如果楼道门、院子门,都给装上了那就有问题了,所以我们要把定义好的认证方法列表装到我们需要使用认证的门上,例如我们可能对Telnet要认证,但通过console登陆的就不要认证。
Router(config)# line vty 0 //我们先要进入接口
Router(config-line)# aaa authentication 二号方案 //线路vty0使用名为二号方案的方式进行认证;
或者:
Router(config)# line vty 1
Router(config-line)# login authentication 三号方案
aaa的一些其他命令:
锁死失败超过限制的账号
Router(config)# aaa local authentication at tempts max-fail 失败次数
显示所有被锁死的用户
Router# show aaa local user lockout
解除锁定
Router(config)# clear aaa local user lockout {username 用户名| all}
只显示aaa认证授权的用户
Router# show aaa user {all | 唯一id}
显示一个会话的唯一id
Router# show aaa sessions
AAA授权:
配置供用户通过认证之后的AAA授权
aaa authorization 命令
aaa authorization {network | exec | commands level | reverse-access | configuration} {default
|list-name} method1 [method2~~~]
network 为所有网络相关的服务请求进行授权,包括SLIP,PPP,PPP NCP和ARA
exec 使用授权,以确定是否用户可以运行一个EXEC shell.
commands 为所有处于规定的特权级别的命令使用授权
level 规定应该被授权的命令级别,有效值 0-15
reverse-access 为反向访问连接使用授权,例如反向Telnet
configuration 从AAA服务器上下载配置
default 使用此变量后列出的认证方法,作为缺省方法列表供认证
listname 用来命令认证方法列表的字符串
method 规定以下关键字的至少一种
group 用radius或tacacs+服务器的一个子集来认证,这些服务器定义在aaa group server radius
或aaa group server tacacs+命令中
if-authenticated 如果用户为认证,允许用户访问请求的功能;
krb5-instance 使用被kerberos instance map命令定义的实例;
local 用本地用户名数据库来授权
none 不用授权
例子:
enable secret level 1 *** 为级别1的用户建立一个enable secret口令
enable secret level 15 *** 为级别15的用户建立一个enable secret口令
aaa new-model 启用AAA
aaa authentication login default enable 将enable口令作为缺省的登入方式
aaa authentication login console-in group tacacs+ local 无论何时使用名为console-in的列
表,都使用TACACS+认证,如果TACACS+认证失败,己用本地用户名和口令
aaa authentication login dial-in group tacacs+ 无论何时使用名为dial-in的列表,都使用
TACACS+认证.
username *** password **** 建立一个本地用户名和口令,最可能与console-in登录方法列
表一起使用
aaa authorization commands 1 alpha local 用本地用户名数据库来为所有级别1命令的使用进行
授权 www.2cto.com
aaa authorization commands 15 bravo if-authenticated group tacplus local 如果用户已经认
证了,让其运行级别15的命令,如果还未认证,在允许其访问级别15的命令之前,必须基于tacplus组中的
TACACS+服务器来认证
aaa authorization network charlie local none 使用本地数据库来对所有网络服务的使用授权,
如果本地服务器不可用,此命令执行并不授权,用户能使用所有的网络服务
aaa authorization exec delta if-authenticated group tacplus 如果用户已经认证,让其运行
EXEC过程,如果没有认证,在允许EXEC之前,必须基于tacplus组中的TACACS+服务器来认证
privilege exec level 1 ping 为级别1的用户启用PING
line console 0
login authentication console-in 使用console-in列表作为控制台端口0的登录认证
line s3/0
ppp authentication chap dial-in 使用dial-in列表作接口S3/0 的PPP CHAP的登录认证
AAA记账:
配置规定如何写记帐记录的AAA记帐
aaa accounting [auth-proxy |system |network |exec |connection |commands level]{default
|list-name} [vrf vrf-name] [start-stop|stop-only|none][broadcast][method][method2]
auth-proxy 提供有关所有认证代理用户事件的信息
system 为所有非用户相关的系统级事件执行记帐
network 为所有网络相关的服务请求运行记帐
exec 为EXEC shell会话运行记帐。
connection 提供所有有关源子NAS的外出连接的信息
commands 为所有处于特定特权级别的命令运行记帐,有效的特权级别取值0-15
default 使用本参数之后列出的记帐方式
list-name 用来命令记帐方式列表的字符串
vrf vrf-name 规定一个VRF配置
start-stop 在一个过程的开端,发送一个开始记帐通知,在过程结束时,发送一个停止记帐通知
。
stop-only 在被请求用户工程结束时发送一个停止记帐通知
none 禁止此链路或接口上的记帐服务
broadcast 启用发送记帐记录到多个3A服务器,同时向每个组中第一台服务器发送记帐记
录 www.2cto.com
method 规定一下关键子中的至少一个
group radius 用所有RADIUS服务器列表作为记帐
group tacacs+ 用所有列出的TACACS+服务器来记帐
group group-name 用RADIUS或TACACS+服务器的一个子集作为记帐
在路由器上启用下列命令以启用几张
aaa accounting system wait-start local 用记帐方法审计系统事件
aaa accounting network stop-only local 当网络服务中断,发送停止记录通知
aaa accounting exec start-stop local 当EXEC过程开始时,发送一个开始记录通知,结束时,发
送停止记录
aaa accounting commands 15 wait-start local 在任何级别15的命令开始之前,发送一个开始记录通
知,并等待确认,当命令中止时,发送一个停止记录通知。
6 校验配置
debug aaa authentication 显示有关认证功能的调试信息
debug aaa authorization 显示有关授权功能的调试信息
debug aaa accounting 显示有关记帐功能的调试信息