《图解服务器端网络架构》学习笔记-第三章

第三部分 数据安全设计和负载均衡设计

§3.1传输层技术综述

1.传输层在网络层确保的连接性基础上,能够添加传输报头(分段的基础),根据应用程序要求控制通信。

2.发送数据的方式(接收数据可以理解为反向处理)

3.传输层使用端口号来识别数据属于哪一个应用程序,端口分为系统,用户,动态/私有三种。

4.传输层使用TCP和UDP两种协议,要求可靠性使用前者,要求实时性使用后者。

4.1.TCP:在传送之前建立一个虚拟的联通通路,一边传送一边确认。

4.2.UDP:客户端用UDP对数据包进行封装然后传送,服务器收到数据后利用UDP报头中所含的报头长和校验和来检查数据是否正确,检验合格后才真正接收数据。

5.TCP的工作原理

5.1.通过“控制位”管理连接的状态5.2.三次握手

5.2.1.按照SYN,SYN/ACK,ACK标志的前后顺序依次变化;

5.2.2.客户端使用序列号来排列数据,三次握手时使用的序列号和ACK号仅仅只是为了确定初始序列号而存在的;

5.2.3.选项头决定后续需要交换的应用数据的大小。

5.3.一次性高效发送数据

5.3.1.确认机制:使用序列号和ACK号相互配合运作来保证传输的可靠性;

5.3.2.超时重传机制:使用RTO(Retransmission Time Out,重传超时);

5.3.3.流量控制机制:使用“窗口大小”在保证可靠性的同时提高传输效率。

5.4.发送结束之后要完全关闭TCP连接

5.4.1.使用FIN标志表示已完成数据传递,后续标志分别是FIN/ACK,ACK,FIN/ACK,ACK。

5.4.2.节点收到FIN标志后会等待一段TIME-WAIT时间。

6.MTU与MSS的差别

6.1.MTU:网络层中数据的大小;

6.2.MSS:应用程序方面的数据大小;

6.3.默认情况下,MSS=MTU-40(TCP/IP报头)。

6.4.DF=0表示允许分片,如果出口处的MTU值比入口处的MTU值小,直接分片;

6.5.DF=1表示不允许分片,如果出口处的MTU值比入口处的MTU值小,有以下处理办法:

6.5.1.使用ICMP获悉MTU的值,改变发送数据包的大小;

6.5.2.将DF位清零,再发送;

6.5.3.在三次握手时改写TCP选项头中MSS值的大小。

§3.2防火墙守卫系统

1.防火墙的通信控制功能:+。

2.状态检测的步骤:

2.1.通过外部接口收到SYN包后,防火墙首先查看过滤规则;

2.2.确定可以放行后,在连接表中建立条目,同时添加允许返回通信的规则;

2.3.防火墙凭借ACK包判定通信成功,在连接上可以交换数据;

2.4.防火墙会监控创建的连接是否有用,超时一定的时间未被使用,该条目会和允许返回的通信规则一起被强制删除;

2.5.连接完全关闭后,防火墙会将连接条目和允许返回通信的规则一起删除。2.6.小结:状态检测监控非正常通信,一旦出现问题会立即阻断。

3.包过滤的步骤:

3.1.查看过滤规则;

3.2.对于通信涉及的双向通路都需要放行(与状态检测自动放行返回通信不同)。

3.3注意:允许返回通信的规则易受到攻击。

4.防火墙技术的进步表现在两个方面:功能的完善和防护范围的扩大。

§3.3通过负载均衡器分散服务器的负荷

1.负载均衡器是一种利用网络层(IP地址)和传输层(端口号)的信息为多台服务器分配连接的设备。

2.目的NAT是服务器负载均衡技术的基础,其步骤如下:

2.1.负载均衡器通过虚拟服务器接收客户端的连接,使用连接表管理这些目的IP地址为虚拟服务器IP的连接;

2.2.负载均衡器将目的IP地址动态转换为服务器的实际IP地址,并写入连接表;

2.3.服务器将负载均衡器作为默认网关处理,负载均衡器收到返回通信时执行源IP地址NAT操作,同样使用连接表管理。

3.动态转换IP地址取决于三级健康检查和负载均衡方式。

