低层协议安全性
IP协议
对于网络层,IP协议是其中一个非常重要的协议。网络层的IP地址相当于数据链路层的Mac地址。协议字段如下,每行4字节,总共4*5=20字节。
IP协议安全性:IP协议不能保证数据就是从数据包中给定的源地址发出的,你绝对不能靠对源地址的有效性检验来判断数据包的好坏。
ARP协议
接上文,Mac地址是电脑出场自带并不可更改的;而网络环境改变了IP地址也会改变,因此需要寻找设备的IP地址。假设主机A和B在同一个网段:
A的ARP缓存表中如果有B的表项,则对IP数据包进行帧封装,单播发送给B的Mac地址。
如果没有,则如下图形式进行广播,并将得到的信息存入ARP缓存表以便下次使用。所以ARP协议中文为地址解析协议。
当ARP在不同的局域网中进行运行的时候:
主机A先把自己的IP地址与目的主机的IP地址相与,发现不在同一个子网中。
主机A便运行ARP缓存表获取默认网关的MAC地址,与默认网关进行数据帧的传送。
当运行到路由器时,路由器查询转发表,看是否转发表中有目的IP地址,如果有的话便可以进行直接交付;没有则运行ARP协议获取下一跳路由器接口的Mac地址。
路由器接到分组后,查询转发表,将分组进行转发。
ARP协议的安全问题:一台不可信赖的主机会发出假冒的ARP查询或应答信息,并将所有流向它的数据流转移。这样,它就可以伪装成某台机器,或修改数据流。这种攻击叫做ARP欺骗攻击。
TCP协议
TCP消息格式:<localhost,localport,remotehost,remoteport>
TCP连接的建立需要3次握手,当服务器收到初始的SYN数据包后,该连接处于半开放状态。此后,服务器返回自己的序号,并等待确认。最后,客户机发送第3个数据包使TCP连接开放,在客户机和服务器之间建立连接。
但处于半开放状态会消耗服务器的大量资源,所以诞生了泛洪攻击,即通过模拟IP或僵尸网络的方式大量发出第一次握手,而不回复第三次握手,大量占用服务资源。
方法1(SYN Defender):防火墙收到客户端的SYN包时,直接转发给服务器;防火墙收到服务器的SYN/ACK包后,一方面将SYN/ACK包转发给客户端,另一方面以客户端的名义给服务器回送一个ACK包,完成TCP的三次握手,让服务器端由半连接状态进入连接状态。当客户端真正的ACK包到达时,有数据则转发给服务器,否则丢弃该包。由于服务器能承受连接状态要比半连接状态高得多,所以这种方法能有效地减轻对服务器的攻击。
方法2(SYN proxy):防火墙在收到客户端的SYN包后,并不向服务器转发而是记录该状态信息然后主动给客户端回送SYN/ACK包,如果收到客户端的ACK包,表明是正常访问,由防火墙向服务器发送SYN包并完成三次握手。这样由防火墙做为代理来实现客户端和服务器端的连接,可以完全过滤不可用连接发往服务器。
NAT协议
NAT协议的诞生主要为了解决IPV4中IP地址不足的问题。NAT协议中文全称为网络地址转换,即将一大批主机由NAT路由器都封装在一个局域网内,并赋予一个内网IP和外网IP。内网通信随意,IP地址足够;当访问外网时步骤如下(内部主机(192.168.10.1)要向外部主机(地址为210.10.20.20)发送一个数据包):
向NAT路由器发送数据包,源地址为19
2.168.10.1,目的地址为210.10.20.20。
NAT路由器在转换表中增添一个条目,内部地址192.168.10.1,外部地址210.
10.20.20。
NAT路由器用自己的地址(即201.26.
7.9)替换数据包中的源地址,并利用路由机制,将此数据包发送给Internet上的目标主机。此时源地址就变为了201.2
6.7.9。
目的地址收到信息并返回响应数据包,响应数据包的源地址为210.10.20.20,而目的地址为201.26.7.9。
该响应数据包到达NAT路由器。因为响应数据包中的目的地址与NAT路由器的地址匹配,所以NAT路由器查询转换表,以确认此转换表中是否含有外部地址为210.1
0.20.20的条目。于是就找到了内部主机192.168.10.1。
NAT路由器用内部主机地址(即192.16
8.10.1)替换数据包的目的地址,并将该分组发给该内部主机。
然而,如果有多个内网主机希望与外网的同一台主机通信怎么办?
那么需要修改NAT转换表,新加几列新的参数。
内部端口 外部端口
NAT协议的安全问题:NAT最严重的问题是它不能与加密协调工作。第一,NAT不能对加密的数据流进行检查;第二,IPsec与NAT会产生冲突。