■ 河南 刘京义
编者按: PI(Cisco Prime Infrastructure)是思科企业级的网管软件,在思科SDN架构中的最底层(数据层面)可以对支持SDN的网络设备进行管理,这些设备采用的大都是IOS-XE的系统,在第二层(控制层面)使用的是APIC-EM企业级控制器,在第三层(管理层面)使用PI进行管理操作,PI支持应用层的接口,允许基于PI执行高级应用的开发。PI提供对无线设备高效的管理功能,这里就谈谈如何利用SPT(端口跟踪)功能来有效发现恶意AP的踪迹。
PI提供恶意AP的信息是从WLC无线控制器上检索的。当一个恶意AP接入网络后,会被正常AP探测到,之后会通过CAPWAP隧道将相关信息发送给WLC控制器。PI主机通过SNMP拉取或WLC的SNMP Trap机制,来获取恶意AP信息。之后PI会在有线端发现恶意AP来防止其进一步的攻击。
具体实现方法是,PI根据获取的恶意AP的MAC地址,利用Port Tracing进行检索,在相关交换机的CAM表中进行查询,即可发现该恶意AP连接到哪个端口,然后将该接口进行Shutdown操作,该恶意AP就无法接入网络了。在默认情况下,PI的Port Tracing功能仅限于恶意AP而非恶意客户端。
要想实现PI的SPT功能,存在一些先决条件。例如,如果想利用SNMP v3来实现SPT,那么 SNMPv3 Group需要有相应的权限,即需要给PI所在的SNMP组放行对应的权限。恶意AP需要被发现并报告给PI主机,在交换机上,AP的CDP邻居需要被看到。因为PI不仅要查看恶意AP对应MAC地址表,还会查看CDP邻居表,如果看不到,就会认为其不在该交换机上。默认情况下,SPT不会检测Trunk接口,所以Trunk接口需要正确配置,同时接口安全特性需关闭。
PI的SPT支持的交换机包 括Catalyst1960/3560/2560-E/3750-E/3850/4500等较新的型号,对于所有被跟踪的交换机来说,需要拥有管理IP和SNMP的管理权限。在配置权限时,可以添加网络地址段(例如10.1.1.0/24),而不能是单独的地址。
对于SPT来说,读取的权限就足够了。在设置全局的SNMP的身份设置时,32位的子网掩码是不许可的。对于交换机来说,其VLAN需要被精确设置,PI只是通过CDP的邻居信息得到交换机的IP地址的。
之后通过交换机的VLAN信息来读取设备的CAM表,如果VLAN信息没有正确配置,那么PI就无法读取CAM表,这会出现跟踪失败的情况。在所有的交换机上要启用CDP,在恶意AP和交换机之间必须存在一个以太网连接,对于有些恶意AP来说,其射频接口和实际以太网接口的MAC地址之间存在1或2的数值变化,如果不符合这一特点,那么必须有客户端连接到该恶意AP,并且在恶意AP和交换机之间产生流量,PI才可以发现此类恶意AP。恶意AP和交换机的连接必须在最大跳数范围内。
对于SPT来说,可以使用Auto SPT和Manual SPT两种方式,前者是基于警告自动进行检测,也可以在设置好的时间段进行检测。后者是基于每个单独的AP警告,必须手动对应的按钮,才可以进行SPT跟踪,而且必须启用了CDP的AP和在交换上启用了SNMP方可。
注意,同手动SPT相比,自动SPT会花费更长时间。这是因为自动SPT是基于有线客户端的发现过程,当接口刚刚no shutdown后,就会执行一个Minor拉取操作,只有进行了两次Minor拉取之后,才会调用一个Major的拉取。有了一个Major拉取,才会执行一次Auto SPT。
而手动SPT可以随时手工执行检测,即使有线的恶意AP是连接到交换机的。只有有线的恶意AP是关联状态时,才会被PI才会发现。PI总是检测有线的客户端是否存在关联状态,如果有线客户端是没有关联的,那么PI会显示没有找到对应接口。SPT是成批工作的,发现有线AP的时间长短是基于PI的工作工程决定的,如果一个特定的恶意AP在之前已经处于工作状态,就会需要更长的时间来发现。发现有线AP的时间取决于PI上恶意警告的个数,以及有线客户端Major拉取的时间间隔。
这里使用简单的例子来说明SPT的工作机制。
在SW1上通过F0/24接口和SW2的G1/0/20接口通过Trunk连接,通过F0/9接口和AP1的G0接口连接,AP1是胖AP。充当恶意AP的角色。在SW上的F0/6接口和PI主机的Port1接口通 过Trunk连 接,PI主 机的管理IP为10.1.1.20,在SW1上通过G0/1接口和某款WLC的Port1接口连接,WLC的管理IP为10.1.1.100。在SW1上存在VLAN10,VLAN 20和 VLAN 30,SVI分别为10.1.1.254,20.1.1.254 和30.1.1.254。
VLAN10用于设备管理,其余的VLAN用于客户端,为VLAN10/20/30创建地址池,设置默认的网关,其均和SVI地址相同。
在SW1上 执 行“ip routing”命令,启用路由功能。
在SW2上通过G1/0/1接口和AP2的G0接口连接,通过G1/0/2接口和AP3的G0接口连接。在SW2上存在 VLAN 20和 VLAN 30,分别提供给AP2和AP3使用,SVI分别为20.1.1.253和30.1.1.253,,AP2和 AP3为瘦AP,将其关联到WLC上,这两个AP发挥着发现恶意AP的作用。WLC将发现的恶意AP的信息发送给PI,PI就可以执行SPT的跟踪。
在AP1上执行:
config t
dot11 ssid RougeAP
vlan 10
authentication open
authentication keymanagement wpa version 2
gust-mode
end
创建名为“RougeAP”的SSID,其属于 VLAN10,认证方式为开放状态,密钥管理采用WPA2类型,允许用户接收该SSID。执行:
interface Dot11Radio0
encryption vlan 10 mode cipers aes-ccm
ssid RougeAP
no shutdown
interface Dot11Radio0.10
encapsulation dot1q 10 native
在2.4Ghz频段将该SSID发射出去。
执行:
interface Dot11Radio1
encryption vlan 10 mode cipers aes-ccm
ssid RougeAP
no shutdown
interface Dot11Radio1.10
encapsulation dot1q 10 native
在5Ghz频段将该SSID发射出去。执行“interface GigabitEthernet 0.14”,“encapsulation dot1Q 10 native”,“no shutdown”命令,在物理接口下对Dot1Q 10进行封装。
在SW1和SW2上分别执行:
snmp-server group pizu v3 priv read piread write piwrite
snmp-server user piuser pizu v3 auth sha 123456789012 priv aes 123456789012
snmp-server view piread iso include
snmp-server view piwrite iso include
snmp-server host 10.1.1.20 ver 3 auth piuser
snmp-server group pizu v3 priv content vlan match prefix
snmp-server enable traps
ip domain name xxx.com
crypto key generate rsa general-key modulus 1024
enable secret xxx
username piuser privilege 15 password qytang
line vty 0 15
login local
创建SNMP管理参数。其中的SNMP V3组名为“pizu”,创建名为“piuser”的用户加入到该组,并为其设置加密和认证方式及密码,这里密码为“123456789012”。启用了SNMP陷阱功能,允许该组拥有读取VLAN的权限,并将信息发送到PI主机上。为了便于管理,为SW1和SW2开启SSH登录功能,并设置所需的用户名和密码,注意其级别为15,所以在之后具体管理时无需使用Enable密码。这里的“xxx.com”为具体的域名。
登录到WLC的管理界面,点击工具栏上的“MANAGEMENT”项,在左侧选择“SNMP”、“SNMP V3 Users”项,在右侧点击“New”按钮,在“User Profile Name”栏中输入SNMP用户名(如“wlcsnmp”), 在“Access Mode”中选择“Read/Write”项, 在“Authentication Protocol”中 选 择“HMACSHA”项,输入认证密码。在“Privacy Protocol”列表中选择“CFB-AES-128”项,在其下输入加密密码。
进 入PI界 面,点 击工 具 栏 中 的“Inventory”→“Network Devices” 项,点 击“Add Device”按 钮,输入WLC的管理IP地址,在“Version”列表中选择“V3”项,在“Auth.Type”列表中选择“HMAC-SHA”项,在“Privacy Type”列表中选择“CFB-AES-128”项,输入SNMP用户名,加密和认证密码。点击“Add”按钮添加该设备。同理,在PI中添加SW1和SW2交换机。点击工具栏中的“Inventory”→“Network Devices” 项,点 击“Add Device”按钮,可以看到已经添加的设备。
在工具栏上点击“WIRELESS”项,在左侧选择“ALL APs”项,在右侧显示AP2和AP3已经关联上了,点击对应的AP名称,在其属性窗口中的“Advanced”面板中选择“Rogue Detection”项,激活其恶意检查AP检查功能。在工具栏上点击“SECURITY”项,在左侧选择“Wireless Protection Policies” →“Rogue Policies”→“General”项,在右侧的“Rogue Detection Security Level”栏 中 选择“Custom”项,在“Rogue Location Discovery Protocol”列表中选择“Allaps” 项, 在“Auto Containment only for Monitor mode APs”栏中选择“Enabled”项,让其可以定位恶意AP。
在左侧选择“Rogue Policies”→“Rogue Rules”项,在右侧点击“Add Rule”按钮,新建一条规则,输入规则的名称(如“rule1”),在“Rule Type”列表中选择“Malicious”项,在“State”列 表中 选择“Alert”项,点击“Add”按钮添加该规则。在该规则属性窗口中选择“Enable Rule”项并激活。在“Conditions”栏中选择“SSID”项,点击“Add Condition”按钮,输入具体SSID 名 称(如“RougeAP”),点击“Add SSID”按钮添加该条件。
当恶意用户连接带AP1后,产生流量后会被监控到。点击工具栏的“MONITOR”项,选择“Rogues”→“Malicious APs”项,在右侧会显示探测到的恶意AP信息,包括MAC地址、SSID、信道、连接的用户数量等信息。
登录到PI主机,在管理界 面 点 击“Configuration”→“Wireless”项,在左侧选择“Access Points”→“All APs”项,在右侧显示已关联的AP,选择对应AP,在属性窗口中选择“Advanced”→“Rogue Detetion”,激活恶意 AP 检测功能。点击“Configuration”→“Security” 项,选 择“Wireless Protection Policies” →“Rogue Policies”项,在 右 侧 的“Rogue Location Discovery Protocol”列表中选择“Allaps” 项,选 择“Auto Containment only for Monitor mode APs”。 点 击“Applying”按钮保存保存。
在左侧选择“Rogue AP Rules”项,在 右 侧 点击“Add Rule”按钮,输入策 略 名 称(如“Pirule1”),在“Rule Type”列表中选择“Malicious” 项,点 击“Add”按钮添加该规则,在属性窗口中选择“Enable Rule”,激活该规则。在“Add condition”中选择“ssid”项,点 击“Add condition”按钮,输入具体的SSID名称(如“Rouge”),点 击“Add SSID”添加该条件。点击工具栏的“Monitor”项,在左侧选择“Malicious”,在右侧显示发现的恶意AP信息。
登 录 到PI主 机,在其管理界面工具栏上点击“Administration”→“System Settings” 项,在左侧选择“Switch Port Trace”项,在 右 侧 窗 口选 择“MAC address+2/-2(including +1/-1)search”项,表示检测目标AP射频接口和实际以太网接口的MAC地址之间是否存在存在1或者2的数值变化。选择“Rouge client MAC address search”项,表示当恶意AP有客户端存在的话,客户端的MAC地址也会加入到查询列表中。
选 择“Bendor(OUI)search”项,表示通过MAC地址的前面三段的OUI来检测恶意AP的厂商信息,这样便于启用排除列表。取消“Exclude search trunk ports”项,表示检测Trunk接口。因为恶意AP可能使用Trunk和交换机连接。在“Exclude device list”栏中输入需要排除的设备MAC地址,以逗号分隔。这样,该列表中的的设备就不会进行检测。在“Max hop count”栏中设置上述最大跳数。
在“Exclude vendor list”栏中设置排除的厂商列表,表示这些厂商的AP不是恶意AP,最好将其清空。在“TraceRougeAP task max thread”栏中设置在一次并行检查中允许的恶意AP的数量,默认为2。在“TraceRougeAP max queue size”栏中设置当最大队列的尺寸,在其中定义一个队列中最多有多少个恶意AP的 条 目。 在“SwitchTask max thread”栏中设置在一次并行查找中最大的交换机的数量。
在左侧选择“SNMP Credentials”项,在右侧的的“Network Address”列中默认显示“0.0.0.0”项,表示对所有的设备均使用名为“cisco”的团体名。在该页面允许为SPT设置SNMP身份信息,当一个设备的身份信息没有加入到PI,可以使用该页面页面中SNMP信息来连接交换机。
当然,可以选择“Add SNMP Entries”项,在打开窗口中输入合适的IP范围(如“10.1.1.0”)和掩码,选择“SNMP v2 Parameters”项,输入合适的团体名。选择“SNMP v3 Parameters”可以设置合适的用户名、认证方式、认证密码、加密类型和加密密码,创建所需SNMP项目。
在左侧选择“Rouge AP Settings”项,在右侧选择“Enable Auto Search Port Tracing”表示启用SPT检测功能。选择“Major”表示选择PI跟踪客户端发现在所有的设备端口,通过各种数据同步基本的客户端信息,选择“Minor”表示PI跟踪客户端发现只有在设备接口刚刚变成Active时,PI可以查看设备的UpTime来识别接口是不是刚刚添加和删除客户端。
开启了SPT功能后,可以发现存在的恶意AP,在PI管理窗口右下角的提示栏中显示警告信息,点击该信息,在打开的“Alarm Summary”面板中的“major”列中显示发现的恶意AP的数量,点击该值在打开的窗口中显示报告窗口,选择目标告警项目,在其详细信息窗口中显示SPT已经激活,但是端口没有发现。在打开窗口中点击“Show Detail Status”按钮,显示状态信息。
点 击“Trace Switch Port(s)”,执 行 端 口 跟 踪操作,在“Status”栏中显示已发现对应的端口,在“Switch/Ports”中显示发现的连接恶意AP的所有交换机端口号。注意,如果恶意AP是瘦AP且关联到WLC的话,端口会显示“Capwap0”之类信息。选择目标端口号,点 击“Enable/Disable SwitchPort(s)”按钮,禁用选定的交换机端口,连接的恶意AP就无法使用了。