1、网络基础设置保护(NFP)
1.1 设备处理的三个层面
数据层面:提供流量转发,实际就是穿越设备的流量,这种流量一般不会经CPU处理(有例外),有硬件ASIC实现转发。
一个包含了通过主机、客户端、服务器等应用流量的逻辑归类,这种流量只是穿越设备,数据流量的目的地址不属于网络设备(路由器、交换机等),设备的主要工作就是将该流量发送给下游。
数据层面的安全:
Router:ACLs、Flexible Packet Matching(NGACL,下一代ACL,灵活的包匹配)、QoS、URPF(防IP欺骗)、远程触发黑洞(BGP技术(ISP),让攻击在边界被丢弃)、IPS、VPN。
Switch:PACLs(Port ACLs)、VACLS(VLAN ACLS)、IP Source Guard(防IP欺骗)、Port Security、DHCP Snooping、ARP Inspection、802.1x。
控制层面:控制层面决定了控制层面的数据如何发送,该层面的数据是直接抵达设备本身的流量,它们改变和影响网络设备的决定。(控制层面是消耗CPU的)
一般是网络协议的流量,绝大部分是需要经过CPU处理的, 但是ARP是不需要的,可以硬件处理。控制层面包含了路由进程,信令功能,链路状态协议和其他用来创建和维护网络和路由器接口状态的控制协议,因此,控制层面动态的构建了网络,让路由器知道网络拓扑,如何转发。没有控制层面,那其他流量层面就无法正常运作了。
控制层面安全:
Router:路由协议认证、路由协议过滤、控制层面过滤和限速
Switch:STP防护、VTP认证、控制层面过滤和限速
管理层面:主要处理一些网管相关的数据流量,如SSH,SNMP等,管理层面的数据流量直接接受CPU处理。
管理流量全部都需要CPU处理。控制层面包含了所有的管理流量的逻辑分类,用来提供,维护,监控网络,管理平台基本上都是收数据包(SNMP是trap推包),一旦管理层面遭受攻击,会导致未授权的访问,给攻击者造成攻击的机会。
控制层面安全:
SNMP(例如v3涉及认证、加密,完整性校验都涉及、并且可以写ACL规定特定源访问。SNMPv3+ACL)
SSH(例如v2、也可以写ACL规定特定源;SSHv2+ACL)
PS:SDN就是把管理层面分离开来,也可以能涉及到控制层面的分离。
1.2 网络基础保护的部署模型
如下涉及了三种部署模型:企业(较大型)、中小型、运营商模型
主要针对一下接入层:802.1x、vlan隔离(如PVLAN)、L2&L3的防欺骗、设备加固(关掉一些没有必要的服务)、STP&VTP保护、路由协议的认证和过滤、流量过滤(ACL、FPM(NGACL)、IPS)、Netflow(轻量级的流量分析)、QoS标记、验证和流量调整。
2、交换机数据层面安全主要技术介绍
2.1 PVLAN介绍
PVLAN(Private VLAN):允许你提供一个VLAN内的粗犷的访问控制来限制连接,意思就是要么通要么不通,如果要使用精确的控制(如某端口通),建议使用VACL。
一个主VLAN可以分为多个逻辑的部分(次要VLAN),它具有特定连接需要。次要VLAN可以创建主机组或者和隔离单个主机,并仍然为离开VLAN提供三层路由。
PLAN中有两类VLAN:Primary VLAN和Secondary VLAN(主要和次要)
次要VLAN分为:Community VLAN和Isolated VLAN(隔离VLAN),Community一般多个,Isolated一般只有一个。
接口类型:Hosts(Isolated和Community)(接PC,服务器【2个vlan,primary和secondary】)和 Promiscuous(混合类型,一般来说都是网关或是一些服务器【多个vlan,primary和多个secondary】)
注意:
①配置PVLAN需要将VTP的模式修改为VTP transparent模式,因为VTP技术不支持PVLAN特性。所有使用PVLAN特性的设备必须被配置为VTP transparent模式。
②交换机硬件要求
③可跨所有支持PVLAN的交换机配置
关键配置:vlan100为primary vlan;vlan101 为community vlan;vlan102为Isolated vlan
SW(config)#vtp mode transparet
SW(config)#vlan 100
SW(config-vlan)#private-vlan primary
SW(config)#vlan 101
SW(config-vlan)#private-vlan community
SW(config)#vlan 102
SW(config-vlan)#private-vlan isolated
SW(config)#do show vlan private-vlan type <<<查看vlan及类型
Vlan Type
----- --------
.....
关联vlan:
SW(config)#vlan 100
SW(config-vlan)#private-vlan association 101
SW(config)#vlan 100
SW(config-vlan)#private-vlan association 102
SW(config)#do show vlan private-vlan <<<查看primary、secondaryvlan类型和端口
Primary Secondary Type Ports
---------- ---------------- --------- ---------
100 101 community
100 102 Isolated
配置接口类型:
SW(config)#int range f0/1,f0/2
SW(config-if-range)#switchport mode private-vlan host
SW(config-if-range)#switchport private-vlan host-association 101 101
SW(config)#int range f0/3,f0/10
SW(config-if-range)#switchport mode private-vlan host
SW(config-if-range)#switchport private-vlan host-association 100 102
SW(config)#do show vlan private-vlan <<<查看primary、secondaryvlan类型和端口
Primary Secondary Type Ports
-------- --------------- ------ --------------------
100 101 community Fa0/1,Fa0/2
101 102 isolated Fa0/3,Fa0/10
配置杂合端口:
SW(config)#int f0/4
SW(config-if)#switchport mode private-vlan promiscuous
SW(config-if)#switchport private-vlan association mapping 100 101-102
SW(config)#int vlan 100 <<<primary vlan SVI
SW(config-if)#ip add 10.1.1.253 255.255.255.0
SW(config-if)#private-vlan mapping 101-102
SW(config)#do show vlan private-vlan <<<查看primary、secondaryvlan类型和端口
Primary Secondary Type Ports
-------- --------------- ------ ---------------------------
100 101 community Fa0/1,Fa0/2,Fa0/4
101 102 isolated Fa0/3,Fa0/4,F0/10
PVLAN边界(Protected Ports):
PVE(Private VLAN Edge)
若SW不支持私有VLAN,可以考虑使用私有VLAN边缘(PVE,Private VLAN Edge)
PVE类似一种孤立端口,需要相互隔离的端口可以被配置为保护性端口,保护性端口和非保护性端口可以正常通信,但是保护端口之间不借助三层设备的情况下无法直接通信
基本任何交换机都是支持的。
①该技术只在本地交换机配置了这个特性的接口上生效
②在相同的交换机上,被保护的端口不能转发流量到其他的被保护端口。但是被保护的端口和其他未配置保护的端口可通。
③为了让流量在两个被保护的端口之间交换,力量必须穿越一个L3设备。
配置命令:
SW(config)#int f0/1
SW(config-if)#switchport protected
2.2 DHCP防护技术
基本知识:
DHCP涉及的包交换过程:DHCP Discover(广播)、DHCP Offer(单播)、DHCP Request(广播)、DHCP ACK、DHCP Release
PS:思科的报文貌似都是广播,厂商开发时不一定遵循一定的规则。
DHCP端口号:UDP68(客户端监听,bootpc)& UDP67 (DHCP server监听,bootps)
所以,DHCP Discover信息是源端口为68,目的端口67.
DHCP攻击:
①攻击者尝试作为流氓的DHCP Server。
②攻击者尝试发送大量的DHCP请求,耗尽服务器地址,然后再作为DHCP Server。
解决问题:
DHCP Snooping
①使用DHCP Snooping,可以将SW端口分为信任端口(trust)和非信任端口(untrust),非信任的端口只能接终端。信任端口可以转发DHCP的请求和确认,相当于对DHCP报文不做控制;非信任端口只能转发DHCP请求(discover和request,默认就是非信任)。
②DHCP Snooping功能在交换机上被激活后,以构建一个表项,这个表项映射:客户端MAC地址,IP地址,VLAN以及端口ID的对应关系。
配置DHCP Snooping的步骤:
①在SW上全局激活DHCP Snooping特性;
SW(config)#ip dhcp snooping
注意:激活了dhcp snooping选项的SW,DHCP报文中插入了Option82的选项,所以,在后面SW互联接口需要trust,如果不trust,将会丢弃DHCP请求!
②指定一个持久的DHCP Snooping绑定数据库的位置;
SW(config)#ip dhcp snooping database flash:/SW.db
PS:注意正确配置SW的clock,因为database中还保存有DHCP的租期,另外,那个.db后缀非强制,SW.db只是一个文件名,可以随便敲。
③把连接合法DHCP服务器的端口配置为“trust”;
SW(config)#int f0/4
SW(config-if)#switchport access vlan 2
SW(config-if)#switchport mode access
SW(config-if)#spanning-tree portfast
SW(config-if)#ip dhcp snooping trust
交换机互联端口一般也是trust:(需要在两个启用了DHCP snooping技术的SW的互联端口启用ip dhcp snooping trust)
SW(config)#int f0/24
SW(config-if)#switchport trunk encapsulation dot1q
SW(config-if)#switchport mode trunk
SW(config-if)#spanning-tree portfast trunk
SW(config-if)#ip dhcp snooping trust
④指定所有其他的端口(包括静态地址的主机)为非信任端口;
开启DHCP Snooping后,交换机端口默认就是untrust
⑤其他非信任端口上配置DHCP限速(和端口安全)(可选);
SW(config)#int f0/4
SW(config)#ip dhcp snooping limit rate 10 <<<每秒钟DHCP的报文不能超过10个,超过接口将errdisabled
⑥在特定的VLAN中开启DHCP Snooping。
SW(config)#ip dhcp snooping vlan 2 <<<注意,一定最后敲,不然可能出现断网情况
show 命令:show ip dhcp snooping binding、show ip dhcp snooping database
debug命令:debug ip dhcp server packet
故障实例:
debug信息中出现如下信息:
Dec 4 09:48:02.466:DHCPD:inconsistent relay information.
Dec 4 09:48:02.466:DHCPD:relay information option exists,but giaddr is zero. <<<说明思科路由器中遇到DHCP请求中包含了Option82.它就一定要去找GW中继,但是这里没有,所以获取不到IP地址,对于某些场景下,客户端和DHCP Server(思科设备)在同一个LAN,那可以关闭Option82.
解决方法:关闭DHCP Snooping的Option82,(思科路由器的问题,如果使用微软的DHCP Server,应不会有这问题)
SW(config)#no ip dhcp snooping information option
什么是Option82?——在DHCP Relay时,Option82至少填写了对应VLAN的GW的地址(Option82有很多功能),那么DHCP Server收到了信息后,便知道了客户端是哪个网段的,从而分配对应网段的IP地址。
2.3 DAI介绍(动态ARP监控)
ARP攻击原理:攻击者无故的发送一个ARP响应信息,发送给被攻击者,以覆盖设备上的ARP表。
例如:如下情况,A有一个MAC地址为MAC-A,C的MAC地址为MAC-C,网络中间又一个设备是B,它的MAC地址是MAC-B,设备B作为攻击者,莫名其妙的给A和B发送一个ARP响应信息,告知A,C的MAC地址是MAC-B,告知C,A的MAC地址是MAC-B。那设备A和C上的ARP表将会刷新,这样,A到C的流量都会经过B(前提是B设备要开启路由功能),如此B就可以从中抓取信息,获取很多信息。
解决如上问题的办法:ARP监控技术
使用ARP监控,管理员可以指定交换机的端口为信任端口和非信任端口。
- 信任端口:可以发送和转发任何ARP信息。
- 非信任端口:ARP消息要进行ARP检测验证。
什么样的情况下,ARP被被干掉?1、数据库中能匹配的自然OK;2、不信任的被干掉;3未找到的ARP条目被干掉。
交换机执行的ARP验证如下:
- 为一个静态的IP地址配置一个静态ARP访问控制列表(静态ARP监控功能)。
- 为DHCP指派的IP地址引用DHCP Snooping绑定数据库(动态ARP监控功能,DAI)。
默认情况下,数据库是动态+静态的,当然可以指定只是某一个数据库。
配置ARP监控的步骤:
①如果使用DHCP,确认DHCP Snooping技术已经被激活,并且已经完全填充数据库(可选)
②指定某端口为信任端口,也就是接受这个接口上的ARP欺骗威胁(可选)
③指定其他端口为非信任端口
④在每个端口上调整ARP限速(可选)
⑤配置一个ARP访问控制列表,静态映射IP和MAC(可选)
⑥调整err-disable行为
⑦在特定VLAN中启用ARP Inspection功能。<<<<<一定最后配置,如果之前未配置完成,会出现故障
配置交换机互联端口ARP监控为Trust:
SW(config)#int f0/24
SW(config-if)#sw trunk en dot1q
SW(config-if)#sw mode trunk
SW(config-if)#ip arp inspection trust
SW(config-if)#spanning-tree portfast trunk
SW(config-if)#ip dhcp snooping trust
在untrust接口做ARP限速:
SW(config)#int f0/1
SW(config-if)#sw acc vlan 2
SW(config-if)#sw mode access
SW(config-if)#ip arp inspection limit rate 50 <<<每秒超过50个ARP包接口将会err-disable
SW(config-if)#spanning-tree portfast
SW(config-if)#ip dhcp snooping limit rate 10
对违规的接口err-disable恢复时间调整为300s
SW(config)#errdisable recovery cause arp-inspection
SW(config)#errdisable recovery interval 300
为非信任端口端口上的所有静态主机配置ARP监控豁免的ACL
SW(config)#arp access-list ARP-Filter
SW(config-arp-nacl)#permit ip host 10.1.1.100 mac host 0001.0001.0001
在特定的VLAN中启用ARP监控过滤
SW(config)#ip arp inspection filter ARP-Filter vlan 2 (static) <<<<如果加上static配置,表示不要DHCP Snooping的数据库,只使用静态的
在特定的VLAN中启用ARP监控
SW(config)#ip arp inspection vlan 2
命令查看:
SW#show ip arp inspection vlan 2
Source Mac Validation :Disabled
Destination Mac Validation:Disabled
IP Address Validation :Disabled
Vlan Configuration Operation ACL Match Static ACL
----- ----------------- ----------- --------------- --------------
2 Enabled Active ARP-Filter No
Vlan ACL Logging DHCP Logging Probe Logging
---- ----------------- ---------------- ------------------
2 Deny Deny Off
后续如果来了一个数据库中没有的MAC地址,那ARP检测就不能通过了。
2.4 IP source guard(防止IP欺骗)
介绍:
- 能够基于IP或(IP和MAC)过滤流量,有效抵御IP和MAC地址欺骗攻击。
- 需要基于DHCP Snooping绑定表或手动配置IP Source绑定表过滤流量。
- 需要在激活DHCP Snooping的untrust接口上配置IP Source guard 。
- 一旦激活IP Source guard,所有IP流量都被阻止,只允许DHCP Snooping允许的DHCP流量。
- 一个Port ACL会被运用到这个端口,放行绑定表指定的源IP和源MAC地址,阻止其他流量。
注意:用不用DHCP,都需要激活DHCP Snooping!
配置步骤:
①如果使用DHCP,检查DHCP Snooping是否激活,并且已经完全填充数据库。(可选)
②在启用DHCP Snooping的端口上激活IP Source guard功能。(可选)
③在连接静态配置地址的主机端口上配置一个静态的IP Source guard的映射或PACLs 。(可选)
示例:
在PC所连接的接口上配置IP Source guard,这里仅检查IP
SW(config)#int f0/1
SW(config-if)#sw acc vlan 2
SW(config-if)#sw mo access
SW(config-if)#ip arp inspection limit rate 50
SW(config-if)#spanning-tree portfast
SW(config-if)#ip verify source
SW(config-if)#ip dhcp snooping limit rate 10
如果是既检查IP又检查MAC地址,按照如下方式配置
SW(config)#int f0/1
SW(config-if)#sw acc vlan 2
SW(config-if)#sw mo access
SW(config-if)#switchport port-security
SW(config-if)#ip arp inspection limit rate 50
SW(config-if)#spanning-tree portfast
SW(config-if)#ip verify source port-security
SW(config-if)#ip dhcp snooping limit rate 10
查看命令:
SW#show ip verify source
Interface Filter-type Filter-mode IP-address Mac-address Vlan Log
---------- ------------- --------------- -------------- ----------------- ---------- --------
Fa0/1 ip active 10.1.1.1 2 disabled
SW#show ip verify source
Interface Filter-type Filter-mode IP-address Mac-address Vlan Log
---------- ------------- --------------- -------------- ----------------- ---------- --------
Fa0/1 ip-mac active 10.1.1.1 00.02.00.02.00.02 2 disabled
在交换机配置静态绑定并在F0/3上启用IP Source guard:
SW(config)#ip source binding 0001.0001.0001 vlan 2 10.1.1.100 interface fa0/3
SW(config)#int f0/3
SW(config-if)#ip verify source port-security
SW(config-if)#switchport port-security
如果不使用IP Source guard。使用PACL(三层列表调用二层接口),只放行信任的IP地址。
SW(config)#ip access-list standard P
SW(config-std-nacl)#permit ip host 10.1.1.100 any
SW(config)#int f0/3
SW(config-if)#ip access-group P in <<<只有入方向,不支持out