【网络协议安全】review
复习用的
引用:
国科大《网络协议安全》课程课件,主讲教师:张棪、李杨
https://zhuanlan.zhihu.com/p/707262573
网络模型
OSI模型

TCP/IP模型
五层。
① 物理层(Physical)
② 数据链路层(Data Link)
③ 网络层(Network)
④ 传输层(Transport)
⑤ 应用层(Application)

封装过程

传输层

网络层

网络攻击总述
扫描
存在性
- ICMP(ping)
- 异常IP数据报
端口扫描
探测有什么样的服务,潜在的入侵通道
- TCP:建立全连接,SYN扫描,FIN
- FTP代理
- UDP:开放返回ICMP_PORT_UNREACH
扫描策略
防止被防火墙和入侵检测系统发现
- 随机端口
- 慢扫描
- 分片扫描
- 诱骗
监听(嗅探)
流量劫持
共享式:网卡混杂模式
交换式:
端口镜像
MAC泛洪
端口盗用
ARP欺骗
WiFi流量劫持
DHCP欺骗
DNS欺骗
数据分析
拒绝服务攻击
设备
集线器Hub
Hub相当于线,连接的主机还是在同一个冲突域

工作在物理层
交换机switching Hub
交换式集线器,智能Hub,只发给目标 MAC 地址指向的那台电脑
基于硬件(写死的),速度很快,不能处理不同IP子网(包括VLAN)之间的数据交换
工作在数据链路层
MAC地址表(MAC Address Table)
CAM表。记录与该交换机相连的设备的MAC地址与连接该设备的交换机端口之间的映射关系。
数据转发
- 查找MAC表
- 学习源MAC地址(和端口)
- 广播MAC地址
- 300s老化
路由器Router
因为二层交换机不能处理不同IP子网(包括VLAN)之间的数据交换,设计初衷是满足不同类型的网络连接
功能:路由转发,协议功能完整强大,但是速度慢
基于软件(路由表)
网络层
三层交换机
二层交换技术+三层转发技术。为了保留二层的速度,同时处理三层数据报,加快大型LAN内的数据交换
硬件实现数据包转发,软件实现路由
一次路由,多次交换:

冲突域

广播域

链路层协议
ARP工作在数据链路层(在LAN中),但是是网络层协议
LAN在数据链路层,使用MAC地址
WAN在网络层
MAC

MAC泛洪
大量发送伪造MAC数据,耗尽交换机CAM表的内存,交换机无法学习新的条目,退化成集线器,变成广播
结果:可以随便窃听
MAC欺骗
构造
1
2源MAC:受害者MAC
目的MAC:攻击者MAC发给受害者的数据帧被发给攻击者
等网络正常后将数据转交给受害者
ARP
Address Resolution Protocol,地址解析协议
IP地址->MAC地址映射
ARP 报文直接封装在以太网帧里(不需要放入IP报文内),数据链路层
请求报文:二层MAC广播地址发送(全F)
应答报文:
通信:
- 查找ARP表,如果缺失就广播请求报文
- 目标主机应答
- 存进ARP表
如果要局域网间通信,先与网关通信(与网关之间也会发生找ARP的过程)
ARP欺骗
- 向受害者、网关发送伪造的ARP应答报文,MAC地址改成攻击者的
- 监听
- 转发/拒绝服务
危害:断网或网速慢,嗅探,篡改
检测:断网或网速慢,MAC地址不对,存在大量ARP reply包
防御:MAC地址绑定,静态ARP
以太网(Ethernet)
链路层+物理层,负责“如何把一串比特可靠地放到网线上并正确送达下一跳设备”(打包加MAC地址)
IEEE 802.3 是以太网的正式标准
规定了:
- 物理介质与信号方式(双绞线、光纤、速率 10 M–400 G 等)
- 帧格式:前导码、SFD、目的/源 MAC、长度/类型、数据、FCS
- MAC 访问控制:CSMA/CD(半双工)与全双工模式
- 自动协商、流量控制(802.3x)、PoE(802.3af/at/bt)等扩展
攻击
MAC泛洪
MAC欺骗
ARP欺骗
无线局域网(WLAN)
IEEE 802.11 是WLAN的正式标准,俗称 Wi-Fi 协议族。
规定了一套“如何在无线电波里跑以太网帧”的规则
- 物理层(PHY)
– 频段:2.4 GHz、5 GHz、6 GHz
– 调制/编码:DSSS、OFDM、OFDMA、MU-MIMO、1024-QAM、4096-QAM 等
– 速率:从 802.11 的 2 Mbps 到 802.11be(Wi-Fi 7)的 46 Gbps- MAC 子层(介质访问控制)
– **CSMA/CA(冲突避免)**代替以太网的 CSMA/CD
– 帧格式:MAC 头、帧控制、地址 1~4、序列控制、QoS 字段、FCS
– 安全:WEP → WPA/WPA2(802.11i)→ WPA3
– 省电、ACK、重传、分片、聚合(A-MSDU、A-MPDU)- 网络拓扑
– BSS:一个 AP + 若干 STA
– ESS:多个 AP 组成扩展服务集,支持漫游
– IBSS:无 AP 的 Ad-hoc 自组网- 演进路线
802.11a/b/g → n(Wi-Fi 4)→ ac(Wi-Fi 5)→ ax(Wi-Fi 6/6E)→ be(Wi-Fi 7)
虚拟局域网(VLAN)
Virtual LAN,虚拟局域网
把一个物理局域网在逻辑上切成多个互相隔离的广播域
- 基于端口(最常见)、MAC、协议或子网划分,给每个帧打上一个 12 bit 的 VLAN ID(1–4094)。
- 交换机只在相同 VLAN内部泛洪、转发单播;不同 VLAN 的流量默认不能直接互通(需三层路由)。
- 跨交换机时,用 802.1Q 标签在以太网帧里插入 4 字节 TAG(TPID+TCI),告诉对端“这一帧属于哪个 VLAN”。
优势:
隔离广播风暴
减少移动和改变的代价
增强安全性,健壮性
划分依据
基于端口的VLAN(静态)
简单,但是变更需要重新指定
基于MAC地址的VLAN(动态)
不用重新配置,跟MAC地址走,但是需要初始化(工作量可能很大)
无法限制广播包(因为一个端口可能存在多个VLAN的成员)
基于协议的VLAN
根据协议字段进行划分。应用很少
基于子网的VLAN
根据子网地址进行划分
在网络内自由移动不用重新配置
效率低(检查每个数据报的地址费时),无法限制广播包
链路类型
主机:不需要知道VLAN的存在,发送untagged报文
交换机:根据配置判断所属VLAN,看情况加VLAN标记,转发,发给主机前删除VLAN标记
接入链路Access-Link
用于连接主机和交换机的链路
传输的都是没有打上标记的帧。接入链路属于某一个特定的端口(Access端口),这个端口只能直接发送和接收一个VLAN的数据。不同VLAN的信息必须通过三层路由处理才能转发到这个端口上。
干道链路Trunk-Link
干道链路是可以承载多个不同VLAN数据的链路。
(Trunk端口)干道链路通常用于交换机间的互连,或者交换机和路由器之间的连接。不属于任何一个具体的VLAN。数据帧在干道链路上传输时,交换机必须用一种方法来识别数据帧是属于哪个VLAN的(打了标记的)
此外还有Hybrid端口,与Trunk端口类似,但是允许多个VLAN报文不打标签(Trunk端口只允许缺省VLAN的报文不打标签)。在同一个交换机上Trunk端口和Hybrid端口不能共存
本征VLAN
Naive VLAN或Pvid VLAN
Trunk-Link可以指定一个Naive VLAN,来自Naive VLAN的数据帧不重新封装(有标签的话要去除)
端口缺省ID
Access端口:就是所在的VLAN,不用设置
Trunk端口:需要设置,默认是VLAN1。
接收:收到不带tag的报文,转发(加标签)到缺省VLAN的端口
发送:属于缺省VLAN的报文,去掉标签再发送
802.1Q协议
802.1Q 就是 IEEE 给以太网帧打“VLAN 标签”的官方标准:在原有帧里插入 4 字节 TAG,让跨交换机的流量能携带 VLAN 归属信息。

转发原则


攻击
双标签跳跃攻击

局限性:
- 有的交换机从Access接口收到带标签的帧,认为是非法的,会直接丢弃
- 双标签攻击只能实现单向攻击,攻击者可以发数据包到VLAN2上,但回包无法回来
- 由于是单向攻击,攻击者无法获得被攻击者的MAC,因此攻击包只能是二层的广播或者组播帧
防范:交换机之间的Trunk链路的native VLAN应该设置为一个不存在的VLAN,这样Trunk链路将对所有帧进行重新封装
DTP跳跃攻击


VTP攻击
原理:
VTP (VLAN Trunk Protocol) ,思科私有协议。可以帮助用户减少枯燥繁重的配置工作。
管理员在网络中设置一个或者多个VTP Sever,然后在VTP Sever.上面创建、删除、修改VL AN, VTP协议会将这些变化通告到其他交换机,这些交换机可以更新VLAN信息,实现管理自动化。VLAN信息的同步是通过VTP通告来实现的,VTP通告 只能在Trunk链路上传输(因此交换机之间的Trunk链路必须成功配置了Trunk)。
通告是以组播帧的方式发送的,通告中有一个字段称为修订号Revision。每次添加删除或修改时,Revision都会递增 。
- 如果收到的Revision更高,则本交换机将根据此通告更新自身的信息。
- 如果交换机收到更低的通告,会用自己的信息反向覆盖。
攻击:攻击者发送高的Revision的VTP通告,就能把网络中的VLAN信息覆盖。
防范:
- 关闭不需要开启的交换机接口,使攻击者交换机无法接入。
- 和用户计算机连接的接口要明确配置为Access模式。只要Trunk无法协商成功,VTP将无法工作。
- 配置VTP密码, 使攻击者发送的VTP消息被拒绝接收。这是防止攻击的根本措施。
网络层协议
IP协议-IPv4
IPv4数据报

IP选项
用于网络测试和控制目的。不能超过40字节
可填可不填,但是IP协议都要求具有IP选项的处理功能
格式:

处理
源路由
严格源路由
发送者指定数据报必须经过的每一个路由器。数据报必须严格按照发送方规定的路径穿过每一个路由器。


