网络安全之LAYER2 Security

基于TCP/IP参考模型的通信数据封装,层与层之间有着密不可分的关系,如果没有底层为高层应用提供服务,那么高层服务也就无法成功实现。对于网络安全来讲这个道理同样适用,如果最底层的安全都没有做到,更何谈高层安全。物理层安全要保证设备实体不能遭到近距离的非法访问或破坏、设备供电系统安全、物理线路安全等。在最基本的物理安全上得到保证后,我们今天说下二层交换安全[数据链路层]。这里我们以CISCO对交换所赋予的安全特性做论述。

MAC泛洪攻击

交换机对报文进行二层识别转发并记录其源MAC地址到CAM表。但是CAM表只能记录特定个数的MAC 地址,当MAC地址数超个这个限制,交换机将不能在继续学习到新的MAC,除非某些条目老化并在CAM表中消失。当CAM表满载的时候,交换机对于所有未知单播、组播、广播包,交换机都将进行泛洪,发送到所有的接口。

CISCO的端口安全技术之port-security不但可以限制接口可以学习的MAC地址数,还可以使用粘性学习[Sticky]技术或手工绑定接口对应的MAC,以此用来增强端口安全,当触发了端口安全内容,将进行相应的动作。

配置命令

wildlee(config-if)#Switchport port-security

启用端口安全

wildlee(config-if)#Switchport port-security maximum value

设置该接口上允许接入的最大MAC地址数量,默认为1

wildlee(config-if)#Switchport port-security violation {protect|restrict|shutdown}

当未经允许的MAC通过接口,此接口的行为动作

wildlee(config-if)#Switchport port-security mac-address mac_address

手工指定该接口上允许通过的MAC地址

wildlee(config-if)#Switchport port-security mac-address sticky

启用端口粘性MAC地址学习

wildlee(config-if)#Switchport port-security [aging time aging_time | type {absolute | inactivity}

设置接口对MAC老化时间与动作

 

二层风暴控制

在网络中每个与交换相连接的终端设备其都有的固定的带宽,连接到交换机上的任何一个终端都可以有意或无意的向其它终端或交换机发起攻击。当一个终端PC向交换机发起大量已知单播、未知单播、组播、广播流量之时,交换机就得被动进行目标MAC单发或泛洪式转发,这无非是占用了其它终端设备的下行带宽,当这份数据对目标设备没有任何意义且该流量占用了整个设备的下行带宽之时,这无非是一种攻击[流量式攻击],这种情况下会直接造成接收此流量目标设备对外通信失败,同时网络也会受到影响。另一种情况将小包[64字节]以高转发率发送,同等条件下高速率的小包处理会使交换机花费更多的交换机资源[CPU周期]。此例攻击直接影响交换机转发性能,更严重的后果就是交换机DOWN机。

cisco风暴控制技术storm-control,Strom-control技术可以限制带宽的使用也可以限制接口发包转发率。当限制的内容高于某个阀值时,将相应的接口进行阻塞,只能当限制的接口其限制内容只有低于某个值的时候将恢复端口转发。

配置命令

wildlee(config)#storm-control {broadcast|multicast|unicast} level {level[level-low] bps bps [bps-low] | pps pps [pps-low]}

wildlee(config)#storm-control action {shutdown | trap}

一种流量控制技术[暂停帧]

wildlee(config)#Flowcontrlo {send |receive} {on | off |desired}

 

端口隔离技术

在传统情况下,属于同一个局域网或VLAN的两个主机在二层上是无法拒绝他们之前通信的,随着安全规则越来越细化,VLAN技术缺点被暴露出来。如果我们要建立多个主机隔离区域,就不得不为此主机区域在创建一个VLAN哪怕只有一个主机,还得为此VLAN在分配一个新的IP地址段并为此VLAN建立网关。这种情况下将造成VLAN数目扩大、STP计算复杂、IP地址紧张等后果。PVLAN技术的诞生可以使同一个VLAN下的两台主机拥有相同的网关与IP地址段,但无法彼此通信,从而满足安全要求。今天我们说的主角Protected技术也是一种端口隔离技术,可以实现与PVLAN相同的功能,被配置了端口隔离的端口之间将不能互相通信。

配置命令

wildlee(config-if)#switchport protected

 

端口阻塞技术

默认情况下交换机泛洪未知目标MAC单播或组播流量,这种流量可能造成目标设备被流量式攻击。端口阻塞技术是一种防御未知单播或组播进行流量攻击的技术,在端口上使用此技术,端口收到的未知单播与组播流量都将被丢弃,而不能被发送到此端口,但不能控制广播流量,我们知道局域网通信与某些应用,依赖于一些广播应用。

