许多安全管理员多关注网络层和应用层的安全问题,经常会忽略Layer2网络架构(数据链路层),同时这也是网络安全和可靠性方面最容易被人忽视的一个方面。在本文中,我会向你展示如何修正交换机配置以及架构方面最常见的错误。虽然我使用Cisco来作为我的例子,但是同样的策略和所讨论的教训一样适用于其他厂商。这些安全手续对任何数据网络来说都是必须的,特别是在使用IP电话的时候。


启用SSh,禁止Telnet


  对于一台Cisco设备来说,最明显需要设置的就是口令和启用加密了。如果你让它保持空白的话,你的交换机就等于是在敞开大门,任何人都可以查看并***你的VLAN设置。如果你有多台交换机,以及多位系统管理员时,最好使用AAA认证模式,并使用一个本地用户数据库,集中的TACACS+,或者 RADIUS服务器来管理所有的交换机和系统管理员。使用TACACS+可能是更正确的选择,因为它可以记录下所有的事件,以便你有一个历史记录,可以记录下所有做出的修改,以及是谁在你的交换机和路由器架构中做出了修改。不过要记住,最重要的事情是,不惜任何代价禁止Telnet,并持续的对所有交换机部署SSH.即便你的交换机上并没有一个启用加密的软件镜像,所有的当前镜像也依然可以让你SSH进交换机。为每一个系统管理员都建立一个独一无二的用户名以及口令。然后,你应当启用SSH,并干掉Telnet.


  要注意,对Cisco Native IOS交换机来说,Native IOS命令同样可以工作在Cisco IOS路由器上。无法使用SSH可能会导致口令被窃,并让***者获得对交换架构完全的控制权。




锁闭VTP及SNMP的安全


  这听起来很难令人相信,但是在我当顾问的日子里,我看到过大量的网络根本不曾在他们的Cisco交换机中配置VTP域口令。如果你把它以默认值丢在那里的话,那么你就相当于拱手交出了国门的钥匙,并将你的整个交换机架构公布在了网页上,任何人都可以看到它。在“configt”的全局配置模式中使用下述命令,或者在较老的Cisco软件镜像中使用“vlandata”的VLAN数据库模式,来锁闭你的VTP配置。务必确认使用你自己的字符串以及 IP地址,来取代示例中的相关参数。


  你同样也应当设置你的SNMP(SNMP版本3更合适)秘密,这些是有效的口令。检查此文档,以获取对Cisco SNMP管理的完全指南。下面是个示例,用于演示如何使用正确的口令,在“config t”的全局配置模式下,配置一个SNMP只读及读写的服务器。


  如果你根本不打算使用SNMP,你应当在Native IOS之中,在全局配置模式下,使用“no snmp-server”命令将其彻底关闭。这样你就可以跳过前述的所有SNMP命令,直接阅读下文。


基础端口锁闭


  交换机应当像安全领域中的其他事物一样,使用那种最低权限的理念。设置一个交换机的最好方法就是在部署时先关闭所有的端口,然后再一一打开自己需要的端口。除此以外,你应当将每一个端口都放入一个不曾使用的,无处可去,没有默认网关的VLAN之中。你可以建立一个名为 “unused(不曾使用)”的VLAN,并使用一个指定的数字,比如333,然后将所有的端口都放入这个VLAN之中。在下面的例子里,我们将使用一台基于传统CIscoIOS的48×××换机。


  你将需要为所有的交换机进行上述工作,具体则要根据机器的型号和操作系统类型来定。如果你是在使用某种堆叠,你将不得不为每个堆叠都坐上一次。然后,当你插入服务器时,你“不关上”该端口,并将其设置到正确的VLAN上,或者甚至将其转化成一个中继端口(如果的确需要的话)。当你将VLAN设置到服务器和工作站上是,永远也不要使用VLAN1,这是默认的交换机上的自然VLAN,也不要使用你人工指派的VLAN数字。不在服务器,工作站,或者其他设备上使用nativeVLAN将可以有效阻挡频繁的VLAN***。如果你不进行这个基础锁闭进程的话,那么在VLAN1上,所有的交换机端口默认都是打开的。而这正是许多人当前使用交换机的方式,多么恐怖的一个错误!


  当你检查每一个端口,并连上新设备时,你应当在Cisco IOS中使用“descriptionMy-Port-Name”命令,来对每一个端口正确标示。Cisco Catalyst OS使用“set port name 3/43My-Port-Name”命令来标示端口。这一点在SNMP向类似Solarwinds或者HPOpenView这样的服务器报告时特别有用,因为在报告中将直接给出端口描述。这是最好的文档形式,因为它们的确有用。


  那些不曾使用这个基本端口锁闭进程的人们,则相当于允许任何人闯入他们的交换机网络,并连上任何一个他们喜欢的VLAN.


  VLAN中继锁闭无论何时,当在任意端口上使用VLAN中继时,该中继端口应当最小化VLAN数目,仅保留那些需要穿越交换机的VLAN.在下述例子中,我们将配置一个中继端口,仅允许VLAN 12-14以及20-22.


  要注意,在一个Catalystos上,清除默认允许的VLAN中继将意味着非常大量的工作,因为默认状态下,所有的 VLAN都是打开的。在这种情况下,事实上我们在Catalystos上所定义的VLAN12-14以及20-22将没有任何意义,因为它只不过是更大的 1-1005中的一部分,而后者默认全部是打开的。而在Cisco NativeIOS上,每一个VLAN默认都是被阻挡的,除非特别定义其打开。


  如果在锁闭一个中继上允许的VLAN方面失败的话,将意味着所连接的设备可能会连上的VLAN数目,将会远远超过你的期望。