L3检查:通过ICMP来检查IP地址是否正常;

L4检查:通过三次握手来检查端口号是否正常;

L7检查:通过真实的应用通信来检查应用程序是否正常;

负载均衡方式:

4.会话保持功能使用会话保持表记录连接中的特定信息以及分配的服务器,将应用程序的同一会话持续分配给同一台服务器,从全局出发,这种方式确实能够起到负载均衡的效果。

4.1.基于源IP地址的会话保持,不适用于多客户端共用一个源IP地址的环境;4.2.基于Cookie的会话保持,仅在使用HTTP/HTTPS的环境中有效。

说明:Cookie既指客户端在与WEB服务器通信的过程中将浏览信息暂存于浏览器的机制,也指所保存的文件。

5.负载均衡技术在应用层的使用

5.1.SSL加速功能可代为执行SSL处理,减轻后端WEB服务器的负担;

5.2.通过HTTP压缩功能有效利用宽带:负载均衡器将来自服务器的HTTP数据压缩之后再交给客户端,实现高速传送;

5.3.通过连接汇聚功能减轻WEB服务器的负荷:负载均衡器在前端对客户端进行终结处理,重新建立不同于客户端的连接;后端的WEB服务器实际上处理的是与负载均衡器之间的连接。

§3.4从会话层到应用层的技术-HTTP支撑着互联网

1.HTTP的版本

1.1.HTTP/1.0为每个请求建立TCP连接,结束之后又将其断开;WEB处理器负荷繁重,而且还会产生开销。

1.2.HTTP/1.1使用“持久连接”的概念,先建立一个TCP连接,然后在这个连接上发送多个HTTP请求,提高了连接的效率。

2.HTTP是一种客户端和服务器之间的交互协议,在HTTP中交换的消息由两个部分组成:包含控制信息的消息头和包含正文的消息体。

2.1.Connection头管理持久连接,Keep-Alive头包含持久连接的相关信息;2.2.Accept-Encoding头通知可支持压缩的格式,Content-Encoding头确认压缩的格式,Content-type头表示压缩文件的对象;

2.3.User-Agent头向服务器通告浏览器自身信息;

2.4.Cookie机制步骤:WEB服务器收到来自客户端的用户信息,对当前用户ID建立一个会话ID,并在HTTP响应报头中加入Set-Cookie头→客户端将Cookie信息保存在内存中,以后再向服务器发出请求时会在Cookie头中加入会话ID→服务器根据Cookie信息判断出用户ID并返回客户的专属网页。

3.客户端的请求行由三个部分组成:方法(HTTP请求的种类),URI(Uniform Resource Identifier,统一资源标识符,表示请求的地点)和HTTP版本。

4.服务器收到HTTP请求后,返回的处理结果包括状态码,状态码说明和HTTP版本;状态码是一个三位数的编号,详细信息见表格:

§3.5从会话层到应用层的技术-用SSL(Secure Socket Layer)保护数据

1.SSL保护数据不受网络不法侵害,HTTPS是HTTP over SSL的简称,表示对HTTP做了SSL处理。

2.基本功能

2.1.对客户端和服务器之间的通信加密,防止窃听;

2.2.将信息摘要和信息本身一同发送,检测数据是否被篡改;

2.3.发送数据之前根据对方提供的数字证书识别身份是否冒充。

3.SSL在传输层运作,将TCP应用协议视为加密对象。

4.加密方式分为共享密钥和非对称密钥两种方式;SSL使用的是混合加密方式,步骤如下:

4.1.收信方生成公钥和私钥,并将公钥对外发布;

4.2.发信方用公钥将共享密钥加密后发送给收信方;

4.3.收信方用私钥解密后获得共享密钥;

4.4.发信方和收信方利用共享密钥加解密信息。

5.消息摘要可以提高信息比较的效率

5.1.特点1:无论源数据有多大,计算出来的摘要大小都是相同的;

5.2.特点2:无法从信息摘要恢复完整的数据;

6.SSL通过第三方认证进行证书验证,即让可信任的第三方CA(Certificate Authority,证书授权)机构以数字签名的形式对通信对象进行身份认可,然后在数字签名中使用信息摘要。

