深度安全:数据链路层交换安全的探讨

ZDNet软件频道 时间:2009-11-04 作者:ZDNet安全频道 | ZDNet安全频道 我要评论()
本文关键词:思科 ssh 数据链路层 交换机 安全策略
许多安全管理员经常会忽略网络架构的第二层(即数据链路层,交换机所处的位置)的安全问题,同时这也是网络安全和可靠性方面最容易被人忽视的一个方面。

ZDNet安全频道原创翻译 转载请注明作者以及出处

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

  启用 ssh 禁用Telnet

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

在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上启用ssh,禁止Telnet

命令

解释

set crypto key rsa 1024

创建一个1024位的RSA密钥

set ip permit 10.0.10.0 255.255.255.0 ssh

明确仅允许指定IP范围内的地址ssh

set ip enable

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

  关闭 VTP和 SNMP安全

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

在 Cisco Native IOS上配置VTP

命令

解释

vtp domain My-VTP-name

设置 VTP 名称

vtp password My-VTP-password

设置 VTP 密码

vtp pruning

开启 VTP pruning

在Cisco Catalyst OS上配置VTP

命令

解释

set vtp domain My-VTP-name

设置 VTP 名称

set vtp passwd My-VTP-password

设置 VTP 密码

set vtp pruning enable

开启 VTP pruning

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

为Cisco Native IOS配置SNMP

命令

解释

snmp-server community MY-Read-Only-string ro 50

对来自ACL 50的SNMP请求设置只读字串

snmp-server community MY-Read-Write-string rw 51

对来自ACL 51的SNMP请求设置读写字串

access-list 50 permit IP-address-ro

建立只读SNMP服务器ACL。允许多于一个。

access-list 51 permit IP-address-rw

建立读写SNMP服务器ACL。允许多于一个。

为Cisco Catalyst OS配置SNMP

命令

解释

set snmp community read-only read-only-string

设置只读字串

set snmp community read-write read-write-string

设置读写字串

set snmp community read-write-all rwo-string

设置全部读写字串

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

  关闭基本端口

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

在Cisco Native IOS上的基础端口锁闭

命令

解释

int range FastEthernet0/1 - 48

进入接口1 - 48

switchport access vlan 333

设置端口到VLAN 333

switchport mode access

关闭自动VLAN中继

shut

关闭端口

在Cisco Catalyst OS上的基础端口锁闭

命令

解释

set vlan 333 1/1-2

设置sup卡端口到VLAN 333

set vlan 333 3/1-48

设置所有blade 3端口到VLAN 333

set trunk 1/1-2 off

禁止所有SUP卡端口的中继

set trunk 3/1-48 off

禁止在所有blade 3端口上的中继

set port disable 1/1-2

关闭所有Blade 1上的全部端口

set port disable 3/1-48

关闭所有Blade 3上的全部端口

对所有交换机上的blade以及端口都需要重复"set vlan/trunk/port"命令

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

  当你检查每一个端口,并连上新设备时,你应当在Cisco IOS中使用“description My-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.

Cisco Native IOS上的VLAN中继锁闭

命令

Description

interface GigabitEthernet1/0/2

在Cisco 3750上进入第二个gigabit端口

switchport mode trunk

打开中继模式

Switchport trunk encapsulation dot1q

设置中继类型为IEEE 802.1q

switchport trunk allow 12-14, 20-22

仅允许Vlan 12-14以及20-22

Cisco Catalyst OS上的VLAN中继锁闭

命令

Description

Clear trunk 1/1-2 1-1005

设置sup 卡端口到VLAN 333

Clear trunk 3/1-48 1-1005

在所有SUP卡端口上禁止中继

为每一个blade以及每一个端口重复"clear trunk"命令

Set trunk 1/2 12-14

设置端口1/2 允许vlan 12-14

Set trunk 1/2 20-22

设置端口1/2 允许vlan 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防护可以阻止这种类型的攻击。

Cisco Native IOS上的STP BPDU以及Root防护

命令

解释

spanning-tree portfast bpduguard

交换机上打开BPDU防护

spanning-tree guard root

交换机上开启“Root guard”

spanning-tree rootguard

某些IOS版本上使用的另一个root guard命令

Cisco Catalyst OS上的STP BPDU以及Root防护

命令

解释

set spantree portfast bpdu-guard enable

交换机上开启BPDU防护

set spantree guard root 1/1-2

blade 1开启root guard

set spantree guard root 3/1-48

blade 3开启root guard

为每一台blade以及每一个端口重复"set spantree guard root"命令

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

  阻止CAM表格以及DHCP耗尽

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

Cisco Native IOS阻止CAM表格以及DHCP爆炸

命令

解释

int range FastEthernet 0/1 - 48

进入接口1 - 48

switchport port-security

打开端口防护

switchport port-security maximum 5

允许最高5MAC地址

switchport port-security violation protect

