二层安全:
Switch Security交换机安全
越底层安全问题越严重
DMZ区域概念:UNTRUST和TRUST区域均能主动访问DMZ区域,但是DMZ不能主动访问任何区域。
【目录】
1、MAC layer attacks
***方法:
MAC地址flooding***
MAC地址的欺骗***
解决方案:
基于源MAC地址允许流量:端口安全
基于源MAC地址限制流量:static CAM (发现***后采取的办法)
阻止未知的单/组播帧
802.1x基于端口的认证
2、VLAN attacks
***方法:
主机与SWITCH形成TRUNK接口
解决方案:
switch mode access
VACL
PVLAN
3、spoof attacks
3.1、DHCP spoof
解决方案:
DHCP snooping
3.2、IP spoof
解决方案:
IP 源防护
3.3、ARP spoof
解决方案:
静态绑定ARP条目
DAI
4、attacks on switch devices
关闭不必要的服务,比如CDP
限制广播/组播流量
为交换机设置登录密码
使用SSH实现安全的登录
【原文】
<part-1.MAC层***>
A、MAC Flooding MAC layer attacks
原理:***者不断更换源MAC地址,占满交换机的内存表,使交换机内存溢出
解决办法:
1.基于主机MAC来允许流量
·可定义2个参数:授权的MAC地址/允许学习多少个MAC地址(默认=1)
·违背端口安全,采取的行为:
1.shutdown:将永久性或特定周期内Err-Disable端口(默认行为),并发送snmp trap
2.restrict:当超过所允许学习的最大MAC数时,将未授权主机的帧丢弃drop,并将violation计数器增加
3.protect :当超过所允许学习的最大MAC数时,将未授权主机的帧丢弃drop
Sw1(config-if)#shutdown
Sw1(config-if)#switchport mode access 启用端口安全时,必须先设为access接口
Sw1(config-if)#switchport port-security 启用端口安全(默认只能学一个MAC)
Sw1(config-if)#switchport port-security maximum 1 指定最大允许学多少个地址,默认就是1
Sw1(config-if)#switchport port-security mac-address aaaa.bbbb.cccc
Sw1(config-if)#switchport port-security violation [protect|restrict|shutdown]指定行为
Sw1(config-if)#no shutdown
Sw1(config-if)#switchport port-security aging time 1 (分钟)设定多长时间后能重新学习MAC地址,也就是设定现有MAC地址的有效期。 /*不能使用sticky和shutdown动作
Sw1(config-if)#switchport port-security mac-address sticky 将动态学到的地址粘住,永久使用
Sw1#show port-security 可以看到哪些接口应用了端口安全
Sw1#show port-security address 可以看到授权的MAC地址
Sw1#show port-security interface f0/1 可以看到接口的具体状态
Sw1#show interfaces fastEthernet 0/1
FastEthernet0/1 is down, line protocol is down (err-disabled) 置为err-disabled状态
通常做接口安全,要先把接口shut down,这样它就不会自动学习
让err-disable接口自动恢复
errdisable recovery cause psecure-violation
show errdisable recovery
2.基于主机MAC来限制流量 (3550上才可以做)
列表中定义的MAC将被限制流量
Sw1(config)#mac-address-table static 0010.7b80.7b9b vlan 1 drop
Sw1# show mac address-table
3.阻塞未知单(组)播扩散 (3550上才可以做)
对未知MAC地址,SW将从本VLAN的其他端口转发出去,但对于某些端口(端口安全只需要一个MAC/已到最大MAC)没必要再转发这些单(组)播。就可以在这些端口上设定这一特性,通常结合端口安全port security来做。
Sw1(config-if)#switchport block [unicast | multicast]
Rack08Sw1#show int f0/1 switchport
...Unknown unicast blocked: enabled
...Unknown multicast blocked: disabled
4、802.1x基于端口的认证
一种第二层的访问控制方法,通过AAA服务器对接入一个接口的用户进行认证,以决定客户能否访问网络。
配置:
SW(config)#aaa new-model
SW(config)#aaa authentication dot1x default group radius
SW(config)#dot1x system-auth-control
SW(config)#interface f0/1
SW(config-if)#dot1x port-control auto
<part-2 VLAN attacks>
Explaining VLAN Hopping
原理:造成不同VLAN能互访
造成原因:1、***者发起DTP帧,同交换机形成TRUNK,可截获TRUNK转发报文。(接口未做任何配置)
2、VLAN Hopping with Double Tagging ***者同交换机形成TRUNK引起的***。(接口未做任何配置)
解决办法:
1、switchport mode access
switchport access vlan * /* 该VLAN为一个未使用的VLAN
2、Vlan 的 access-map (可以基于mac与ip)
VACL也叫VLAN映射表,通过VACL可以实现对一个VLAN中的流量进行过滤。VACL可以根据二层信息进行过滤,也可以根据三层信息来进行过滤。
1、通过调用IP ACL,可以根据三层的IP地址、协议以及端口号等信息进行过滤。
2、通过调用MAC ACL,可以根据MAC地址进行过滤,还可以过滤其它的非IP流量。
每一个VACL可以包含多条语句,每一条语句对于匹配的流量可以有三种不同的操作:
1、forward 转发,对数据帧或数据包进行正常转发
2、drop 丢弃,当数据流与某个拒绝语句匹配上,将被丢弃
3、重定向 对于数据流的转发方向作重定向 (高端交换机才支持)
注意:如果没有说明一条语句的操作行为,默认的行为是forward。如果进入VLAN的数据流没有匹配上任何一条语句,最后将被丢弃掉。
基于IP的:
Config#access-list 1 permit 192.168.1.1 0.0.0.0
Config#vlan access-map wolf 10
Config-access-map#match ip address 1
Config-access-map#action drop
Config#vlan access-map wolf 20
Config-access-map#action forword
默认是转发的 show run 可以看到有 action forword
调用:vlan filter wolf vlan-list 100 全局模式下调用,要指明用在哪个VLAN中,也可对所有ALL
基于mac地址的(MAC地址列表):
1、先写MAC地址列表
mac access-list extended ccnp
permit host 00e0.1e3d.d18c any
2、再写access-map
vlan access-map wolf 10
action drop
match mac address ccnp
vlan access-map wolf 20
action forward
3、调用:
Sw1(config)#vlan filter wolf vlan-list 10
Access-map的名字 vlan号
Sw1(config)#vlan filter wolf vlan-list all 对所有VLAN
注意:做这个实验时,要在每一台路由器上先clear ip arp 10.1.1.22
3、Private VLANS
解决VLAN个数限制、相同VLAN之间不能互访
Primary VLAN 为实际使用VLAN
Secondary VLANs(ISOLATED VLAN、Community VLAN)
Secondary VLANs之间是不能互访的,ISOLATED VLAN不可互访,Community VLAN可互访
3.1 PVLAN Port Types
Promiscuous: Communicate with all other ports 属于Primary VLAN
Isolated:Communicate with only promiscuous ports 属于Secondary VLAN
Community:Communicate with other members of community and all promiscuous ports. 属于Secondary VLAN
3.2 组网
需求:R1可以和R2/R3/R4/R5互访
R2和R3可以互访
R4和R5不能互访
VLAN 501(R2和R3)和VLAN 502(R4和R5)不能互访
小VLAN 501和502属于大VLAN 20
配置步骤:最低的型号是S3560,3750,6000;S3550和S2950仅支持ISOLATE-VLAN
VTP mode transparent/off
vlan 20
private-vlan primary
vlan 501
private-vlan community
vlan 502
private-vlan isolated
vlan 20
private-vlan association 501,502
int f 0/1
switchport mode private-vlan promiscuous
switchport private-vlan mapping 20 501,502
int r f 0/2,f0/3
switchport mode private-vlan host
switchport private-vlan host-association 20 501
int r f 0/4,f0/5
switchport mode private-vlan host
switchport private-vlan host-assciation 20 502
show vlan private-vlan
show int f 0/1 switchport
S2950、S3550和S3560配置ISOLATE-VLAN方法
int r f0/1,f0/3
switchport mode access
switchport access vlan 100
switchport protected
注意:protected端口之间是不能访问的,但是protected与普通端口之间是能访问的。
3.3 private-vlan的扩展,配置沿用
interface vlan 20
ip address 1.1.1.100 255.255.255.0
在SW上配置了SVI接口地址后,只有private-vlan可以网管该int vlan 20,其它均不可以。若想community和isolated VLAN可以访问该接口,则添加如下命令:
interface vlan 20
private-vlan mapping 501,502
还有在SW上开启ip routing命令
验证:
show vlan private-vlan
<part-3 Spoofing attacks>
1、 DHCP Spoof Attacks
解决办法:
DHCP snooping
原理:
--启用后,可以将交换机的端口分为trusted接口和Untrusted接口,默认在交换机上启用后,所有接口变为Untrusted接口,需要手动设置trusted接口。
--对于Untrusted接口,只能接收DHCP的请求消息,不会向这个接口发送出DHCP的请求消息。并且drop掉接口进来的DHCP的响应消息。
--对于trusted接口,没有任何限制,也不做检测。
注意:早期的IOS不支持
配置实例:
第一步:
SW1(config)#ip dhcp snooping 必须先开启这一命令,相当于总开关
SW1(config)#ip dhcp snooping vlan 1 再指定VLAN,这一步也必须要,默认VLAN 1的接口为untrusted接口
第二步:指定trusted接口,通常是trunk接口、连接真实DHCP服务器的接口。
SW1(config-if)#ip dhcp snooping trust
第三步:还要在被信任的DHCP服务器上打上下列命令:(如果是用远端路由器和交换机做DHCP服务器的话才需要,若是本设备做DHCP服务无需开启该命令)
R1(config)#ip dhcp relay information trust-all /* 若SW关闭了option 82(no ip dhcp snooping information option),该命令可以不配置;另外若是使用了PVLAN技术,也无需开启该命令
SW1#show ip dhcp snooping binding
SW01#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
E8:40:40:E4:73:C2 10.1.1.94 1052 dhcp-snooping 1 FastEthernet0/23
Total number of bindings: 1
关键点:DHCP snooping会在接入的交换机上建立一个DHCP绑定表,为每一个分配的IP建立一个表项,其中包括客户端的IP地址、MAC地址、端口号、VLAN编号、租用和绑定类型等信息。也可手动向这个绑定表中添加表项。
SW1#show ip dhcp snooping binding 只显示动态的绑定项
SW1#show ip dhcp snooping database
SW1#show ip source binding 显示动态和静态绑定项
SW1(config)#ip dhcp snooping binding 1234.5678.abcd vlan 20 172.16.1.1 interface f0/5 静态绑定一个条目
其它命令:
SW1(config)#ip dhcp snooping information option 启用option82选项,默认就已开启
SW1(config)#ip dhcp snooping limit rate 100 限定接口每秒可收多少个DHCP请求包
SW01#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
E8:40:40:E4:73:C1 10.1.1.54 85809 dhcp-snooping 1 FastEthernet0/23
20:37:06:DC:36:40 10.1.1.56 86204 dhcp-snooping 1 FastEthernet0/19
Total number of bindings: 2
2、IPSG源保护(SNOOPING的扩展)---防止网络层的IP地址欺骗
源保护特性可防止非法设备盗用合法设备的IP接入网络,只能用于二层端口
需要用到IP绑定表,有两种方式获得绑定条目:
1、静态绑定IP源地址
2、使用DHCP snooping技术中动态生成的源IP绑定表
原理:一旦在一个接口启用了源保护,这个接口默认拒绝所有IP,除非在IP绑定表中有这个接口对应的IP地址绑定条目。
SW1(config)#ip source binding aaaa.bbbb.cccc vlan 1 100.1.1.1 interface f0/1 静态绑定
SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 1
SW1(config)#interface f0/10
SW1(config-if)#ip verify source 开启源保护,只基于IP进行检查,在3560和3750上这样配
SW01#show ip verify source
Interface Filter-type Filter-mode IP-address Mac-address Vlan Log
--------- ----------- ----------- --------------- ----------------- ---- ---
Fa0/23 ip active 10.1.1.94 1 disabled
SW1(config-if)#ip verify source port-security 开启源保护,基于IP和MAC进行检查,默认对于所有的IP是deny-any,对于mac的动作是permit-any。如果做了端口安全,对于mac的动作就是deny-any。
SW01#show ip verify source
Interface Filter-type Filter-mode IP-address Mac-address Vlan Log
--------- ----------- ----------- --------------- ----------------- ---- ---
Fa0/23 ip-mac active 10.1.1.94 E8:40:40:E4:73:C2 1 disabled
思科4500、6500和7600需要用如下命令开启
SW1(config-if)#ip verify source vlan dhcp-snooping
SW1(config-if)#ip verify source vlan dhcp-snooping port-security
show ip verify source 查看所允许的IP地址,为比较源地址提供依据
show ip source binding
ip source binding AAAA.BBBB.CCCC vlan 1 10.1.1.200 interface Fa0/9
SW01#show ip source binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
E8:40:40:E4:73:C1 10.1.1.54 85259 dhcp-snooping 1 FastEthernet0/23
20:37:06:DC:36:40 10.1.1.56 85654 dhcp-snooping 1 FastEthernet0/19
AA:AA:BB:BB:CC:CC 10.1.1.200 infinite static 1 FastEthernet0/9
Total number of bindings: 3
3、DAI(dynamic arp inspection)防止数据链路层的ARP报文的源IP地址欺骗
是一种能够验证网络中ARP数据包的安全特性,可以防止中间人***。
通常需要和DHCP的snooping结合使用,因为要利用到DHCP snooping技术生成的绑定表。也可静态写IP和MAC的绑定表
原理:启用DAI后,需要将接口分为trusted和untrusted,默认所有接口都是untrusted接口。
对于untrusted接口,要进行ARP的检查,必须是和dhcp-snooping绑定表中的条目相匹配的ARP包才允许通过。
对于trusted接口,不需要进行ARP检查。
定义trusted和untrusted接口
trusted:不控制收发arp报文
untrusted:不收arp request报文
SW1(config)#ip arp inspection vlan 1
SW1(config-if)#ip arp inspection trust 指定arp检测的trust接口,一定要做
SW1(config-if)#ip arp inspection limit rate 100 限制每秒所接收的arp包个数
show ip arp inspection interfaces
show ip arp inspection vlan 1
一个实际案例:(不跟DHCP的snooping结合,单独使用DAI)
arp access-list ARPTEST
permit ip host 162.16.40.1 mac host 0000.0c07.ac28
源IP地址 源MAC地址
ip arp inspection vlan 1
ip arp inspection filter ARTTEST vlan 1 static
另外一种情况,IPSG静态表项也可以实现该功能。
ip source binding aaaa.bbbb.cccc vlan 1 100.1.1.1 interface f0/1
注意:ARP包是直接封装进二层的,所以上面的IPSG源保护技术没法对付ARP欺骗
<part-4 attacks on switch devices>
关闭不必要的服务
1. CDP协议
show cdp neighbor detail
接口 IP地址
IOS VERSION
NATIVE VLAN
VTP Domain
解决办法:
1、全局关闭 no cdp run
2、针对接口操作 no cdp enable
2、广播/组播抑制
用于对流入端口的广播和组播流量进行监控,超过阀值后丢弃数据包。
3550(config-if)#storm-control broadcast level 5 按百分比进行监控
3550(config-if)#storm-control broadcast bps 10 按实际流量,注意单位是M
3、SSH(Secure Shell Protocol)
Describing Vulnerablities in the Telnet Protocol
Telnet 协议不安全,用户名和密码容易暴露。可以启用更高级的安全协议。
SSH
开启SSH设备:
ip domain-name wolf.com
crypto key generate rsa general-keys modulus 1024
line vty 0 4
login local
transport input ssh
username wolf password cisco
登录设备:
SSH -l wolf 12.1.1.2
提示password: cisco
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
配置案例:
dhcp snooping
ip dhcp snooping
ip dhcp snooping information option
ip dhcp snooping vlan 10,20
int fa0/0
des access port
ip dhcp limit rate 10
int gi0/0
des uplink
switchport mode trunk
switchport trunk allowed vlan 10,20
ip dhcp snooping trunk
DAI
ip dhcp snooping
ip dhcp snooping information option
ip dhcp snooping vlan 10,20
ip arp inspection vlan 10,20
int fa0/0
des access port
ip dhcp limit rate 10
int gi0/0
des uplink
switchport mode trunk
switchport trunk allowed vlan 10,20
ip dhcp snooping trunk
ip arp inspection trunk
如果有静态
arp access-list test
permit ip host 10.1.1.2 mac host 0017.5aa7.2d28
ip arp inspection filter test vlan 10
IP Source Guard
ip dhcp snooping
ip dhcp snooping information option
ip dhcp snooping vlan 10,20
ip arp inspection vlan 10,20
int gi0/0
des uplink
switchport mode trunk
switchport trunk allowed vlan 10,20
ip dhcp snooping trunk
ip arp inspection trunk
int fa0/1
sw mo acc
sw ac vlan 2
sw port-securit
ip arp inspection limit rate 10
ip verify source port-security
ip dhcp snooping limit rate 10
show ip verify source
如果静态
ip source binding 0017.5aa7.2d28 vlan 2 10.1.1.2 interface fa0/2
int fa0/2
ip verify source
接口的过滤。