网络技术基础
关键点
- 理解模型:OSI、TCP/IP、Cisco模型和纵深防御模型
- 理解第二层相关:冲突域、广播域、交换与集线、端口安全以及生成树
- 理解第三层相关:包含了IP路由协议;内部路由协议,如RIPv1/v2和OSPF;外部路由协议,如BGP、子网络/超网络;网络地址转换(NAT)和IPv6
- 理解第四层相关:包含了TCP和UDP、会话的建立、报头和选项、段口地址转换(PAT)以及常用端口
- 理解第五~七层相关:应用漏洞】特洛伊/蠕虫/病毒、内容过滤和IDS/IPS/IDP
OSI模型
- 主机:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
- 交换机:物理层、数据链路层
- 路由器:物理层、数据链路层、网络层
物理层:比特流
- 设备:缆线、媒体转换器、电缆连接头、接口连接器、信号发送接收器、信号处理器、无限接口
- 标准:DSL、以太网、DOCSIS、USB、IEEE 802.11x/Vi-Fi物理层、蓝牙物理层
- 漏洞:物理访问、搭线窃听和频率拦截
数据链路层:数据帧
- 从物理层接收数据,形成数据报或数据帧。
- 格式化数据,形成的数据帧包括地址(源地址和目的地址)、数据实体和校验码。
- 最大传输单位(Maximum transmission unit, MTU),它定义了能够在网络媒介中进行可靠传输的数据报的最大长度。
- 48比特位地址,介质访问控制(Media Access Control, MAC)地址。
- 漏洞:MAC地址欺骗、网络嗅探和WEP/WPA攻击。
网络层:数据报
- 负责检查数据报地址,并依据其路由表将数据传送至下一位置。
- 通过使用MTU,网络层同事负责将大数据拆分成小包进行传输,接收方负责组包。
- 不具备检验数据报可靠性的功能(即差错控制),差错控制是传输层需要实现的功能。
- 漏洞:分裂攻击、路由协议攻击、PING攻击和ARP欺骗。
传输层:数据片段
- 负责提供可靠、有效的数据传输。
- 数据报校验码、错包重发请求控制和传输控制实现传输层的可靠性。
- 漏洞:拒绝服务(denial-of-service, DoS)攻击、端口扫描、SYN/ACK/FIN攻击和中间人攻击。
会话层:会话数据单元
- 提供设备之间的连接,负责处理连接如何使用。
- 协议:安全套接字层(secure sockets layer, SSL),远程过程调用(remote procedure call, RPC),和NETBIOS。
- 漏洞:密码攻击、会话劫持、DoS攻击和NETBIOS攻击。
表示层:表示数据单元
- 提供了高层应用的一般接口,负责执行协议转换、数据压缩、语法转换。
- X-Windows的X协议
- 漏洞:HTML代码检测和恶意控制。
应用层:应用数据单元
- 协议包括SMTP/POP、HTTP、FTP。
- 漏洞:特洛伊木马、蠕虫、病毒、cookie损坏、缓冲区溢出、网络钓鱼、网络服务劫持、间谍软件和按键记录程序。
在OSI模型中实现纵深防御
- 纵深防御更注重的是策略和程序;
- 纵深防御包括物理安全(设备安全)和人为安全(背景调查);
- 纵深防御意味着使用多种途径和多种保护方法实现安全保护。
生成树协议(Spanning Tree Protocol, STP)
- 用途是消除网络环路,通过选择性开通和堵塞端口控制网络传输来实现。
广播域和冲突域
- 冲突域是指直接连接在同一集线器或中继器上的设备的集合。
- 广播域是指域中每一个设备都可以直接与另外一个设备进行通信。交换机和集线器的所有端口组成一个广播域,而路由器的一个端口就是一个广播域
解释TCP的三次握手
- 客户端发送一个包含SYN即同步(Synchronize)标志和TCP连接初始序号(X)的TCP报文;
- 服务器返回一个SYN/ACK的报文和服务端序号(Y),表示客户端的请求被接受,同事TCP序号被加1(X+1),ACK即确认(Acknowledgement);
- 客户端也返回一个确认报文ACK给服务端同样TCP序列号被加1(X+1),服务端序号被加1(Y+1)。
为什么需要三次握手
采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。
失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。
为什么断开连接需要四次挥手
保证两边都发送完了所有的包。因为每个方向都需要一个FIN和ACK,当一端发送了FIN包之后,处于半关闭状态,此时仍然可以接收数据包。 在建立连接时,服务器可以把SYN和ACK放在一个包中发送。 但是在断开连接时,如果一端收到FIN包,但此时仍有数据未发送完,此时就需要先向对端回复FIN包的ACK。等到将剩下的数据都发送完之后,再向对端发送FIN,断开这个方向的连接。
因此很多时候FIN和ACK需要在两个数据包中发送,因此需要四次握手。
TCP和UDP数据报头
- TCP报头最小为20字节,最大60字节,使用IP协议号是6;
- UDP报头的大小为8字节,使用IP协议号是17;
- TCP:
- 源端口号(16位)
- 目的端口号(16位)
- 序列号(32位)
- 确认号(32位)
- 数据偏移量(4位)
- 保留位(6位)
- 标志位(6位):URG ACK PSH RST SYN FIN
- 窗口(16位)
- 校验位(16位)
- 紧急指针(16位)
- 选项和填充(32位)
- 数据
- UDP:
- 源端口(16位)
- 目的端口(16位)
- 报文长(16位)
- 校验位(16位)
常用端口
- FTP服务端口(20-21/TCP:UDP)
- SSH服务端口(22/TCP:UDP)
- Telnet端口(23/TCP:UDP)
- TACACS端口(49/TCP:UDP)
- DNS端口(53/TCP:UDP)
- SMTP端口(443/TCP)
- POP3端口(110/TCP)
- RADIUS端口(1812-1813/UDP)
- SNMP端口(161-162/UDP)
- BGP端口(179/TCP)
- IKE/ISAKMP端口(500/TCP:UDP)
安全技术基础
访问控制
最小权限
在只允许获取必需信息的前提下,完成既定的工作内容。
控制对重要信息的访问,确保只有那些有实际需要并已被授权者可以访问。
“拒绝所有/允许例外”这种策略对信息资源的防护是最有效的。
兼顾CIA
机密性(confidentiality)、完整性(integrity)和可用性(availability)
- 机密性要求信息不能未授权就公布与众。
- 完整性要求不能擅自修改重要信息。
- 可用性强调无论什么时候访问重要信息,信息总是有效可用的。
认证和授权
- 认证可以保证准确地知道,谁正在访问信息资源
- 授权允许访问者能够获取需要的信息。