宽松源路由
发送者指定路径中的关键点。剩余部分由自动路由功能进行补充
分片与重组
各个物理网络的最大传输单元MTU(Maximum Transmission Unit)可能不同,由硬件决定的。
通常,网络的速度越高,MTU也就越大。
TCP/IP协议的封装:
- IPv4:将数据报先以信源网络的MTU进行封装,在传输过程中再根据需要对数据报进行动态分片(重组分片可能很多次,因而可能产生碎片包)
- IPv6:将数据报以从信源到信宿路径上的最小MTU进行封装(先发一个探测报文获取最小MTU
IPv4地址
32位,网络号+主机号
由因特网名字与号码指派公司ICANN(Internet Corporation for Assigned Names and Numbers)

专用地址(private address)或私有地址:
⚫ 由本机构自行分配其IP地址
⚫ 只在本机构内部有效,不会被路由器转发到公网中
⚫ 不需要向因特网的管理机构申请,节省全球IP地址资源
范围
⚫ A类地址 10.0.0.0~10.255.255.255
⚫ B类地址 172.16.0.0~172.31.255.255
⚫ C类地址 192.168.0.0~192.168.255.255
划分子网
可变长子网掩码(Variable Length Subnetwork Mask、VLSM)
划分子网的方法:从主机号host-id借用若干比特作为子网号subnet-id。掩码一定是连续的

从其他网络发送给本单位某个主机的IP数据报,仍根据IP数据报的目的网络号net-id找到连接在本单位网络上的路由器。此路由器收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网,将IP数据报交付给目的主机
广播地址
受限广播地址:全1(255.255.255.255)。路由器都不转发目的地址为受限的广播地址的数据报,仅出现在本地网络中
在主机不知道本机所处的网络时(如主机的启动过程中),此时,主机可能还不知道它所在网络的网络掩码,甚至连服务器的IP地址也不知道。比如向DHCP服务器索要地址时、PPPOE拨号时等
直接广播地址:包含一个有效的网络号和一个全“1”的主机号,如 192.168.10.255。直接广播可用于本地网络,也可以跨网段广播
IP欺骗
假冒IP
攻击者使用假冒的IP地址向一台机器发送数据包,但不会收到任何返回的数据包,这被称之为盲目飞行攻击(单向攻击)
无法建立完整的TCP连接,但是所有单独的UDP数据包都会被发送到受害者的系统中
防范
- 限制用户修改网络配置
- 入口过滤:不允许任何从外面进入网络的数据包使用单位的内部网络地址作为源地址,否则丢弃,可以保护内网机器不成为受害者
- 出口过滤:路由器检查数据包,确认源地址是来自本单位局域网的一个地址,否则丢弃,保证单位的网络不成为攻击者
源路由欺骗
为了解决单纯假冒IP得不到返回的信息的问题:
- 攻击者插入到正常情况下数据流经过的通路上。很难
- 保证数据包路径经过攻击者的机器,使用源路由
某些路由器对源路由包:会使用其反向路由来传送应答数据。攻击者可以把自己的IP地址填入地址清单中
防范:路由器禁止使用源路由
IPv4安全机制
ACL(Access Control List,访问控制列表)
应用在路由器接口上的指令列表。这些指令告诉路由器哪些数据包分组可以接收,哪些数据包分组需要拒绝。先创建,再应用到接口
标准ACL
基于源地址做为判断依据,编号为1~99,1300~1999
按照列表顺序逐条检查,如果匹配某一条语句,就按照语句执行,要么允许数据包通过,要么拒绝通过。不再检查后面的语句。都不匹配,就拒绝
扩展ACL
基于源地址、目标地址、源端口、目标端口、协议类型等做为判断依据。编号为100~199,2000~2699
包过滤防火墙就是使用扩展ACL

NAT(Network Address Translation,网络地址转换)
一个局域网内部有很多台主机,但不是每台主机都有合法的公网IP地址,为了使所有内部主机都可以连接因特网,需要使用地址转换。有效地隐藏内部局域网中的主机
优点:节省合法公有IP,灵活,安全
缺点:延迟,配置维护复杂,不支持某些应用
静态NAT
一一映射,固定
动态NAT
从地址池里临时拿一个公网 IP,争用
端口地址转换(Port Address Translation,PAT)
四层技术,用端口号区分,1024以上的端口随机分配。主机们共享一个公网IP
IPSec协议(IP Security)
IPSEC 处理做为IP 层的一部分,在IP 层对报文进行处理。AH协议和ESP 协议有自己的协议号,分别是51 和50。
算法
对称加密算法:加密数据,速度快。DES,3DES,AES
非对称加密算法:速度慢,难以用硬件实现,用于交换密钥和身份认证。RSA,DH


防御中间人攻击:
- 预共享密钥PSK(Pre-shared key):通信双方在配置时手工输入相同的密钥
- 数组证书CA(Certificate authority):存储了公钥,以及用户名等身份信息。证书机构的私钥对申请人的证书签名
报文验证:Hash算法,具有不可逆性。实现数据完整性验证和身份验证。MD5,SHA
保护
数据机密性:加密
数据完整性:Hash

身份认证:签名

重放攻击保护:时间戳,随机数,序列号
结构
针对IPv4:缺乏完整性和机密性保护,身份认证机制。由IETF设计的端到端的确保IP层通信安全的机制/框架。

安全服务
AH和ESP可以单独使用,也可以嵌套使用
AH(Authentication Header,认证头)
⚫ 数据完整性验证:通过哈希函数(如MD5)产生的校验来保证
⚫ 数据源身份认证:通过在计算验证码时加入一个共享密钥来实现
⚫ 防重放攻击:AH报头中的序列号可以防止重放攻击。

ESP(Encapsulating Security Payload,封装安全载荷)
除了AH提供的三种服务还有:
⚫ 数据包加密:对一个IP包进行加密,可以是对整个IP包,也可以只加密IP包的载荷部分,一般用于客户端计算机
⚫ 数据流加密:一般用于支持IPSec的路由器,源端路由器对整个IP包进行加密后传输,目的端路由器将该包解密后将原始包继续转发
加密是基本功能,数据源身份认证、数据完整性验证以及防重放攻击都是可选的。

IPSec-VPN(虚拟专用网)

模式
传输模式
相对简单,传输效率较高。IP包头未被保护。适用于两台主机之间的数据保护

AH:

ESP:

隧道模式
对整个报文封装,IP包头被保护。适宜于在站点间建立安全VPN隧道:保护多台主机

AH:

ESP:


IKE
要成功建立IPSec VPN,两端路由器必须采用相同的加密算法、hash算法和安全协议等,但IPSec协议中并没有描述双方应如何协商这些参数。也没有定义通信双方如何进行身份认证
IKE用于动态建立SA 。包含了3个不同协议:ISAKMP、Oakley和SKEME。并非为IPSec专用。建立在UDP上,应用层协议
IKE 为IPSEC 协商建立SA,并把建立的参数及生成的密钥交给IPSEC。IPSEC 使用IKE 建立的SA对IP 报文加密或验证处理。
处理流程


ICMP协议
Internet Control Message Protocol,Internet控制报文协议。用于在IP主机、路由器之间传递控制消息(网络通不通、主机是否可达、路由是否可用等网络本身的消息)

攻击
ping of death
原理:IP包的最大尺寸为65535,重组代码所分配的内存区域也不超过这个最大尺寸。分片+超过65535缓存区溢出
使用ping很容易完成这样的攻击:ping -l 65500 192.168.1.1 -t
ICMP Smurf攻击(反射放大攻击)
发送ICMP echo报文,将源地址设置为被攻击主机的地址,而将目的地址设置为广播地址
ICMP重定向攻击
ICMP重定向:路由器检测到IP数据报经非优路由传输,就通过ICMP重定向报文通知主机去往该目的地的最优路径。只能在同一网络的路由器与主机之间使用
发生ICMP重定向的情况:
- 当路由器从某个接口收到数据还需要从相同接口转发该数据时
- 当路由器从某个接口到发往远程网络的数据时发现源ip地址与下一跳属于同一网段时
攻击原理:攻击者发送ICMP重定向报文,在受害者主机路由表中添加一条到达特定主机的路由信息,使得受害者发往特定主机的数据包被发往攻击者主机。核心是欺骗路由表。通过添加特定路由表实施
局限性:
- 需要受害者和攻击者处于同一网络环境中。一次只能指定一个目的地址。新路由必须是直达的
- 重定向包必须来自去往目标的当前路由,可以采取欺骗
- 重定向包不能通知主机用自己做路由(需要合谋),可以采取欺骗
防范:拒绝接收ICMP重定向报文
IPv6协议
IPv4协议存在的问题:

IPv6主要解决的问题:
地址短缺的问题
路由速度慢的问题
⚫ IPv6通过更改报头结构来简化路由,加快路由速度。
⚫ 若不能指定路由器就不会打开处理扩展头部,改善了路由性能。
⚫ 在IPv6头部,有两个相应的优先权和流标识字段,允许把数据报指定为某一信息流的组成部分,并可对这些数据报进行流量控制。
安全缺陷的问题
IPv6数据报

IPv6不再分片(只允许源主机做,路由器不能再分片),扩展首部不是每跳都处理
扩展首部

每一种扩展报头有自己特定的协议号,每一个基本报头和扩展报头的protocol字段标识后面紧接的内容

IPv6扩展报头的安全问题
下一包头字段(攻击者可将该字段设置畸形值,可实施拒绝服务(DoS)攻击
当前协议对IPv6扩展头数量没有做出限制,同一种类型的扩展头也可以出现多次。攻击者可以通过构造包含异常数量扩展头的报文对防火墙进行DOS攻击,防火墙在解析报文时耗费大量资源,从而影响转发性能。这种攻击可以通过限制扩展头的数量和同一类型扩展头的数目来避免。
逐跳选项报头:要求所有路由器对该数据包进行处理并仔细查看该数据包的报头信息。消耗链路上路由器大量资源,严重可造成DoS攻击。应当限制路由器对包含路由提示选项的数据包的处理数量。
路由报头:在RH0路由类型(即type 0)下,攻击者可利用路由报头选项伪装成合法用户接收返回的数据包。
RH0的问题是允许在路由头部中的多个位置指定相同地址。这可能导致流量在一条特定路径上的两台或多台路由器或主机之间重复转发。更新安全设备并升级至最新的IPv6协议版本RH2,同时对所有的RH0数据包进行丢弃。 RH2只容纳一个地址。
目的选项报头:移动IPv6协议的数据通信以明文进行传输。目的选项报头用于为最终目标指定数据包的转发参数,只由最终目的节点处理,中间路由器不检查。攻击者利用该选项报头实现欺骗。
移动IP

IPv6地址
IPv6地址 = 前缀 (+ 子网ID) + 接口标识
前缀:相当于v4地址中的网络ID
接口标识:相当于v4地址中的主机ID。IEEE EUI-64规范自动生成,将48比特的MAC地址转化为64比特的接口ID,MAC唯一,所以接口ID也唯一
分类
单播地址(Unicast Address):用来标识单一网络接口。
多播地址(Multicast Address):用来标识一组网络接口(通常属于不同的节点)。节点发送的单个数据报可以被指明的多个目的节点收到

预定义的多播组


本地站点地址(site-local address):仅能在一个单位的网络内使用,类似于IPv4中的专用地址(私有地址)。不是自动生成的。使用范围不同:内网通信/邻居发现等

任播地址(Anycast Address):用来标识一组网络接口,这些接口通常属于不同的节点。任播地址不是指向某个特定的主机,而是指向能够响应任播地址的“ 最合适的 ” 或 “ 最近的 ” 那个主机(只期望被一个地址接收)。常常用来寻找提供某种通用服务的计算机(找dns服务器,分配cdn)。只能用作目的地址,只能分配给IPv6路由器或服务器主机
取消了广播,引入了任播:同一网络链路上的大量广播意味着该链路上的每个节点都必须处理所有广播,但是其中绝大部分节点最终都将忽略该广播,广播会为网络性能设置障碍
地址配置技术
对路由器的接口配置一个IPv6地址,并指定一个前缀长度。没有子网掩码的概念,前缀长度取代了子网掩码
无状态自动配置:网络接口接收路由器宣告的全局地址前缀,再结合接口ID得到一个可聚集全局单播地址。主机发送Router Solicitation报文,路由器回应Router Advertisement报文,获得前缀及其它参数
有状态自动配置(DHCPv6)
手动配置
ICMPv6
ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。


攻击
Smurf攻击:可通过向组播地址FF02::1发送Echo Request报文,通过接收Echo Reply报文实现本地链路扫描,或以目标节点作为源地址向组播地址FF02::1发送ICMPv6 Echo Request消息
减小接收节点的MTU:可通过向目标节点发送ICMPv6 Packet too big报文,减小接收节点的MTU,降低传输速
可通过向目标节点发送过多的ICMPv6包以及发送错误消息,导致会话被丢弃,从而破坏已建立的通信,实现DoS攻击
主机扫描:可通过向主机发送格式不正确的消息刺激主机对ICMPv6的响应,从而发现潜在的攻击目标。
防范
在交换机的每个物理端口设置流量限制。在防火墙或边界路由器上启动ICMPv6数据包过滤机制。路由器拒绝转发带有组播地址的ICMPv6 Echo Request报文
路径最大传输信元搜索(PMTUD)
PMTU 就是路径上的最小接口 MTU,PMTUD 的主要目的是发现路径上的 MTU(为了不分片)
邻居发现协议(Neighbor Discovery Protocol,NDP)
不是一个实际的协议,是功能性的定义,实际上是ICMP实现的。由IPv4中的地址解析协议ARP、ICMP路由探测协议RDISC、ICMP报文重定向等协议综合而成的。
应用:


邻节点请求报文(135)和邻节点通告报文(136)
完成ARP功能:邻节点请求报文一般以多播的形式发送,主机一旦收到邻节点请求报文,它们将检查ICMP报文中的IPv6地址。如果这个地址恰好是自己的主机地址,主机将把自己的数据链路层地址封装在一条邻节点通告报文中,以应答邻节点请求报文的发送者。

测试目的主机的连通性:邻节点请求报文以单播IPv6分组的形式发送。如果发送者收到了应答的邻节点通告报文,它认为目的地址是可达的;否则它认为目的主机是不可达的。
重复地址检查:本地链路地址和全局单播地址首次配置后都要先做重复地址检查才能正式使用

路由器请求报文(133)和路由器通告报文(134)
路由器每5分钟就发送一个路由器通告报文。节点根据路由器通告报文更新路由器的信息。主机可以主动向路由器发送路由器请求报文,路由器一旦收到路由器请求报文,将立即发送路由器通告报文。
无状态自动配置— 前缀公告:前缀通告机制中, IPv6路由器使用所有节点多播地址FF02::1,在本地链路上周期性(5分钟)地发送路由器通告报文(134)。只有IPv6路由器能在本地链路上通告前缀
路由重定向(137)
路由器使用 ICMPv6 重定向消息(ICMP TYPE 137)通知链路上的节点,在链路上存在一个更好的前转数据包的路由器。
攻击
中间人攻击(类似ARP欺骗):
在未部署SAVI技术或启用RA Guard功能的交换网络内部,可通过伪造ICMPv6 NA(地址欺骗)/RA(网关欺骗)报文实现中间人攻击。攻击者可以伪造NA报文,将自己的链路层地址作为链路上其他主机的地址进行广播。攻击者可伪造RA报文发送至目标节点修改其默认网关
泛洪攻击:
攻击者可伪造不同网络前缀RA消息对FF02 :: 1进行泛洪攻击,接收节点将会根据不同的网络前缀进行更新,从而消耗大量的CPU资源。
防范
RFC7113提出了IPv6安全RA方案RA-Guard,其通过阻断非信任端口RA报文转发来避免恶意RA可能带来的威胁,在攻击包实际到达目标节点之前阻塞二层设备上的攻击数据包
使用访问控制列表或空路由过滤对地址空间中未分配的部分的访问限制,用以防止攻击者迫使路由解析未使用的地址。安全邻居发现(SEND)协议是邻居发现协议中的一个安全扩展,其工作原理为使网络中每个IPv6节点都有一对公私钥以及多个邻居扩展选项
采用SEND协议后,各个节点的接口标识符(IPv6地址低64比特)将基于当前的IPv6网络前缀与公钥进行计算产生,而不能由各个节点自行选择
安全邻居发现协议通过时间戳和Nonce选项抵御重放攻击,并引入了CGA(密码生成地址)与RSA签名对数据源进行验证以解决邻居请求/邻居通告欺骗的问题
SEND虽然可以解决一定的安全问题,但目前系统与设备对SEND的支持十分有限。
安全机制
端到端IPSec安全协议
IPv6协议中集成了IPSec
AH协议实现数据完整性和数据源身份认证功能,而ESP在上述功能基础上增加安全加密功能。 IPv4协议中IPSec抗重放攻击等安全功能在IPv6 协议中同样被继承。限制使用NAT
真正实现了端到端的安全,中间转发设备只需要对带有IPSec扩展包头的报文进行普通透明转发,大大减轻转发压力
真实源地址检查体系
真实源IPv6地址验证体系结构(SAVA)分为接入网(AccessNetwork)、区域内(Intra-AS)和区域间(Inter-AS)源地址验证三个层次

改进
防扫描:大地址池。网络侦察的难度和代价都大大增加
可溯源:NAT的存在一方面破坏了互联网端到端通信的特性,另一方面NAT隐藏了用户的真实IP,导致事前基于过滤类的预防机制和事后追踪溯源变的困难。限制了NAT使用
防止网络放大攻击:不会响应广播地址的消息,不存在广播。在网络边缘过滤组播数据包即可阻止放大攻击
防止碎片攻击:路径最大传输信元搜索(PMTUD),禁止路由器分片。IPv6认为MTU小于1280字节的数据包是非法的(限制了碎片包的产生),处理时会丢弃MTU小于1280字节的数据包(除非它是最后一个包)

安全问题
数据报、ICMPv6和NDP的问题。
IPv6对安全硬件的影响
防火墙:防火墙必须对IPv6基本报头与所有的扩展首部进行解析,影响防火墙性能。如若在IPv6数据包中启用加密选项,负载数据将进行加密处理,包过滤型防火墙无法对负载数据进行解密,无法判断是否可以将当前数据包放行
IDS&IPS:若启用了加密选项,IDS&IPS无法通过报文分析获取TCP、UDP信息,无法对网络层进行全面的安全防护
路由协议
路由协议能够自动发现和计算路由,并在拓扑变化时自动更新,无需人工维护,适用于复杂的网络
路由协议
① 路由器用来计算、维护网络路由信息的协议,通常有一定的算法,工作在传输层或应用层。
② 常见的路由协议有RIP、OSPF、BGP等
可路由协议
① 可被路由器转发的协议,工作在网络层。
② 常见的可路由协议有IP、IPX等

功能:
邻居发现
路由器通过发送广播报文或发送给指定的路由器邻居以主动把自己介绍给网段内的其它路由器
路由交换
每台路由器将自己已知的路由相关信息发给相邻路由器
路由计算
每台路由器运行某种算法,计算出最终的路由来
路由维护
路由器之间通过周期性地发送协议报文来维护邻居信息
分类
内部网关协议(IGP)与外部网关协议(EGP)
(按使用范围分类)
AS(Autonomous System):自治系统,又叫自治域,是指拥有相同选路策略的由单一机构管理的网络的集合,每个AS由AS号标识。通常一个ISP(互联服务提供商/网络运营商)管理一个或多个AS

IGP(Interior Gateway Protocols):内部网关协议,在一个AS内部使用的路由协议。RIP、OSPF、IS-IS都是典型的IGP
EGP(Exterior Gateway Protocol):外部网关协议,在多个AS之间使用的路由协议。BGP是互联网事实上的EGP标准
距离矢量协议与链路状态协议
(按算法分类)
距离矢量协议
代表:RIP、BGP
利用距离和方向矢量来通告路由:距离使用诸如跳数这样的度量确定,方向矢量则是下一跳路由器或者接口。路由器并不了解到达目的网络的整条路径

链路状态协议
代表:OSPF
又称为最短路径优先协议。路由器之间传递链路状态信息,建立数据库,通过SPF(最短路径优先)算法,计算出路由条目
优点:
• 每台路由器自行创建网络拓扑图以确定最短路径
• 立即泛洪,实现快速收敛
• 仅当拓扑变化时才发送链路状态数据包,且仅包含变化的信息
• 多域环境中采取了层次式设计
缺点:对资源要求较高
• 内存要求
• 处理器要求
• 带宽要求
衡量指标
协议计算的正确性:协议使用的算法能够计算出最优的路由,且正确无自环
路由收敛速度:当网络的拓扑结构发生变化之后,能够迅速感知并及时更新相应的路由信息
协议占用系统开销:内存、CPU、网络带宽最小
协议自身的安全性:协议自身不易受攻击,有安全机制
协议适用网络规模:协议可以应用在何种拓扑结构和规模的网络中
RIP,Routing Information Protocol(路由信息协议)
距离矢量路由,内部网关。适用于中小型网络,分为 RIPv1 和 RIPv2,支持水平分割、毒性逆转和触发更新等工作机制防止路由环路。基于 UDP 传输,端口号 520
报文格式

更新和维护
周期性发送Response信息(默认30秒),路由信息具有生命期(默认180秒)

环路避免
相邻路由防环
单路径网络中环路的产生:一端的网络故障,连接的路由器R1删除相关表项。更新时指向第二个路由器R2,但是R2的这一项本来是指向R1的,环路产生
路由毒化:路由器会将自己路由表中已经失效的路由作为一条不可达路由主动通告出去。度量值改为INF(16)
水平分割:禁止路由器将从一个接口学习到的路由再从同一个接口通告出去
毒性逆转:若路由器从一个接口学习到去往某个网络的路由,它向这个接口通告时会把这项改成INF(不让那边的路由器从这边学习)

全网路由声明周期
多路径网络中环路产生过程:就算采用路由毒化,改为INF,也会从其他路由器(从另一个方向的路由器那里学来的)那里学到更小的距离值(因为周期的存在)

定义最大值:路由项度量值达到最大值(16)后不再转发这个表项
抑制时间:一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新(只接受发送不可达消息的邻居的更新)
触发更新:不等到更新周期到来,路由器马上发送路由不可达消息
RIPv1&RIPv2
RIPv1的缺点:发送协议报文时不携带掩码,只能识别A、B、C类这样的标准网段路由,路由交换过程中有时会造成错误。 不支持认证,只能以广播方式发布协议报文
RIPv2的改进:携带掩码信息,支持VLSM(可变长子网掩码)和CIDR(无类别域间路由)。支持以组播方式发送路由更新报文,组播地址为224.0.0.9。支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性
安全问题
使用不可靠的UDP报文进行传送,安全性差
运行RIP协议的路由器如果没有使用认证机制,没有发出更新请求的路由器也能够接收到更新报文。路由器可以接受来自任何相邻设备的路由信息,存在极大的安全漏洞
RIP欺骗
安全机制:RIPv2报文验证机制
建立邻居的双方必须使用相同的验证方式和口令,不直接建立邻居的路由器可以使用不同的验证方式和口令

重放?泄露密码?
缺陷
以跳数评估的路由不一定是最优路径(考虑到每段路径的传输速率不一样)
最大跳数16导致网络尺度小
收敛速度慢(抑制时间等)
更新发送全部路由表浪费网络资源
OSPF(Open Shortest Path First,开放最短路径优先)
仅传播对端设备不具备的路由信息,网络收敛迅速,并有效避免了网络资源浪费。基于IP,IP协议号为89,以组播地址发送协议数据包
LSA,链路状态通告
Link-State Advertisement。是 OSPF 协议中用于描述网络拓扑信息的链路状态通告单元,其本质是一种具有全局唯一标识、序列化、老化和校验机制的自描述数据记录。每个 LSA 通过类型(Type)、链路状态标识符(Link-State ID)和通告路由器(Advertising Router)三元组唯一确定。构成链路状态数据库(LSDB),然后运行路由算法计算出路由表

攻击
链路状态标识不存在的LSA攻击
① 攻击者伪造一个链路状态标识不存在的LSA并发送
② 该恶意LSA到达真实产生该LSA的路由器时,协议进程发现链路状态标识不是自己,不会触发自反击机制
③ 受害者并将LSA保存到数据库中(默认1小时),网络中所有接收路由器的LSDB信息被篡改
最大序列号减一攻击
OSPF协议标准(RFC2328)规定:LSA的序列号有效范围是0x80000001~0x7FFFFFFF,循环往复
① 攻击者向OSPF网络发送序列号为0x7FFFFFFE的LSA
② 目 标 路 由 器 的 自 反 击 机 制 被 触 发 , 发 送 序 列 号 为 最 大 序 列 号0x7FFFFFFF的LSA
③ 攻击者再发送最小序列号0x80000001的LSA报文,按照标准规定,该LSA应该由目标路由器生成,但由于实现机制方面的原因, 目标路由器认为此序列号小于当前序列号,不会再次触发自反击机制
④ 其他路由器删除正确的LSA信息,导致整个域内的路由数据异常
双LSA攻击
OSPF协议标准(RFC2328)规定:序列号、校验和、Age三个字段相同的LSA实例被认为是相同实例
① 攻击者发送第一条LSA,被称为Trigger LSA(序列号大于目标路由器当前真实LSA的序列号), 该LSA包含错误的路由信息,会触发目标路由器的自反击机制
② 攻击者发送第二条LSA,被称为Disguise LSA。序列号大于Trigger LSA,并且序列号 、 校验和 、 Age 三个字段的值与Trigger LSA触发的自反击LSA相同
③ 其他路由器如果先收到Disguise LSA,后收到自反击LSA,将把自反击LSA当作副本丢弃,从而使得目标路由器的自反击机制失效,网络中的部分路由器被注入恶意路由信息
报文格式


工作过程

寻找邻居


建立邻接关系

链路状态信息传递

具备超时重传机制。在规定时间内没有收到回应,认为包丢失,重发包。重复包不做处理
计算路由

安全机制
报文认证
当OSPF报文不进行验证时 , 同 RIPv1 一 样 , 很容易遭受路由欺骗攻击
当OSPF报文进行简单认证时,验证字段将保存一个明文口令,该口令很容易被获取,同样容易遭受路由欺骗攻击 (OSPF路由器以组播的方式周期性(默认10秒)发出HELLO报文,其中包含明文口令,通过组播或广播监听即可获取口令)
OSPF MD5认证
① 在相邻路由器中配置相同的共享密钥
② 用共享密钥加密报文序列号
③ 由共享密钥和路由消息共同生成MAC(消息鉴别码)

OSPF自反击机制
当路由器收到自己发送或以自己名义发送的LSA比当前生成的实例新,并且描述信息与自身获知不一致时,将立即通告一个含有正确链路状态且更大链路序号的LSA新实例,以纠正错误
层次化路由
OSPF协议将自治系统划分为一个骨干区域和多个非骨干区域,各非骨干区域通过ABR(区域边界路由器)与骨干区域相连。每个区域各自拥有自己的LSDB,各自执行链路状态路由算法,使得本区域内拓扑可对其他区域屏蔽,同时不受其他区域错误路由的影响
双向链路
在路由表生成过程中,只有那些被两端路由器都通告过的链路才会被加入计算中
可靠泛洪
OSPF协议通过泛洪进行LSA传播,使用类似TCP的确认重传机制,确保路由消息传播的可靠性(每台路由器收到 LSA 后,必须回一个显式确认,并继续向所有邻居转发,直到整个区域都收到同一份 LSA 的相同拷贝)
安全威胁
恶意Hello报文攻击:OSPF通过Hello报文建立和维护邻接关系,攻击者可通过发送恶意Hello报文实施攻击
恶意LSA报文攻击
BGP(Border Gateway Protocol,边界网关协议)
增强的距离矢量路由协议,外部网关协议,用来在AS之间传递路由信息。TCP,端口号179
可靠的路由更新机制
• 传送协议:TCP,端口号179
• 周期性发送keepalive报文效验TCP的连通性
• 无需周期性更新路由信息,更新时只发送增量路由
丰富的Metric度量方法,从设计上避免了环路的发生,为路由附带属性信息,支持CIDR(无类别域间选路),丰富的路由过滤和路由策略
基本概念
发言者(Speaker)
发送BGP消息的路由器称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布/通告(Advertise)给其它Speaker。当Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优或者当前还没有该路由,它就把这条路由发布给AS内所有其它Speaker
邻居(Peers/Neighbors)
任何两个建立TCP连接来交换BGP路由信息的Speaker称为邻居
外部BGP(EBGP)
当BGP邻居属于不同的自治系统,他们被称为EBGP。EBGP邻居,默认情况下需要直连
内部BGP(IBGP)
当BGP邻居属于同一个自治系统,他们被称为IBGP。不一定需要直连
报文类型
Open:建立BGP连接
Keepalive:检测和维护BGP连接
Update:发送BGP路由更新
Notification:中断BGP连接
Route-Refresh:通知对等体自己支持路由刷新能力
工作机制
① 建立TCP连接
② Speaker通过Open消息协商参数,建立邻居关系
③ 建立连接后,BGP邻居通过Update消息及时增量更新路由表
④ 发送Keepalive消息来维持邻居间的BGP连接
⑤ 当检测到网络中的错误状态时,发送Notification消息报错,中断BGP连接
BGP路由如何产生
纯动态注入:路由器将IGP(内部网关协议)发现的动态路由信息直接注入到BGP系统中去
半动态注入:路由器有选择性的(通过配置命令)将IGP发现的动态路由信息注入到BGP系统中去
静态注入:路由器将静态配置的某条路由注入到BGP系统中
路由通告原则
Speaker只把自己使用的路由通告给邻居。Speaker从IBGP获得的路由不向它的IBGP邻居通告,是否通告给它的EBGP邻居要依IGP和BGP同步的情况来决定
一旦建立新连接,Speaker按照以上原则把自己的所有路由通告给新邻居,之后只通告增量路由(变化的、撤销的、新Des/Mask的)
EBGP之间:Speaker 从 EBGP 获 得 的 路 由 会 向 它 所 有 BGP 邻 居 通 告 ( 包 括EBGP和IBGP)
IBGP之间:Speaker从IBGP获得的路由不向它的IBGP邻居通告(内部避免环路)
路由属性
BGP路由属性是包含在BGP路由器通告里的一套参数,它对特定的路由进行描述,使得路由器能够对路由进行过滤和选择
公认必遵:所有BGP路由器都可以识别,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错
公认任意:所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择
可选过渡:BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他邻居
可选非过渡:如果BGP路由器不支持此属性,则相应的Update消息会被忽略,且不会通告给其他邻居


路由选择策略
当BGP路由器从多个邻居接收到达到同一目的前缀的路由信息时,会根据路由属性选择一条最优路由
路由器按照如下顺序决策,选择最佳路由:
① 本地优先属性(Local_Pref)值最高(由AS商业关系决定,Customer > Peer > Provider)
Customer-Provider(C2P):Customer向Provider购买接入互联网服务,支付流量费
Provider-Customer(P2C):Provider为Customer提供接入互联网服务,收取流量费
Peer-Peer(P2P):AS之间可以互相为对方(及其Customer)免费转发流量
Sibling-Sibling(S2S):AS之间可以免费转发对方任何流量
② AS路径(AS_Path)长度最小
③ 路由源类型(Origin)最小(IGP<EGP<INCOMPLETE)
④ MED值最小(Next_Hop相同的前提下)
⑤ EBGP类型路由优于IBGP类型路由
⑥ IGP Metric最小(对于出口边界路由器)
⑦ 路由器ID最小
BGP路由通告策略(又叫出站策略)
只有当AS愿意让邻居AS利用其资源去访问某些网络时,才会把自己掌握的特定路由信息通告给邻居AS。
由AS商业关系决定:
来自Customer的路由通告给Customer、Peer以及Provider
来自Peer或Provider的路由仅通告给Customer,不向Peer和Provider传播
安全威胁
没有保障邻居之间通信报文的完整性、时效性和邻居身份的真实性
前缀劫持
没有验证AS可发起可达路由信息的权限。AS对外发起的路由通告中的前缀未获授权。流量按最长前缀匹配或更短 AS-Path 被引向攻击者
路径伪造
无法保障AS通告路径属性的真实性。AS向邻居传播的路由通告中的AS_PATH路径属性非真
路由泄露
无法验证路由传播行为是否合法。AS向邻居传播的路由通告违反路由出站策略,成流量重定向
安全技术
劫持检测技术
以改善BGP安全为目标。基于异常检测的概念提取BGP控制平面和数据平面的异常信息,对异常路由通告行为进行检测并报警。不能彻底解决问题,轻量级解决方案
MOAS List
MOAS(Multi-Origin AS)冲突:一个前缀(Prefix)匹配多个Origin AS的行为,发生前缀劫持的典型特征
创建一个包含所有授权通告某一前缀的OriginAS的列表(MOAS list),将该列表附于每一授权AS的路由通告中,当其他路由器接收到关于这一前缀的所有路由通告时,比较通告中的MOAS List 是否一致,以此判断是否发生了前缀劫持
由于BGP路由传播的多路径特性,错误的MOAS List和正确的MOAS List最终都会被接收路由器收到
RPKI(Resource Public Key Infrastructure)
互联网码号资源公钥基础设施。构建一个PKI(公钥基础设施)来完成对IP地址前缀和AS号的所有权和使用权的认证
• 认证权威(Certificate Authority,CA):签发RPKI资源证书和ROA的互联网码号资源的注册机构和持有机构
• ROA(Route Origin Authorization,路由起源认证):RPKI体系中的数据对象,由码号资源持有者创建,声明“某AS与某IP前缀绑定”并用私钥签名
• 资料库(Repository):由各CA维护,存储并发布RPKI资源证书和ROA的分布式数据库
• 依赖方(Relying Party,RP):由ISP部署的路由验证系统,周期性的从资料库中同步下载资源证书和ROA,并验证其有效性



路由认证技术
以制定和完善BGP路由协议的安全机制为目标。利用证书、数字签名和其他加密技术来保护路由信息的真实性和完整性。路由认证技术可以从根本上解决BGP异常路由通告问题,但是:需要建立PKI、路由器的性能开销、需要修改现有协议规范等
传输层协议
传输层向它上面的应用层提供通信服务。应用进程之间的逻辑通信

端口,传输层服务访问点(TSAP):其作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。可以看做是应用层进程的ID。用一个16bit端口号进行标识。端口号只具有本地意义
熟知端口:一般为0~1023
一般端口:用来随时分配给请求通信的客户进程

UDP:用户数据报协议(User Datagram Protocol)
只在IP的数据报服务之上增加了很少一点的功能,即端口功能和差错检测功能。只能提供不可靠的交付,但是优点:
发送数据之前不需要建立连接
UDP的主机不需要维持复杂的连接状态表
UDP用户数据报只有8个字节的首部开销
网络出现的拥塞不会使源主机的发送速率降低(感知不到也不会反应),这对某些实时应用是很重要的
报文格式
首部有8个字节,由4个字段组成,每个字段都是两个字节
在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和

安全威胁
UDP泛洪攻击(UDP Flood)
只要在网络上开放UDP端口提供相关服务,攻击者就可针对相关服务进行泛洪攻击。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器
识别:正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDPFlood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定
防护:限速。报文内容特征—模式匹配。IP特征—ACL。随机丢包。端口敲门。单包授权
端口敲门威胁
端口敲门:服务端关闭对外服务端口,对收到数据包不作任何响应(端口隐藏/隐身)。客户端按照约定的顺序依次向特定端口(敲门端口)发送数据包,则向客户端开放正常的服务端口应
攻击者监听通信按顺序敲门
单包授权(SPA)
(零信任的标配)服务器端口隐藏/隐身。客户端敲门端口发送具有特定格式和内容的授权数据包,服务端识别并验证授权数据包

UDP反射放大攻击
UDP Flood:消耗对方资源同时也消耗攻击者自身资源的攻击方式,现在已经逐渐被其变种UDP反射放大攻击所代替
很多UDP应用的响应包远大于请求包(“放大”)。通过伪造请求源IP地址(“反射”),使得受害主机在短时间内收到大量响应包,造成网络拥塞,无法提供正常服务
• 低成本、高隐蔽性
控制僵尸网络,同时请求

防护:IP 和/或 端口限速。报文特征学习。服务白名单。地理位置过滤。扩容带宽和服务器。采用高可用架构
TCP:传输控制协议(Transmission Control Protocol)
面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义
互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性
报文格式
序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号字段:占4字节。是期望收到对方的下一个报文段的数据的第一个字节的序号
紧急比特URG:当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(紧急指针指出本报文段中紧急数据的最后一个字节的序号)
确 认 比 特 ACK : 只 有 当 ACK=1 时 确 认 号 字 段 才 有 效 , 当ACK=0时,确认号无效
推送比特PSH(Push):接收端收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付
复位比特RST(Reset):当RST=1时,表明TCP连接出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接
同步比特SYN:同步比特SYN置为1,就表示这是一个连接请求或连接接受报文
终止比特FIN(Final):用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接
窗口字段:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口上限
选项字段:选项字段是TCP为了适应复杂的网络环境和更好的服务应用层而进行设计的,最大长度可以达到40字节
最大报文段长度(MSS,Maximum Segment Size)
窗口扩大选项(Windows Scaling)
选择性确认选项(SACK,Selective Acknowledgement)

TCP确认与重传机制
TCP的确认是对接收到的连续数据的最高序号表示确认。接收端返回的确认号是已收到的连续数据的最高序号加1,因此确认号表示接收端期望下次收到的第一个数据字节的序号
TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的超时重传时间(RTO)已到但还没有收到确认,就要重传这一报文段
RTO的设置与往返时延RTT有关,由于TCP的下层是一个互连网环境,IP数据报所选择的路由变化很大,因而传输层的往返时延的方差也很大
RTT(Round-Trip Time,往返时延)
往返时延RTT:记录每一个报文段发出的时间,以及收到相应的确认报文段的时间,这两个时间之差就是报文段的
将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT
每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT

若 α 接近于 1,表示新的RTT样本的影响不大(RTT值更新较慢),
若 α 选择接近于0,则表示新的RTT样本影响较大(RTT值更新较快),典型的 α 值为7/8
超时重传时间 RTO(Retransmission Time-Out)
若β取值接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高
但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担
因此TCP标准推荐 β取值为2


流量控制
滑动窗口
采用大小可变的滑动窗口进行流量控制,单位字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定,但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值


拥塞控制
TCP是互联网端到端拥塞控制的实体,对避免互联网因拥塞而崩溃有着不可替代的作用(因为网络的去中心化,只能靠TCP来控制)
发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个TCP连接需要有以下两个状态变量:
接 收 窗 口rwnd ( receiver window ) : 又 称 为 通 告 窗 口(advertised window),这是接收端根据其目前的接收缓存大小所允许的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP报文的首部中的窗口字段,传送给发送端
拥塞窗口cwnd(congestion window):是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制
发送窗口的上限值:取值为 rwnd 和 cwnd 这两个变量中较小的一个,即min(rwnd, cwnd)
慢启动算法(Slow Start)
在主机刚刚开始发送报文段时先将拥塞窗口cwnd 设置为一个最大报文段MSS的数值
在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数
用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使报文段注入网络的速率更加合理
拥塞避免算法(Congestion Avoidance)
加性增加(Additive Increace):执行拥塞避免算法阶段,当收到对当前发送窗口中所有报文段的确认时就将cwnd 增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
乘性减少(Multiplicative Decrease):无论在慢启动还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢启动门限值ssthresh 设置为当前cwnd 的一半。当网络频繁拥塞时ssthresh 会下降很快,以显著减少注入网络中的报文段数量

快速重传算法(Fast Retransmission)
当发送端收到三个重复ACK(其实是第四次的)(duplicate ACK)时,即认为有报文段丢失,发送端会立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时,同时将ssthresh 设置为当前cwnd值的一半,并且将cwnd 减为原先的一半
在某些情况下可更早地重传丢失的报文段

快速恢复算法(Fast Recovery)
快速恢复是基于“管道模型”的“数据包守恒原则”,即同一时刻在网络中传输的报文段数量是恒定的,只有当“旧”报文段离开网络后,才能发送“新”报文段进入网络
如果发送端收到一个重复的ACK,则认为已经有一个数据包离开了网络,于是将cwnd加1,此时若发送窗口值还容许发送报文段,就继续发送报文段
因此,TCP在快速恢复阶段会试图发送新的数据包以保持一定的带宽利用率。当TCP收到丢失包的ACK以后,会退出快速恢复阶段而进入拥塞避免阶段
连接管理
传输连接有三个阶段,即:连接建立、数据传送和连接释放。连接管理就是使连接的建立和释放都能正常地进行。Client-Server模式
连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在;要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等);能够对传输实体资源(如缓存大小,连接表中的项目等)进行分配
三次握手-连接建立
证明双方都能发能收

四次挥手-连接关闭


版本
TCP不同版本之间的差异主要在于拥塞控制机制。
性能:通常用吞吐率和公平性来衡量
类型一:更好的进行端到端拥塞控制,在尽量保持性能的同时避免网络拥塞崩溃

类型二:更好的适应新的底层网络,比如高速TCP、无线TCP、卫星网络TCP等,其目标是提升TCP在某种网络环境下的性能

安全威胁
SYN Flood
伪造IP地址发SYN


防御
无效连接监视释放
延缓TCB分配
• SYN Cache:在收到SYN数据报文时不急于去分配TCB,而是先回应一个SYN+ACK报文,并在一个专用HASH表(Cache)中保存这种半开连接信息,直到收到正确的回应ACK报文再分配TCB。在FreeBSD系统中这种Cache每个半开连接只需使用160字节,远小于TCB所需的736个字节
• SYN Cookie:收到SYN包并返回SYN+ACK包时,不分配一个TCB,而是根据这个SYN包计算出一个Cookie值作为初始序号。在收到ACK包时,服务器根据那个Cookie值检查这个ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。Cookie由源目地址、端口以及服务器自己的固定信息生成
使用SYN Proxy防火墙:正常才会再回复,一共需要6次

使用源合法性验证技术:防护设备收到SYN报文后,回应一个经过构造的SYN+ACK报文,通过用户的反应来判断此用户是否正常

ACK Flood

对系统的资源消耗不是很大,通 常 是 与 其 他 攻 击 方 式 组 合 在 一 起 使 用 , 比 如 SYNFlood+ACK Flood
目前大多数实现中校验ACK报文的合法性都涉及到较为复杂的算法。当SYN Flood与ACK Flood一起发生的时候, 主机和防火墙将耗费大量的精力来计算ACK报文是否合法以致不堪重负
Connection Flood
真实IP地址

① 完成三次握手后,不发送任何报文,一直维持这些TCP连接
② 完成三次握手后,立刻发送FIN或RST报文释放本端连接,同时快速发起新的连接
③ 连接过程中呈现给服务器端很小的awnd,导致服务器协议栈资源耗尽
④ 发送大量重传请求,以很小的流量即可导致被攻击网络上行链路拥塞
防御
会话检查
① 源IP地址新建连接速率检查
② 源IP地址并发连接数检查
③ 慢速连接速率检查:统计同一源IP地址对同一目的IP地址的连接次数,在各统计时间间隔内,如果连续多次连接数相同,则判定为TCP慢速连接攻击
④ 异常会话检查
A. 空连接检查:如果在检查周期内,在某条TCP连接上通过的报文数小于阈值,则判定该连接为异常连接
B. 重传会话检查:当某条TCP连接上重传报文数量大于阈值时,则判定该连接为异常连接
C. 小窗口连接检查:当某条TCP连接上通过的报文窗口小于阈值时,则判定该连接为异常连接
LAND攻击
发送一个TCP SYN报文,源IP和目的IP地址都是目标计算机的IP地址。目标或者不知道该如何处理,或者循环发送和接收该数据包,消耗系统资源(分配TCB和等待响应)。许多UNIX实现会直接崩溃,Windows系统会变得极其缓慢
防御:系统补丁。防火墙过滤此类报文
FLAG误用攻击(异常标识位攻击)

例:2019年7月26日,国内某大型互联网公司数据中心自研网关宕机,故障持续时间超过12小时,经多个小组的工程师加班排查,原因定位于连续收到ACK&RST标志位异常报文的攻击。由于国内互联网公司的自研网关大都源自同一批工程师之手,其余互联网公司的自研网关极有可能存在类似BUG,由此引发圈内大规模排查
问题:网关是三层转发设备,为什么TCP标志位异常,会导致网关宕机?• 网关的NAT模块会维护地址映射表项,会根据TCP标志位更新地址映射对的定时器。ACK指示延长定时器,RST则是删除定时器,因此出现bug
RST攻击(复位攻击)
攻击者向服务器或者客户端发送伪造的TCP RST报文,导致正在进行通信的TCP连接断掉,从而达到拒绝服务的攻击效果。
攻击条件:通讯目标方接受TCP报文
① 源IP地址与端口号一致
② 序列号(Seq)落在TCP窗口之内

应用
拒绝服务攻击
通常作为TCP会话劫持的前奏
安全响应:阻断入侵连接。TCP-RST响应也称阻断连接响应。在入侵检测系统检测到特定的攻击事件后,通过重置(复位)攻击者和受害者之间的TCP连接来阻断攻击,这种阻断连接机制是目前入侵检测系统中使用最多的主动响应机制
会话劫持


防御
① 避免攻击者成为通信双方的中间人
• 部署交换式网络,用交换机代替集线器
• 防御ARP欺骗、ICMP重定向、RIP/OSPF路由欺骗攻击
② TCP连接加密(IPsec协议)
• 避免攻击者得到传输层的端口及序列号等关键信息
低速率拒绝服务攻击(LDoS)
攻击者利用TCP的自适应拥塞控制机制,周期性地将攻击包注入网络,使网络发生周期性拥塞,经过该网络的所有TCP连接都会周期性地通过拥塞控制抑制流量,从而达到降低受害端传输速率的攻击效果
与传统DoS区别
- 攻击所利用的是TCP的自适应拥塞控制机制,因攻击引起的反应和调整是合法的,使得受害端受到长期攻击而毫无察觉
- 攻击流量与许多真实的数据流特征类似,导致攻击隐蔽性非常好
- 攻击成本低,一个单一的攻击源就可以发动一次攻击,需要发送的数据量远小于泛洪攻击

基于RTO机制的攻击(Shrew攻击)

基于AIMD机制的攻击(RoQ降质攻击)


攻击检测

攻击防御
改进TCP协议:对协议进行修改、填补漏洞
改进路由器AQM(主动队列管理)算法:丢弃符合设定攻击特征的数据流;重新进行带宽分配,尽量保护TCP数据流,抑制LDoS攻击流
路由器防御:监视端口丢包率,找到潜在的受害者,优先处理来自受害者的TCP数据包

SSL&TLS协议
SSL(Secure Socket Layer,安全套接字层)
在TCP协议之上为两个应用层端实体(End Entity)之间提供安全传输通道的协议,利用数据加密(Encryption)技术确保数据在网络传输过程中不会被窃取或篡改。封装在TCP里,无法保证TCP安全,保证应用层安全
TLS(Transport Layer Security,传输层安全协议)
TLS 1.0是IETF制定的SSL的互联网标准版本(RFC 2246),它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1

安全服务
身份认证
利用数字证书技术和可信任的第三方认证机构,为客户端和服务器之间的通信提供身份认证功能,便于彼此之间进行身份识别
使用X.509 v3数字证书
客户端对服务器的身份认证
• 服务器允许客户端使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性
服务器对客户端的身份认证
• 可通过公钥技术和证书进行认证
• 也可通过用户名+password来认证
机密性保护
客户端和服务器之间传输的所有数据都经过了加密处理,以防止非法用户进行窃取、篡改和冒充。Triple DES,IDEA,RC2,RC4…
完整性保护
利用加密算法和Hash函数来保证客户机和服务器之间传输的数据的完整性。MAC with MD5 or SHA-1
协议栈
握手协议:建立客户与服务器之间的安全通道,协议内容包括双方的相互认证、交换密钥参数等 -> 密码协商
变更密码规格协议:告知改变密码参数
告警协议:向对端指示其安全错误
记录协议:封装以上三种协议或应用层数据(比如HTTP)
基本概念
连接:连接是能提供合适服务类型的传输;对SSL来说,连接是点对点的而且是暂时的;每一条连接都与一个会话相关联

会话:SSL会话是指在客户端和服务器之间的一种虚拟的关联关系
会话由握手协议创建
会话定义了一组可以被多个连接共用的密码安全参数
对于每个连接来说,可以利用会话来避免对新的安全参数进行代价昂贵的协商 -> 会话重用

握手协议
基本功能:
客户端和服务器之间相互认证
客户端和服务器之间协商加密算法和MAC算法
客户端和服务器之间协商用于加密SSL载荷的共享密钥 机密性密钥
客户端和服务器之间协商用于产生MAC的共享密钥 完整性密钥
握手协议在任何应用数据被传输之前使用

协议流程

1.建立安全能力


2.服务器认证与密钥交换



③ 客户端认证与密钥交换
客户端收到server_done消息后
• 根据需要验证服务器提供的证书是否有效
• 判断server_hello的参数是否可以接受
• 如果都没有问题的话,发送一个或多个消息给服务器



④ 变更密码规格并结束握手(完成安全连接建立
对所有消息进行校验防篡改


密码套件参数

密钥交换方法
密钥交换的目的是让双方获得相同的pre_master_secret(预备主密钥),后续将由pre_master_secret生成master_secret(主密钥)(不被第三方截获地约定)
RSA
• 客户端生成一个48字节的随机数k作为pre_master_secret
• 客户端用服务器公钥加密k得到k’并发送给客户端,服务器收到k’后用自己的私钥解密得到k
• 此时双方都得到了k即pre_master_secret,密钥交换完成
DH
共有6个参数,分别是DH算法参数(P,G)、服务器私钥s和公钥S、客户端私钥c和公钥C


密钥生成
主密钥(Master_Secret)生成

密码参数生成

记录协议
主要功能:封装握手协议、告警协议、变更密码规格协议或应用层协议的数据
工作流程

分段:将每个上层消息分割为不大于16KB的块
压缩:• 无损压缩• 增加长度不能超过1KB• 在SSL v3中默认算法为空(不压缩)
添加MAC:
数据加密:
添加SSL记录头:
会话重用
master_secret是使用开销较大的公钥密码技术建立起来的,一个会话对应于一个master_secret
会话重用方法:基于session_id复用
会话复用由Client申请,由Server决定
① 对于已经建立的SSL会话,使用session_id为key,master_secret为value组成一对键值,保存在本地,服务器和客户端都保存一份
② 当第二次握手(发起新的连接)时,客户端若想使用会话复用,则将clienthello消息中session id设为相应的值
③ 服务器收到这个client hello,查找本地是否有该session_id,如果有,判断当前的加密套件和上个会话的加密套件是否一致,一致则允许使用会话复用,将server hello中session_id也设为相同的值,然后计算对称秘钥,执行后续操作
④ 如果服务器未查到客户端的session_id(可能是会话已经老化),则会重新握手,session id要么重新计算(和client hello中的不一样),要么置成0,这两个方式都会告诉客户端这次会话不进行会话复用
安全威胁
Strip攻击
多数用户不会主动使用SSL/TLS协议(主动输入https),都是重定向到HTTPS

攻击者监视HTTP传输,在用户试图访问Web服务器时充当代理:用户到攻击者的会话是HTTP,攻击者到服务器的连接是HTTPS。客户端与攻击者此时建立一个HTTP明文链接,攻击者与服务器端建立HTTPS加密链接,攻击者因此可以获取客户端的所有信息

重协商攻击与安全重协商机制
重协商:客户端和服务器在已经协商好的SSL/TLS连接上重新协商,用以更换算法、更换数字证书、重新验证对方身份、更新共享密钥等等。首次协商和重协商之间缺少关联性验证

安全重协商机制(RFC 5746)
允许安全重协商,但是只允许在首次协商时携带“支持安全重协商”标识,并且会使用两次协商消息中的verify_data验证重协商合法性

三次握手攻击
阶段一(未知密钥共享)

① 客户端访问攻击者搭建的带有证书的恶意网站(比如钓鱼网站等)
② 客户端生成一个预备主密钥(使用攻击者公钥加密)和一个随机数,发送给攻击者
③ 恶意网站向目标网站服务器发起连接,复用客户端的预备主密钥(使用服务器公钥加密)和随机数
④ 恶意网站将目标服务器的随机数传给客户端
⑤ 客户端与攻击者、攻击者与服务器分别进行证书验证与密钥协商
⑥ 密钥协商结束后,将会形成两个TLS连接,通信三方拥有相同主密钥(由相同的预备主密钥和随机数生成),共享相同的连接参数,但是两个连接使用的证书不一样,而且每个连接的verify_data不同。
利用SSL/TLS会话重用机制进行下一步攻击
阶段二(全同步)

① 客户端再次向恶意网站发起请求时,客户端与恶意网站之间采用会话重用机制,主密钥不变;恶意网站直接转发请求到目标网站,同样采用会话重用机制
② 两个连接分别使用相同的主密钥实现会话重用(会话重用不需要证书,仅使用主密钥就可实现通信双方的身份验证),并且协商出相同的连接参数
③ 会话重用结束,两个连接的Finish消息一致,verify_data相同
利用安全重协商机制发动下一步攻击
攻击方法:阶段三(身份仿冒)

① 攻击者浏览到一个需要进行身份验证的资源(比如转账),提交HTTP请求;对此,目标服务器发出重协商请求并要求客户端提供证书
② 因为安全连接参数在两个连接上均相同,攻击者就可以复制消息,让受害者和目标服务器进行重协商;由于两个连接上一次协商的verify_data相同,满足安全重协商要求,重协商能够完成
③ 重协商结束,客户端证书通过验证,攻击者之前提交的HTTP请求(转账)被执行,攻击完成
小结
① 通过中间人攻击,实现两个连接的主密钥一致、连接参数一致,为进一步利用会话重用机制创造条件(此时只是证书不一致,但是会话重用不需要证书)
② 利用会话重用机制,实现两个连接的主密钥一致、连接参数一致、verify_data一致,为进一步利用安全重协商机制创造条件
③ 利用安全重协商机制,实现攻击者成功仿冒客户端身份完成操作
防御:禁用重协商
心脏滴血(Heartbleed)漏洞
OpenSSL:实现SSL/TLS协议的开源软件包,为大多数网站系统所使用
OpenSSL心跳机制:维持TLS连接的长期存在。
① 客户端向服务器发送心跳请求(Heatbeat_Request)消息,询问服务器是否在线,该消息中包含payload字段及其对应的payload_length字段
② 服务器向客户端返回心跳响应(Heatbeat_Response)消息,服务器会根据请求消息中的payload_length将payload复制到响应消息中,所有的数据都会被回显(服务器并不会检查payload的实际长度是否与payload_length一 致 ; 如 果 payload_length 与 实 际 长 度 不 一 致 , 服 务 器 仍 然 会 按 照payload_length返回数据,由此造成了内存信息的越界访问)
攻击者构造心跳请求消息,其中的payload长度小于payload_length-> 内存数据泄露
应用层协议
IKE(Internet Key Exchange)
SA
SA(Security Association,安全联盟/安全关联):两个IPSec实体之间经过协商建立起来的一种协定,内容包括采用何种IPSec协议(AH还是ESP)、运行模式(传输模式还是隧道模式)、验证算法、加密算法、加密密钥、密钥生存期、抗重放窗口、计数器等
SA是单向的。因此每个通信方必须要有两种SA,一个inbound SA,一个outbound SA
IKE用于动态建立SA 。包含了3个不同协议:ISAKMP、Oakley和SKEME。建立在UDP上
表示方法
三元组(SPI,IP目的地址,IPSec协议)
SPI(Security Parameter Index,安全参数索引)是32位的安全参数索引,用于标识具有相同IP地址和相同安全协议的不同的SA,它通常被放在AH或ESP头中 。
IP目的地址:IP目的地址,它是SA的终端地址。
IPSec协议:采用AH或ESP。
SP&SPD
SP(Security Policy,安全策略):决定对IP数据包提供何种保护,并以何种方式实施保护。
SPD(Security Policy Database,安全策略数据库):将所有的SP以某种数据结构集中存储的列表
SAD(Security Association Database,安全联盟数据库)
将所有的SA以某种数据结构集中存储的列表
IKE阶段1(Main Mode)
对通信双方进行身份认证协商IKE SA参数,并在两端之间建立一条安全的通道,使阶段2协商受到保护。认证方式:Pre_Shared Key或证书CA
阶段1可以被多个阶段2复用
过程


消息1&2——协商IKE SA参数
⚫ 消息1—发送方向对等体发送一条包含一组或多组策略提议,在策略提议中包括5元组(加密算法,散列算法,DH,认证方法,IKE SA寿命)。
消息3&4——用于交换DH的公开信息和随机数
⚫ 两个对等体根据DH的公开信息都算出了双方相等的秘钥后,(连通预共享密钥)生成skey_ID,随后便根据SKEY_ID来推算出其他skey_ID
⚫ skeyID_a—散列预共享密钥(HMAC中的密钥),为后续的IKE消息协商以及IPSEC SA协商进行完整性检查;
⚫ skeyID_e—为后续的IKE消息协商以及IPSEC SA协商进行加密,下一阶段的message,data,Preshared key,和第二阶段的加密;
⚫ skeyID_d:阶段2使用,用来协商出后续IPsec SA加密使用的IKE密钥资源。
消息5&6——用于双方身份验证(受skeyID_e加密保护的)
IKE阶段2(Quick Mode)
在上述安全通道上协商IPSec SA参数。


动态主机配置协议(DHCP)
BOOTP的扩充。它增强了BOOTP,并与BOOTP向后兼容(运行BOOTP客户的主机可以向DHCP服务器请求静态配置)。作用于局域网,基于UDP
常用的2个端口:67(DHCP server),68(DHCP client)。
功能:集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
引导程序协议(Bootstrap protocol,BOOTP)
一个客户工作站能够用一个最小的IP堆栈进行初始化,并向BOOTP服务器请求它的IP地址、网关地址以及名字服务器的地址。是DHCP协议的前身
过程:客户确定它自己的硬件地址,地址一般在硬件的ROM内。BOOTP客户在一个UDP数据报中把它的硬件地址发送到服务器。服务器接收数据报,并在它的配置文件中查找客户的硬件地址,这个文件包含客户的IP地址。
工作过程

报文格式

DHCP欺骗
流程:
- 攻击者首先发起大量的DHCP请求,耗尽DHCP服务器可分配的所有IP地址,DHCP服务器停止为其他DHCP客户端分配IP地址。
- 攻击者在网络架设自己的DHCP服务器,为真正需要IP地址的客户端分配IP参数
结果:如果IP地址、掩码和网关错误,将导致客户端无法访问远程网络;如果DNS指向攻击者控制的DNS服务器,攻击者就可以实现DNS欺骗功能;如果网关指向攻击者控制的路由器,攻击者可以实现中间人攻击。
防御:DHCP欺骗截获交换机端口的DHCP应答报文,因此可以通过建立一张包含有用户MAC地址、IP地址、租用期、VLAN ID、交换机端口等信息的一张表,或者将交换机的端口分为可信任端口和不可信任端口,当交换机从一个不可信任端口收到DHCP服务器的报文时,交换机会直接将该报文弃。
DNS协议
主机名(host name)&IP地址:便于人们理解和记忆,但路由器处理困难&。。。
域名系统(Domain Name System):逐级授权的分布式数据查询系统,主要功能是完成域名到IP地址的翻译转换。
应用层协议,使用UDP传输,端口号53
基本概念
域名系统
工作模式:客户端/服务器模式
系统结构:树状层次结构

域名
域名空间中,从当前节点到根节点的路径上所有节点标记的点分顺序连接
以点“.”结尾的域名称为绝对域名或 完 全 合 格 域 名 FQDN(FullQualified Domain Name) ,
域

资源记录(Resource Record)
域名系统中用于存储与域名相关的属性信息。由名字(Name)、类型(Type)、种类(Class)、生存时间(TTL)、记录数据长度(Rdlength)、记录数据(Rdata)等字段组成
• Name:主机名(hostname)或者IP地址,表示拥有这条RR的对象
• Type:A记录、AAAA记录、NS记录、SOA记录、MX记录、PTR记录、CNAME记录、TEXT记录
• Class:IN (Internet)
• TTL:该记录的有效时间(到期后需重新解析该记录),单位为秒

域名服务器和解析器
域名服务器:Name Server,用于存储域名和资源记录及其他相关信息并负责处理用户的查询
根域名服务器:负责维护顶级域的资源记录信息,并且接受权威服务器的查询请求
权威域名服务器(Authoriative Name Server):负责维护和保存它所获得授权的域的资源记录信息,并且接受递归服务器的查询请求(通常不提供递归解析服务)
递归域名服务器则(Recursive Name Server):通常又被称为本地域名服务器(Local Name Sever)或缓存服务器,负责接收用户(解析器)的查询,并且通过查找缓存或者向包括根在内的权威服务器发出查询从而获得查询结果(通常不会维护或者管理任何域的资源记录数据)
解析器:访问域名服务器的客户端程序
域名解析过程
迭代:可以不知道,但是告诉我去哪查
递归:给我结果

区(Zone)
域名空间中面向管理的基本单元,通常是若干个域的集合
区和域的区别:域是域名树的一棵子树,也就是域名空间的子集;区是每一个域名服务器所保存的完整信息的范围

区文件(Zone File)
权威域名服务器中存储的关于区内某个域授权信息的文本文件。包含内容:域名、资源记录及相关的权威起始信息(SOA)


主服务器(Master Server):被配置成区文件发布源的权威域名服务器
从服务器(Slave Server):又称“辅服务器”,通过区传送协议来获取区文件的权威域名服务器
区传送(Zone Transfer):将区文件从主服务器向从服务器传送的过程,用于实现主、从服务器间的数据同步
域名注册过程
域名注册局是管理顶级域名的组织,负责设置域名规则,并与注册商合作向公众出售域名(如VeriSign管理.com域名及其域名系统的注册)
注册商是经认证可向公众销售域名的组织(如GoDaddy),一些注册商有能力销售顶级域名
注册人是注册域名的个人或公司,可以通过注册商管理域名设置

报文格式



资源记录
资源记录五元组:<Domain Name, TTL, Type, Class, Data>

NS记录和SOA记录是任何一个域都不可或缺的两条记录:
NS记录说明了有哪些权威域名服务器为该域提供解析服务
SOA记录说明在多台权威域名服务器里哪一台是主服务器
A记录 (Address Record)
指明一个域名对应的IP地址,也称为主机记录,是使用最广泛的RR
常作为低成本的负载均衡解决方案:为单个域名创建多个A记录,对应多台物理服务器IP地址,可以实现基本的负载均衡
AAAA记录:指明一个域名对应的IPv6地址
NS记录 (Name Server Record)
列出某个域的权威域名服务器(的hostname)
SOA记录 (Start of Authority Record)
指明某个域的权威域名服务器中哪一个是主服务器,总是处于任何区文件的第一位。还用于存储会影响区文件更新或过期的其他属性,比如版本信息和计时信息,这些属性会影响在该域的域名服务器之间进行同步数据的频繁程度
MX记录 (Mail Exchange Record)
邮件交换记录,指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器(hostname)
PTR记录(Pointer Records)
用于查询IP地址与主机名的对应关系(only 1v1)
CNAME记录 (Canonical Name Record)
别名记录,用于将一个域名映射到另一个域名。所指向的域名必须有一个正确的A记录
降低多域名、多服务器、多业务的运维成本。实现内容分发网络(Content Delivery Network, CDN)
TXT记录(TEXT Record)
自由格式的文本,用于更一般地提供关于某个条目或域的人类可读信息
经常为恶意软件所利用,实现基于DNS隧道的隐蔽通信
响应方式
权威响应
直接返回答案,通常除了在应答字段中返回所查询域名资源记录以外还在权威应答字段放入本域的NS记录,如果有必要则继续在附加信息字段中加入相应的地址记录
参考响应
不返回应答(应答数为0),而是在权威应答字段中返回相应的NS记录,如果有必要则继续在附加信息字段中加入相应的地址记录
解析器下一步问权威域名服务器
安全威胁
几乎所有的互联网应用都依赖DNS进行资源寻址(因为IP经常变)。DNS是互联网的基石,DNS安全对互联网正常运行具有至关重要的影响
DNS FLOOD
UDP Flood的一种,但是由于DNS服务器的不可替代的关键作用,一旦服务器瘫痪,影响一般都很大
随机子域名(RSD)攻击
攻击者通过向递归解析服务器查询合法域名的随机子域名(子域名瞎编)来实现攻击,以此来耗尽DNS权威服务器的带宽和资源,造成这些权威服务器无法向合法用户提供正常的服务
目的:消耗所有DNS查询资源。随机域名迫使运营商递归服务器缓存失效。转发递归查询攻打权威服务器。 权威服务器还不能封运营商递归服务器IP
效果:被攻击权威服务器所管理的域无法访问

非存在域名(NXDomain)攻击
类似于随机子域名攻击,攻击者向递归服务器发送大量非存在域名的查询请求,但这些域名解析缓慢或者不能解析,以此来让DNS递归服务器一直在等待解析响应,以达到消耗递归服务器资源,实现拒绝服务攻击的目的
DNS反射放大攻击
UDP反射放大攻击的一种,放大效果通常能够达到30~50倍
当前互联网上存在大量的开放DNS递归服务器,为发动反射放大攻击创造了条件。
DNS欺骗
域名系统(包括域名服务器和解析器)接收或使用来自未授权主机的不正确信息
域名解析过程中缺乏身份和数据合法性验证,缺乏数据完整性保护,使得攻击者可以轻易的从多个位置、多个阶段发起攻击,篡改域名解析结果
缓存投毒(缓存污染)
攻击者将“污染”的缓存记录插入到正常的递归服务器的缓存记录中,所谓污染的缓存记录是指递归服务器缓存中域名所对应的IP地址不是真实的地址,而是由攻击者篡改的地址,通常是攻击者控制的恶意网站
① 监听递归服务器与权威服务器之间的通信获取DNS查询报文事务ID,或者直接猜测事务ID
② 伪造DNS响应报文(其中的IP地址为错误地址,且TTL较大),在权威服务器返回正常响应报文之前将伪造报文发送给递归服务器
③ 通 常 需 要 配 合 对 权 威 服 务 器 的DDoS攻击以延缓正常响应
域名劫持(DNS劫持)
• 方式一:直接攻击域名注册商或者域名站点,获取控制域名的账户口令,这样可以修改域名对应的IP地址
• 方式二:攻击权威名称服务器,直接修改区域文件内的资源记录
DNS重定向
攻击者监听DNS客户端(解析器)与递归服务器之间的通信,在递归服务器返回正常响应报文之前,伪造包含错误IP地址的响应报文,使得客户端对正常网站的访问被重定向到攻击者控制的恶意网站
攻击结果与缓存投毒和域名劫持很相似,区别在于
• 攻击对象是DNS客户端
• 攻击影响范围较小
DNS隐蔽通信/DNS隧道
利用DNS协议,将其他数据和协议(如shellcode)编码为DNS查询和响应报文,以此来躲避防火墙和入侵检测设备,实现对内网主机的远程命令与控制
• 由于防火墙规则限制,User无法直接访问外网,但防火墙对DNS流量放行
• User请求解析域名xxx.abc.com,LocalDNS没有缓存,需通过迭代查询查找域名映射IP
• 查询定位到abc.com域对应的权威服务器(攻击者控制),可将通信数据封装在客户端查询请求中,当请求数据到达受控权威域名服务器时,再从请求数据包中解析出数据,并将响应数据封装在DNS响应中返回给客户端
规避缓存机制:通信过程中关键一点是对DNS缓存机制的规避,因为如果需要解析的域名在递归服务器中已经有缓存时就不会被转发到权威服务器。所以在构造的DNS查询报文中,每次查询的域名都是不一样的或者是已经是过期的
客户端轮询机制:大多数场景下内网主机位于防火墙后,受控服务器不可能发起连接。所以需要内网主机定时向受控服务器发送请求,保证二者之间的通信状态
数据编码技术:对通信载荷编码是DNS隧道的另一个核心技术,编码的目的是将载荷转化为正常的DNS流量
信息写到子域名里或者TXT里

异常域名
恶意域名:域名所代表的互联网资源具有恶意,通常为攻击者所使用
误用域名:域名所代表的互联网资源不具有恶意,但域名使用行为不正常,通常为非攻击者所使用
• 一次性域名
• 不良泛解析域名
算法生成域名(DGA Domain Name)

基于DGA域名的僵尸网络C&C通信
• 逃避检测:生命周期短,注册时间灵活,避免黑名单检测
• 安全人员分析困难:逆向分析、黑洞分析、域名检测
• 代价低:域名注册代价低
分类:根据种子性质分类
• Time Independent vs Time Dependent:种子是否依赖于时间
• Non-Deterministic vs Deterministic:种子是否使用不确定的参数(如当日银行利率、Twitter热门话题)
分类:根据生成策略分类
• 基于算术(Arithmetic):计算一系列数值,直接指向ASCII码,或者作为偏移量指向硬编码的字母表,组合成域名
• 基于单词表(Wordlist):从单词表中选择单词并拼接成一个域名
• 基于Hash(Hashing):使用十六进制的哈希值作为域名,通常使用MD5和SHA256
• 基于置换(Permutation):通过对一个初始域名进行字母置换操作生成多个新的域名

阴影域名(Shadowed Domain Name)
通过恶意手段在合法域名下创建的非法子域名
可绕过先前由信誉机制和黑名单机制建立的恶意域名检测系统
① 窃取域名管理者(网站站长)的域名账户
② 创建指向恶意服务器的多个子域名(数量庞大,生命周期短暂且域名随机分布)
③ 攻陷受害网站(比如使用钓 鱼 工 具 包 AnglerExploit Kit),在页面中嵌入host为恶意子域名的URL(比如广告),将用户请求重定向到恶意服务器
同形异义域名(Homograph Domain Name)
通过视觉相似字符替换,模仿知名域名,进行网络钓鱼等恶意活动。从ASCII扩展到Unicode
一次性域名(Disposable Domain Name)
互联网应用对用户终端进行信息采集

• 使用一次性域名的原因是可以节省成本(利用现成的DNS基础设施),使用隧道域名的原因是可以逃避检测(FW和IDS不封禁DNS流量)
• 响应不同:一次性域名的查询响应中不会有攻击者投递的攻击载荷
• 权威服务器的管理者不同:一次性域名的权威服务器管理者是正经的互联网/安全企业,隧道域名的权威服务器管理者是黑客
异常域名特征
域名文本特征
① 字符随机性:长度、香浓信息熵、排列特征、字符意义性…
② TLD随机性:TLD个数、不同TLD占比…
域名查询行为特征
① NXDOMAIN : NXDOMAIN请求数、请求时间、请求主机数…
② 请求时间序列模式:周期请求、集中请求、域名短时生存性…

DNSSEC(DNS Security Extenstion)
DNS在设计时没有考虑安全问题,攻击频发
通过为DNS中的数据添加数字签名信息,使得递归服务器在得到应答消息后可以通过检查此签名信息来判断应答数据是否权威和真实,从而为DNS数据提供数据来源验证和数据完整性验证,防止针对DNS欺骗的相关攻击

DNSSEC信任链
保证递归服务器所获得公钥的真实性
必须有一个或多个开始就信任的公钥(或公钥的散列值),称为信任锚(Trust anchors)
信任链中的上一个节点为下一个节点的公钥散列值进行数字签名,从而保证信任链中的每一个公钥都是真实的
理想的情况下(DNSSEC全部部署),每个递归服务器只需要保留根域名服务器的公钥就可
假设递归服务器并不信任example.com的公钥,它可以到example.com的上一级域名服务器.com那里查询example.com的DS记录,DS记录中存储的是example.com公钥的散列值;递归服务器可以用.com的公钥验证.com对此散列值的签名是否正确;如果递归服务器仍然不信任.com的公钥,可以到.com的上一级域名服务器.(根服务器)那里查询.com的DS记录,并使用.的公钥(信任锚)验证.com公钥是否正确
DNSSEC新增资源记录
RRSIG(Resource Record Signature):资源记录签名。用于存放当前域名每一条资源记录的数字签
DNSKEY (DNS Public Key):DNS公钥
DS(Delegation Signer):授权签名者。该记录用于存放DNSSEC公钥的散列值。与DNSKEY存储在资源记录所有者所在的权威域的区文件中不同,DS记录存储在上级域的权威服务器中
域名解析过程

一直没有大规模的部署,主要原因是:
需要扩充域名解析系统的计算资源和存储能力以保证解析效率
需要一系列技术性要求较高的专用设备,如密钥管理设备、签名设备
密钥系统的管理问题比较突出
增加了新的实现错误和配置错误的几率
并不能解决除缓存投毒之外的其他DNS安全问题
超文本传输协议HTTP
按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议

基本概念
请求报文中的方法(Method)

响应报文中的状态码(Status-Code)
指明特定的请求是否被满足,如果没有满足原因是什么。

首部字段或消息头

HTTPS
HTTPS 需要CA机构颁发的SSL证书,端口是443,对传输的数据进行加密

TELNET&SSH
TELNET
TELNET是最早利用Internet连接提供的服务之一。基于TCP,端口23,客户端–服务器模式,明文传输
可对不同用户端口与服务器23端口之间的许多并发连接进行应答。比一般的C-S模式具有更强的功能,因为用户计算机成为虚拟终端之后,可以直接操作远程主机的运行,而不仅仅是运行某个服务程序。
SSH(Secure Shell,安全Shell)
目的是实现安全远程登录以及其它安全网络服务。仅仅是一协议标准,其具体的实现有很多。基于TCP,端口22。自动加密和解密所有SSH客户端与服务端之间的网络数据。
提供服务:机密性、完整性保护、身份认证功能(必选的服务器认证,可选的客户端认证)。
包含内容:算法(包括加密、认证和压缩算法)协商、密钥交换、服务器身份认证、用户身份认证以及应用层数据封装处理等。

SSH端口转发
能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解密服务。也被叫做”隧道”(tunneling)
基于SSH端口转发实现VPN功能

本地端口转发:将本地机的某个端口转发到远端指定机器的指定端口

远程端口转发:将远程主机的某个端口转发到本地端指定机器的指定端口

使用一个客户端程序,该程序和远程服务器交互,在本地作为一个代理服务器,将浏览器连接时所使用的代理服务器设置为本机,端口设置为本地代理服务器所在的端口,这样,访问网络时都通过了 SSH 服务器端的中转,而这中间的数据又是加密的,所以你就获得了一个加密、安全的网络环境
SSH与SSL的比较
都是在它们上面还可以再放其它应用层协议,如FTP协议等, 都将应用层进行了加密
SSH不需要证书,即不需要公证机构,SSH实现了主机用户名和密码的认证
SSH可以让用户以某个主机用户的身份登录主机,并对主机执行操作(即执行一些命令),目前用的最多的就是远程登录
而SSL和主机用户名登录没有任何关系,它本身并不实现主机登录的功能,它只的一个单纯的加密功能。
为了方便理解,可以简单的认为(仅功能上)SSH=SSL+主机用户登录功能等应用层协议
邮件传输协议
一封电子邮件的发送需要经过用户代理、客户端邮件服务器和服务端邮件服务器等三个程序的参与,并使用邮件传输协议(SMTP,POP3或IMAP)来发送和获取邮件
邮件协议本省不参与加密,只是走HTTPS。
邮件代理:SMTP发,POP3收
网页:HTTP(S)收发
概念
用户代理UA(User Agent)
是用户与电子邮件系统的接口,它是一个在用户PC机中运行的程序。接受用户输入的各种指令,通过SMTP将用户的邮件传送至其邮件服务器或者通过POP、IMAP将信件从其邮件服务器获取到本机上。foxmail,outlook express等。至少具有撰写显示处理三个功能
邮件服务器
电子邮件系统的核心构件,因特网上所有的ISP都有邮件服务器。功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。默认监听25号端口接受请求。

简单邮件传送协议SMTP(Simple Mail Transfer Protocol)
是基于文本的协议,不支持声音、图像等非文本信息,但可以通过MIME标准将此类信息进行编码后再通过SMTP传输
使用客户/服务器方式,负责发送邮件的 SMTP 进程是 SMTP 客户,而负责接收邮件的 SMTP进程是 SMTP 服务器

SMTP不需要身份验证,人们连接到邮件服务器就能随便给一个知道的邮箱地址发送邮件,造成垃圾邮件泛滥。后来就有了ESMTP (Extended SMTP)。使用 ESMTP 发信时,需要经过身份验证才能发送邮件。
缺点
不能传送可执行文件或其他的二进制对象。
限于传送7位的ASCII码。许多其他非英语国家的文字无法传送。
SMTP服务器会拒绝超过一定长度的邮件。
MIME(多用途因特网邮件扩充Multipurpose Internet Mail Extensions)
是一个补充协议。主要用于编码,可同时传送多种类型的数据。实现了用标准的文本格式邮件传输非文本(二进制)数据的功能。使得非ASCII数据可以通过SMTP传送。
POP3(Post Office protocol)邮局协议
用于从邮件服务器接收邮件
属于离线式协议,即不能对邮件进行在线操作,必须下载到本地才能进行处理。
IMAP(Internet Massage Access Protocol)因特网报文访问协议
提供了在远程服务器上管理邮件的手段。
离线工作模式:与POP3相同。客户软件把邮箱存储在本地硬盘上以进行读取和撰写信息的工作。当需要发送和接收消息时,用户才连接服务器
在线工作模式:虽然邮箱由客户软件处理,但是用户在线访问的邮箱始终存储在邮件服务器上。在线方式主要是由位置固定的用户使用,一般在快速LAN连接下进行
安全邮件协议
邮件具有单向性和非实时性——不能通过建立隧道来保证安全,只能对邮件本身加密。
安全电子邮件能解决邮件的加密传输问题,验证发送者的身份问题,错发用户的收件无效问题。提供邮件的机密性,完整性,以及不可抵赖性等
PGP、S/MIME等
PGP(Pretty good privacy,高质量保密)
为电子邮件和文件存储应用过程提供认证业务和保密业务。
PGP采用的是一系列混合的公钥加密,包含有对称和非对称的加密方法。
⚫ 使用散列函数对邮件内容签名,保证信件内容不被篡改;
⚫ 使用公钥和对称加密保证邮件内容机密且不可否认;
⚫ 公钥的权威性由收发双方所信任的第三方签名认证;
⚫ 事先不需要任何保密信道来传递对称的会话密钥

虚拟网关
向远程用户提供SSL VPN接入服务的功能模块称为虚拟网关,是远程用户访问企业内网资源的统一入口。
一般部署在内网的边界位置,作为远程用户访问内网所有资源的统一入口
VPN实现:IPSec、SSL、SSH等
SSL-VPN

Web代理
远程用户访问内网Web资源时使用Web代理业务。
远程用户与FW虚拟网关之间建立HTTPS会话,FW虚拟网关再与WebServer建立HTTP会话。
虚拟网关在远程用户访问企业内网Web Server中起到了改写、转发Web请求的作用。

文件共享
远程用户访问内网文件服务器(如支持SMB协议的Windows系统、支持NFS协议的Linux系统)时使用文件共享业务。
采用协议转化技术,无需安装专有客户端,直接通过浏览器安全接入内部文件系统,像操作本机文件系统一样安全便捷。(HTTPS-SMB)
将客户端发起的文件共享请求转化成相应的协议格式,与服务器进行交互。

HTTPS登录->资源列表->文件服务器登录
端口转发
远程用户访问内网TCP资源时使用端口转发业务。
丰富的内网TCP应用服务(TCP的都行),提供端口级的安全访问内网资源的方式。数据流都经过加密认证,对用户进行统一的授权、认证,只需标准浏览器,不用安装客户端
本机对本机的访问+SSL+FW访问


网络扩展
远程用户访问内网IP资源时使用网络扩展业务。Web资源、文件资源以及TCP资源都属于IP资源,通常在不区分用户访问的资源类型时为对应用户开通此业务。
建立安全的SSL隧道,对内网所有复杂应用的全网访问(基于IP的都行),比如UDP的业务(应用、UDP、IP整体看作一个应用)
远程用户与虚拟网关之间会建立一条SSL VPN隧道。
远程用户本地PC会自动生成一个虚拟网卡。虚拟网关从地址池中随机选择一个IP地址,分配给远程用户的虚拟网卡,该地址作为远程用户与企业内网Server之间通信之用。
- 若分配了私网IP地址,远程用户就如同企业内网用户一样可以方便访问内网IP资源。
- 虚拟网关向远程用户下发到达企业内网Server的路由信息。

SSL VPN 与 IPSec VPN对比
SSL保护的是应用层的数据,可以针对某个应用做具体保护。而IPSec VPN针对的是整个网络层。无法做精细化控制。


SSH VPN 与 IPsec VPN/SSL VPN比较
IPsec VPN 更接近底层,相当于一个新的虚拟网卡,更有“专用”的性质,而 SSH 更像加密的代理服务器,是在你现有的网络上的一个普通的连接。
因此,如果你使用了IPsec VPN 连接,你访问所有网站都将通过该 VPN 连接,在不需要使用 VPN 时,你必须断开 VPN 连接。对于企业网络,“所有数据通过 VPN”这样的模式是很有意义的。但是,很多情况下,我们只需要对部分网站使用加密连接,这时候,IPSec VPN 连接就显得有些浪费。
然而 SSH 则不存在这个问题。只要在你需要使用 SSH 时使用该 SSH 的客户端作为代理服务器,不需要使用时,直接访问网络,就可以轻松实现自动切换 SSH 和普通网络,在这期间 SSH 和你原来的网络连接都不需要断开或重连。
一般都没有SSH VPN这个说法,他只是SSH的一个固有协议实现形式,且功能远没有SSL VPN强大
基于网络流量的安全防护
防火墙技术
位于多个信任程度不同的网络之间(如企业内部网络和internet之间)的设备。对两个网络之间的通信进行控制,通过强制实施统一的安全策略,防止对重要信息资源的非法存取和访问,以达到保护系统安全的目的。
用于保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为。
防火墙 = 硬件 + 软件 + 控制策略
• 宽松控制策略:除非明确禁止,否则允许。
• 限制控制策略:除非明确允许,否则禁止。
功能:
⚫ 访问控制
⚫ 对网络存取和访问进行监控审计
⚫ 防止内部信息的外泄
⚫ 支持VPN功能
⚫ 支持网络地址转换NAT
路由器与交换机的本质是转发,防火墙的本质是控制。
基本概念
区域,Zone
一个或多个接口的集合。(一个接口所连网络只能属于一个区域中,一个区域可以包含多个接口)。每个区域具有全局唯一的安全优先级
默认情况下:
• 报文在不同的安全区域之间流动时,才会触发安全检查
• 报文在同一个安全区域中流动时,不会触发安全检查
默认区域:防火墙内置,无法修改安全级别,无法删除。
自建区域:自己定义安全级别

典型配置

区域方向
入方向(inbound):数据由低向高安全级别的区域传输的方
出方向(outbound):数据由高向低安全级别的区域传输的方向
代理防火墙
作用于应用层,其实质是把内部网络和外部网络用户之间直接进行的业务由代理接管。
包过滤防火墙
在网络层对每一个数据包进行检查,根据配置的规则转发或丢弃数据包,通过配置ACL来实现。
配置双向策略:进出都要有策略
认为报文都是无状态的孤立个体,不关注报文产生的前因后果。
状态检测防火墙
状态检测和会话机制
当web服务器回应给PC的报文到达防火墙后,防火墙会把报文中的信息与会话中的信息进行比对,发现报文中的信息与会话中的信息相匹配,并且符合协议规范对后续包的定义,则认为这个报文属于PC访问外部服务器行为的后续回应报文,直接允许这个报文通过。
使用基于连接状态的检测机制,将通信双方之间交互的属于同一连接的所有报文都作为整体的数据流来对待,同一个数据流内的报文不再是孤立的个体,而是存在联系的。
为首包建立会话,后续报文直接根据会话进行转发,提高了转发效率。
• 首包
• TCP的首包:SYN置位的报文
• ICMP的首包:Echo Request 报文
• UDP的首包:查不到会话时即认为是首包
• 会话:(源地址,源端口,目的地址,目的端口和协议),只要五元组相同的报文,即可认为属于同一条数据流,在防火墙上就可以唯一确定一条连接
• 防火墙会在一段时间后删除会话,该时间称为会话的老化时间。

安全策略
定义的规则对经过防火墙的流量进行筛选,并根据关键字确定筛选出的流量如何进行下一步操作,可以基于IP、端口、协议等属性进行细化的控制。
默认策略:
⚫ 域间的所有方向都禁止报文通过
⚫ 域内数据流动不受限制
⚫ 路由、ARP等底层协议一般是不受安全策略控制的,直接允许通过(并
非绝对)。
对于同一条数据流,在访问发起的方向上应用安全策略即可,反向报文不需要额外的策略
安全策略的匹配
策略的优先级按照配置顺序排列,越先配置,优先级越高,越先匹配,
如果报文匹配到一条策略,就不再继续匹配剩下的策略
如果没有匹配到任何策略,就按缺省包过滤处理,
所以配置策略还是有一定讲究的,要先细后粗。
网络入侵检测技术
入侵检测(Intrusion Detection):对入侵行为的发觉。它通过从计算机网络或计算机系统的关键点收集信息并进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象对系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性和可用性
IDS : Intrusion Detection System,入侵检测系统
进行入侵检测的软件与硬件的组合
功能:监控、分析用户和系统;审计系统的配置和弱点;识别攻击的活动模式;检查关键系统和数据文件的完整性;对反常行为模式的统计分析
IDS是并联旁路部署,不影响流量

分类
基于主机(HIDS):安全操作系统必须具备一定的审计功能,并记录相应的安全性日志。
基于网络(NIDS):IDS可以放在防火墙或者网关的后面,以网络嗅探器的形式捕获所有的对内对外的数据包
指标
准确性指标:检测率,误报率,漏报率
效率指标:最大处理能力,并发会话数
系统指标:最大规则数,无故障运行时间间隔
IDS技术
误用检测(misuse detection)
也称为基于特征的检测。建立起已知攻击的特征库,判别当前行为活动是否符合已知的攻击模式
难点在于:如何做到动态更新,自适应
异常检测(anomaly detection)
也称为基于行为的检测。首先建立起用户的正常使用模式,即知识库标识出不符合正常模式的行为活动
正常模式的知识库难以建立,难以明确划分正常模式和异常模式
入侵防御系统IPS
大多数IDS都是被动的,在攻击实际发生之前,无法预先报警。IPS则倾向于提供主动防护,其设计理念是预先对入侵活动和攻击性网络流量进行拦截,避免造成损失,而不是在恶意流量传送时或传送后才发出报警。
比较
