科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道OSI第二层网络架构安全要素(上)

OSI第二层网络架构安全要素(上)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

许多安全管理员多关注网络层和应用层的安全问题,经常会忽略Layer 2网络架构(数据链路层),同时这也是网络安全和可靠性方面最容易被人忽视的一个方面。

作者:ZDNet China 2007年3月26日

关键字: 企业内部网 网络管理 安全管理 交换机 CISCO

  • 评论
  • 分享微博
  • 分享邮件

许多安全管理员多关注网络层和应用层的安全问题,经常会忽略Layer 2网络架构(数据链路层),同时这也是网络安全和可靠性方面最容易被人忽视的一个方面。在本文中,我会向你展示如何修正交换机配置以及架构方面最常见的错误。虽然我使用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 key

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域口令。如果你把它以默认值丢在那里的话,那么你就相当于拱手交出了国门的钥匙,并将你的整个交换机架构公布在了网页上,任何人都可以看到它。在“config t”的全局配置模式中使用下述命令,或者在较老的Cisco软件镜像中使用“vlan data”的VLAN数据库模式,来锁闭你的VTP配置。务必确认使用你自己的字符串以及IP地址,来取代示例中的相关参数。

Cisco Native IOS上配置VTP

命令

描述

vtp domain My-VTP-name

设置VTP名字

vtp password My-VTP-password

设置VTP口令

vtp pruning

打开VTP修剪

Cisco Catalyst OS上配置VTP

命令

描述

set vtp domain My-VTP-name

设置VTP名字

set vtp passwd My-VTP-password

设置VTP口令

set vtp pruning enable

打开VTP修剪

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

Cisco Native IOS配置SNMP

命令

描述

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

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

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

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

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之中。在下面的例子里,我们将使用一台基于传统CIsco IOS的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数字。不在服务器,工作站,或者其他设备上使用native VLAN将可以有效阻挡频繁的VLAN攻击。如果你不进行这个基础锁闭进程的话,那么在VLAN1上,所有的交换机端口默认都是打开的。而这正是许多人当前使用交换机的方式,多么恐怖的一个错误!

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

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

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

 Cisco Native IOS上的VLAN中继锁闭

命令

描述

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中继锁闭

命令

描述

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

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

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

STP BPDU以及Root防护

通过发送BPDU通讯,黑客们可以玩出所有的下流把戏,而BPDU可以迫使VLAN STP(展开树协议)重新计算,至少花费30秒才可以清除。这样他们就可以不定期的发动DoS攻击(拒绝服务)。他们也可以装作是STP root而染指相关通讯。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拒绝服务攻击,并可能截取交换机通讯。

(责任编辑:陈毅东

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章