Authentication,Authorization,Accounting (AAA、认证,授权,计费)

  • 认证(Authentication):是对用户的身份进行验证,判断其是否为合法用户
  • 授权(Authorization):是对通过认证的用户,授权其可以使用哪些服务
  • 计费(Accounting):是记录用户使用网络服务的资源情况,这些信息将作为计费的依据

AAA 一般采用 C/S(客户端/服务器)模式,这种模式结构简单、扩展性好,且便于集中管理用户信息。AAA 客户端运行于 NAS(Network Access Server,网络接入服务器)上,AAA 服务器用于集中管理用户信息

工作过程

  1. 用户通过网络与 NAS 建立连接,从而获得访问其它网络的权利或取得网络资源
  2. NAS负责把用户的认证、授权、计费信息透传给 AAA 服务器
  3. AAA 服务器负责接收用户的连接请求,并对用户身份进行验证,返回用户配置信息给 NAS
  4. NAS 根据服务器的返回信息进行配置并告知用户结果

AAA 的各种实现

AAA Null 本地 远端
Authentication
(认证)
不认证
对用户非常信任,不对其进行合法检查
本地认证
将用户信息配置在网络接入服务器上。本地认证的优点是速度快,可以为运营降低成本,缺点是存储信息量受设备硬件条件限制
远端认证
将用户信息配置在认证服务器上。支持通过 RADIUS 协议或 HWTACACS 协议进行远端认证
Authorization
(授权)
不授权
不对用户进行授权处理
本地授权
根据网络接入服务器为本地用户账号配置的相关属性进行授权
远端授权
由服务器对用户进行授权
Accounting
(计费)
不计费
不对用户计费
/ 远端计费
支持通过 RADIUS 服务器或 HWTACACS 服务器进行远端计费

if-authenticated 授权:如果用户通过了认证,而且使用的认证模式是本地或远端认证,则用户授权通过
RADIUS 认证成功后授权:RADIUS 协议的认证和授权是绑定在一起的,不能单独使用 RADIUS 进行授权

AAA 域

AAA 可以通过域来对用户进行管理,不同的域可以关联不同的认证、授权和计费方案

File Transfer Protocol(FTP、文件传输协议)

FTP 是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议,基于 TCP 传输,默认端口号分别为 20 (数据端口) 21 (控制端口)

FTP 传输过程

FTP传输过程

FTP 连接模式

FTP 有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题

主动模式
PORT

被动模式
PASV

FTP 传输模式

  • ASCII 模式
    假定用户正在拷贝的文件包含的简单 ASCII 码文本,如果在远程机器上运行的不是 UNIX,当文件传输时 ftp 通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式

  • Binary 模式
    在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行

Telnet

Telnet 使用虚拟终端的形式,提供双向、以文字字符串为主的命令行接口交互功能。属于 TCP/IP 协议族的其中之一,是互联网远程登录服务的标准协议和主要方式,常用于服务器的远程控制,可供用户在本地主机执行远程主机上的工作

连接过程

Telnet传输过程

认证模式(AAA/Password)

AAA认证

Password认证

Access Control List (ACL、访问控制表)

访问控制表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制表,每一个(文件系统内的)对象对应一个串列主体。访问控制表由访问控制条目(access control entries,ACE)组成。访问控制表描述用户或系统进程对每个对象的访问控制权限

ACL 分类

通常分为 数字型 ACL 与 命名型 ACL 。也能根据 IPv4 和 IPv6 分为:ACL4 与 ACL6

  • 基本 ACL (2000-2999)
    • 源 IP 地址
    • 分片信息
    • 生效时间段
  • 高级 ACL (3000-3999)
    • 源 IP 地址
    • 目的 IP 地址
    • IP 协议类型
    • ICMP 类型
    • TCP 源/目的端口
    • UDP 源/目的端口号
    • 生效时间段
  • 二层 ACL (4000-4999)
    • 源 MAC 地址
    • 目的 MAC 地址
    • 二层协议类型
  • 自定义 ACL (5000-5999)
    • 报文头
    • 偏移位置
    • 字符串掩码
    • 用户自定义字符串
  • 用户 ACL (6000-6031)
    • 源 IP 地址
    • 目的 IP 地址
    • IP 协议类型
    • ICMP 类型
    • TCP 源端口/目的端口
    • UDP 源端口/目的端口号