配置命令

wildlee(config-if)#switchport block unicast

wildlee(config-if)#switchport block multicast

 

QOS安全特性

其实网络中应用QOS也是一种安全策略,如限制某个接口的上行或下行速率或区分服务转发数据。当网络中有大量的P2P应用进行上传或下载,那么网络正常的服务就会受到影响,此时可以禁用掉P2P等程序或是限制此类程序的上行或下行。当网络中发生拥塞的时候,对重要网络应用进行QOS标记调度转发,从而保证可用性。所以我们可以将QOS看作是一种安全技术应用。

CIR配置命令

wildlee(config)#Rate-limit {input | output} [access-grouup acl_number] bps burst-normal burst-max conform-action conform_action exceed-action exceed_action

ACL安全技术

RACL[Router ACL]

RACL可以对交换机上的路由接口做控制平面和数据平面通信流过滤。可以将RACL应用以下接口如SVI、三层路由端口、三层通道端口等做基于网络层与传输层内容过滤,但不能做数据链路层[二层]内容过滤。RACL具有IN与OUT之分的方向性,在接口IN或OUT方向没有使用RACL代表着放行,所以RACL不会造成单向通信。RACL可以在IN与OUT方向都可以使用,每个接口每个方向只能使用一条RACL。

配置示例

wildlee(config)#access-list 1 permit ip 192.168.1.0

wildlee(config)#interface vlan 10

wildlee(config-if)#ip access-group 1 in

PACL[Port ACL]

PACL 是指应用于交换机二层接口的 ACL,过滤流的内容可以是基于TCP/IP参考模型的二三四层数据内容字段。PACL只能应用到 IN 方向。PACL优先级高于其它的ACL。

配置示例

1.wildlee(config)# mac access-list extended mac-acl

wildlee(config-ext-macl)# deny host 0000.0000.0001 host 0000.0000.0002

wildlee(config-ext-macl)# permit any any

Wildlee(config)# interface fastethernet 0/0

wildlee(config-if)# mac access-group mac-acl in

2.Wildlee(config)#mac-address-table static F5-F5-F5-10-10-10 vlan 2 drop

在相应的Vlan丢弃流量

Wildlee(config)#mac-address-table static F5-F5-F5-10-10-10 vlan 2 int f0/1

相应的接口丢弃流量

VACL[VLAN MAP]

VACL可以做VLAN与VLAN之间的通信流过滤也可也做同一VLAN不同主机的通信流过滤,过滤流的内容可以是基于TCP/IP参考模型的二三四层数据内容字段。VACL绑定到VLAN上时是不分方向的,即VLAN中所有进出的匀被VACL匹配并策略,容易造成单向通信问题。一个VLAN 只能对应一个 Vlan Map ,一个 Vlan Map可以对应多个 VLAN,包含多个匹配条件。

配置示例

Wildlee(config)#access-list 101 permit tcp host 192.168.0.2 host 192.168.0.10 eq telnet

Wildlee(config)#access-list 101 permit tcp host 192.168.0.10 eq telnet host 192.168.0.2

Wildlee(config)#vlan access-map wildlee 10

Wildlee(config-access-map)#match ip address 101

Wildlee(config-access-map)#action forward

Wildlee(config)#vlan filter wildlee vlan-list 2

生成树安全

当二层交换网络中如果有非授权交换机接入网络,参于了生成树的选举可能对网络造成意想不到的破坏,见于此我们可以对交换机的边缘端口[连接终端设备]配置生成树防护。

BPDU Guard

当接口启用了BPDU Guard技术后,如果从接口再次收到BPDU报文,接口将进入err-disable状态,无法继续转发用户数据。

配置命令

Wildlee(config)#spanning-tree portfast bpduguard default

wildlee(config-if)#spanning-tree bpduguard enable

当BPDU guard禁用了端口,该端口会始终处于err-disable状态。恢复到正常端口状态有以下两种方式:手动通过shutdown/no shutdown重新激活,通过设置时间周期自动恢复。

配置命令

wildlee(config)#errdisable recovery cause bpduguard

wildlee(config)#errdisable recovery interval 400

BPDU Filter

其特性类似于BPDU guard,BPDU FILTER应用到边缘端口,边缘端口收到BPDU的数据包只会过滤掉,而不会将接口err-disable,可在继续转发用户数据。

配置命令

wildlee(config)#spanning-tree portfast bpdufilter default

wildlee(config-if)#spanning-tree bpdufilter enable

ROOT Guard