STP BPDU以及Root防护


  通过发送BPDU通讯,***们可以玩出所有的下流把戏,而BPDU可以迫使VLANSTP(展开树协议)重新计算,至少花费30秒才可以清除。这样他们就可以不定期的发动DoS***(拒绝服务)。他们也可以装作是STProot而染指相关通讯。BPDU防护以及root防护可以阻止这种类型的***。


  注意,你必须禁止所有连接其他交换机的端口上的root防护以及BPDU防护。如果这个安全功能部署失败的话,将允许***们针对整个交换结构发动BPDU拒绝服务***,并可能截取交换机通讯。


阻止CAM表格以及DHCP耗尽


  ***们可以利用这样一个事实,那就是交换机和DHCP服务器所能保留的MAC地址或IP地址是有限的。***可以修改自己的 MAC地址,并从DHCP服务器上要求多个DHCP地址,直到用尽DHCP池中每一个单独IP地址。***也可以非常迅速的修改自己的MAC地址,从而快速的将任意以太网交换机的CAM表格占满。一旦一台以太网交换机的CAM表格被塞满,它事实上就变成了一个以太网集线器。不仅会导致性能的急剧降低,同时交换机将被迫的向每一个端口广播所有的网络通信,这让***可以偷听交换机上的每一台设备,看起来就像是在使用一台集线器一样。要阻止CAM表格***以及 DHCP耗尽***,你必须按照下属示例的方法对端口防护进行正确的配置。


  注意,你必须禁止那些连接其他交换机的端口的安全。


阻止DHCP,MAC,以及IP欺骗


  ARP以及IP欺骗允许***佯装其他人,从而截取通讯。DHCP欺骗则允许一个***将一个信任客户端放入一个伪造IP范围的以太网段上,从而淹没***者达到网络的其他地方。所有这些方式都是为了截取网路通讯,以便***者可以嗅探内部局域网上的各种秘密。你可以通过部署 DHCP调查,动态ARP检查,以及IP源地址防护来阻止这些***。

