提到安全攻击,往往会想到攻击来自于互联网,而内部的局域网安全问题被忽略。在企业局域网中也存在很多安全隐患,本篇博客介绍几种局域网内部的安全攻击与防御
常见的局域网攻击
1、MAC地址扩散攻击
我们知道,交换机在转发数据帧时,会查询MAC地址表中该接口对应的源MAC地址条目,如果没有数据帧的源MAC地址,交换机将学习源MAC地址并与接口对应,添加到MAC地址表中,再根据目的MAC地址进行查找。如果目的MAC地址没找到,就会以广播的形式转发数据帧。而MAC地址扩散攻击就是利用交换机的这种特性
攻击原理:每台交换机的MAC地址表空间是有限的,如果某主机发送大量的伪造源MAC地址数据帧,使得交换机MAC地址表溢出。这时,交换机在接收正常的数据帧,MAC地址表将找不到对应的条目,该数据帧会被转发,攻击者将得到正常的通信数据,如下图:
使用MAC地址扩散攻击时,有个明显现象就是交换机CPU利用率偏高,容易被发现。使用“show processes cpu”命令可以查看设备的CPU利用率
2、ARP攻击与欺骗
(1)ARP攻击的原理
● 攻击主机制造假的ARP应答,并发送给被攻击主机之外所有主机。ARP应答中包括攻击主机的IP地址和虚假的MAC地址
● 攻击主机制造假的ARP应答,并发送给被攻击主机。ARP应答中包括攻击主机之外所有主机的IP地址和虚假的MAC地址
只要执行上边的一种攻击就可以实现被攻击主机与其他主机无法正常通信
(2)ARP欺骗的原理
ARP欺骗不是使网络无法正常通信,而是通过冒充网关或其他主机,从而控制流量或窃取机密信息
3、DHCP服务器欺骗与地址耗尽
(1)DHCP服务器欺骗:客户端将自己配置为DHCP服务器分发虚假的IP地址,或直接响应DHCP请求
(2)DHCP地址耗尽:客户端不断地冒充新客户机发送DHCP请求,请求服务器为自己分派IP地址,从而使服务器地址耗尽,而正常主机无法获得IP地址
4、IP地址欺骗
客户端使用自己配置的IP地址冒充其他客户端或网络管理员,对其他主机、设备、服务器等进行非法操作.0
防御攻击的解决方案
方案1:交换机的端口安全配置
Cisco交换机提供一种基于MAC地址控制端口访问权限的安全特性,对MAC地址进行流量限制、设定端口允许接入的主机数量,也可以手动在端口上设置MAC地址。只有绑定的MAC地址才能转发
端口安全是一种网络接入的验证,只有符合设置规则的客户端才可以接入局域网,避免未授权的客户端接入网络,可实现以下功能:
● 基于MAC地址限制、允许客户端流量
● 避免MAC地址扩散攻击
● 避免MAC地址欺骗攻击
(1)启动交换机接口安全特性
在接口模式下配置命令如下:
1
|
switch(config-
if
)
# switchport port-security
|
注意:启动安全特性的接口不能是动态(Dynamic)协商模式,必须是接入(Access)或干道(Trunk)模式
(2)配置允许访问的网络MAC地址
限制允许访问网络的最大的MAC地址数和静态绑定MAC地址,命令如下:
1
2
|
switch(config-
if
)
# switchport port-security maximum {max-addr} //max-addr默认为1,范围是1-8192
switch(config-
if
)
# switchport port-security mac-address {mac-addr} //mac-addr为静态绑定的MAC地址,格式为X.X.X
|
(3)配置老化时间
默认情况下,交换机不删除接口获得的MAC地址,如果接口的客户端经常变换,而旧MAC地址一直保留,可能导致新连接的客户端无法通信。可以配置老化时间,让交换机删除一段时间没有流量的MAC地址 ,配置命令如下:
1
2
|
switch(config-
if
)
# switchport port-security aging time {time} //time范围是1-1440min,默认为0,不删除
switch(config-
if
)
# switchport port-security aging type {absolute | inactivity}
|
absolute表示老化时间到后,删除所有MAC地址并重新学习
inactivity表示一段时间(老化时间)没有流量,就将其MAC地址从地址表中删除
注意:静态绑定的MAC地址不受老化时间影响
有些工作环境要求静态绑定的MAC地址也受老化时间影响,配置命令如下:
1
|
switch(config-
if
)
# switchport port-security aging static
|
(4)配置MAC地址违规后的策略
当出现以下情况时,就出现MAC地址违规
● 最大安全数目的MAC地址表之外的一个新的MAC地址访问该端口
● 配置在其他端口安全的MAC地址试图访问这个端口
当出现MAC地址违规是,有三种处理方法,配置命令如下:
1
|
switch(config-
if
)
# switchport port-security violation {protect | restrict | shutdown}
|
protect将违规的MAC地址的分组丢弃,但端口处于up状态。交换机不记录违规分组
restrict将违规的MAC地址的分组丢弃,但端口处于up状态。交换机记录违规分组
shutdown端口成为err-disabled状态,相当于关闭端口。
在出现err-disabled状态时,默认不会自动恢复。恢复端口有两种方法:
手动恢复:先关闭端口(shutdown),在打开端口(no shutdown)
自动恢复:设置计时器,端口进入err-disabled状态时开始计时,计时器超过后,自动恢复。计时器配置命令如下:
1
2
|
switch(config)
# errdisable recovery cause psecure-violation //配置出现err-disabled状态的原因
switch(config)
# errdisable recovery interval {time} //time为30-86400,单位为s
|
(5)配置端口安全的Sticky(粘连)特性
如果为每个端口配置静态绑定,工作量非常大,用端口安全Sticky特性,动态的将交换机学习的MAC地址转换为Sticky MAC地址,并加入运行配置中,自动形成了端口安全允许的静态MAC地址表项。保存配置,交换机重启将不会重新学习。配置命令如下:
1
|
switch(config)
# switchport port-security mac-address sticky
|
(6)查看和清除端口状态
1
2
3
4
|
switch
# show port-security int f0/1 //查看启用端口安全的状态
switch
# show interfaces status err-disabled //查看处于err-disabled状态的端口摘要信息
switch
# show port-security //查看端口安全的摘要信息
switch
# clear port-security dynamic {address mac-addr | int f0/1} //清除接口的MAC地址或全部端口缓存
|
案例:在交换机配置端口安全,命令如下:
1
2
3
4
5
6
7
8
|
switch(config)
# int f0/1
switch(config-
if
)
# switchport mode access
switch(config-
if
)
# switchport access vlan 2
switch(config-
if
)
# switchport port-security //启用端口安全
switch(config-
if
)
# switchport port-security mac-address 0025.1234.1258 //静态绑定MAC地址
switch(config-
if
)
# switchport port-security aging time 1 //配置老化时间1min
switch(config-
if
)
# switchport port-security aging type inactivity //配置删除端口MAC的策略
switch(config-
if
)
# switchport port-security violation restrict //配置出现违规时的策略
|
在端口f0/1启用端口安全,允许最大MAC地址为1,并静态绑定MAC地址
查看启用端口安全的状态
1
2
3
4
5
6
7
8
9
10
11
12
13
|
switch
# show port-security int f0/1
Port Security : Enabled
//
端口安全启用
Port Status : Secure-up
//
端口状态为up
Violation Mode : Restrict
//
出现违规MAC地址采取的策略
Aging Time : 1 mins
//
老化时间
Aging Type : Inactivity
//
端口MAC地址删除策略
SecureStaticAddress Aging : Disabled
//
是否允许端口删除静态绑定MAC地址
Maximum MAC Addresses : 1
//
最大MAC地址数量
Total MAC Addresses : 1
//
端口活跃MAC地址数(包括静态绑定MAC地址)
Configured MAC Addresses : 1
//
静态绑定的MAC地址数
Sticky MAC Addresses : 0
//
粘连的MAC地址数
Last Source Address:Vlan : 0025.1234.1258:2
//
最新的源MAC地址及其所在的VLAN
Security Violation Count : 0
//
安全违规次数
|
方案2:DHCP监听
DHCP监听(DHCP Snooping)是一种保护DHCP服务器的安全机制,可以通过过滤来着网络中的主机或其他设备的非信任DHCP报文,以保证客户端能够从正确的DHCP服务器获得IP地址,避免DHCP服务器欺骗和DHCP地址耗尽
DHCP监听将交换机端口分为:
非信任端口:连接终端设备的端口。该端口客户端只能发送DHCP请求报文,丢弃来着该端口的其他所有DHCP报文
信任端口:连接合法的DHCP服务器或汇集端口
DHCP监听还可以限制客户端发送DHCP的请求速率,从而减缓DHCP资源耗尽攻击。Cisco交换机支持在每个VLAN上启用DHCP监听
DHCP监听的配置
(1)启用DHCP监听的命令如下:
1
|
switch(config)
# ip dhcp snooping
|
设置DHCP监听作用于哪个VLAN的命令如下:
1
|
switch(config)
# ip dhcp snooping vlan number //number为VLAN号,可以一次设多个VLAN,如2、3-5
|
(2)配置端口信任或非信任
启用DHCP监听后,默认所有端口为非信任。若要配置端口为信任,配置命令如下:
1
|
switch(config-
if
)
# ip dhcp snooping trust
|
(3)配置预防DHCP耗尽攻击
限制DHCP报文速率,减缓DHCP耗尽攻击,在非信任端口配置以下命令:
1
|
switch(config-
if
)
# ip dhcp snooping limit rate {rate} //rate为报文速率,单位p/s,Cisco2960交换机1-2048p/s
|
还可以启用核实MAC地址功能,避免虚假MAC地址请求IP地址,从而实现DHCP耗尽攻击,配置命令如下:
1
|
switch(config)
# ip dhcp snooping verify mac-address
|
当非信任端口的DHCP报文速率大于规定值,就会出现违规情况,端口将出现err-disabled状态。和上面MAC地址违规一样,也可以手动恢复,下面介绍下自动恢复,设置err-disabled计时器,命令如下:
1
2
|
switch(config)
# errdisable recovery cause dhcp-rate-limit //配置出现err-disabled状态的原因
switch(config)
# errdisable recovery interval {time} //time为30-86400,单位为s
|
(4)DHCP监听状态查询
1
2
3
|
switch
# show ip dhcp snooping //查看当前DHCP监听状态及各端口情况
switch
# show ip dhcp snooping binding //查看当前DHCP监听表
switch
# clear ip dhcp snooping binding //清除DHCP监听表
|
案例:在交换机上启用DHCP监听,限制非信任端口DHCP报文速率为100p/s
1
2
3
4
5
6
7
8
9
10
11
|
switch(config)
# ip dhcp snooping //启用DHCP监听
switch(config)
# ip dhcp snooping vlan 1 //监听的VLAN
switch(config)
# int f0/21
switch(config-
if
)
# ip dhcp snooping trust
switch(config-
if
)
# exit
switch(config)
# int range f0/1 - 20
switch(config-
if
-range)
# ip dhcp snooping limit rate 100
switch(config-
if
-range)
# exit
switch(config)
# int range f0/22 - 24
switch(config-
if
-range)
# ip dhcp snooping limit rate 100
switch(config-
if
-range)
# exit
|
如果上面的DHCP服务器是一台路由器是,客户端可能无法获得IP地址,可以在其上面配置以下任意一台命令:
1
2
3
|
router(config-
if
)
# ip dhcp relay information trusted //接收DHCP报文的接口
或者
router(config)
# ip dhcp relay information trust-all //全局模式,对所有接口生效
|
方案3:部署网络版防病毒软件
网络版和单机版防病毒软件最大的不同在于可以通过控制中心管理网络中任意一台计算机,统一杀毒、升级病毒库等,实现全网管理。一般有服务器端和客户端组成,具有以下特点:
(1)可以远程安装或卸载客户端防病毒软件
(2)可以禁止用户自行卸载客户端防病毒软件
(3)可以全网范围统一制定、分发、执行防病毒策略
(4)可以远程监控客户端系统健康状态
(5)提供远程报警手段,自动将病毒信息发送给网络管理员
(6)允许客户端自定义防病毒策略