6.1.数字证书由签名前证书,数字签名算法和数字签名三个部分构成;签名前证书是服务器和服务器持有者的信息,将签名前证书使用签名算法得到信息摘要后再用CA私钥加密就得到数字签名;

6.2.收信方收到数字证书后,用CA的公钥解密,然后再与签名前证书对比。

7.将一台服务器作为SSL公开服务器之前的准备工作:

7.1.产生自己的私钥;

7.2.用私钥生成CSR(Certificate Signing Request,证书签名请求),由签名前证书信息构成,并发送给CA机构;

7.3.CA机构按照流程进行审核,通过之后对CSR进行哈希处理,再用CA的私钥加密后作为数字签名添加到服务器证书中;CA机构会发行服务器证书并交给请求方;

7.4.将从CA机构获得的服务器证书安装到SSL服务器上。

7.5.注意:CA机构是阶层性构造,最顶层的是路由CA机构,中间CA机构是被CA机构认可的下属CA机构。

8.SSL在TCP三次握手结束之后再进行SSL握手处理,然后根据在该处理中决定的信息给消息加密;SSL握手的步骤如下:

8.1.用client hello向服务器出示能够在本机中使用或应当同步的参数,比如所支持的哈希算法,SSL版本,会话ID等;

8.2.证明通信对象的身份:服务器返回server hello,协商通信所使用的参数→用certificate发送本机的服务器证书,通知对方自己的身份→用server hello done告知对方所有信息已经发送完毕→客户端收到证书后验证真伪;

8.3.交换共享密钥:客户端生成预主密钥,并在client key exchange中用公钥对预主密钥加密再发送给服务器。

8.4.注意:最后使用的共享密钥是由预主密钥,通过client hello获得的client random以及通过server hello获得的server random混合而成。

8.5.最终确认:双方交换change cipher spec并确定加密算法

9.用客户端证书对客户端进行认证

9.1.SSL服务器会要求客户端提供客户端证书,代替用户名和密码,通过认证之后才允许连接;双方互发证书,彼此进行身份认证,安全性就能得到更高的保障。

9.2.客户端认证的SSL握手包括服务器认证的握手,请求客户端证书和对客户端认证三个进程,步骤如下:

9.2.1.服务器认证的握手,直到用certificate发送服务器证书,之后通过certificate request要求客户端发送证书,并出示可以接受的CA机构清单;

9.2.2.客户端通过client certificate将一个符合要求的客户端证书发送给服务器,如果没有符合服务器要求的客户端证书,返回no_certificate,服务器会自动断开连接;

9.2.3.客户端在client key exchange中将预主密钥发送给服务器,再通过certificate verify算出从client hello到client key exchange的信息摘要,用私钥加密后发送给服务器,服务器用公钥解密后,再与自己计算的信息摘要对比,无误后结束整个客户端认证过程。

§3.6从会话层到应用层的技术-用FTP(File Transfer Protocol)传输文件

1.FTP是控制连接和数据连接的组合,有两种传输模式:主动模式和被动模式。

2.主动模式在控制连接中使用TCP21,在数据连接中使用TCP20,客户端从FTP服务器获取某个文件的步骤如下:

2.1.客户端向服务器提出使用TCP21连接的请求,三次握手,建立控制连接;2.2.在控制连接上进行双向用户认证;

2.3.客户端通过控制连接,使用“PORT,x,y”发送用于数据连接的端口号要素值(256*x+y),和RETR(GET)命令;

2.4.服务器收到RETR命令后,在源端口号写入TCP20,在目的端口写入“256*x+y”并请求连接,TCP20三次握手,建立数据连接;

注意:服务器提出连接请求。

2.5.应用数据发送完,TCP就断开并关闭数据连接,但是控制连接仍然在线;2.6.直到用户登出系统,TCP21才执行断开控制连接操作,所有处理才结束。

3.被动连接在控制连接中使用TCP21,在数据连接中使用不定端口;该模式仅在客户端宣告其处于被动模式才启用;客户端从FTP服务器获取某个文件的步骤如下:

3.1.建立控制连接,进行双向用户认证(同主动模式);