根保护确保启用了根保护的端口成为指定端口,根保护是基于每端口配置的,并且不允许该端口成为一个STP根端口。 设置了根保护的端口如果收到了一个优于原BPDU的新的BPDU,它将把本端口设为root-inconsIistent状态,相当于监听状态。该状态下不会收发数据,不会成为根端口,只会监听BPDU。当停止接受错误的最优BPDU时,该端口经历生成树过程后自动恢复。

配置命令

wildlee(config-if)#spanning-tree root guard

 

DHCP安全

有一种对DHCP的攻击叫做耗竭攻击,其原理是通过利用伪造的MAC地址[二层的MAC伪造与DHCP报文中的客户机MAC地址伪造]来对DHCP恶意发起地址租用请求,短时间租用光所有的DHCP可分配地址,让DHCP无法对合法用户主机提供DHCP服务,并因此而不能访问网络。与此同时恶意的攻击者可以伪造DHCP服务器,进行虚假信息分发从而诱导合法用户主机,从而进行数据窃听与欺骗。

其实防的办法也有几种。一、在AD模式下可以将DHCP进行授权。二、启用端口安全技术,限制其接口学习的MAC地址数,不过交换机无法侦查到DHCP报文中的假MAC,攻击程序可以只修改DHCP报文中的MAC,这种虚假报文请求对DHCP是生效的。三、设置ACL只允许连接到DHCP服务器的交换端口,其UDP报文源端口67可以通过,拒绝非连接DHCP服务器交换端口的ip报文其UDP端口为67分组通过。

今天我们说另一种防御技术DHCP Snooping。DHCPSnooping技术原理交换机监听来自于各端口的DHCP报文,检测其封装的DHCP请求报文,将以太网帧头中的源MAC地址和DHCP请求报文内DHCP客户机的硬件地址字段做比较,只有这两者相同的请求报文才会被转发,否则将被丢弃,这样就防止了DHCP耗竭攻击。

使用DHCPSnooping技术后可将交换机连接终端设备的交换端口分为两类trust端口和untrust端口,只有其trust端口可以发送DHCP OFFER和ACK报文,而untrust端口将过滤DHCP OFFER和ACK报文,从而阻断非法DHCP服务器接入网络。

DHCP监听特性还可以对端口的DHCP报文进行限速。通过在每个非信任端口下进行限速,将可以阻止合法DHCP请求报文的广播攻击。当交换机收到一个DHCPdecline或DHCPrelease广播报文,并且报文头的源MAC地址存在于DHCP监听绑定表的一个条目中。但是报文的实际接收端口与绑定表条目中的端口字段不一致时,该报文将被丢弃,防止攻击者释放合法用户的DHCP租期。

DHCP Snooping还提供了一张动态的binding表,绑定表中包含有获取到的IP 地址、客户端的MAC 地址、租约时间、绑定类型(静态/动态)、VLAN 号、端口号等信息。该表可以帮助实现IPSG以及DAI等功能。

非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正常转发的。这就表示客户端可以以静态指定IP地址的方式通过非信任端口接入网络。由于静态客户端不会发送DHCP报文,所以DHCP监听绑定表里也不会有该静态客户端的记录。 信任端口的客户端信息不会被记录到DHCP监听绑定表里。如果有一客户端连接到了一个信任端口,即使它是通过正常的DHCP方式获得IP地址,DHCP监听绑定表里也不有该客户端的记录。 DHCP中继将广播变单播。DHCP中继请求IP,DHCP根据报文其网关IP地址确定该为哪个请求分配哪个ip地址段。

当DHCP服务器和客户端不在同一个子网内时,客户端要想从DHCP服务器上分配到IP地址,就必须由DHCP中继代理(DHCP Relay Agent)来转发DHCP请求包。 DHCP中继代理将客户端的DHCP报文转发到DHCP服务器之前,可以插入一些选项信息,以便DHCP服务器能更精确的得知客户端的信息,从而能更灵活的按相应的策略分配IP地址和其他参数。这个选项被称为:DHCP relay agent information option(中继代理信息选项),选项号为82,故又称为option 82。默认情况下,开启了DHCP Snooing的交换机将对从非信任端口接收到的DHCP请求报文插入选项82信息。

配置命令

wildlee(config)# ip dhcp snooping

启用DHCP snooping

wildlee(config)# ip dhcp snooping vlan vlan-id

设置DHCP snooping作用于哪些VLAN

wildlee (config)# ip dhcp snooping verify mac-address

比较封装DHCP 请求报文封装的以太网帧中的源MAC地址和DHCP 请求报文内DHCP客户机的硬件地址

