科技行者

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

知识库

知识库 安全导航

至顶网›网络频道 ›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 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之中。在下面的例子里,我们将使用一台基于传统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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

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