二层安全:


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不支持


配置实例:

交换机二层安全_第1张图片

第一步:

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 

接口的过滤。