wildlee (config-if)# ip dhcp snooping trust

设置DHCP信任端口

wildlee (config-if)# ip dhcp snooping limit rate 1-2048

限制每秒从非信任端口通过的DHCP报文个数

wildlee (config)# errdisable recovery cause dhcp-rate-limit

使由于DHCP报文限速原因而被禁用的端口能自动从err-disable状态恢复

wildlee (config)# errdisable recovery interval int-time

设置端口状态恢复时间

Wildlee#ip dhcp snooping binding mac-address vlan vlan-id ip-address interface type num expiry time

手工添加一条DHCP监听绑定条目

ARP欺骗防护

之前我说一种基于MAC泛洪攻击,其实还有种非泛洪式攻击,攻击弱点基于交换学习任何报文的源MAC并与接收此报文的端口相映射进行数据转发。攻击者无需泛洪MAC,只需用其它主机或网关MAC做为报文的二层源地址封装,就可以扰乱整个交换转发机制,从而瘫痪网络。ARP欺骗攻击通过对目标主机进行虚假的ARP请求或应答,造成目标主机对目标ip主机错误的二层地址认识。ARP欺骗攻击可以使目标主机的通信中断或数据被嗅探。在主机或路由上进行静态ARP绑定是一种解法方法。

配置命令

Arp ip-address mac-address arpa

今天我们说CISCO的DAI技术,其原理就是检测非信任端口收到的ARP报文,如果其中ARP报文的发送者字段mac与ip对应信息与绑定表[DHCP Snooping生成的表]中的信息一致则认为该ARP报文为合法报文,若不一致则被认为为非法ARP报文并丢弃,且收到该报文的接口进入err-disabled状态,攻击者也就不能继续对网络进行进一步的破坏。

配置命令

Wildlee(config)# ip arp inspection vlan-id

在某个VLAN中启用DAI技术

Wildlee(config-if)# ip arp inspection trust

设置为DAI的信任端口,默认为非信任

Wildlee(config-if)# ip arp inspection limit rate 0-2048

限制入站ARP包的速率,若超过,则端口进入err-disabled状态

Wildlee# show ip arp inspection interfaces

查看接口下的DAI

Wildlee# show ip arp inspection vlan vlan-range

查看VLAN下的DAI

IP源欺骗防护

在通信过程中,由于二层数据链路层对三层网络层具有透明性,三层并不关心二层的地址是什么,它只关心三层的内容。这极容易造成一种IP源欺骗芊。wildlee实例说明

A主机[攻击者] IP 192.168.1.2 MAC AA:AA:AA:AA:AA:AA

B主机[被伪造者] IP 192.168.1.3 MAC BB:BB:BB:BB:BB:BB

C主机[被攻击者] IP 192.168.1.4 MAC CC:CC:CC:CC:CC:CC

现在A主机对C主机发起一次通信,链路层封装源AA:AA:AA:AA:AA:AA,二层目标封装CC:CC:CC:CC:CC:CC.网络层源ip 192.168.1.3,目标ip为192.168.1.4,现假如这是一个ICMP请求报文。C主机收到此报文通过三层判断后源主机是192.168.1.3,所以直接用B主机的MAC进行链路层封装并进行回复,B主机会莫名基妙收到一个ICMP回复报文。所以我们说二层对三层具有透明性。

CISCO对此类攻击使用了IPSG防御技术。IP源保护(IP Source Guard,简称IPSG)是一种基于IP或IP+MAC的端口流量过滤技术,它可以防止IP地址欺骗攻击。而且还能确保非授权设备不能通过自己指定IP地址的方式来访问网络或攻击网络导致网络崩溃及瘫痪。 IPSG技术利用了DHCP Snooping技术提供的绑定表,对入流量进行检测,确保网络层ip源地址与绑定表中的源ip一样才放行此报文,作用于非任何端口。同样可以做MAC+IP的全匹配检测放行机制,从而实现ip地址欺骗防护。此技术类似于端口ACL,不过该技术具体自动性与智能性。基于源IP+源MAC地址过滤: 根据源IP地址和源MAC地址对IP流量进行过滤,只有当源IP地址和源MAC地址都与IP源绑定条目匹配,IP流量才允许通过。当以IP和MAC地址作为过滤的时候,为了确保DHCP协议能够正常的工作,还必须启用DHCP监听选项82。 对于没有选项82的DHCP报文,交换机不能确定用于转发DHCP服务器响应的客户端主机端口。相应地,DHCP服务器响应将被丢弃,客户机不能获得IP地址。

配置命令

wildlee(config-if)# ip verify source