3.2.客户端通过PASV命令提出使用被动模式请求,服务器返回“Entering passive mode,x,y”给出用于数据连接的端口号要素值;

3.3.客户端使用控制连接向服务器发出RETR命令,随机写入源端口号,在目的端口写入“256*x+y”并请求连接,TCP三次握手,建立数据连接;

3.4.其余步骤同主动模式的“2.5,2.6”。

4.防火墙或负载均衡器中应将FTP独立并放在应用层面上处理,需要满足两个要求:

4.1.监视FTP数据连接中的端口信息,自动允许数据连接;

4.2.避免控制连接因空闲时间过长而断开;

实际上,设备可以设置为“收到来自TCP21的连接就当成FTP来处理”。

§3.7从会话层到应用层的技术-用DNS(Domain Name System)解析名称

1.用UDP进行名称解析的步骤:

1.1.客户端向DNS服务器发送查询域名的UDP包;

1.2.DNS服务器中将IP地址和域名信息保存在区域文件中,收到查询后,DNS服务器查找相应的区域文件并返回;

1.3.客户端得到DNS响应,进行下一步操作。

2.用TCP进行区域传输

区域传输功能:在主服务器和从属服务器之间同步区域文件;用于DNS服务器冗余配置。BIND软件(DNS服务器事实标准)的工作机制如下:

2.1.区域文件失效时,从属服务器会通过UDP53请求主服务器发送包含DNS服务器管理信息的SOA记录;

2.2.主服务器通过UDP53将区域文件中的SOA记录返回给从属服务器;

2.3.从属服务器察看序列号,如果有新的区域文件,就通过TCP53请求主服务器进行区域传输;

2.4.主服务器通过TCP53返回区域信息。

§3.8数据安全设计

1.定义安全区域

安全区域指处于同一数据安全水平的VLAN群,一般分为三个区域来管理:Untrust,DMZ和Trust区域。

1.1.防火墙的目的就是防止系统受到来自Untrust区域的网络攻击;

1.2.DMZ区域配置与Untrust区域直接进行交互的公开服务器,因为公开服务器会受到大量的恶意攻击,所以要控制DMZ区域与Trust区域之间的通信;1.3.Trust区域配置非公开服务器和公司内部用户。

2.提取通信要素并进行分组管理

核心是将用途和权限相同的对象都集中到一个VLAN用户组中,并确定易用的对象名称和组名。

3.选择合适的访问控制策略

如果通信的方向是从数据安全水平较低的区域到较高的区域,只允许最低限度的必需通信,如果通信方向相反,可以适当放宽限制。

4.通过多级防御提高安全系数

防火墙的监控对象仅仅是经过防火墙的通信,应将防火墙和专用设备,专用软件搭配使用,多级防御是数据安全的基本原则;对于系统来说稳定性是最重要的,启用新功能时要慎重。

5.默认启动的服务应该控制在最小范围内

关闭非必要的服务,限制源IP来精简真正需要的服务访问,保护设备少受恶意攻击。

§3.9负载均衡设计

1.确定负载均衡的对象

并非所有的通信都需要负载均衡。

2.会话保持

2.1.分类:源IP会话保持(工作在网络层)和Cookie会话保持(工作在应用程序层面)。

2.2.会话超时要比应用程序超时时限稍长。

3.健康检查

3.1.执行不同层次的检查,划分不同类别的故障;

3.2.间隔越短,检查出故障的速度越快;频率越高,服务器承载的负荷越大;3.3.L3检查是ICMP交互,不会给服务器带来负担;L7检查会增加服务器的负荷,必要时可将健康检查的层次降低到L4,尽量减少其对服务的影响。

4.由服务器的规格和通信类型决定负载均衡方式,比如按照顺序/权重/连接数进行分配。

5.开启负载均衡器的可选功能的注意点

5.1.开启SSL加速需要注意负载均衡器原有的密钥和证书(也许需要备份/转移)和CA要求的密钥长度;

5.2.启用HTTP压缩功能之前要预览效果;

5.3.启用连接汇集功能之前要谨慎测试;

原发布于网易博客“抛抛小破邮”

博客版写于2017/12/06

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180620G1HUJL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券