在Cisco Native IOS上启用SSH,禁止Telnet 命令 描述 username admin1 privilege 15 password 0 Admin-Password 建立一个叫做admin1的系统管理员,每一个管理都必须重复。 aaa new-model 使用一个本地数据库,设置为AAA模式 aaa authentication login default local aaa authorization exec default local aaa authorization network default local aaa session-id common ip domain name MyDomain.com 建立一个用于认证的名字 crypto key generate rsa 建立数字证书。使用至少768位的Diffie-Hellman关键字 line vty 0 4 进入vty配置 transport input ssh 仅仅允许SSH登录

  要注意,Cisco Catalyst OS不支持这些反欺骗功能,所以将你的大CAT OS迁移到Native OS上是一个很好的想法。这意味着你将不得不将你的MSFC路由器和CAT OS 交换机合并到一个单一的Native IOS镜像里。


  对Layer 2的防护,以及强化交换机架构,应对内部局域网威胁而言,反欺骗绝对是一个非常重要的部件。内部威胁应当和外部威胁处于同等重要地位,因为一台简单的被恶意软件所侵害的工作站,加上rootkit工具,即可将一个外部威胁立刻转变成为内部威胁。


  限制STP域的大小这也是在交换机架构方面常常为人忽视的一个方面。一个单一STP(展开树协议)域应当永远不允许长得太过巨大或者变成极度复杂。我曾在一个大学校园里,碰到一个个人用户,仅仅因为偶然插入一个小型桌面交换机,而后偶然的将CAT-5电缆接成自我回环,就瘫痪了整个校园的数千台电脑和IP电话。无论何时,一旦 STP域中发生BPDU请求而导致STP重新计算的话,那些同样含有校园网VLAN的网络就会神秘中断,每次都会锁定整个校园网长达30秒之久。数据网络的中断已经够惨了,但是它同时还会导致IP电话架构瘫痪。于是数以百计的人们根本无法工作,因为没有数据,同时也没有了电话。


  要避免过大和过于复杂的STP拓扑结构,你必须路由通讯,而不是交换通讯。实际上,这意味着你必须使用layer 3兼容交换机来取代Layer2交换机,因为后者仅知道如何交换通讯,而不懂如何路由通讯。这也意味着VLAN将无法在那些不属于统一STP交换域的交换机之间展开。这种结构改变可能意味着整个校园局域网的基础架构重新设计,这可不是一件轻松的事情,但是在部署任何IP电话系统之前,这些问题必须被考虑。


维护交换机软件到最新的稳定版本


  在网络安全方面,最大以及最常见的罪恶之一,就是人们假设交换机以及架构上的路由是和铅制造一样的,并且你永远不需要去碰它。但是如果你是在运行一台Cisco交换机或者路由器,而它的软件镜像是半年之前的话,那么在你的交换机或者路由器上就很可能存有某些漏洞。说起来很悲哀,但是我的确看到人们在他们的Cisco设备上,运行3年以前或者4年以前的软件镜像,而没有任何想法。


  永远更新你的网络设备,就像你不断从硬件厂商那里获取稳定的软件来更新你的客户端以及服务器电脑一样,并始终对相关的更新保持留意。所有的网络和安全工程师都应当问自己一句“上一次我对网络设备软件升级是什么时候了?”。制定出一份行动计划,其中包括一个立即执行的计划,以及一个长期实行的计划,并将其用于管理之中。保持你的远见,提前消除事故,而不是去等待事故的发生。


最终想法


  Layer2安全是信息安全方面最被人忽视的一个方面,常常被安全审核错过,特别是当那些审核更多的聚焦在策略之上,而不是实际部署的时候。***们不关心策略,他们只会利用任何可用的安全漏洞。在获得网络中单台电脑的根用户权限后,他们第一时间要做的事情之一,就是实施 Layer 2***。Layer2***常常被忽视的另一个方面,就是那些部署基于×××的无线网络安全的公司。一旦不可靠的匿名客户端被允许进入一个AP,而AP通常都会直接连上一台内部交换机,并由VLAN进行分段,而你可能就会忘记Layer安全。要限制来自AP的MAC地址数量非常困难。基于这个原因,高度建议基于×××的无线局域网安全,应当避免使用基于802.1x的无线局域网安全。


  越过这些锁闭进程之后,则是Layer2交换机安全的下一步,关于无线局域网802.1x安全的有线版。幸运的是,用于无线局域网认证的同一架构也适用于有线认证。基于端口的安全措施基本上说起来都是——即使你插入了一个端口,我们也不会让你进入我们的Layer2交换机架构的,除非你能证明你是谁,以及你是被许可进入网络的。尽管许多公司已经部署了802.1x无线局域网安全,但部署802.1x有线版的还是很少。 WindowsXP自动进行无线局域网802.1x配置,但是不会自动进行802.1x有线局域网配置。这一点会在Vista中进行改变,无论有线还是无线的802.1x局域网都会自动进行配置。


  除了对802.1x的增强之外,Vista也增加了NAP(网络访问保护)客户端,也就是微软版本的NAC(网络访问控制)标准。NAP或者 NAC使用了802.1x基于端口的安全理念,并更进一步,不仅在它们被允许连上网络之前,要求来自客户端的认证和许可,同时也核定客户端的健康状况。如果一个客户端可以证明自己是谁,并证明自己得到网络的认证,他们还依旧必须证明自己是足够健康的。NAC健康通常被定义为完全进行了安全补丁方面的更新,正确部署了防火墙,并使用了最新的防病毒库定义。如果一个认证的客户端电脑不能通过健康测试,他们将被放入网络上的一个受限隔离区,直到他们使用正确的更新将自己修正完毕为止。