本笔记主要介绍AAA认证(认证、授权、计费),RADIUS协议概述和应用场景,HWTACACS协议概述和应用场景,LDAP基本概念和认证流程。
信息安全基础知识笔记07 AAA认证
当前网络环境中,网络安全的威胁更多的来源于应用层,这也使得企业对于网络访问控制提出更高的要求。如何精确的识别出用户,保证用户的合法应用正常进行,阻断用户有安全隐患的应用等问题,已成为现阶段企业对网络安全关注的焦点。但IP不等于用户、端口不等于应用,传统防火墙基于IP/端口的五元组访问控制策略已不能有效的应对现阶段网络环境的巨大变化。
本笔记主要介绍AAA认证(认证、授权、计费),RADIUS协议概述和应用场景,HWTACACS协议概述和应用场景,LDAP基本概念和认证流程。
AAA基本概念
Authentication认证
当用户希望访问Internet资源。首先使用Authentication认证技术,用户输入用户名密码。
Authorization 授权
当通过认证后,通过Authorization 授权,授权不同用户访问的资源,可以访问百度,或者Google。
Accounting 计费
在客户访问期间,通过Accounting 计费,记录所做的操作和时长。
(1)Authentication认证
认证是指通过一定的手段,完成对用户身份的确认。
I、你所知道的信息
你所拥有的东西
III、独一无二的身体特征
认证的方式包括:
我知道:用户所知道的信息(如:密码、个人识别号(PIN)等)
我拥有:用户所拥有的信息(如:令牌卡、智能卡或银行卡)
我具有:用户所具有的生物特征(如:指纹、声音、视网膜、DNA)
(2)Authorization 授权
授权用户可以使用哪些业务,可以使用那些命令。
I、用户能访问的资源
II、用户能使用的命令
授权用户可以使用哪些业务。如公共业务,还是敏感业务。
授权用户管理设备时,可以使用那些命令。如可以使用Display命令,不能使用delete,copy命令。
(3)Accounting 计费
计费主要的含义有三个:
I、用户用多长时间
II、用户花了多少钱
III、用户做了哪些操作
(4)本地认证和服务器认证
① 不认证:
对用户非常信任,不对其进行合法检查,一般情况下不采用这种方式。
本地认证:
配置在(本地)网络接入服务器上。
本地认证的优点是速度快,可以为运营降低成本;缺点是存储信息量受设备硬件条件限制。
服务器认证:
配置在(第三方)认证服务器上。
AAA支持通过RADIUS(Remote Authentication Dial In User Service)协议或HWTACACS (HuaWei Terminal Access Controller Access Control System)协议进行远端认证。
下面会分别对这两个协议做详细的介绍。
RADIUS协议概述
AAA可以用多种协议来实现,最常用的是RADIUS协议。
网络接入服务器NAS(Network Access Server)系统通过使用RADIUS协议,负责把用户的认证和计费信息传递给RADIUS服务器。
RADIUS服务器负责接收用户的认证和计费信息,完成认证,并把结果返回给NAS。
RADIUS协议规定了NAS与RADIUS服务器之间传递用户信息和计费信息以及认证和计费结果的方式。
RADIUS使用UDP(User Datagram Protocol)作为传输协议,具有良好的实时性;同时也支持重传机制和备用服务器机制,从而具有较好的可靠性。
(1)RADIUS客户端与服务器间的消息流程
Step 1:用户登录USG或接入服务器等网络设备时,会将用户名和密码发送给该网络接入服务器;
Step 2:该网络设备中的网络接入服务器的RADIUS客户端接收用户名和密码,并向RADIUS服务器发送认证请求;
Step 3:RADIUS服务器接收到合法的请求后,完成认证,并把所需的用户授权信息返回给RADIUS客户端;对于非法的请求,RADIUS服务器返回认证失败的信息给客户端。
(2)RADIUS报文结构
RADIUS的消息结构如图所示:
(8 bits=1 Byte):消息类型,用来标识RADIUS报文类型。如接入请求、接入允许等。
Code = 1: Access-Request,接入请求报文
Code = 2: Access-Accept,接入成功回应报文
Code = 3: Access-Reject,接入拒绝回应报文
Code = 4: Accounting-Request,计费请求报文
Code = 5: Accounting-Response,计费回应报文
Code = 11: Access-Challenge,接入挑战报文
Code = 12: Status-Server (experimental),服务器状态报文(试验)
Code = 13: Status-Client (experimental),客户端状态报文(试验)
Code = 255: Reserved,保留
(8 bits=1 Byte):用于匹配请求和回应报文。若在一个很短的时间内接收到相同的源IP地址、源UDP端口号和相同Identifier域的请求报文,RADIUS服务器就可以认为是重复的请求报文。
一般是顺序递增的数字,请求报文和响应报文中该字段必须匹配。
(16 bits=2 Bytes):所有域的总长度。包含了报文中的Code域,Identifier域,Length域,Authenticator域和属性域的总长度。
如果收到的报文实际长度超过Length,超过部分被当做填充内容忽略掉,如果实际长度小于Length,报文被丢弃。
(144 bits=16 Bytes):验证字,用于验证RADIUS的合法性。主要用于认证来自服务端的响应,也用于用户密码的加密处理中。
消息的内容主体,主要是用户相关的各种属性,承载认证、授权、计费以及配置等信息。采用TLV格式:
类型(Type): 占位一个字节。具体类型值对应的属性名请参见下表。
长度(Length)域:占位一个字节,表示包括Type、Length、Value域在内的属性的长度。
值(Value)域:占位零个或者更多字节,它包含了属性信息的详细描述。值域的格式和长度是由属性的类型和长度决定的。需要指出的是,在RADIUS中没有任何类型的属性值是以NULL(十六进制的0x00)结束的。
(3)RADIUS报文交互流程
Step 1:用户输入用户名密码
Step 2:认证请求
Step 3:认证接受
Step 4:计费开始请求
Step 5:计费开始请求响应报文
Step 6:用户访问资源
Step 7:计费结束请求报文
Step 8:计费结束请求响应报文
Step 9:访问结束
HWTACACS协议概述
是在TACACS协议的基础上进行了功能增强的安全协议。该协议与RADIUS协议的功能类似,采用客户端/服务器模式实现NAS与TACACS+服务器之间的通信。
HWTACACS的典型应用是对需要登录到设备上进行操作的终端用户进行认证、授权、计费。设备作为HWTACACS的客户端,将用户名和密码发给HWTACACS服务器进行验证。用户验证通过并得到授权之后可以登录到设备上进行操作。
(1)HWTACACS协议应用场景
(2)HWTACACS和RADIUS比较
HWTACACS协议与RADIUS协议的比较。
LDAP协议概述
是从X.500目录访问协议的基础上发展过来的,X.500是层次型的,所有对象被组织成树形结构。X.500目录服务实现身份认证、访问控制。LDAP就是简化X.500目录的复杂度,同时适应Internet的需要。
目录服务就是由目录数据库和一套访问协议组成的系统。可以认为是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。而且是动态的,灵活的,易扩展的。
类似以下的信息适合储存在目录中:
① 企业员工信息,如姓名、邮箱、手机号码等;
公司设备的物理信息,如IP地址、放置位置、厂商、购买时间等;
③ 公用证书和安全密钥;
特点如下:
① 目录方式组织数据;
② 对外提供一个统一的访问点;
③ 支持数据的分布式数据存储;
④ 优化查询,读取数据较快。
(1)LDAP概念
在开始介绍之前先来看几个问题:
1. 我们日常的办公系统是不是有多个?
2. 每个系统之间是不是都有独立的账号密码?
3. 密码多了,有时候半天想不起来哪个密码对应哪个系统?
4. 每次新项目的开发,都需要重新开发和维护一套用户密码?
5. 维护多套系统的用户是不是非常头疼?
各个不同的系统登录使用同个认证服务。而存储认证信息的是以目录数据库(树状结构)方式来进行存储的。
在LDAP中,信息以树状方式组织,基本数据单元是条目,而每个条目由属性构成,属性由类型(Type)和一个或多个值(Value)组成。
有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。
① 目录信息树DIT(Directory Information Tree)
树中的每个节点是一个条目。
② 条目Entry
目录信息树中的一个节点,是目录信息中最基本的单位,由一系列属性构成。
每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
③ 属性Attribute
一个属性有属性类型和一个或多个属性值构成。
④ DC(Domain Component)
域名的部分,其格式是将完整的域名分成几部分。
如域名为example.com变为dc=example,dc=com(一条记录的所属位置)
⑤ UID(User Id)
一条记录的ID。
⑥ OU(Organization Unit)
组织单位,组织单位可以包含其他各种对象(包括其他组织单元),
⑦ CN(Common Name)
一条记录的公共名称。
⑧ 相对标识名RDN(Relative Distinguished Name)
相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,唯一标识同一父条目的子条目。
如“uid=zheng”或“cn=admin”。
⑨ 唯一标识名DN(Distinguished Name)
绝对辨别名,一个目录信息树种唯一标识一个条目的名字。
如“uid=zheng,ou=oa,dc=example,dc=com”
Tips:
唯一标识名DN有三个属性,分别是DC (Domain Component),CN (Common Name),OU (Organizational Unit)。
例如:“CN=admin, OU=guest, DC=domainname, DC=com”
在上面的代码中
(2)LDAP认证流程
认证流程描述如下:
用户输入用户名/密码发起登录请求,防火墙和LDAP服务器建立TCP连接。
防火墙以管理员DN和密码向LDAP服务器发送绑定请求报文用以获得查询权限。
绑定成功后,LDAP服务器向防火墙发送绑定回应报文。
防火墙使用用户输入的用户名向LDAP服务器发送用户DN查询请求报文。
⑤ LDAP服务器根据用户DN进行查找,如果查询成功测发送查询回应报文。
防火墙使用查询到的用户DN和用户输入的密码向LDAP服务器发送用户DN绑定请求报文,LDAP服务器查询用户密码是否正确。
绑定成功后,LDAP服务器发送绑定回应报文。
⑧ 授权成功后,防火墙通知用户登录成功。
用户认证
AAA技术为用户认证提供手段。
用户认证分类有:
① 本地认证
访问者通过Portal认证页面将标识其身份的用户名和密码发送给防火墙,防火墙上存储了密码,验证过程在防火墙上进行,该方式称为本地认证。
② 服务器认证
访问者通过Portal认证页面将标识其身份的用户名和密码发送给防火墙,防火墙上没有存储密码,防火墙将用户名和密码发送至第三方认证服务器,验证过程在认证服务器上进行,该方式称为服务器认证。
③ 单点登录
只记录访问者的身份信息不参与认证过程,该方式称为单点登录(Single Sign-On)。
④ 短信认证
访问者通过Portal认证页面获取短信验证码,然后输入短信验证码即通过认证。防火墙通过校验短信验证码认证访问者。