与路由器不同,交换机的安全威胁主要来自局域网内部。出于无知、好奇,甚至是恶意,某些局域网用户会对交换机进行攻击。不管他们的动机是什么,这都是管理员们不愿看到的。为此,除了在规定、制度上进行规范外,管理员们要从技术上做好部署,让攻击者无功而返。本文以Cisco交换机的安全部署为例,和大家分享自己的经验。
1、细节设置,确保交换机接入安全
(1).配置加密密码
尽可能使用Enable Secret特权加密密码,而不使用Enable Password创建的密码。
(2).禁用不必要或不安全的服务
在交换机上尤其是三层交换机上,不同的厂商默认开启了不同的服务、特性以及协议。为提高安全,应只开启必须的部分,多余的任何东西都可能成为安全漏洞。可结合实际需求,打开某些必要的服务或是关闭一些不必要的服务。下面这些服务通常我们可以直接将其禁用。
禁用Http Server
no ip http server
禁用IP源路由,防止路由欺骗
no ip source route
禁用Finger服务
no service finger
禁用Config服务
no service config
禁用Hootp服务
no iP hootp server
禁用小的UDP服务
no service udp-small-s
禁用小的TCP服务
no service tcp-small-s
(3).控制台和虚拟终端的安全部署
在控制台上使用与虚拟终端(Vty)线路上配置认证,另外,还需要对Vty线路使用简
单的访问控制列表。
Switch(config)#access-list 1 permit 192.168.1.1
Switch(config)#line vty 0 4
Switch(config-line)#access-class 1 in
(4).用SSH代替Telnet
Telnet是管理员们连接至交换机的主要通道,但是在Telnet会话中输入的每个字节都将会被明文发送,这可以被类似Sniffer这样的软件嗅探获取用户名、密码等敏感信息。因此,使用安全性能更高的SSH强加密无疑比使用Telnet更加安全。
Switch(config)#hostname test-ssh
test-ssh(config)#ip domain-name net.ctocio.com
test-ssh(config)#username test password 0 test
test-ssh(config)#line vty 0 4
test-ssh(config-line)#login local
test-ssh(config)#crypto key generate rsaThe name for the keys will be:test-ssh.net.ctocio.com
test-ssh(config)#ip ssh time-out 180
test-ssh(config)#ip ssh authentication-retries 5
简单说明,通过上述配置将交换机命名为test-ssh,域名为net.ctocio.com,创建了一个命名test密码为test的用户,设置ssh的关键字名为test-ssh.net.ctocio.com,ssh超时为180秒,最大连接次数为5次。
(5).禁用所有未用的端口
关于这一点,笔者见过一个案例:某单位有某员工“不小心” 将交换机两个端口用网线直接连接,(典型的用户无知行为),于是整个交换机的配置数据被清除了。在此,笔者强烈建议广大同仁一定要将未使用的端口ShutDown掉。并且,此方法也能在一定程度上防范恶意用户连接此端口并协商中继模式。
(6).确保STP的安全
保护生成树协议,主要是防范其他分公司在新加入一台交换机时,因各单位网络管理员不一定清楚完整的网络拓扑,配置错误使得新交换机成为根网桥,带来意外的BPDU。因此,需要核心管理员启用根防护与BPDU防护。
默认情况下交换机端口禁用根防护,要启用它需要使用以下命令:
Switch(config)#spanning-tree guard root
默认情况下,交换机端口也禁用BPDU防护。启用它需使用下列命令:
Switch(config)#Spanning-tree Portfast bpduguard default
如果要在所有端口上启用BPDU防护,可使用下面的命令:
Switch(config)#Spanning-tree Portfast bpduguard enable
2、ACL配置,确保交换机VLAN安全
大家知道,ACL是一张规则表,交换机按照顺序执行这些规则,并且处理每一个进入端口的数据包。每条规则根据数据包的属性(如源地址、目的地址和协议)要么“允许”, 要么“拒绝” 数据包通过。访问列表能够对通过交换机的数据流进行控制。ACL通过对网络资源进行
访问输入和输出控制,确保网络设备不被非法访问或被用作攻击跳板。
配置VLAN Access Map
Switch(config)#vlan access-map test1
//定义一个vlan accessmap,取名为test1
Switch(config-vlan-access)#match ip address 101
//设置匹配规则为acl 101
Switch(config-vlan-access)#action forward
//匹配后,设置数据流转发(forward)
Switch(config)#vlan access-map test2
//定义一个vlan accessmap,取名为test2
Switch(config-vlan-access)#match ip address 102
//设置匹配规则为acl 102
Switch(config-vlan-access)#action forward
//匹配后,设置数据流转发(forward)
应用VACL
Switch(config)#vlan filter test1 vlan-list 10
//将上面配置的test1应用到vlanl0中
Switch(config)#vlan filter test2 vlan-list 20
//将上面配置的test2应用到vlan20中
配置私有VLAN
定义辅助VLAN10、20、30
Switch(config)#vlan 10
Switch(config-vlan)#private vlan community
定义主VLANIO0并与所有辅助VLAN建立关系
Switch(config)#vlan 100
Switch(config-vlan)#private vlan community
Switch(config-vlan)#private vlan association 10,20,30
定义端口在私有VLAN 中的模式为主机(Host)或混合(Promiscuous),并配置关联或映射
Switch(config-if)#switchport mode private host
Switch(config-if)#switchport mode private host-association 100 30