ACL 工作流程

ACL

通配符

通配符

ACL 的匹配顺序

一条ACL可以由多条 “deny | permit” 语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方,对于规则之间存在重复或矛盾的情形,报文的匹配结果与 ACL 的匹配顺序是息息相关
设备支持两种 ACL 匹配顺序:配置顺序(config模式)和自动排序(auto模式)。缺省的 ACL 匹配顺序是 config 模式

  • 配置顺序

    • 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配
    • 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前 ACL 内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配
  • 自动顺序
    自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配

步长
步长是指系统自动为 ACL 规则分配编号时,每个相邻规则编号之间的差值。
系统为 ACL 中首条未手工指定编号的规则分配编号时,使用步长值作为该规则的起始编号;为后续规则分配编号时,则使用大于当前 ACL 内最大规则编号且是步长整数倍的最小整数作为规则编号。例如ACL中包含规则rule 5和rule 12,ACL(特指基本ACL、高级ACL、二层ACL、用户ACL)的缺省步长为5,大于12且是5的倍数的最小整数是15,所以系统分配给新配置的规则的编号为15

相关指令

用户视图

登录 FTP 服务器

# ftp IP地址
ftp 1.1.1.1

Telnet 远程登录

# telnet IP地址
telnet 172.0.0.1

TFTP 客户端指令

# tftp tftp服务器地址 {get|put} 文件名
tftp 1.1.1.1 get test.txt   # 下载
tftp 1.1.1.1 put test.txt   # 上传

系统视图

查看域信息

# display domain name 域名
display domain name default_admin   # default_admin 默认域

查看用户远程登录记录

display aaa offline-record all

进入 vty 视图

user-interface vty 0 4

启用 FTP 服务

ftp server enable

指定 FTP 默认路径

# set default ftp-directory 路径
set default ftp-directory flash:/

创建 ACL

# acl {2000-2999|3000-3999|4000-4999}   
acl 2000

# acl name 名字 ACL类别
acl name test 2000

查看 ACL 信息

# display acl ACL编号
display acl 2000

接口视图

出/入接口流量过滤

# traffic-filter {inbound|outbound} acl ACL编号/ACL名字
traffic-filter inbound acl 2000

vty 视图

指定认证模式

# authentication-mode 模式     
authentication-mode aaa     

指定密码认证

# set authentication password cipher 密码
set authentication password cipher 123

指定远程连接协议

# protocol inbound {all|telnet}   # 缺省情况下支持 SSH 协议(Secure Shell Protocol)和 telnet
protocol inbound telnet

AAA 视图

创建认证计划

# authentication-scheme 计划名   
authentication-scheme auth1     

# 指定认证模式
authentication-mode local       

创建授权计划

# authorization-scheme 计划名
authorization-scheme auth2     
# 指定授权模式
authorization-mode local       

创建域

# domain 域名
domain DOMAIN 

authentication-scheme auth1     # 在该域内指定认证计划
authorization-scheme  auth2     # 在该域内指定授权计划

创建用户

# local-user 用户名[@域名] password 加密方式 密码     
local-user NAME@DOMAIN password cipher PW     

指定用户类型

# local-user 用户名[@域名] service-type {ftp|http|ppp|ssh|telnet|...} 
local-user NAME@DOMAIN service-type telnet

指定用户权限

# local-user 用户名[@域名] privilege level <0-15>
local-user NAME@DOMAIN privilege level 0 

指定用户最大连接数

# local-user 用户名 access-limit 连接数
local-user NAME access-limit 200

指定用户默认路径

# local-user 用户名 ftp-directory 路径
local-user NAME ftp-directory flash:/

指定用户超时时间

# local-user 用户名 idle-timeout 时间
local-user NAME idle-timeout 0

指定用户权限

# local-user 用户名 privilege level <0-15>  
local-user NAME privilege level 3  

ACL 视图

创建放行规则

# rule 编号 permit 匹配项
rule 5 permit source 1.1.1.1 0.0.0.255

创建拦截规则

# rule 编号 deny 匹配项
rule 5 deny source 1.1.1.1 0.0.0.255

FTP 视图

下载文件

[ftp]get 1.txt

上传文件

[ftp]put 1.txt