超过5个的MAC地址后的数据包全部丢弃

switchport port-security aging time 2

switchport port-security aging type inactivity

对所有其他交换机上的所有其他端口重复上述步骤

防止Cisco Catalyst OS上的CAM表格以及DHCP爆炸

命令

解释

set port security 1/1-2 enable

在所有blade 1端口上启用端口防护

set port security 3/1-48 enable

在所有blade 3端口上启用端口防护

set port security 1/1-2 port max 5

blade 1上允许5MAC地址

set port security 3/1-48 port max 5

blade 3上允许5MAC地址

set port security 1/1-2 violation protect

超过5个的MAC地址后的数据包全部丢弃

set port security 3/1-48 violation protect

超过5个的MAC地址后的数据包全部丢弃

set port security 1/1-2 age 2

set port security 3/1-48 age 2

set port security 1/1-2 timer-type inactivity

set port security 3/1-48 timer-type inactivity

对所有其他blade上的所有其他端口重复上述步骤

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

  阻止DHCP,MAC,以及IP欺骗

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

Cisco Native IOS阻止DHCPMAC,以及IP欺骗

全局命令

解释

ip dhcp snooping vlan 1-1000

Vlan 1-1000打开DHCP调查

ip dhcp snooping

打开DHCP调查

no ip dhcp snooping information option

ip arp inspection vlan 1-1000

VLAN 1-1000上的ARP检查

ip arp inspection log-buffer entries 1024

ip arp inspection log-buffer logs 1024 interval 10

主机接口命令

解释

int range FastEthernet 0/1 - 48

进入接口1 - 48

no ip arp inspection trust

锁闭ARP的主机端口

ip arp inspection limit rate 15

设置ARP pps检查速率

ip verify source vlan dhcp-snooping

打开IP来源防护

DHCP 客户端接口命令

解释

no ip dhcp snooping trust

不允许DHCP服务器

ip dhcp snooping limit rate 10

限制对DHCP的请求速率

仅在信任的DHCP端口以及连接其他信任交换机的端口上执行下述命令。下述部分命令将和上面的相反。在正当的互联交换机上以及DHCP服务器上执行下述命令失败,将会导致网络瘫痪以及DHCP瘫痪。

DHCP 服务器接口命令

解释

ip dhcp snooping trust

这个端口允许DHCP服务器

交换机接口命令

解释

ip arp inspection trust

解锁用于连接信任交换机的端口

  要注意,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攻击常常被忽视的另一个方面,就是那些部署基于VPN的无线网络安全的公司。一旦不可靠的匿名客户端被允许进入一个AP,而AP通常都会直接连上一台内部交换机,并由VLAN进行分段,而你可能就会忘记Layer安全。要限制来自AP的MAC地址数量非常困难。基于这个原因,高度建议基于VPN的无线局域网安全,应当避免使用基于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健康通常被定义为完全进行了安全补丁方面的更新,正确部署了防火墙,并使用了最新的防病毒库定义。如果一个认证的客户端电脑不能通过健康测试,他们将被放入网络上的一个受限隔离区,直到他们使用正确的更新将自己修正完毕为止。

用户评论
用户名
评论内容
发表时间
ZDNet网友
2011-03-18 14:57:01
ZDNet网友
2010-05-21 00:49:14
ZDNet网友
2010-05-21 00:48:00
ZDNet网友
微软应该对自己的用户负责,如果用户完全使用xp升级微软win7,为什么要付出这样麻烦的代价?都是微软出品软件,且都是利用该软件获取信息以及处理文字、多媒体功能,微软应该尽可能方便用户!虽然有时候这样的请求也许跟不上时代技术发展的脚步,但是微软不要以此为借口,认为一切都理所应当,就不可以方便用户。还是要尽力,所谓拿人手短吃人嘴软,商业不正是讲求有商道吗!至少做人需诚实守信,尽可能帮助用户顺利、安全转换操作系统、各种必须软件功能尽可能兼容以及信息尽可能的少丢失!虽然这很大程度仅仅取决于微软等计算机专家、工程师的自我自律约束,我们普通用户恐怕很难知道微软究竟仅了多大力量为用户考虑,但是我相信真相会有被发现的一天,无论多久远。 微软从某种意义上来说,就是一个类似“掌握魔方”操作特别出神入化的公司。几乎奠定了电脑主要的“规则”,但是,我却相信不久将来我们会发现,电脑依然是非常有限的一个小系统而已!随着我们新的关键材料认知突破,电脑系统会真正被另一个革命性新电脑系统所取代,不要以为我这样的说法是无稽之谈不可实现,我却认为很有可能,只看这样的情况发生究竟是快还是慢,是早还是迟!变成历史的小玩具之后的电脑系统,微软会留下良好的历史声名吗?我们拭目以待! 网友::我爱佛祖
2010-02-03 13:52:55
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134