一、网络准入
1. 二层准入
二层准入就是用户在获取三层IP地址之前必须通过的认证。当用户在接入网络之初,需要同网络侧通过二层连接进行认证数据
交互,只有成功通过认证才能向DHCP服务器中申请IP地址,从而收发数据。
IETF首先定义了EAP(Extensible Authentication Protocol), 进行数据链路层进行验证,然后IETE给出了在以太网上运行方式,这就所熟知的802.1X。802.1X包含三个元素:客户端,认证方,认证服务器。
客户端:支持802.1X功能的终端设备;
认证方:接收客户端的认证请求,但本身并没有处理这些请求的能力,会将获得信息转发到认证服务器;
认证服务器:进行真正认证的安全服务器。
802.1X的认证流程是:
(1) 端口的初始化
做为认证方的接入交换机,探测到有一个客户端连接到一个端口后,它将这个端口设置为“未授权”状态,出于“未授权”状态的
端口除了802.1x报文不会转发其他任何流量。
(2) EAP初始化
交换机会定时向一个二层广播地址发出EAP请求信令,开启了802.1x功能的客户端在连上交换机后会保持侦听发往这个二层地址的信号,一旦捕捉到交换机发出的EAP请求,客户端马上回复一个自己ID的EAP应答。交换机收到后会通知后台的认证服务器,告诉它有一个新客户端需要进行开始EAP认证。
(3) EAP协商
客户端和认证服务器端约定一种EAP方式。
(4) 用户身份验证
1) 客户端和认证服务器约定一种EAP方式后,交换机向认证服务器发送认证信息,根据认证服务器判断结果。
2) 用户身份认证成功,交换机端口会被放开。
三层准入
(1) 客户端触发认证流程
客户端的网卡到交换机链路层就绪后的第一个动作,一般是DHC广播,向DHCP服务器发送请求IP地址,从而达到了认证。
如果客户端的IP地址是手动配置的,那么客户端的ARP请求也能够达到认证的目的。
当交换机听到来自客户端的DHCP和ARP之后,将IP和MAC做记录,并周期性的发送ARP来检查客户端的Health;
(2) 用户身份认证
交换机截获到HTTP请求后,会将用户重定向到一个预先设定好的认证服务器,认证服务器将认证结果返回给交换机,如果认证通过,交换机就会在端口上设置事先指定好的策略,包括预设置的ACL等。
3. 基于客户端的认证方式
杀毒软件就是一种典型的客户端接入方式。客户端和连接服务器保持一定的连接,当有新的版本的补丁要给客户端操作系统安装时,就让客户端允许接入更新补丁的服务器,补丁服务器将补丁发送给客户端后,就中断与补丁服务器的连接。
二、网络加密 ---SSL 加密
SSL加密主要有两个过程:一是握手;二是记录
1. SSL握手的主要目的是:
(1) 客户端与服务器需要就一组用于保护数据的算法达成一致;
(2) 确立一组那些算法所使用的对称加密密钥;
(3) 握手还可以选择对客户端进行认证。
2. SSL握手过程:
(1) 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;
(2) 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数;
(3) 客户端对服务器的证书进行验证(证书是否过期,服务器证书的CA是否可靠),并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(),并将加密后的信息发送给服务器;
(4) 客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出对称加密密钥和MAC密钥。
(5) 客户端将所有握手消息的MAC值发送给服务器;
(6) 服务器将所有握手消息的MAC值发送给客户端
以上握手的过程,存在随机数被修改的风险,所以分别在客户端和服务器端根据pre_master_secret以及客户端和服务器端的随机数值生成MAC密码并进行交换。
3. SSL 记录协议
在SSL中,实际的数据传输是使用SSL记录协议来实现的。
(1) 在传输片段之前,必须防止其遭到攻击。可以通过计算数据的MAC来提供完整性保护。MAC与片段一起进行传输,并由接收实现加以验证。将MAC附加到片段的尾部,并对数据与MAC整合在一起的内容进行加密,以形成经过加密的负载(Payload)。最后给负载装上头信息。头信息与经过加密的负载的连结称作记录(record),记录就是实际传输的内容.
(2) 记录头消息:指三种信息:内容类型、长度和SSL版本
(3) 记录头内容消息
SSL支持四种内容类型:application_data、alert、handshake和change_cipher_spec。
1) 使用SSL的软件发送和接收的所有数据都是以application_data类型来发送的,其他三种内容类型用于对通信进行管理,如完成握手和报告错误等。
2) 内容类型alert主要用于报告各种类型的错误。大多数alert(警示)用于报告握手中出现的问题,但也有一些指示在对记录试图进行解密或认证时发生的错误,alert消息的其他用途是指示连接将要关闭。
3) 内容类型handshake用于承载握手消息。即便是最初形成连接的握手消息也是通过记录层以handshake类型的记录来承载的。由于加密密钥还未确立,这些初始的消息并未经过加密或认证,但是其他处理过程是一样的。有可能在现有的连接上初始化一次新的握手,在这种情况下,新的握手记录就像其他的数据一样,要经过加密和认证。
4) change_cipher_spec消息表示记录加密及认证的改变。一旦握手商定了一组新的密钥,就发送change_cipher_spec来指示此刻将启用新的密钥。
参考:
1. 《腾云--云计算和大数据时代网络技术揭秘》
2. http://www.cnblogs.com/happyhippy/archive/2007/05/14/746476.html
http://xiaomics.blogbus.com/logs/28201452.html