此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何保护Cisco IOS®系统设备并提高网络的整体安全性。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
当您保护Cisco IOS系统设备时,网络的整体安全性会增加。
网络的整体安全性围绕三个平面构建,网络设备的功能可分为三个平面。 网络的三个功能平面是:管理平面、控制平面和数据平面,每个平面提供需要保护的不同功能。本文档概述了每个包含的功能,并提供了相关文档的参考。
本文档中涉及的安全功能通常为您提供足够的详细信息来配置所述功能。但是,如果没有详细信息,则会以某种方式解释该功能,以便您可以评估是否需要对该功能给予更多关注。本文档酌情包含实施后有助于保护网络安全的建议。
确保网络运行安全是一个非常重要的主题。虽然本文档的大部分内容主要用于说明如何确保 Cisco IOS 设备的配置安全,但仅仅通过配置并不能完全确保网络安全。网络上使用的运行过程与底层设备的配置一样,在很大程度上影响着网络的安全。
这些主题中包含一些建议您实施的操作建议。这些主题主要着眼于网络运行的特定重要方面,因此并不全面。
思科产品安全事件响应小组 (PSIRT) 针对思科产品中与安全相关的问题,创建并维护通常称为《PSIRT 建议》的出版物。可使用“Cisco 安全响应”这一方法来传达严重程度较低的问题。在Cisco安全建议中可以找到安全建议及响应。
在 Cisco 安全漏洞策略中可以找到有关这些通信手段的其他信息。
要维护网络安全,请注意已发布的思科安全建议和响应。您首先需要了解有关漏洞的知识,然后才能评估漏洞可能对网络造成的威胁。如需与此评估流程相关的帮助,请参阅“安全漏洞风险分类公告”。
身份验证、授权和记帐 (AAA) 框架对于确保网络设备安全至关重要。AAA 框架提供针对管理会话的身份验证功能,还可以将用户限制为只能执行特定的、管理员定义的命令,并记录所有用户输入的全部命令。有关如何利用 AAA 的更多信息,请参阅本文档的身份验证、授权和记帐部分。
要了解与安全事件相关的当前事件、紧急事件和历史事件,您的组织必须拥有统一的事件日志和关联策略。此统一策略必须利用来自所有网络设备的日志,并使用预打包的可定制关联功能。
实施集中日志后,您必须开发一种结构化方法来记录分析和跟踪突发事件。基于您组织的需要,此方法的范围可以介于对日志数据的简单复查和基于规则的高级分析之间。
有关如何在Cisco IOS网络设备上实施日志的详细信息,请参阅本文档的日志记录最佳实践部分。
使用多个协议来传输敏感的网络管理数据。尽可能使用安全协议。安全协议选择包括使用SSH而不是Telnet,因此身份验证数据和管理信息都会被加密。此外,在复制配置数据时使用安全文件传输协议。例如,使用安全复制协议 (SCP) 代替 FTP 或 TFTP。
有关思科 IOS 设备安全管理的更多信息,请参阅本文档的安全交互式管理会话部分。
NetFlow使您能够监控网络上的流量。NetFlow最初旨在将流量信息导出到网络管理应用程序,但也可以用于显示路由器上的流信息。使用此功能可以实时查看经过网络的数据流。无论是否将流信息导出到远程收集器,都建议您为NetFlow配置网络设备,以便在需要时可被动使用。
有关此功能的详细信息可在本文档的数据流标识和回溯部分中找到,也可以在Cisco IOS NetFlow中找到。
注意:只有思科注册用户才能访问内部工具和信息。
配置管理是用于建议、审查、批准并部署配置更改的过程。在Cisco IOS设备配置环境中,配置管理的另外两个方面至关重要:配置存档和安全。
使用配置存档来回滚对网络设备所做的更改。在安全情景中,还可以使用配置存档来确定进行了哪些安全更改以及更改发生的时间。此信息与AAA日志数据一起有助于网络设备的安全审计。
Cisco IOS 设备的配置包含许多敏感的详细信息。用户名、密码和访问控制列表的内容都是此类敏感信息的示例。需要保护用于存档Cisco IOS设备配置的存储库。以不安全的方式访问这些信息可能会破坏整个网络的安全。
管理平面包含用于实现网络管理目标的功能。其中包括使用 SSH 的交互式管理会话,以及使用 SNMP 或 Netflow 的统计信息收集功能。当您考虑网络设备的安全时,保护管理平面至关重要。如果安全事件能够破坏管理平面的功能,则可能无法恢复或稳定网络。
本文档的这些部分详细说明了 Cisco IOS 软件中提供的有助于强化管理平面的安全功能和配置。
管理平面用于访问、配置和管理设备,以及监控其运行和部署设备的网络。管理平面接收和发送用于这些功能操作的流量。保护设备的管理平面和控制平面,因为控制平面操作直接影响管理平面的操作。管理平面使用的协议包括:
发生安全事件时,必须采取相应的步骤确保管理和控制层面可以继续运行。如果其中任何一个平面被成功利用,所有平面都可能被攻陷。
口令控制对资源或设备的访问。这可通过用于验证请求的密码来完成。当收到访问资源或设备的请求时,会质询该请求以验证密码和身份,然后根据结果授予、拒绝或限制访问。作为一项安全最佳实践,口令必须使用 TACACS+ 或 RADIUS 身份验证服务器进行管理。但是,如果TACACS+或RADIUS服务发生故障,则仍需要本地配置的特权访问密码。设备的配置中也可能存在其他口令信息,如 NTP 密钥、SNMP 社区字符串或路由协议密钥。
enable secret
命令用于设置授予对Cisco IOS系统的特权管理访问权限的口令。必须使用enable secret
命令,而不是更旧的enable password
命令。此 enable password
命令使用弱加密算法。
如果未设置enable secret
且为控制台tty线路配置了口令,则可以使用控制台口令接收特权访问,甚至从远程虚拟tty (vty)会话也是如此。此操作几乎肯定是不必要的,这也是另一个确保配置 enable secret 的原因。
service password-encryption
全局配置命令指示Cisco IOS软件对口令、质询握手身份验证协议(CHAP)加密口令和保存在其配置文件中的类似数据进行加密。这种加密有助于防止偶然观察者看到密码,例如当他们看到管理员的肩膀后屏幕时。但是,service password-encryption
命令使用的算法是简单的Vigenre加密。此算法甚至无法阻止稍微有些老练的攻击者对配置文件进行深入的分析,因此不能用于上述目的。任何包含加密口令的 Cisco IOS 配置文件,都必须和这些口令的明文列表一样受到严密的保护。
虽然enable secret
命令并不使用这一加密强度较低的加密算法,但enable password
全局配置命令以及password
线路配置命令均使用该加密算法。必须去除这种类型的口令,并需要使用enable secret
命令或增强的口令安全功能。
enable secret
命令和“增强的口令安全”功能将消息摘要5 (MD5)用于口令散列。此算法曾受到相当多的公开检验,并被认为是不可逆的。但是,此算法容易受到字典攻击。在字典攻击中,攻击者会尝试字典或其他候选密码列表中的每个单词以查找匹配项。因此,必须安全地存储配置文件,并仅与受信任的个人共享该文件。
在Cisco IOS软件版本12.2(8)T中引入的“增强的口令安全”功能允许管理员为username
命令配置MD5口令散列。在此功能之前,有两种类型的密码:类型0(明文密码)和类型7(使用Vigenre密码的算法)。“增强的口令安全”功能不能与要求明文口令可检索的协议(如 CHAP)一起使用。
要使用MD5散列功能加密用户口令,请发出
全局配置命令。username secret
!
username <name> secret <password>
!
思科 IOS 软件版本 12.3(14)T 中添加了登录密码重试锁定功能,允许您在本地用户帐户尝试登录失败次数达到配置的次数后将其锁定。一旦用户被锁定,在您将其帐户取消锁定之前,其帐户将保持锁定状态。不能使用此功能锁定配置权限级别为15的授权用户。将权限级别为15的用户数保持为最小。
请注意,如果达到该失败登录尝试次数,即使授权用户也可能会将自己锁定在设备之外。此外,恶意用户也可能会使用有效用户名重复进行身份验证尝试,从而创造出拒绝服务 (DoS) 条件。
本示例说明如何启用“登录口令重试锁定”功能:
!
aaa new-model
aaa local authentication attempts max-fail <max-attempts>
aaa authentication login default local
!
username <name> secret <password>
!
此功能也适用于身份验证方法,例如CHAP和密码身份验证协议(PAP)。
在 Cisco IOS 软件版本 12.3(14)T 及更高版本中,“禁用口令恢复”功能禁止任何具有控制台访问权限的用户以不安全的方式访问设备配置和清除口令。此功能还可用于阻止恶意用户更改配置注册值和访问 NVRAM。
!
no service password-recovery
!
Cisco IOS软件提供依赖于访问ROM监控模式(ROMMON)的口令恢复过程,ROM监控模式在系统启动期间使用Break键。在ROMMON中,可以重新加载设备软件,以提示包含新密码的新系统配置。
当前的口令恢复过程允许任何具有控制台访问权限的用户访问设备及其网络。在系统启动期间,“无密码恢复”功能可防止 Break 键序列完成和进入 ROMMON 模式。
如果在设备上启用no service password-recovery
,则建议保存设备配置的脱机副本,并实施配置存档解决方案。启用此功能后,如果需要恢复 Cisco IOS 设备的口令,整个配置将被删除。
有关此功能的更多信息,请参阅安全 ROMMON 配置示例。
作为安全最佳做法,请禁用任何不必要的服务。不需要的服务,尤其是使用用户数据报协议(UDP)的服务,很少用于合法目的,但可用于发起DoS和其他通过数据包过滤防止的攻击。
禁用TCP和UDP小型服务。这些服务包括:
尽管反欺骗访问列表可以避免或降低滥用小型服务的危险,但在网络中可以访问的任何设备上禁用这些服务。默认情况下,小型服务在Cisco IOS软件版本12.0及更高版本中禁用。在更低版本的软件中,可以发出no service tcp-small-servers
和no service udp-small-servers
全局配置命令来禁用它们。
如果不使用,则必须禁用的其他服务包括:
no ip finger
全局配置命令以禁用Finger服务。默认情况下,高于12.1(5)和12.1(5)T的Cisco IOS软件版本禁用此服务。
no ip bootp server
全局配置命令以禁用Bootstrap协议(BOOTP)。要设置间隔,EXEC命令解释程序在终止会话之前将等待用户输入,请发出exec-timeout 行配置命令。使用exec-timeout命令注销vty或tty线路上处于空闲状态的会话。默认情况下,会话会在处于非活动状态 10 分钟后断开。
!
line con 0
exec-timeout <minutes> [seconds]
line vty 0 4
exec-timeout <minutes> [seconds]
!
service tcp-keepalives-in 和service tcp-keepalives-out 全局配置命令允许设备发送 TCP keepalive 以进行 TCP 会话。使用此配置可在设备的入站连接和设备的出站连接上启用TCP keepalive。这样可以确保连接远程端的设备仍然可访问,并且从本地Cisco IOS设备中删除半开连接或孤立连接。
!
service tcp-keepalives-in
service tcp-keepalives-out
!
设备的管理平面可以通过物理或逻辑管理接口以带内或带外方式访问。理想情况下,每个网络设备都有带内和带外管理访问,因此可以在网络中断期间访问管理平面。
用于带内访问设备的最常见接口之一是逻辑环回接口。环回接口始终处于接通状态,而物理接口可以更改状态,并且该接口可能无法进行访问。建议向每台设备添加一个环回接口作为管理接口,并专用于管理平面。这使得管理员可以在整个网络中应用管理平面策略。一旦在设备上配置了环回接口,管理平面协议(如SSH、SNMP和系统日志)就可以使用环回接口来发送和接收流量。
!
interface Loopback0
ip address 192.168.1.1 255.255.255.0
!
通过Cisco IOS软件版本12.3(4)T中添加的内存阈值通知功能,可以缓解设备上的内存不足情况。此功能使用两种方法来实现此目的:内存阈值通知和内存预留。
“内存阈值通知”会生成一条日志消息,指示设备上的可用内存已降至低于配置的阈值。本配置示例说明如何使用 memory free low-watermark 全局配置命令启用此功能。这使设备能够在可用内存量降低至低于指定的阈值时生成通知,并在可用内存量上升到高于指定的阈值 5% 时再次生成通知。
!
memory free low-watermark processor <threshold>
memory free low-watermark io <threshold>
!
使用内存预留,以便有足够的内存可用于关键通知。此配置示例说明如何启用此功能,以确保在设备内存耗尽时管理进程继续运行。
!
memory reserve critical <value> !
有关此功能的详细信息,请参阅内存阈值通知。
在Cisco IOS软件版本12.3(4)T中引入的CPU阈值通知功能允许您在设备上的CPU负载超过配置的阈值时检测并接收通知。负载超过阈值时,设备会生成并发送 SNMP 陷阱消息。Cisco IOS软件支持两种CPU使用阈值方法:上升阈值和下降阈值。
此示例配置显示如何启用上升阈值和下降阈值以触发CPU阈值通知消息:
!
snmp-server enable traps cpu threshold
!
snmp-server host <host-address> <community-string> cpu
!
process cpu threshold type <type> rising <percentage> interval <seconds>
[falling <percentage> interval <seconds>]
process cpu statistics limit entry-percentage <number> [size <seconds>]
!
有关此功能的详细信息,请参阅 CPU 阈值通知。
在Cisco IOS软件版本12.4(15)T及更高版本中,“保留内存以用于控制台访问”功能可用于保留足够的内存,以确保对Cisco IOS设备的控制台访问,以进行管理和故障隔离。当设备内存不足时,此功能尤其有用。您可以发出memory reserve console 全局配置命令启用此功能。本示例将 Cisco IOS 设备配置为保留 4096 千字节的内存以用于此目的。
!
memory reserve console 4096
!
使用 Cisco IOS 软件版本 12.3(8)T1 中引入的“内存泄漏探测器”功能可以检测到设备上的内存泄漏。内存泄漏检测器可以发现所有内存池、数据包缓冲区和块中的泄漏。内存泄漏是不能为任何有用用途提供服务的静态或动态内存分配。此功能主要用于检测动态内存分配。您可以使用show memory debug leaks EXEC命令检测到是否存在内存泄漏。
在Cisco IOS软件版本12.3(7)T及更高版本中,可以在设备上启用“缓冲区溢出:检测并修复Redzone损坏”功能,以检测并更正内存块溢出并继续操作。
全局配置命令可用于启用此功能。配置show memory overflow 命令后,可以使用该命令显示缓冲区溢出检测和修复统计信息。
!
exception memory ignore overflow io
exception memory ignore overflow processor
!
“改进的 Crashinfo 文件收集”功能能够自动删除旧的 crashinfo 文件。当设备崩溃时,该功能(Cisco IOS 软件版本 12.3(11)T 中已添加)允许设备回收空间以创建新的 crashinfo 文件。此功能还允许配置要保存的crashinfo文件的数量。
!
exception crashinfo maximum files <number-of-files>
!
网络时间协议(NTP)不是一项危险的服务,但任何不需要的服务都可能代表攻击媒介。如果使用 NTP,则必须明确配置受信任的时间源并使用适当的验证。系统日志需要准确可靠的时间,例如在对潜在攻击进行取证调查期间,以及在依赖证书进行第1阶段身份验证时成功建立VPN连接。
以下是使用NTP身份验证的配置示例:
客户端:
(config)#ntp authenticate
(config)#ntp authentication-key 5 md5 ciscotime
(config)#ntp trusted-key 5
(config)#ntp server 172.16.1.5 key 5
服务器:
(config)#ntp authenticate
(config)#ntp authentication-key 5 md5 ciscotime
(config)#ntp trusted-key 5
思科智能安装(SMI)功能的安全最佳实践取决于该功能在特定用户环境中的使用方式。思科在以下使用案例中脱颖而出:
以下各节详细介绍每种场景:
注意:vstack命令是在Cisco IOS版本12.2(55)SE03中引入的。
以下是在禁用SMI客户端功能的Cisco Catalyst交换机上show vstack命令的输出示例:
switch# show vstack
config Role: Client (SmartInstall disabled)
Vstack Director IP address: 0.0.0.0
完成零接触安装后,禁用SMI客户端功能或使用no vstack命令。
要将no vstack命令传播到网络中,请使用以下方法之一:
要稍后启用SMI客户端功能,请手动或借助脚本在所有客户端交换机上输入vstack命令。
在SMI架构的设计中,请注意使不可信方无法访问基础设施IP地址空间。在不支持vstack命令的版本中,确保仅SMI导向器具有与端口4786上的所有SMI客户端的TCP连接。
管理员可以将这些安全最佳实践用于受影响设备上的SMI部署:
本示例显示一个接口ACL,其SMI指挥交换机IP地址为10.10.10.1,SMI客户端IP地址为10.10.10.200:
ip access-list extended SMI_HARDENING_LIST
Permit tcp host 10.10.10.1 host 10.10.10.200 eq 4786
deny tcp any any eq 4786
permit ip any any
此ACL必须部署到所有客户端的所有IP接口上。它也可以在首次部署交换机时由指挥交换机推送。
为进一步限制对基础设施中所有客户端的访问,管理员可在网络上的其他设备上使用以下最佳安全实践:
iACL旨在防止未经授权直接与网络设备通信,是网络中实施的最关键的安全控制之一。iACL利用几乎所有网络流量都流经网络,而不是发往网络本身的概念。
因此,可以构建并应用 iACL 来指定来自主机或网络的、需要被允许访问网络设备的连接。这些连接类型的常见示例包括eBGP、SSH和SNMP。所需的连接被允许之后,所有其他发送到基础架构的数据流都被明确拒绝。然后,会明确允许所有经过该网络并且不以基础架构设备为目标的中转数据流。
iACL 提供的保护与管理平面和控制层面密切相关。通过对网络基础设施设备使用不同的地址,可以使iACL的实施更容易。有关IP地址安全含义的详细信息,请参阅面向安全的IP编址方法。
本示例iACL配置说明了在开始iACL实施过程时必须用作起点的结构:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!--- Permit required connections for routing protocols and
!--- network management
!
permit tcp host <trusted-ebgp-peer> host <local-ebgp-address> eq 179
permit tcp host <trusted-ebgp-peer> eq 179 host <local-ebgp-address>
permit tcp host <trusted-management-stations> any eq 22
permit udp host <trusted-netmgmt-servers> any eq 161
!
!--- Deny all other IP traffic to any network device
!
deny ip any <infrastructure-address-space> <mask>
!
!--- Permit transit traffic
!
permit ip any any
!
一旦创建,该 iACL 必须应用于所有面向非基础架构设备的接口。这包括与其他组织、远程访问段、用户段和数据中心中的段连接的接口。
有关基础设施 ACL 的详细信息,请参阅“保护您的核心:基础设施保护访问控制列表”。
Internet 控制消息协议 (ICMP) 设计为一种 IP 控制协议。因此,一般而言,它传达的消息可能会与TCP和IP协议产生很大的交互。虽然使用ping和traceroute网络工具可以对ICMP进行故障排除,但正常的网络运行很少需要外部ICMP连接。
Cisco IOS 软件提供按名称或类型和代码专门过滤 ICMP 消息的功能。本示例 ACL 必须与前几个示例中的访问控制条目 (ACE) 一起使用,允许来自受信任管理工作站和 NMS 服务器的 ping,并阻止所有其他 ICMP 数据包:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!--- Permit ICMP Echo (ping) from trusted management stations and servers
!
permit icmp host <trusted-management-stations> any echo
permit icmp host <trusted-netmgmt-servers> any echo
!
!--- Deny all other IP traffic to any network device
!
deny ip any <infrastructure-address-space> <mask>
!
!--- Permit transit traffic
!
permit ip any any
!
分段IP数据包的过滤过程可能是安全设备的一个难题。这是因为用于过滤TCP和UDP数据包的第4层信息仅存在于初始分段中。Cisco IOS 软件使用特定方法,根据配置的访问列表来检查非初始分段。Cisco IOS软件根据ACL评估这些非初始分段并忽略所有第4层过滤信息。这会导致只在任何已配置ACE的第3层部分上评估非初始分段。
在此示例配置中,如果在传输中对端口22上指向192.168.1.1的TCP数据包进行分段,则根据数据包中的第4层信息,第二个ACE将丢弃初始分段。但是,完全基于数据包和ACE中的第3层信息,第一个ACE允许剩余的所有(非初始)分段。此方案显示在以下配置中:
!
ip access-list extended ACL-FRAGMENT-EXAMPLE
permit tcp any host 192.168.1.1 eq 80
deny tcp any host 192.168.1.1 eq 22
!
由于分段处理的非直观性质,ACL 常常会在无意中允许 IP 分段。分段经常用于尝试逃避入侵检测系统的检测。出于这些原因,IP分段经常用于攻击,以及为什么必须在任何已配置的iACL的顶部显式过滤它们。本示例ACL包括对IP分段的全面过滤。本示例中的功能必须与前面示例中的功能配合使用。
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!--- Deny IP fragments using protocol-specific ACEs to aid in
!--- classification of attack traffic
!
deny tcp any any fragments
deny udp any any fragments
deny icmp any any fragments
deny ip any any fragments
!
!--- Deny all other IP traffic to any network device
!
deny ip any <infrastructure-address-space> <mask>
!
!--- Permit transit traffic
!
permit ip any any
!
有关 ACL 如何处理分段 IP 数据包的更多信息,请参阅访问控制列表和 IP 分段。
Cisco IOS软件版本12.3(4)T增加了使用ACL根据数据包中包含的IP选项过滤IP数据包的支持。由于 IP 选项必须作为异常数据包进行处理,因此,这些选项对网络设备提出了一个安全方面的难题。这需要CPU工作级别,而通过网络的典型数据包不需要这种级别。数据包中存在IP选项也表示有人试图破坏网络的安全控制或者更改数据包的中转特征。因此,必须在网络边缘过滤具有IP选项的数据包。
本示例必须与前面示例中的ACE一起使用,以完全过滤包含IP选项的IP数据包:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!--- Deny IP packets containing IP options
!
deny ip any any option any-options
!
!--- Deny all other IP traffic to any network device
!
deny ip any <infrastructure-address-space> <mask>
!
!--- Permit transit traffic
!
permit ip any any
!
Cisco IOS软件版本12.4(2)T增加了基于生存时间(TTL)值的ACL支持IP数据包过滤器。当数据包由源流向目标时,IP 数据报的 TTL 值将按每台网络设备递减。虽然初始值因操作系统而异,但当数据包的TTL达到零时,必须丢弃该数据包。将 TTL 递减到零并因此丢弃数据包的设备需要生成一条“ICMP 超时”消息,并将该消息发送到数据包的源。
生成和传输这些消息属于异常处理。当到期的IP数据包数量较少时,路由器可以执行此功能,但如果到期的数据包数量较高,则生成和传输这些消息可能会占用所有可用的CPU资源。这提供了一个 DoS 攻击矢量。因此,需要对设备进行强化,使其免受使用高速率IP数据包(即将到期)的DoS攻击。
建议组织在网络边界使用较小的 TTL 值过滤 IP 数据包。完全过滤TTL值不足以穿越网络的数据包可以缓解基于TTL的攻击威胁。
本示例 ACL 使用小于 6 的 TTL 值过滤数据包。这样做可以在宽度最多为 5 跳的网络上防范 TTL 到期攻击。
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!--- Deny IP packets with TTL values insufficient to traverse the network
!
deny ip any any ttl lt 6
!
!--- Deny all other IP traffic to any network device
!
deny ip any <infrastructure-address-space> <mask>
!
!--- Permit transit traffic
!
permit ip any any
!
注意:某些协议会合法使用 TTL 值较低的数据包。eBGP 就属于此类协议。有关减少基于TTL到期的攻击的详细信息,请参阅识别和防范TTL到期攻击。
通过设备管理会话,可以查看和收集有关设备及其运行的信息。如果将此信息泄露给恶意用户,设备可能会成为攻击目标、被入侵并用于执行其他攻击。任何具有对设备的特权访问权限的用户都有能力对该设备进行完全的管理控制。必须保护管理会话的安全,以防止信息泄露和未经授权的访问。
在Cisco IOS软件版本12.4(6)T及更高版本中,管理平面保护(MPP)功能允许管理员对设备收到的不同接口管理流量施加限制。这向管理员提供了对设备以及访问设备的方式的更多控制。
本示例说明如何启用 MPP 以仅在 GigabitEthernet0/1 接口上允许 SSH 和 HTTPS:
!
control-plane host
management-interface GigabitEthernet 0/1 allow ssh https
!
有关 MPP 的详细信息,请参阅管理平面保护。
注意:MPP不支持IPv6,并且仅限于IPv4输入路径。由于IPv6未被过滤,因此在IPv4/IPv6混合环境中使用CoPP。
控制平面保护(CPPr)建立在控制平面策略功能的基础上,用于限制和管制发往Cisco IOS设备的路由处理器的控制平面流量。在Cisco IOS软件版本12.4(4)T中添加时,CPPr将控制平面划分为单独的控制平面类别,称为子接口。存在三个控制平面子接口:主机、传输和CEF异常。此外,CPPr还包括以下控制平面保护功能:
CPPr允许管理员使用主机子接口分类、管制和限制发送到设备用于管理的流量。主机子接口分类的数据包示例包括管理流量(例如SSH或Telnet)和路由协议。
注意:CPPr 不支持 IPv6,仅限 IPv4 输入路径。
有关 Cisco CPPr 功能的详细信息,请参阅控制层面保护功能指南 - 12.4T 和了解控制层面保护。
由于信息可以在交互式管理会话中公开,因此必须加密此流量,使恶意用户无法访问传输的数据。流量加密可确保与设备建立安全的远程访问连接。如果管理会话数据流是通过网络以明文形式发送的,则攻击者就可能获取有关设备和网络的敏感信息。
管理员可以使用 SSH 或 HTTPS(安全超文本传输协议)功能与设备建立加密的安全远程访问管理连接。思科 IOS 软件支持 SSH 版本 1.0 (SSHv1)、SSH 版本 2.0 (SSHv2) 和 HTTPS,其中 HTTPS 使用安全套接字层 (SSL) 和传输层安全 (TLS) 进行身份验证和数据加密。SSHv1 和 SSHv2 不兼容。SSHv1不安全,也不标准化,因此如果可以选择SSHv2,则不建议使用SSHv1。
Cisco IOS软件还支持安全复制协议(SCP),该协议允许使用加密的安全连接来复制设备配置或软件映像。SCP 依赖于 SSH。本示例配置在 Cisco IOS 设备上启用 SSH:
!
ip domain-name example.com
!
crypto key generate rsa modulus 2048
!
ip ssh time-out 60
ip ssh authentication-retries 3
ip ssh source-interface GigabitEthernet 0/1
!
line vty 0 4
transport input ssh
!
本配置示例启用 SCP 服务:
!
ip scp server enable
!
此配置示例适用于HTTPS服务:
!
crypto key generate rsa modulus 2048
!
ip http secure-server
!
有关 Cisco IOS 软件 SSH 功能的详细信息,请参阅在运行 Cisco IOS 的路由器和交换机上配置Secure Shell和Secure Shell (SSH) 常见问题。
Cisco IOS软件版本12.3(4)T中引入的SSHv2支持功能允许用户配置SSHv2。(SSHv1支持在Cisco IOS软件的早期版本中实施。) SSH 在可靠的传输层之上运行,并提供强大的身份验证和加密功能。为SSH定义的唯一可靠传输是TCP。SSH提供了一种通过网络在其它计算机或设备上安全访问并安全执行命令的方法。通过SSH隧道传输的安全复制协议(SCP)功能允许安全传输文件。
如果未明确配置ip ssh version 2命令,则Cisco IOS会启用SSH版本1.99。SSH 版本 1.99 同时支持 SSHv1 和 SSHv2 连接。SSHv1被认为是不安全的,可能对系统产生不利影响。如果已启用SSH,则建议使用ip ssh version 2命令禁用SSHv1。
本示例配置在思科 IOS 设备上启用了 SSHv2(且禁用了 SSHv1):
!
hostname router
!
ip domain-name example.com
!
crypto key generate rsa modulus 2048
!
ip ssh time-out 60
ip ssh authentication-retries 3
ip ssh source-interface GigabitEthernet 0/1
!
ip ssh version 2
!
line vty 0 4
transport input ssh
!
有关使用 SSHv2 的更多信息,请参阅 安全外壳版本 2 支持。
思科 IOS SSHv2 支持键盘交互式和基于密码的身份验证方法。适用于 RSA 密钥的 SSHv2 增强功能还支持针对客户端和服务器执行基于 RSA 的公钥身份验证。
对于用户验证,基于 RSA 的用户验证使用与每个用户关联的私钥/公钥对进行身份验证。用户必须在客户端上生成私钥/公钥对,并在Cisco IOS SSH服务器上配置公钥以完成身份验证。
由尝试建立凭证的 SSH 用户使用私钥提供加密的签名。加密的签名和用户公钥将发送到SSH服务器进行身份验证。SSH 服务器基于该用户提供的公钥计算散列值。散列值用于确定服务器是否有匹配的条目。如果找到匹配项,将使用公钥执行基于 RSA 的消息验证。因此,根据加密的签名验证用户或拒绝访问。
对于服务器验证,思科 IOS SSH 客户端必须为每个服务器分配一个主机密钥。当客户端尝试与服务器建立 SSH 会话时,它将作为密钥交换消息的一部分收到服务器的签名。如果在客户端上启用了严格主机密钥检查标志,则客户端将检查其是否具有与预先配置的服务器对应的主机密钥条目。如果找到匹配项,客户端将尝试使用服务器主机密钥验证签名。如果服务器身份验证成功,则继续建立会话;否则终止会话并显示服务器身份验证失败消息。
本示例配置在思科 IOS 设备上启用了 RSA 密钥及 SSHv2:
!
! Configure a hostname for the device
!
hostname router
!
! Configure a domain name
!
ip domain-name cisco.com
!
! Specify the name of the RSA key pair (in this case, "sshkeys") to use for SSH
!
ip ssh rsa keypair-name sshkeys
!
! Enable the SSH server for local and remote authentication on the router using
! the "crypto key generate" command
! For SSH version 2, the modulus size must be at least 768 bits
!
crypto key generate rsa usage-keys label sshkeys modulus 2048
!
! Configure an ssh timeout (in seconds)
!
! The following enables a timeout of 120 seconds for SSH connections
!
ip ssh time-out 120
!
! Configure a limit of five (5) authentication retries
!
ip ssh authentication-retries 5
!
! Configure SSH version 2
!
ip ssh version 2
!
有关使用 RSA 密钥及 SSHv2 的更多信息,请参阅适用于 RSA 密钥的安全外壳版本 2 增强功能。
本示例配置支持思科 IOS SSH 服务器执行基于 RSA 的用户验证。如果使用客户端上存储的公钥或私钥对验证服务器上存储的 RSA 公钥,则用户验证将成功。
!
! Configure a hostname for the device
!
hostname router
!
! Configure a domain name
!
ip domain-name cisco.com
!
! Generate RSA key pairs using a modulus of 2048 bits
!
crypto key generate rsa modulus 2048
!
! Configure SSH-RSA keys for user and server authentication on the SSH server
!
ip ssh pubkey-chain
!
! Configure the SSH username
!
username ssh-user
!
! Specify the RSA public key of the remote peer
!
! You must then configure either the key-string command
! (followed by the RSA public key of the remote peer) or the
! key-hash command (followed by the SSH key type and version.)
!
有关使用 RSA 密钥及 SSHv2 的更多信息,请参阅配置思科 IOS SSH 服务器以执行基于 RSA 的用户验证部分。
此配置示例支持思科 IOS SSH 客户端执行基于 RSA 的服务器验证。
!
!
hostname router
!
ip domain-name cisco.c
!
! Generate RSA key pairs
!
crypto key generate rsa
!
! Configure SSH-RSA keys for user and server authentication on the SSH server
!
ip ssh pubkey-chain
!
! Enable the SSH server for public-key authentication on the router
!
server SSH-server-name
!
! Specify the RSA public-key of the remote peer
!
! You must then configure either the key-string command
! (followed by the RSA public key of the remote peer) or the
! key-hash <key-type> <key-name> command (followed by the SSH key
! type and version.)
!
! Ensure that server authentication takes place - The connection will be
! terminated on a failure
!
ip ssh stricthostkeycheck
!
有关使用 RSA 密钥及 SSHv2 的更多信息,请参阅配置思科 IOS SSH 客户端以执行基于 RSA 的服务器验证部分。
在 Cisco IOS 设备中,控制台和辅助 (AUX) 端口是可用于对本地和远程设备进行访问的异步线路。请注意,Cisco IOS设备上的控制台端口具有特殊权限。特别是这些权限允许管理员执行口令恢复过程。要执行密码恢复,未经身份验证的攻击者需要访问控制台端口并中断设备电源或导致设备崩溃。
任何用于访问设备控制台端口的方法都必须以与为设备的特权访问而实施的安全性同等的方式加以保护。用于保护访问的方法必须包括使用AAA、exec-timeout和调制解调器密码(如果调制解调器连接到控制台)。
如果不需要口令恢复,则管理员可以通过no service password-recovery 全局配置命令取消执行口令恢复过程的能力;但是,一旦启用no service password-recovery 命令,管理员将无法对设备执行口令恢复。
在大多数情况下,必须禁用设备AUX端口以防止未经授权的访问。通过以下命令可禁用 Aux 端口:
!
line aux 0
transport input none
transport output none
no exec
exec-timeout 0 1
no password
!
Cisco IOS 软件中的交互式管理会话使用 tty 或虚拟 tty (vty)。tty 是本地异步线路,终端可以连接到该线路以对设备进行本地访问,或者连接到调制解调器以对设备进行拨号访问。请注意,tty 可用于连接到其他设备的控制台端口。此功能允许将具有 tty 线路的设备用作控制台服务器,在该服务器上可以建立通过网络到已连接到 tty 线路的设备的控制台端口的连接。还必须对用于网络上这些反向连接的 tty 线路进行控制。
vty 线路用于设备所支持的所有其他远程网络连接,而不管协议(如 SSH、SCP 或 Telnet)如何。为确保本地或远程管理会话可以访问设备,必须在vty和tty线路上实施适当的控制。Cisco IOS设备具有数量有限的vty线路;可用的线路数量可通过show line EXEC命令确定。当所有vty线路都使用时,无法建立新管理会话,这会为访问设备创建DoS条件。
对设备的vty或tty最简单的访问控制是在所有线路上使用身份验证,而不考虑设备在网络上的位置。这对于vty线路至关重要,因为网络可以访问这些线路。连接到用于远程访问设备的调制解调器的tty线路,或者连接到其他设备控制台端口的tty线路,也可以由网络访问。使用 transport input 或 access-class 配置命令、CoPP 和 CPPr 功能或在设备上对接口应用访问列表,也可以执行其他形式的 vty 和 tty 访问控制。
通过将 AAA(对于验证的设备访问,建议使用此方法)与本地用户数据库搭配使用或使用在 vty 或 tty 线路上直接配置的简单密码身份验证,可执行身份验证。
必须使用exec-timeout命令注销vty或tty线路上处于空闲状态的会话。还必须使用service tcp-keepalives-in 命令对设备的传入连接启用TCP keepalive。这样可以确保连接远程端的设备仍然可访问,并从本地Cisco IOS设备中删除半开连接或孤立连接。
将vty和tty配置为仅接受到设备或通过设备(如果用作控制台服务器)的加密安全远程访问管理连接。本部分讨论 tty,因为此类线路可以连接到其他设备上的控制台端口,这使得 tty 可以通过网络进行访问。要防止信息泄露或禁止对在管理员与设备之间传输的数据进行未授权的访问,请使用transport input ssh,而不使用Telnet和rlogin等明文协议。在tty上可启用transport input none配置,该配置禁止将tty线路用于反向控制台连接。
vty 和 tty 线路都允许管理员连接到其他设备。要限制管理员能够用于传出连接的传输类型,请使用transport output line 配置命令。如果不需要传出连接,请使用transport output none。但是,如果允许传出连接,则使用transport output ssh 对连接执行加密的安全远程访问方法。
注意:IPSec 可用于与设备进行加密安全远程访问连接(如果支持)。如果使用 IPSec,这也会给设备添加额外的 CPU 开销。但是,即使使用IPSec,也必须将SSH作为传输来实施。
在一些法律管辖区,除非恶意用户得到通知,表示无权使用该系统,否则不可能对其进行起诉或对其实施非法监控。提供此通知的一种方法是在使用Cisco IOS软件banner login命令配置的标语消息中放入此信息。
法律通知的要求很复杂,因管辖区和情况而异,并且需要与法律顾问进行讨论。即使在管辖区内,法律观点也可能有所不同。通过与律师合作,标语可以提供以下部分或全部信息:
从安全而非法律角度来看,登录标语不得包含有关路由器名称、型号、软件或所有权的任何特定信息。此信息可能会被恶意用户滥用。
身份验证、授权和记帐(AAA)框架对于保护对网络设备的交互式访问至关重要。AAA框架提供可根据网络需求定制的高度可配置环境。
TACACS+是Cisco IOS设备可用来根据远程AAA服务器对管理用户进行身份验证的身份验证协议。这些管理用户可以通过SSH、HTTPS、telnet或HTTP访问Cisco IOS设备。
TACACS+ 身份验证(更常被称为 AAA 验证)使每个网络管理员能够使用单个用户帐户。如果您不依赖于单个共享密码,则可提高网络安全性并强化您的责任。
RADIUS 是一种用途与 TACACS+ 类似的协议,但它仅对通过网络发送的密码进行加密。相反,TACACS+ 可对整个 TCP 有效负载加密,包括用户名和密码。因此,当AAA服务器支持TACACS+时,请使用TACACS+而不是RADIUS。有关比较这两种协议的详细信息,请参阅比较 TACACS+ 和 RADIUS。
在配置与以下示例类似的思科 IOS 设备上,可启用 TACACS+ 身份验证:
!
aaa new-model
aaa authentication login default group tacacs+
!
tacacs-server host <ip-address-of-tacacs-server>
tacacs-server key <key>
!
以上配置可用作特定于组织的AAA身份验证模板的起点。
方法列表是描述要查询以验证用户的身份验证方法的顺序列表。方法列表使您可以指定一个或多个用于身份验证的安全协议,从而在初始方法失败时确保备用系统用于身份验证。思科 IOS 软件使用列出的第一种方法成功接受或拒绝用户。只有在早期方法由于服务器不可用或配置不正确而失败时,才尝试后续方法。
如果所有已配置的 TACACS+ 服务器都不可用,则 Cisco IOS 设备可以依靠辅助验证协议。如果所有已配置的 TACACS+ 服务器都不可用,典型的配置包括使用 local 或 enable 验证。
设备上的全部验证选项包括 enable、local 和 line。每个选项都有其优势。首选使用enable secret
命令,因为使用单向算法可以对密钥进行散列加密,它在本质上比用于线路或本地身份验证的第7类口令的加密算法更安全。
但是,在支持对本地定义的用户使用加密口令的 Cisco IOS 软件版本上,可能有必要回退到 local 验证。这允许为一个或多个网络管理员创建本地定义的用户。如果TACACS+完全不可用,则每个管理员可以使用其本地用户名和密码。虽然在 TACACS+ 出现故障时,此操作不会加大网络管理员的责任,但会大大增加管理负担,因为必须维护所有网络设备中的本地用户帐户。
本配置示例建立在前一个TACACS+验证示例的基础之上,包括将验证回退到使用enable secret
命令在本地配置的口令:
!
enable secret <password>
!
aaa new-model
aaa authentication login default group tacacs+ enable
!
tacacs-server host <ip-address-of-tacacs-server>
tacacs-server key <key>
!
最初旨在允许对存储的口令进行快速解密的类型 7 口令并不是一种安全的口令存储形式。有许多工具可用于轻松解密这些密码。避免使用类型7口令,除非Cisco IOS设备上使用的功能需要。
尽可能使用类型9 (加密):
username <username> privilege 15 algorithm-type scrypt secret <secret>
废除此类型的口令可以通过使用AAA验证和使用增强的口令安全功能来执行,后者允许对通过username
全局配置命令在本地定义的用户使用加密口令。如果不能完全避免使用类型 7 口令,可以将这些口令视为已随机化,而不是已加密。
有关删除类型7密码的更多信息,请参阅一般管理平面强化部分。
TACACS+ 和 AAA 命令授权提供了允许或拒绝管理用户输入的每条命令的机制。当用户输入 EXEC 命令时,Cisco IOS 会将每条命令发送到已配置的 AAA 服务器。AAA服务器使用其配置的策略允许或拒绝该特定用户的命令。
此配置可以添加到之前的AAA身份验证示例中以实现命令授权:
!
aaa authorization exec default group tacacs none
aaa authorization commands 0 default group tacacs none
aaa authorization commands 1 default group tacacs none
aaa authorization commands 15 default group tacacs none
!
配置后,AAA命令记帐会将输入的每个EXEC命令的相关信息发送到已配置的TACACS+服务器。发送到TACACS+服务器的信息包括执行的命令、执行日期以及输入命令的人员的用户名。不支持使用 RADIUS 进行命令记帐。
本示例配置对在权限级别 0、1 和 15 输入的 EXEC 命令启用 AAA 命令记账。此配置建立在包括TACACS服务器配置的先前示例的基础之上。
!
aaa accounting exec default start-stop group tacacs
aaa accounting commands 0 default start-stop group tacacs
aaa accounting commands 1 default start-stop group tacacs
aaa accounting commands 15 default start-stop group tacacs
!
环境中使用的 AAA 服务器支持冗余配置和容错部署。这有助于确保在 AAA 服务器不可用时可以进行交互式管理访问(如 SSH)。
在设计或实施冗余 AAA 服务器解决方案时,请记住以下注意事项:
有关详细信息,请参阅部署访问控制服务器。
本节重点介绍可用于保护Cisco IOS设备中SNMP部署的几种方法。正确保护SNMP的安全对于保护网络数据和传输数据的网络设备的机密性、完整性和可用性至关重要。SNMP提供有关网络设备运行状况的丰富信息。防止恶意用户利用这些数据对网络发起攻击。
团体字符串是应用于Cisco IOS设备的密码,用于限制对设备上SNMP数据的访问,包括只读和读写访问。与所有密码一样,这些社区字符串经过仔细选择,以确保它们并非微不足道。按照网络安全策略定期更改社区字符串。例如,当网络管理员更改角色或离开公司时更改字符串。
以下这些配置行用于配置只读社区字符串 READONLY 和读写社区字符串 READWRITE:
!
snmp-server community READONLY RO
snmp-server community READWRITE RW
!
注意:选择前面的社区字符串示例是为了清楚地说明这些字符串的使用。对于生产环境,请谨慎选择社区字符串,并在字符串中包含一系列字母、数字和非字母数字符号。
有关此功能的详细信息,请参阅Cisco IOS SNMP命令参考。
除社区字符串外,还应应用ACL,进一步限制对一组选定源IP地址的SNMP访问。本配置将 SNMP 只读访问限制为位于 192.168.100.0/24 地址空间中的终端主机设备,并且将 SNMP 读写访问限制为只能访问位于 192.168.100.1 的终端主机设备。
注意:这些ACL允许的设备需要正确的社区字符串才能访问请求的SNMP信息。
!
access-list 98 permit 192.168.100.0 0.0.0.255
access-list 99 permit 192.168.100.1
!
snmp-server community READONLY RO 98
snmp-server community READWRITE RW 99
!
有关此功能的更多信息,请参阅“思科 IOS 网络管理命令参考”中的 snmp-server community 。
可以部署基础设施ACL (iACL),以确保只有具有受信任IP地址的终端主机才能将SNMP流量发送到Cisco IOS设备。理想情况下,iACL包含拒绝UDP端口161上未授权SNMP数据包的策略。
有关使用 iACL 的详细信息,请参阅本文档中的使用基础架构 ACL 限制对网络的访问部分。
SNMP 视图是可用于允许或拒绝对某些 SNMP MIB 的访问的安全功能。创建视图并使用 snmp-server community community-string view 全局配置命令将其应用于社区字符串后,如果您访问 MIB 数据,您将被限制为只能使用该视图定义的权限进行访问。适当时,使用视图将SNMP的用户限制为所需的数据。
本配置示例使用社区字符串 LIMITED 将 MIB 访问限制为位于系统组中的 MIB 数据:
!
snmp-server view VIEW-SYSTEM-ONLY system include
!
snmp-server community LIMITED view VIEW-SYSTEM-ONLY RO
!
有关详细信息,请参阅配置 SNMP 支持。
SNMP 版本 3 (SNMPv3) 由 RFC3410、RFC3411、RFC3412、RFC3413、RFC3414 和 RFC3415 定义,是一种基于标准的可互操作网络管理协议。SNMPv3 提供安全访问设备的权限,因为它可验证网络中的数据包并可选择性地对其加密。在受支持的情况下,部署SNMP时,可以使用SNMPv3添加另一层安全性。SNMPv3 包括三个主要的配置选项:
必须存在授权引擎ID才能使用SNMPv3安全机制(身份验证或身份验证和加密)来处理SNMP数据包;默认情况下,引擎ID在本地生成。可以使用show snmp engineID
命令显示该引擎ID,如本例所示:
router#show snmp engineID
Local SNMP engineID: 80000009030000152BD35496
Remote Engine ID IP-addr Port
注意:如果更改了引擎 ID,则必须重新配置所有 SNMP 用户账户。
下一步是配置 SNMPv3 组。此命令使用 SNMP 服务器组 AUTHGROUP 为 SNMPv3 配置思科 IOS 设备,并仅使用 auth 关键字对此组启用身份验证:
!
snmp-server group AUTHGROUP v3 auth
!
此命令使用 SNMP 服务器组 PRIVGROUP 为 SNMPv3 配置思科 IOS 设备,并使用 priv 关键字对此组启用身份验证和加密;
!
snmp-server group PRIVGROUP v3 priv
!
此命令使用MD5身份验证口令authpassword
和3DES加密口令privpassword
配置SNMPv3用户snmpv3user:
!
snmp-server user snmpv3user PRIVGROUP v3 auth md5 authpassword priv 3des
privpassword
!
注意,snmp-server user
配置命令没有按照RFC 3414的要求显示在设备的配置输出中。因此,无法从配置中查看用户口令。要查看已配置的用户,请输入show snmp user
命令,如本示例所示:
router#show snmp user
User name: snmpv3user
Engine ID: 80000009030000152BD35496
storage-type: nonvolatile active
Authentication Protocol: MD5
Privacy Protocol: 3DES
Group-name: PRIVGROUP
有关此功能的详细信息,请参阅配置 SNMP 支持。
Cisco IOS软件中的管理平面保护(MPP)功能可用于帮助保护SNMP,因为它会限制SNMP流量在设备上终止时可以通过的接口。MPP 功能允许管理员将一个或多个接口指定为管理接口。仅允许管理数据流通过这些管理接口进入设备。启用 MPP 后,除指定的管理接口外,没有任何接口能够接收以设备为目标的网络管理数据流。
MPP是CPPr功能的子集,需要支持CPPr的Cisco IOS版本。有关 CPPr 的详细信息,请参阅了解控制层面保护。
在本例中,MPP用于仅限制对FastEthernet 0/0接口的SNMP和SSH访问:
!
control-plane host
management-interface FastEthernet0/0 allow ssh snmp
!
有关详细信息,请参阅管理平面保护功能指南。
通过事件日志,可以查看Cisco IOS设备操作及其部署所在的网络。Cisco IOS软件提供多种灵活的日志配置选项,可帮助实现组织的网络管理和可视性目标。
这些部分提供了一些基本的日志功能最佳实践,可帮助管理员成功利用日志功能,同时将对思科IOS设备上的日志功能的影响降至最低。
建议您将日志信息发送到远程系统日志服务器。这样,可更加有效地关联和审查网络设备范围的网络和安全事件。请注意,syslog 消息通过 UDP 以明文形式传输,这种传输方式并不可靠。因此,网络为管理流量提供的任何保护(例如加密或带外访问)都可以扩展为包括系统日志流量。
此示例将思科IOS设备配置为向远程系统日志服务器发送日志信息:
!
logging host <ip-address>
!
有关日志关联的详细信息,请参阅使用防火墙和Cisco IOS路由器Syslog事件识别突发事件。
本地非易失性存储(ATA磁盘)的日志记录功能集成在Cisco IOS 12.4(15)T中,最初在12.0(26)S中引入,使系统日志消息可以保存在高级技术附件(ATA)闪存盘中。重新启动路由器后,ATA 驱动中保存的消息仍会存在。
这些配置行将日志消息的134,217,728字节(128 MB)配置到ATA闪存(disk0)的syslog目录中,指定文件大小为16,384字节:
logging buffered
logging persistent url disk0:/syslog size 134217728 filesize 16384
在将日志消息写入ATA磁盘上的文件之前,Cisco IOS软件会检查是否有足够的磁盘空间。否则,将删除最早的日志文件消息(按时间戳),并保存当前文件。文件名格式为log_month:day:year::time
。
注意:ATA闪存驱动器的磁盘空间有限,因此需要对其进行维护,以避免覆盖存储的数据的可能性。
本示例展示了如何在维护过程中将日志消息从路由器ATA闪存盘复制到FTP服务器192.168.1.129上的外部磁盘:
copy disk0:/syslog ftp://myuser/mypass@192.168.1.129/syslog
有关此功能的更多信息,请参阅本地非易失性存储(ATA 磁盘)的日志记录。
Cisco IOS设备生成的每条日志消息都分配有八种严重性之一,范围从0级(紧急)到7级(调试)。除非特别要求,否则建议您避免使用第7级日志。第7级日志会导致设备上的CPU负载增加,从而可能导致设备和网络不稳定。
全局配置命令logging trap
级别用于指定将哪些日志消息发送到远程系统日志服务器。指定的 level 指示所发送消息的最低严重性级别。对于缓冲的日志,使用logging buffered
级别命令。
此配置示例将发送到远程系统日志服务器和本地日志缓冲区的日志消息限制为严重性级别6(信息)到0(紧急):
!
logging trap 6
logging buffered 6
!
有关详细信息,请参阅故障排除、故障管理和日志记录。
使用Cisco IOS软件可以向监视会话(已发出EXEC命令terminal monitor
的交互式管理会话)和控制台发送日志消息。但是,这可能会增加Cisco IOS设备的CPU负载,因此不推荐使用。相反,将日志信息发送到本地日志缓冲区,使用show logging
命令可查看它们。
请使用全局配置命令no logging console
和no logging monitor
禁止记录到控制台和监视会话中。本配置示例说明了这些命令的用法:
!
no logging console
no logging monitor
!
有关全局配置命令的详细信息,请参阅 Cisco IOS 网络管理命令参考。
Cisco IOS软件支持使用本地日志缓冲区,因此管理员可以查看本地生成的日志消息。强烈建议使用缓冲的日志,而不是将日志记录到控制台或监控会话。
配置缓冲的日志时,有两个相关的配置选项:日志缓冲区大小和存储在缓冲区中的消息严重性。logging buffer
的大小使用全局配置命令logging buffered size.
配置。缓冲区中包括的最低严重性使用log buffered severity命令配置。管理员可以通过show logging
执行命令查看日志缓冲区的内容。
此配置示例包括配置16,384字节的日志缓冲区,以及严重性级别为6, Informational,表示存储级别为0 (紧急)至6 (Informational)的消息:
!
logging buffered 16384 6
!
有关缓冲的日志的详细信息,请参阅Cisco IOS网络管理命令参考。
为了在收集和审核日志消息时提供更高级别的一致性,建议您静态配置日志记录源接口。这可以通过interface命令来完成logging source-interface
。静态配置的日志记录源接口可确保从单个Cisco IOS设备发送的所有日志消息中都显示相同的IP地址。为了提高稳定性,请使用环回接口作为日志源。
此配置示例描述了如何使用logging source-interface
接口全局配置命令,指定用于所有日志消息的环回接口0的IP地址:
!
logging source-interface Loopback 0
!
有关详细信息,请参阅 Cisco IOS 命令参考。
配置日志时间戳有助于关联网络设备上的事件。必须实施正确且一致的日志时间戳配置,以确保可以关联日志数据。配置日志时间戳,以毫秒精度包括日期和时间,并包括设备上正在使用的时区。
本示例包括在协调世界时(UTC)区域内以毫秒精度配置日志时间戳:
!
service timestamps log datetime msec show-timezone
!
如果您不希望记录相对于 UTC 的时间,可以配置特定的本地时区,并将该信息配置为显示在生成的日志消息中。本示例说明太平洋标准时间 (PST) 区域的设备配置:
!
clock timezone PST -8
service timestamps log datetime msec localtime show-timezone
!
Cisco IOS软件包括多种功能,可在Cisco IOS设备上启用某种形式的配置管理。这些功能包括将配置存档和回滚到以前版本的功能,以及创建详细的配置更改日志的功能。
在思科 IOS 软件版本 12.3(7)T 和更高版本中,配置替换和配置回滚功能允许您在设备上对思科 IOS 设备配置存档。使用configure replace
命令,手动或自动存储在此档案中的配置可用于替换当前正在运行的配置。这与copy
文件名running-config
命令相反。configure replace
文件名命令替换正在运行的配置,而copy
命令执行合并操作。
建议您在网络上的所有Cisco IOS设备上启用此功能。一旦启用,管理员可使用archive config EXEC
命令将当前运行的配置加入存档中。使用show archive EXEC
命令可以查看存档的配置。
本示例说明自动配置存档的配置。本示例指示Cisco IOS设备将存档的配置作为名为archived-config-N的文件存储在disk0:文件系统上,最多保持14个备份,并在管理员发出write memory EXEC
命令时每天存档一次(1440分钟)。
!
archive
path disk0:archived-config
maximum 14
time-period 1440
write-memory
!
虽然配置存档功能最多可存储14个备份配置,但建议您在使用maximum
命令之前考虑空间要求。
添加到Cisco IOS软件版本12.3(14)T中的独占配置更改访问功能可确保特定时间只有一位管理员对Cisco IOS设备进行配置更改。此功能有助于消除同时更改相关配置组件所造成的负面影响。使用全局配置命令
模式可配置此功能,它可在两种模式中的任一模式下运行:自动或手动。在自动模式下,当管理员发出configuration mode exclusive
configure terminal EXEC
命令时,配置自动锁定。在手动模式下,管理员可在进入配置模式时使用configure terminal lock
命令锁定配置。
本示例说明此功能的自动配置锁定的配置:
!
configuration mode exclusive auto
!
在Cisco IOS软件版本12.3(8)T中添加的弹性配置功能可以安全地存储Cisco IOS设备当前使用的Cisco IOS软件映像和设备配置的副本。启用此功能后,将无法更改或删除这些备份文件。建议您启用此功能以防止在无意中或恶意尝试删除这些文件。
!
secure boot-image
secure boot-config!
启用此功能后,可能能够恢复已删除的配置或 Cisco IOS 软件映像。使用show secure boot EXEC
命令可显示此功能的当前状态。
在用于Cisco 1900、2900和3900系列路由器的Cisco IOS软件版本15.0(1)M中添加了数字签名的思科软件功能,该功能使用安全的不对称(公钥)加密技术,有助于使用数字签名的思科IOS软件,从而使其受到信任。
数字签名的映像可传递其自身的加密(使用私钥)散列值。在检查后,设备使用其密钥存储中的密钥解密关联公钥的散列,并且还计算其自己的映像散列。如果解密的散列值与计算的映像散列值匹配,则映像没有受损,可以信任。
数字签名的思科软件密钥按密钥类型和版本标识。密钥可以是特殊、生产或滚动类型。生产密钥类型和特殊密钥类型具有关联的密钥版本,在撤销和替换密钥时按字母顺序递增。当使用“数字签名的思科软件”功能时,ROMMON 和常规思科 IOS 映像都使用特殊或生产密钥签名。ROMMON 映像可升级,且必须使用与加载的特殊或生产映像相同的密钥签名。
此命令使用设备密钥存储中的密钥验证闪存中映像 c3900-universalk9-mz.SSA 的完整性:
show software authenticity file flash0:c3900-universalk9-mz.SSA
另外,思科 Catalyst 4500 E 系列交换机的思科 IOS XE 版本 3.1.0.SG 中也集成了“数字签名的思科软件”功能。
有关此功能的更多信息,请参阅数字签名的思科软件。
在思科 IOS 软件版本 15.1(1)T 及更高版本中,引入了“数字签名的思科软件”的密钥替换功能。密钥替换和撤销从平台密钥存储中替换和删除用于数字签名的思科软件检查的密钥。在密钥泄露的情况下,只能撤消特殊和生产密钥。
用于(特殊或生产)映像的新(特殊或生产)密钥来自(生产或撤销)映像,该映像用于撤销先前的特殊或生产密钥。使用平台中预存储的滚动密钥可验证撤消映像的完整性。滚动密钥不可更改。当您撤销生产密钥时,在加载吊销映像后,它携带的新密钥将添加到密钥存储中,并且关联的旧密钥可以撤销,只要ROMMON映像已升级且新生产映像已启动。如果撤消特殊密钥,将加载生产映像。此映像将添加新的特殊密钥,并撤消旧的特殊密钥。升级 ROMMON 后,即可启动新的特殊映像。
本示例描述了撤销特殊密钥的操作。这些命令将新的特殊密钥从当前生产映像添加到密钥库,将新的ROMMON映像(C3900_rom-monitor.srec.SSB)复制到存储区域(usbflash0:),升级ROMMON文件,并撤消旧的特殊密钥:
software authenticity key add special
copy tftp://192.168.1.129/C3900_rom-monitor.srec.SSB usbflash0:
upgrade rom-monitor file usbflash0:C3900_PRIV_RM2.srec.SSB
software authenticity key revoke special
然后,可将新的特殊映像 (c3900-universalk9-mz.SSB) 复制到要加载的闪存中,并可使用新添加的特殊密钥 (.SSB) 来验证该映像的签名:
copy /verify tftp://192.168.1.129/c3900-universalk9-mz.SSB flash:
运行思科 IOS XE 软件的 Catalyst 4500 E 系列交换机不支持密钥撤消和替换,但这些交换机支持“数字签名的思科软件”功能。
有关此功能的更多信息,请参阅数字签名的思科软件指南的数字签名的思科软件密钥撤消和替换部分。
使用 Cisco IOS 软件版本 12.3(4)T 中添加的“配置更改通知和日志记录”功能可以记录对 Cisco IOS 设备所做的配置更改。日志保留在Cisco IOS设备上,包含做出更改的个人的用户信息、输入的配置命令以及做出更改的时间。使用logging enable
配置更改记录器配置模式命令可启用此功能。可选的hidekeys
命令和logging size
条目用于改进默认配置,因为它们会防止记录密码数据,并增加更改日志的长度。
建议您启用此功能,以便更轻松地了解Cisco IOS设备的配置更改历史记录。此外,建议您使用notify syslog
配置命令以允许在做出配置更改时生成系统日志消息。
!
archive
log config
logging enable
logging size 200
hidekeys
notify syslog
!
启用“配置更改通知和日志记录”功能后,可以使用特权EXEC命令show archive log config all
查看配置日志。
控制层面功能包含协议和进程,用于在网络设备之间进行通信以将数据从源移到目标。这包括路由协议(如边界网关协议)以及ICMP和资源预留协议(RSVP)等协议。
管理和数据层面中的事件不会对控制层面造成负面影响,是非常重要的。如果数据平面事件(例如DoS攻击)影响控制平面,则整个网络可能变得不稳定。这些有关 Cisco IOS 软件功能和配置的信息有助于确保控制层面的弹性。
保护网络设备的控制平面至关重要,因为控制平面可确保管理和数据平面的维护和运行。如果控制平面在安全事件期间变得不稳定,则可能无法恢复网络的稳定性。
在许多情况下,您可以禁用接口上某些消息类型的接收和传输,以最大限度地减少处理不必要数据包所需的CPU负载量。
如果在同一个接口上接收并传输数据包,路由器可能会生成 ICMP 重定向消息。在这种情况下,路由器会转发数据包,并将一条 ICMP 重定向消息发送回原始数据包的发送方。这种行为允许发送方避开路由器,并直接将随后的数据包转发到目标(或者更接近目标的路由器)。在正常运行的 IP 网络中,路由器仅向它自己的本地子网中的主机发送重定向消息。换句话说,ICMP重定向通常不会超出第3层边界。
ICMP 重定向消息有两种类型:主机地址重定向和整个子网重定向。恶意用户可以利用路由器发送ICMP重定向消息的能力,不断向路由器传输数据包,迫使路由器使用ICMP重定向消息做出响应,从而对CPU和路由器性能造成负面影响。要防止路由器传输ICMP重定向,请使用no ip redirects
接口配置命令。
使用接口访问列表过滤会导致将ICMP不可达消息传输回过滤流量的源。生成这些消息会增加设备上的CPU使用率。默认情况下,在Cisco IOS软件中,ICMP不可达生成限制为每500毫秒生成一个数据包。使用接口配置命令no ip unreachables
可禁用生成ICMP不可达消息。使用全局配置命令ip icmp rate-limit unreachable
interval-in-ms可更改默认的ICMP不可达速率限制。
代理ARP是一种技术,通过这种技术,一台设备(通常是路由器)可以应答发往另一台设备的ARP请求。通过伪造其身份,路由器承担了将数据包路由到实际目的地的责任。代理ARP可以帮助子网中的计算机到达远程子网,而无需路由配置或默认网关。RFC 1027 中定义了代理 ARP。
使用代理ARP也有缺点。它会导致网段中的 ARP 流量增加、资源耗尽及中间人攻击。代理 ARP 提供了一种资源耗尽攻击矢量,因为每个被代理的 ARP 请求都会消耗少量内存。如果攻击者发送大量ARP请求,他们可能会耗尽所有可用内存。
中间人攻击使网络中的主机能够伪装路由器的MAC地址,从而导致主机无意间将流量传输给攻击者。可以使用接口配置命令禁用代理ARP no ip proxy-arp.
保护控制层面是至关重要的。由于没有数据和管理流量,应用性能和最终用户体验会受到影响,因此控制平面的生存能力可确保其他两个平面得到维护并正常运行。
要正确保护Cisco IOS设备的控制平面,必须了解由CPU进行进程交换的流量类型。进程交换流量通常包括两种不同的流量类型。第一种流量类型定向到Cisco IOS设备,必须由Cisco IOS设备CPU直接处理。此类流量包含接收邻接流量类别。此流量包含思科快速转发(CEF)表中的条目,因此路由器下一跳是设备本身(通过show ip cef
命令输出CLI中的词语receive指示)。对于需要由 Cisco IOS 设备 CPU 直接处理的任何 IP 地址,这一指示包括接口 IP 地址、多播地址空间和广播地址空间。
CPU处理的第二种流量类型是数据平面流量-目的地超出Cisco IOS设备本身的流量,这需要CPU进行特殊处理。虽然数据平面流量对CPU的影响并不详尽,但这些流量类型是进程交换的,因此可能影响控制平面操作:
此列表详细说明了确定哪些流量类型由Cisco IOS设备CPU处理的几种方法:
show ip cef
命令提供CEF表中包含的每个IP前缀的下一跳信息。如前所述,包含 receive 作为“下一跳”的条目被视为接收邻接关系,并指示数据流必须直接发送到 CPU。show interface switching
命令提供有关设备进行处理交换的数据包数量的信息。show ip traffic
命令提供有关具有以下特征的IP数据包的数量的信息:show policy-map control-plane
命令来执行。基础架构 ACL (iACL) 用于限制从外部与网络设备进行通信。本文档的使用基础设施ACL限制网络访问部分全面介绍了iACL。
建议您实施 iACL 以保护所有网络设备的控制层面。
在分布式平台上,可以选择对用于 12000 (GSR) 的 Cisco IOS 软件版本 12.0(21)S2、用于 7500 的软件版本 12.0(24)S 和用于 10720 的软件版本 12.0(31)S 使用接收 ACL (rACL)。rACL 可在数据流影响路由处理器之前防止设备受到有害数据流的侵害。rACL仅用于保护配置它的设备,而中转流量不受rACL影响。因此,所示示例ACL条目中使用的目标IP地址“any”仅指路由器的物理或虚拟IP地址。rACL还被视为网络安全最佳实践,可视为良好网络安全性的长期补充。
这是为了允许来自 192.168.100.0/24 网络上的受信任主机的 SSH(TCP 端口 22)数据流而写入的接收路径 ACL:
!
!--- Permit SSH from trusted hosts allowed to the device.
!
access-list 151 permit tcp 192.168.100.0 0.0.0.255 any eq 22
!
!--- Deny SSH from all other sources to the RP.
!
access-list 151 deny tcp any any eq 22
!
!--- Permit all other traffic to the device.
!--- according to security policy and configurations.
!
access-list 151 permit ip any any
!
!--- Apply this access list to the receive path.
!
ip receive access-list 151
!
请参阅GSR:接收访问控制列表以帮助标识合法数据流并允许其进入设备,同时拒绝所有不需要的数据包。
CoPP功能还可用于限制发往基础设施设备的IP数据包。在本示例中,只允许来自受信任主机的 SSH 数据流到达 Cisco IOS 设备 CPU。
注意:从未知或不可信的IP地址丢弃的流量可能会阻止具有动态分配IP地址的主机建立与Cisco IOS设备的连接。
!
access-list 152 deny tcp <trusted-addresses> <mask> any eq 22
access-list 152 permit tcp any any eq 22
access-list 152 deny ip any any
!
class-map match-all COPP-KNOWN-UNDESIRABLE
match access-group 152
!
policy-map COPP-INPUT-POLICY
class COPP-KNOWN-UNDESIRABLE
drop
!
control-plane
service-policy input COPP-INPUT-POLICY
!
在上一个 CoPP 示例中,将非授权数据包与允许操作匹配的 ACL 条目会导致策略映射丢弃功能丢弃这些数据包,而与拒绝操作匹配的数据包则不受策略映射丢弃功能影响。
CoPP 在 Cisco IOS 软件版本系列 12.0S、12.2SX、12.2S、12.3T、12.4 和 12.4T 中可用。
Cisco IOS软件版本12.4(4)T中引入的控制平面保护(CPPr)可用于限制或管制发往Cisco IOS设备CPU的控制平面流量。与CoPP类似,CPPr可以更精细地限制流量。CPPr将汇聚控制平面分为三个单独的控制平面类别,称为子接口。存在“主机”、“中转”和“CEF 异常”数据流类别的子接口。此外,CPPr 还包括以下这些控制层面保护功能:
有关使用CPPr功能的详细信息,请参阅了解控制层面保护(CPPr)。
Cisco Catalyst 6500系列管理引擎32和管理引擎720支持平台特定的基于硬件的速率限制器(HWRL),适用于特殊网络场景。这些硬件速率限制器称为特例速率限制器,因为它们涵盖一组特定的预定义 IPv4、IPv6、单播和多播 DoS 方案。HWRL可以保护Cisco IOS设备免受需要CPU处理数据包的各种攻击。
默认情况下启用多个HWRL。有关HWRL的详细信息,请参阅PFC3基于硬件的速率限制器默认设置。
有关 HWRL 的详细信息,请参阅 PFC3 上的基于硬件的速率限制器。
边界网关协议 (BGP) 是 Internet 的路由基础。因此,连接需求大的任何组织通常都使用 BGP。BGP经常成为攻击者的攻击目标,因为它在小型组织中具有BGP配置的设置和遗忘性质。不过,有许多特定于 BGP 的安全功能可用于提高 BGP 配置的安全性。
其中概述了最重要的BGP安全功能,并在适当情况下提出了配置建议。
每个 IP 数据包都包含一个称为存活时间 (TTL) 的 1 字节字段。IP 数据包每经过一台设备,该值就递减 1。TTL起始值因操作系统而异,通常范围为64至255。当数据包的 TTL 值达到零时,数据包将被丢弃。
基于TTL的安全保护称为基于TTL的通用安全机制(GTSM)和BGP TTL安全攻击(BTSH),它利用IP数据包的TTL值来确保从直接连接对等体接收的BGP数据包。此功能通常需要来自对等路由器的协调;但是,一旦启用,它可以完全抵御许多针对BGP的基于TCP的攻击。
使用BGP路由器配置命令neighbor
的ttl-security
选项可启用BGP的GTSM。本示例说明此功能的配置:
!
router bgp <asn>
neighbor <ip-address> remote-as <remote-asn>
neighbor <ip-address> ttl-security hops <hop-count>
!
收到BGP数据包时,将检查其TTL值,并且该值必须大于或等于255减去指定的跳数。
使用 MD5 进行对等验证会针对 BGP 会话中发送的每个数据包创建一份 MD5 摘要。具体而言,部分IP和TCP报头、TCP负载和密钥用于生成摘要。
然后,创建的摘要将存储在 TCP 选项 Kind 19 中,该选项是 RFC 2385 专门为了此目的而创建的。接收方BGP扬声器使用相同的算法和密钥来重新生成消息摘要。如果接收到的摘要与经过计算得出的摘要不同,则丢弃数据包。
通过BGP路由器配置命令neighbor
的password
选项可配置使用MD5进行对等验证。此命令的使用示例如下所示:
!
router bgp <asn>
neighbor <ip-address> remote-as <remote-asn>
neighbor <ip-address> password <secret>
!
有关使用 MD5 进行 BGP 对等验证的详细信息,请参阅邻居路由器验证。
BGP 前缀由路由器存储在内存中。路由器必须保留的前缀越多,BGP消耗的内存就越多。在某些配置中,可以存储所有Internet前缀的子集,例如在仅利用默认路由或提供商用户网络路由的配置中。
为防止内存耗尽,请配置每个对等体接受的最大前缀数。建议为每个 BGP 对等体配置一个限制值。
当您使用neighbor maximum-prefix
路由器配置命令,配置此功能时,需要一个参数:对等体关闭之前接受的前缀的最大数量。还可以选择输入一个介于 1 到 100 之间的数字。此数字表示发送日志消息时的最大前缀值的百分比。
!
router bgp <asn>
neighbor <ip-address> remote-as <remote-asn>
neighbor <ip-address> maximum-prefix <shutdown-threshold> <log-percent>
!
有关对等最大前缀的详细信息,请参阅配置 BGP 最大前缀功能。
前缀列表允许网络管理员允许或拒绝BGP发送或接收的特定前缀。如果可能,请使用前缀列表,以确保网络流量通过预定路径发送。将前缀列表应用于入站和出站方向的每个eBGP对等体。
配置的前缀列表将发送或接收的前缀限制为网络路由策略明确允许的前缀。如果由于收到大量前缀而无法执行此操作,请配置一个前缀列表,专门阻止已知的不良前缀。这些已知不良前缀包括未分配的IP地址空间和由RFC 3330保留用于内部或测试目的的网络。 配置出站前缀列表,以便仅明确允许组织要通告的前缀。
本配置示例使用前缀列表限制被获知的通告路由。具体来说,前缀列表 BGP-PL-INBOUND 仅允许一个默认路由入站,前缀 192.168.2.0/24 是唯一被 BGP-PL-OUTBOUND 允许通告的路由。
!
ip prefix-list BGP-PL-INBOUND seq 5 permit 0.0.0.0/0
ip prefix-list BGP-PL-OUTBOUND seq 5 permit 192.168.2.0/24
!
router bgp <asn>
neighbor <ip-address> prefix-list BGP-PL-INBOUND in
neighbor <ip-address> prefix-list BGP-PL-OUTBOUND out
!
有关BGP前缀过滤器信息的完整覆盖范围,请参阅使用外部BGP连接到服务提供商。
BGP自主系统(AS)路径访问列表允许用户根据前缀的AS路径属性过滤已接收和通告的前缀。这可以与前缀列表一起使用,以建立一组强大的过滤器。
本配置示例使用 AS 路径访问列表将入站前缀限制为那些源自远程 AS 的前缀,并将出站前缀限定为那些源自本地自治系统的前缀。源自所有其他自治系统的前缀将被过滤掉,而不会安装到路由表中。
!
ip as-path access-list 1 permit ^65501$
ip as-path access-list 2 permit ^$
!
router bgp <asn>
neighbor <ip-address> remote-as 65501
neighbor <ip-address> filter-list 1 in
neighbor <ip-address> filter-list 2 out
!
网络正确转发流量并从拓扑变化或故障中恢复的能力取决于对拓扑的准确了解。通常可以运行内部网关协议(IGP)来提供此视图。默认情况下,IGP 是动态的,并且能够发现与正在使用的特定 IGP 通信的其他路由器。IGP还发现可在网络链路发生故障时使用的路由。
这些子部分概括介绍最重要的 IGP 安全功能。在适当的地方,将提供涵盖路由信息协议版本 2 (RIPv2)、增强型内部网关路由协议 (EIGRP) 和开放最短路径优先 (OSPF) 的建议和示例。
如果无法确保十分安全地交换路由信息,攻击者可能会在网络中引入伪造的路由信息。在路由器之间使用路由协议进行口令身份验证有助于提高网络安全性。但是,由于此验证以明文发送,因此,破坏这种安全控制对于攻击者而言可能十分简单。
将MD5散列功能添加到身份验证过程后,路由更新不再包含明文密码,并且路由更新的全部内容都更加防篡改。但是,如果使用较弱的密码,MD5身份验证仍然容易遭受暴力攻击和字典攻击。建议您使用充分随机化的口令。由于 MD5 验证比口令验证更加安全,因此,这些示例特定于 MD5 验证。IPSec还可用于验证和保护路由协议,但这些示例并未详细介绍其用法。
EIGRP和RIPv2在配置中都使用密钥链。有关配置和使用“密钥链”的详细信息,请参阅 key。
以下是使用 MD5 的 EIGRP 路由器身份验证的示例配置:
!
key chain <key-name>
key <key-identifier>
key-string <password>
!
interface <interface>
ip authentication mode eigrp <as-number> md5
ip authentication key-chain eigrp <as-number> <key-name>
!
这是 RIPv2 的 MD5 路由器验证示例配置。RIPv1 不支持验证。
!
key chain <key-name>
key <key-identifier>
key-string <password>
!
interface <interface>
ip rip authentication mode md5
ip rip authentication key-chain <key-name>
!
以下是使用MD5进行OSPF路由器身份验证的配置示例。OSPF不使用密钥链。
!
interface <interface>
ip ospf message-digest-key <key-id> md5 <password>
!
router ospf <process-id>
network 10.0.0.0 0.255.255.255 area 0
area 0 authentication message-digest
!
有关详细信息,请参阅配置 OSPF。
可以使用有助于对路由信息的通告进行控制的passive-interface
命令来防范信息泄漏或IGP中引入伪造的信息。建议您不要将任何信息通告给不受您的管理控制的网络。
此示例演示了此功能的使用:
!
router eigrp <as-number>
passive-interface default
no passive-interface <interface>
!
要减少在网络上引入错误路由信息的可能性,请使用路由过滤。与passive-interface
路由器配置命令不同,一旦启用路由过滤,路由将在接口上发生,但被通告或处理的信息将受到限制。
对于EIGRP和RIP而言,使用带有out
关键字的distribute-list
命令将限制通告的信息,而使用in
关键字将限制处理的更新。distribute-list
命令可用于OSPF,但它并不能禁止路由器传播已过滤的路由。可以改用area filter-list
命令。
本EIGRP示例使用distribute-list
命令和前缀列表过滤出站通告:
!
ip prefix-list <list-name> seq 10 permit <prefix>
!
router eigrp <as-number>
passive-interface default
no passive-interface <interface>
distribute-list prefix <list-name> out <interface>
!
本 EIGRP 示例使用前缀列表过滤入站更新:
!
ip prefix-list <list-name> seq 10 permit <prefix>
!
router eigrp <as-number>
passive-interface default
no passive-interface <interface>
distribute-list prefix <list-name> in <interface>
!
本OSPF示例使用前缀列表和特定于OSPF的 area filter-list
command:
!
ip prefix-list <list-name> seq 10 permit <prefix>
!
router ospf <process-id>
area <area-id> filter-list prefix <list-name> in
!
路由协议前缀由路由器存储在内存中,并且资源消耗会随着路由器必须保留的附加前缀而增加。为防止资源耗尽,请配置路由协议以限制资源消耗。如果使用链路状态数据库超载保护功能,则通过 OSPF 可实现此目标。
本示例说明 OSPF 链路状态数据库超载保护功能的配置:
!
router ospf <process-id>
max-lsa <maximum-number>
!
第一跳冗余协议 (FHRP) 为作为默认网关的设备提供弹性和冗余保障。这种情况和这些协议在一对第 3 层设备为网段或一组包含服务器或工作站的 VLAN 提供默认网关功能的环境中十分常见。
网关负载均衡协议 (GLBP)、热备用路由器协议 (HSRP) 和虚拟路由器冗余协议 (VRRP) 都属于 FHRP。默认情况下,这些协议可与未经验证的通信联络。这种通信可让攻击者伪装成符合FHRP标准的设备,以承担网络上的默认网关角色。此接管操作允许攻击者执行中间人攻击并拦截退出网络的所有用户流量。
为了防止此类攻击,Cisco IOS软件支持的所有FHRP都包含带有MD5或文本字符串的身份验证功能。由于未经验证的 FHRP 所造成的威胁,建议这些协议实例使用 MD5 验证。本配置示例说明如何使用 GLBP、HSRP 和 VRRP MD5 验证:
!
interface FastEthernet 1
description *** GLBP Authentication ***
glbp 1 authentication md5 key-string <glbp-secret>
glbp 1 ip 10.1.1.1
!
interface FastEthernet 2
description *** HSRP Authentication ***
standby 1 authentication md5 key-string <hsrp-secret>
standby 1 ip 10.2.2.1
!
interface FastEthernet 3
description *** VRRP Authentication ***
vrrp 1 authentication md5 key-string <vrrp-secret>
vrrp 1 ip 10.3.3.1
!
尽管数据平面负责将数据从源移动到目的地,但在安全情景中,数据平面是三个平面中最不重要的平面。因此,当您保护网络设备时,保护管理和控制平面优先于数据平面非常重要。
但是,在数据层面本身之内,仍然有许多功能和配置选项有助于保护数据流。以下部分详细介绍功能和选项,以便您可以更轻松地保护您的网络。
根据网络路由配置,绝大多数数据平面流量流经网络。但是,使用 IP 网络功能可以修改经过网络的数据包的路径。IP选项等功能,特别是源路由选项,构成了当今网络的安全挑战。
传输ACL的使用也与强化数据平面有关。
有关详细信息,请参阅使用中转ACL过滤中转流量部分。
IP 选项造成了两个安全问题。包含IP选项的流量必须由Cisco IOS设备进行进程交换,这可能会导致更高的CPU负载。IP选项还包括更改流量通过网络路径的功能,此功能可能会使其破坏安全控制。
由于这些问题,Cisco IOS软件版本12.3(4)T、12.0(22)S和12.2(25)S增加了全局配置命令ip options {drop | ignore}
。在第一种形式的命令ip options drop
中,将丢弃思科IOS设备收到的包含IP选项的所有IP数据包。这样可以防止 IP 选项使 CPU 负载增加,并可以防止这些选项破坏安全控制。
使用此命令的第二种形式(即ip options ignore
)可以将Cisco IOS设备配置为忽略接收的数据包中包含的IP选项。虽然这样可以缓解与本地设备的IP选项相关的威胁,但可能下行设备会受到IP选项的影响。因此,强烈建议使用此命令的drop
形式。如以下配置示例所示:
!
ip options drop
!
某些协议(例如RSVP)合法地使用IP选项。这些协议的功能会受到此命令的影响。
一旦启用“IP选项选择性丢弃”,就可以使用show ip traffic EXEC
命令确定由于存在IP选项而被丢弃的数据包的数量。此信息存在于 forced drop 计数器中。
IP源路由会依次利用松散源路由和记录路由选项,或者利用严格源路由以及记录路由选项,使IP数据报源能够指定数据包采用的网络路径。此功能可用于尝试在网络的安全控制周围路由流量。
如果IP选项选择性丢弃功能尚未完全禁用IP选项,则必须禁用IP源路由。默认情况下,所有Cisco IOS软件版本中均已启用IP源路由,该功能可通过no ip source-route
全局配置命令禁用。本配置示例说明了此命令的用法:
!
no ip source-route
!
ICMP重定向用于向网络设备通知到达IP目的地的更好路径。默认情况下,如果 Cisco IOS 软件收到的数据包必须通过接收该数据包的接口进行路由,它就会发送重定向消息。
在某些情况下,攻击者可能会导致Cisco IOS设备发送许多ICMP重定向消息,这会导致CPU负载增加。因此,建议禁用ICMP重定向的传输。使用接口配置no ip redirects
命令可禁用ICMP重定向,如本示例配置所示:
!
interface FastEthernet 0
no ip redirects
!
使用 IP 定向广播可以向远程 IP 子网发送 IP 广播数据包。数据包到达远程网络后,转发IP设备会将数据包作为第2层广播发送到子网上的所有站点。此定向广播功能已被用作多种攻击(包括smurf攻击)的放大和反射帮助。
默认情况下,当前版本的Cisco IOS软件禁用此功能;但是,它可以通过ip directed-broadcast
接口配置命令启用。默认情况下,12.0之前的Cisco IOS软件版本已启用此功能。
如果网络确实需要定向广播功能,请控制其使用。使用ACL作为ip directed-broadcast
命令的选项可实现此目标。此配置示例将定向广播限制为源自受信任网络192.168.1.0/24的UDP数据包:
!
access-list 100 permit udp 192.168.1.0 0.0.0.255 any
!
interface FastEthernet 0
ip directed-broadcast 100
!
使用中转 ACL (tACL) 可控制通过网络的流量。这与iACL相反,iACL会过滤发往网络本身的流量。当目标是过滤流向特定设备组的流量或流经网络的流量时,tACL提供的过滤器会很有用。
传统上,防火墙执行此过滤器类型。但是,在某些情况下,在网络的Cisco IOS设备上执行此过滤器会很有用。例如,必须执行过滤,但不存在防火墙。
tACL也是实施静态反欺骗保护的合适位置。
有关详细信息,请参阅反欺骗保护部分。
有关 tACL 的详细信息,请参阅“传输访问控制列表:在边缘执行过滤”。
Internet 控制消息协议 (ICMP) 设计为一种 IP 控制协议。因此,一般而言,它传达的消息可能会对TCP和IP协议产生重大影响。工具ping
和traceroute
使用ICMP来排除网络故障,并使用路径MTU发现功能。但是,正常的网络运行很少需要外部ICMP连接。
Cisco IOS 软件提供按名称或类型和代码专门过滤 ICMP 消息的功能。本示例ACL允许来自受信任网络的ICMP,但阻止来自其他来源的所有ICMP数据包:
!
ip access-list extended ACL-TRANSIT-IN
!
!--- Permit ICMP packets from trusted networks only
!
permit icmp host <trusted-networks> any
!
!--- Deny all other IP traffic to any network device
!
deny icmp any any
!
如本文档前面的使用基础架构ACL限制对网络的访问部分中的详细说明,过滤分段的IP数据包可能会对安全设备提出难题。
由于分段控制的非直观性质,ACL通常会在无意中允许IP分段。试图逃避入侵检测系统的检测时,也会经常使用分段功能。出于这些原因,IP分段经常用于攻击,并且可以在任何已配置的tACL的顶部显式过滤。所列的ACL示例包括一个IP分段的综合过滤器。本示例中所示的功能必须与前面几个示例中的功能配合使用:
!
ip access-list extended ACL-TRANSIT-IN
!
!--- Deny IP fragments using protocol-specific ACEs to aid in
!--- classification of attack traffic
!
deny tcp any any fragments
deny udp any any fragments
deny icmp any any fragments
deny ip any any fragments
!
有关 ACL 如何处理分段 IP 数据包的更多信息,请参阅访问控制列表和 IP 分段。
在Cisco IOS软件版本12.3(4)T及更高版本中,Cisco IOS软件支持使用ACL根据数据包中包含的IP选项过滤IP数据包。数据包中存在IP选项可能表示有人试图破坏网络的安全控制或者更改数据包的中转特征。因此,建议在网络边缘过滤具有IP选项的数据包。
使用此示例以及前面示例中的内容,为包含IP选项的IP数据包包括完整的过滤器:
!
ip access-list extended ACL-TRANSIT-IN
!
!--- Deny IP packets containing IP options
!
deny ip any any option any-options
!
许多攻击者都使用源 IP 地址欺骗进行有效攻击或隐瞒真正的攻击源,并阻碍准确进行追踪。Cisco IOS 软件提供单播 RPF 和 IP 源防护 (IPSG) 以阻止那些依靠源 IP 地址欺骗的攻击。此外,ACL 和空路由也会被经常作为手动的防欺骗方法进行部署。
IPSG通过交换机端口、MAC地址和源地址验证性能,最大限度地减少直接管理控制下的网络欺骗。单播RPF提供源网络验证,并且可以减少来自非直接管理控制网络的欺骗攻击。端口安全可用于验证接入层的MAC地址。动态地址解析协议 (ARP) 检查 (DAI) 可减少在本地网段中使用 ARP 下毒的攻击矢量。
单播RPF使设备能够验证转发的数据包的源地址是否可通过接收数据包的接口到达。不要依赖单播RPF作为防止欺骗的唯一保护措施。如果存在通向源 IP 地址的相应返回路由,则欺骗性数据包可能会通过启用单播 RPF 的接口进入网络。单播 RPF 需要您在每个设备上启用思科快速转发,并在每个接口上配置思科快速转发。
单播 RPF 可配置为以下两种模式之一:宽松或严格。在存在不对称路由的情况下首选松散模式,因为已经知道严格模式会在这些情况下丢弃数据包。在配置ip verify
接口配置命令期间,关键字any
用于配置松散模式,而关键字rx用于配置严格模式。
本示例说明此功能的配置:
!
ip cef
!
interface <interface>
ip verify unicast source reachable-via <mode>
!
有关配置和使用单播 RPF 的详细信息,请参阅了解单播反向路径转发。
如果您可以控制第 2 层接口,则 IP 源防护是可用于防止欺骗的有效方法。IP源保护使用DHCP监听的信息在第2层接口上动态配置端口访问控制列表(PACL),拒绝任何来自IP地址且未在IP源绑定表中关联的数据流。
IP源防护可应用于属于启用DHCP监听的VLAN的第2层接口。可以使用以下这些命令启用 DHCP 监听:
!
ip dhcp snooping
ip dhcp snooping vlan <vlan-range>
!
启用 DHCP 监听之后,可以使用以下这些命令启用 IPSG:
!
interface <interface-id>
ip verify source
!
可以使用Tip verify source port security
接口配置命令来启用端口安全。此外,还需要全局配置命令ip dhcp snooping information option;
,DHCP服务器必须支持DHCP选项82。
有关此功能的详细信息,请参阅配置 DHCP 功能和 IP 源防护。
端口安全用于缓解接入接口上的MAC地址欺骗。端口安全可以使用动态获知的(粘滞)MAC 地址轻松地进行初始配置。一旦端口安全确定 MAC 违规,可以使用四种违规模式之一。这些模式包括:保护、限制、关闭和关闭VLAN。在某些情况下,如果一个端口仅为使用标准协议的单个工作站提供访问,最大值设置为 1 即足够。当最大数量设置为1时,利用虚拟MAC地址的协议(如HSRP)不起作用。
!
interface <interface>
switchport
switchport mode access
switchport port-security
switchport port-security mac-address sticky
switchport port-security maximum <number>
switchport port-security violation <violation-mode>
!
有关端口安全配置的更多信息,请参阅配置端口安全。
动态ARP检测(DAI)可用于缓解对本地网段的ARP毒化攻击。ARP 下毒攻击是攻击者向本地网段发送伪造 ARP 信息的攻击方法。此信息旨在破坏其他设备的 ARP 缓存。攻击者通常使用ARP毒化来执行中间人攻击。
DAI 拦截并验证不受信任端口上的所有 ARP 数据包的 IP 与 MAC 地址的关系。在 DHCP 环境下,DAI 使用 DHCP 监听功能生成的数据。在受信任接口上接收的ARP数据包未经验证,并且不信任接口上的无效数据包将被丢弃。在非 DHCP 环境中需要使用 ARP ACL。
可以使用以下这些命令启用 DHCP 监听:
!
ip dhcp snooping
ip dhcp snooping vlan <vlan-range>
!
启用 DHCP 监听之后,可以使用以下这些命令启用 DAI:
!
ip arp inspection vlan <vlan-range>
!
在非DHCP环境中,需要使用ARP ACL来启用DAI。本示例说明使用 ARP ACL 的 DAI 的基本配置:
!
arp access-list <acl-name>
permit ip host <sender-ip> mac host <sender-mac>
!
ip arp inspection filter <arp-acl-name> vlan <vlan-range>
!
DAI还可在支持的任何位置基于每个接口启用。
ip arp inspection limit rate <rate_value> burst interval <interval_value>
有关此如何配置 DAI 的详细信息,请参阅配置动态 ARP 检查。
对于使用已知未用和不受信任地址空间的攻击,手动配置的 ACL 可提供静态反欺骗保护。通常,这些反欺骗 ACL 作为大型 ACL 的组件应用于网络边界上的输入数据流。反欺骗ACL需要定期监控,因为它们可能经常更改。如果应用出站 ACL 限制传至有效本地地址的流量,可尽可能地减少来自本地网络的流量中的欺骗。
本示例说明如何使用ACL限制IP欺骗。此 ACL 应用于所需接口上的入站数据流。构成此 ACL 的 ACE 并不全面。如果配置这些ACL类型,请查找最终确定的最新参考。
!
ip access-list extended ACL-ANTISPOOF-IN
deny ip 10.0.0.0 0.255.255.255 any
deny ip 192.168.0.0 0.0.255.255 any
!
interface <interface>
ip access-group ACL-ANTISPOOF-IN in
!
有关如何配置访问控制列表的详细信息,请参阅配置常用的 IP ACL。
未分配的 Internet 地址的正式列表由 Team Cymru 维护。有关如何过滤未使用的地址的其他信息可以在Bogon参考页上找到。
使用路由器和交换机的主要目的,是将数据包和帧通过设备转发到最终目标。这些将经过部署在整个网络中的设备的数据包可能会影响设备 CPU 的运行。保护数据平面(包括流经网络设备的流量),以确保管理和控制平面的运行。如果中转流量会导致设备处理交换机流量,则设备的控制平面可能会受到影响,从而导致运营中断。
尽管并不详尽,但此列表包括需要特殊CPU处理并由CPU进行进程交换的数据平面流量类型:
有关数据层面强化的详细信息,请参阅一般数据层面强化部分。
您可以使用扩展IP访问列表中在Cisco IOS软件版本12.4(2)T中引入的ACL对按TTL值过滤的支持功能,以根据TTL值过滤数据包。此功能可以保护接收TTL值为0或1的中转流量的设备。还可以使用基于TTL值的数据包过滤来确保TTL值不小于网络的直径,这样可以保护下游基础设施设备的控制平面免受TTL到期攻击。
一些应用程序和工具,如traceroute
将TTL到期数据包用于测试和诊断目的。一些协议(如 IGMP)合法使用 TTL 值 1。
本 ACL 示例创建一个策略,用于过滤 TTL 值小于 6 的 IP 数据包。
!
!--- Create ACL policy that filters IP packets with a TTL value
!--- less than 6
!
ip access-list extended ACL-TRANSIT-IN
deny ip any any ttl lt 6
permit ip any any
!
!--- Apply access-list to interface in the ingress direction
!
interface GigabitEthernet 0/0
ip access-group ACL-TRANSIT-IN in
!
有关如何根据TTL值过滤数据包的详细信息,请参阅识别和防范TTL到期攻击。
有关此功能的详细信息,请参阅对按 TTL 值过滤的 ACL 支持。
在思科 IOS 软件版本 12.4(4)T 及更高版本中,灵活数据包匹配 (FPM) 功能允许管理员基于数据包的任意位进行匹配。此FPM策略丢弃TTL值小于6的数据包。
!
load protocol flash:ip.phdf
!
class-map type access-control match-all FPM-TTL-LT-6-CLASS
match field IP ttl lt 6
!
policy-map type access-control FPM-TTL-LT-6-DROP-POLICY
class FPM-TTL-LT-6-CLASS
drop
!
interface FastEthernet0
service-policy type access-control input FPM-TTL-LT-6-DROP-POLICY
!
在 Cisco IOS 软件版本 12.3(4)T 及更高版本中,您可以在已命名的扩展 IP 访问列表中使用“对过滤 IP 选项的 ACL 支持”功能,以过滤具有 IP 选项的 IP 数据包。还可以使用基于IP选项的IP数据包过滤来防止基础设施设备的控制平面需要在CPU级别处理这些数据包。
对过滤IP选项的ACL支持功能只能用于命名扩展ACL。RSVP、多协议标签交换流量工程、IGMP版本2和3以及使用IP选项数据包的其他协议,如果这些协议的数据包被丢弃,将无法正常运行。如果网络上正在使用这些协议,则可以使用ACL对过滤IP选项的支持。但是,“ACL IP选项选择性丢弃”功能可以丢弃此流量,并且这些协议无法正常运行。如果目前未使用需要 IP 选项的协议,则首选“ACL IP 选项选择性丢弃”功能来丢弃这些数据包。
本 ACL 示例创建一个用于过滤包含任何 IP 选项的 IP 数据包的策略:
!
ip access-list extended ACL-TRANSIT-IN
deny ip any any option any-options
permit ip any any
!
interface GigabitEthernet 0/0
ip access-group ACL-TRANSIT-IN in
!
本示例 ACL 说明了一个用于过滤具有五个特定 IP 选项的 IP 数据包的策略。包含这些选项的数据包将被拒绝:
!
ip access-list extended ACL-TRANSIT-IN
deny ip any any option eool
deny ip any any option record-route
deny ip any any option timestamp
deny ip any any option lsr
deny ip any any option ssr
permit ip any any
!
interface GigabitEthernet 0/0
ip access-group ACL-TRANSIT-IN in
!
有关“ACL IP选项选择性丢弃”的详细信息,请参阅本文档的一般数据层面强化部分。
有关如何过滤中转和边缘流量的详细信息,请参阅中转访问控制列表:在边缘过滤。
Cisco IOS软件中可用于过滤具有IP选项的数据包的另一项功能是CoPP。在思科 IOS 软件版本 12.3(4)T 和更高版本中,CoPP 允许管理员过滤控制平面数据包的流量。支持Cisco IOS软件版本12.3(4)T中引入的过滤IP选项的CoPP和ACL支持的设备可以使用访问列表策略过滤包含IP选项的数据包。
此 CoPP 策略会丢弃设备收到的存在任何 IP 选项的中转数据包:
!
ip access-list extended ACL-IP-OPTIONS-ANY
permit ip any any option any-options
!
class-map ACL-IP-OPTIONS-CLASS
match access-group name ACL-IP-OPTIONS-ANY
!
policy-map COPP-POLICY
class ACL-IP-OPTIONS-CLASS
drop
!
control-plane
service-policy input COPP-POLICY
!
此 CoPP 策略会丢弃设备收到的存在以下这些 IP 选项的中转数据包:
!
ip access-list extended ACL-IP-OPTIONS
permit ip any any option eool
permit ip any any option record-route
permit ip any any option timestamp
permit ip any any option lsr
permit ip any any option ssr
!
class-map ACL-IP-OPTIONS-CLASS
match access-group name ACL-IP-OPTIONS
!
policy-map COPP-POLICY
class ACL-IP-OPTIONS-CLASS
drop
!
control-plane
service-policy input COPP-POLICY
!
在以前的CoPP策略中,将数据包与permit操作进行匹配的访问控制列表条目(ACE)导致这些数据包被policy-map drop函数丢弃,而与deny操作(未显示)匹配的数据包,不会受到policy-map drop函数的影响。
在Cisco IOS软件版本12.4(4)T及更高版本中,控制平面保护(CPPr)可用于通过Cisco IOS设备的CPU限制或管制控制平面流量。虽然与CoPP类似,但CPPr可以限制或管制比CoPP更精细的流量。CPPr 将汇聚控制平面划分为三个独立的控制平面类别(称为子接口):Host、Transit 和 CEF-Exception。
此 CPPr 策略丢弃设备收到的 TTL 值小于 6 的中转数据包,以及设备收到的 TTL 值为 0 或 1 的中转或非中转数据包。该 CPPr 策略还丢弃设备收到的具有所选 IP 选项的数据包。
!
ip access-list extended ACL-IP-TTL-0/1
permit ip any any ttl eq 0 1
!
class-map ACL-IP-TTL-0/1-CLASS
match access-group name ACL-IP-TTL-0/1
!
ip access-list extended ACL-IP-TTL-LOW
permit ip any any ttl lt 6
!
class-map ACL-IP-TTL-LOW-CLASS
match access-group name ACL-IP-TTL-LOW
!
ip access-list extended ACL-IP-OPTIONS
permit ip any any option eool
permit ip any any option record-route
permit ip any any option timestamp
permit ip any any option lsr
permit ip any any option ssr
!
class-map ACL-IP-OPTIONS-CLASS
match access-group name ACL-IP-OPTIONS
!
policy-map CPPR-CEF-EXCEPTION-POLICY
class ACL-IP-TTL-0/1-CLASS
drop
class ACL-IP-OPTIONS-CLASS
drop
!
!-- Apply CPPr CEF-Exception policy CPPR-CEF-EXCEPTION-POLICY to
!-- the CEF-Exception CPPr sub-interface of the device
!
control-plane cef-exception
service-policy input CPPR-CEF-EXCEPTION-POLICY
!
policy-map CPPR-TRANSIT-POLICY
class ACL-IP-TTL-LOW-CLASS
drop
!
control-plane transit
service-policy input CPPR-TRANSIT-POLICY
!
在以前的CPPr策略中,将数据包与permit操作结果进行匹配的访问控制列表条目是,这些数据包被policy-map drop函数丢弃,而与deny操作(未显示)匹配的数据包,并未受到policy-map drop函数的影响。
有关 CPPr 功能的详细信息,请参阅了解控制层面保护和控制层面保护。
有时,特别是在事件响应或网络性能不佳的时候,您可能需要迅速标识和回溯网络数据流。NetFlow和分类ACL是使用Cisco IOS软件完成此任务的两种主要方法。使用 NetFlow 可以看到网络上的所有数据流。此外,NetFlow 还可以与能够提供长期趋势和自动分析的收集器一起实施。分类 ACL 是 ACL 的一个组件,需要进行预先规划以标识特定的数据流,并且需要在分析期间手动干预。以下这些部分提供每项功能的简要概述。
NetFlow通过跟踪网络流量来识别异常的、与安全相关的网络活动。NetFlow数据可以通过CLI进行查看和分析,也可以导出到商业或免费的NetFlow收集器进行聚合和分析。NetFlow收集器可通过长期趋势提供网络行为和使用分析。NetFlow对IP数据包中的特定属性进行分析,并创建流。第5版是最常用的NetFlow版本;但是,第9版的可扩展性更强。利用在大容量环境下采样的流量数据,可创建 Netflow 流。
CEF 或分布式 CEF 是启用 NetFlow 的先决条件。NetFlow 可以配置在路由器和交换机上。
此示例说明NetFlow的基本配置。在Cisco IOS软件的早期版本中,用于在接口上启用NetFlow的命令是ip route-cache flow
,而不是 ip flow {ingress | egress}.
!
ip flow-export destination <ip-address> <udp-port>
ip flow-export version <version>
!
interface <interface>
ip flow <ingess|egress>
!
这是来自 CLI 的 NetFlow 输出示例。SrcIf 属性有助于执行回溯。
router#show ip cache flow
IP packet size distribution (26662860 total packets):
1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480
.741 .124 .047 .006 .005 .005 .002 .008 .000 .000 .003 .000 .001 .000 .000
512 544 576 1024 1536 2048 2560 3072 3584 4096 4608
.000 .000 .001 .007 .039 .000 .000 .000 .000 .000 .000
IP Flow Switching Cache, 4456704 bytes
55 active, 65481 inactive, 1014683 added
41000680 ager polls, 0 flow alloc failures
Active flows timeout in 2 minutes
Inactive flows timeout in 60 seconds
IP Sub Flow Cache, 336520 bytes
110 active, 16274 inactive, 2029366 added, 1014683 added to flow
0 alloc failures, 0 force free
1 chunk, 15 chunks added
last clearing of statistics never
Protocol Total Flows Packets Bytes Packets Active(Sec) Idle(Sec)
-------- Flows /Sec /Flow /Pkt /Sec /Flow /Flow
TCP-Telnet 11512 0.0 15 42 0.2 33.8 44.8
TCP-FTP 5606 0.0 3 45 0.0 59.5 47.1
TCP-FTPD 1075 0.0 13 52 0.0 1.2 61.1
TCP-WWW 77155 0.0 11 530 1.0 13.9 31.5
TCP-SMTP 8913 0.0 2 43 0.0 74.2 44.4
TCP-X 351 0.0 2 40 0.0 0.0 60.8
TCP-BGP 114 0.0 1 40 0.0 0.0 62.4
TCP-NNTP 120 0.0 1 42 0.0 0.7 61.4
TCP-other 556070 0.6 8 318 6.0 8.2 38.3
UDP-DNS 130909 0.1 2 55 0.3 24.0 53.1
UDP-NTP 116213 0.1 1 75 0.1 5.0 58.6
UDP-TFTP 169 0.0 3 51 0.0 15.3 64.2
UDP-Frag 1 0.0 1 1405 0.0 0.0 86.8
UDP-other 86247 0.1 226 29 24.0 31.4 54.3
ICMP 19989 0.0 37 33 0.9 26.0 53.9
IP-other 193 0.0 1 22 0.0 3.0 78.2
Total: 1014637 1.2 26 99 32.8 13.8 43.9
SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts
Gi0/1 192.168.128.21 Local 192.168.128.20 11 CB2B 07AF 3
Gi0/1 192.168.150.60 Gi0/0 10.89.17.146 06 0016 101F 55
Gi0/0 10.89.17.146 Gi0/1 192.168.150.60 06 101F 0016 9
Gi0/1 192.168.150.60 Local 192.168.206.20 01 0000 0303 11
Gi0/0 10.89.17.146 Gi0/1 192.168.150.60 06 07F1 0016 1
有关 NetFlow 功能的详细信息,请参阅 Cisco IOS NetFlow。
有关 NetFlow 功能的技术概述,请参阅 Cisco IOS NetFlow 简介 - 技术概述。
使用分类 ACL 可以看到经过接口的数据流。分类 ACL 不会更改网络的安全策略,通常,构建它们的目的是为了将各个协议、源地址或目标进行分类。例如,可以将允许所有数据流的 ACE 按照特定的协议或端口进行划分。这种将流量更精细地分类到特定ACE有助于提供网络流量的可视性,因为每个流量类别都有自己的命中计数器。管理员还可以将ACL末尾的隐式deny分隔为粒度化ACE,以帮助识别被拒绝的流量类型。
管理员可以通过show access-list
和clear ip access-list counters
执行命令使用分类ACL来加速事件响应。
本示例显示分类ACL的配置,以识别默认拒绝之前的SMB流量:
!
ip access-list extended ACL-SMB-CLASSIFY
remark Existing contents of ACL
remark Classification of SMB specific TCP traffic
deny tcp any any eq 139
deny tcp any any eq 445
deny ip any any
!
要识别使用分类ACL的数据流,可以使用show access-list EXEC
命令。ACL计数器可以用clear ip access-list counters EXEC
命令清除。
router#show access-list ACL-SMB-CLASSIFY
Extended IP access list ACL-SMB-CLASSIFY
10 deny tcp any any eq 139 (10 matches)
20 deny tcp any any eq 445 (9 matches)
30 deny ip any any (184 matches)
有关如何在ACL中启用日志功能的详细信息,请参阅了解访问控制列表日志记录。
使用 VLAN 访问控制列表 (VACL) 或使用 VLAN 映射和端口 ACL (PACL),可以对非路由数据流执行比应用于路由接口的访问控制列表更接近于端点设备的访问控制。
以下部分概述了VACL和PACL的功能、优势和潜在使用场景。
VACL或应用于进入VLAN的所有数据包的VLAN映射能够对VLAN内的流量实施访问控制。此功能不适用于路由接口上的 ACL。例如,VLAN映射可用于阻止同一VLAN中包含的主机相互通信,从而减少本地攻击者或蠕虫利用同一网段上主机的机会。要拒绝数据包使用VLAN映射,请创建匹配流量的访问控制列表(ACL),并在VLAN映射中将操作设置为drop。配置 VLAN 映射后,将根据配置的 VLAN 映射按顺序对所有进入 LAN 的数据包进行评估。VLAN访问映射支持IPv4和MAC访问列表;但是,它们不支持日志或IPv6 ACL。
本示例使用扩展的命名访问列表来说明此功能的配置:
!
ip access-list extended <acl-name>
permit <protocol> <source-address> <source-port> <destination-address>
<destination-port>
!
vlan access-map <name> <number>
match ip address <acl-name>
action <drop|forward>
!
本示例演示如何使用VLAN映射拒绝TCP端口139和445以及vines-ip协议:
!
ip access-list extended VACL-MATCH-ANY
permit ip any any
!
ip access-list extended VACL-MATCH-PORTS
permit tcp 192.168.1.0 0.0.0.255 192.168.1.0 0.0.0.255 eq 445
permit tcp 192.168.1.0 0.0.0.255 192.168.1.0 0.0.0.255 eq 139
!
mac access-list extended VACL-MATCH-VINES
permit any any vines-ip
!
vlan access-map VACL 10
match ip address VACL-MATCH-VINES
action drop
!
vlan access-map VACL 20
match ip address VACL-MATCH-PORTS
action drop
!
vlan access-map VACL 30
match ip address VACL-MATCH-ANY
action forward
!
vlan filter VACL vlan 100
!
有关配置 VLAN 映射的详细信息,请参阅使用 ACL 配置网络安全。
PACL 只能应用于交换机第 2 层物理接口的入站方向。与 VLAN 映射类似,PACL 可以提供对非路由或第 2 层数据流的访问控制。创建 PACL 的优先权高于 VLAN 映射和路由器 ACL,其语法与路由器 ACL 相同。如果某个 ACL 应用于第 2 层接口,则它会被称为 PACL。配置包含创建 IPv4、IPv6 或 MAC ACL,并将它们应用到第 2 层接口。
本示例使用扩展命名访问列表说明此功能的配置:
!
ip access-list extended <acl-name>
permit <protocol> <source-address> <source-port> <destination-address>
<destination-port>
!
interface <type> <slot/port>
switchport mode access
switchport access vlan <vlan_number>
ip access-group <acl-name> in
!
有关配置 PACL 的详细信息,请参阅使用 ACL 配置网络安全的“端口 ACL”部分。
在接口配置模式下,使用此命令可以在IP网络上应用MAC访问控制列表或扩展列表:
Cat6K-IOS(config-if)#mac packet-classify
注意:MAC访问控制列表将第3层数据包分类为第2层数据包。Cisco IOS 软件版本 12.2(18)SXD(用于 Sup 720)和 Cisco IOS 软件版本 12.2(33)SRA 或更高版本支持此命令。
此接口命令必须应用于入口接口,并指示转发引擎不检查IP报头。结果是,您可以在IP环境中使用MAC访问列表。
专用VLAN (PVLAN)是限制VLAN上工作站或服务器之间连接的第2层安全功能。没有 PVLAN,第 2 层 VLAN 中的所有设备均可自由通信。网络中存在一种情况,即由于单个VLAN上设备之间的通信受到限制而有助于提高安全性。例如,PVLAN通常用于禁止可公开访问的子网上的服务器之间的通信。如果一台服务器受损,应用PVLAN导致无法连接其他服务器,这有助于限制对一台服务器的危害。
专用VLAN有三种类型:隔离VLAN、社区VLAN和主要VLAN。PVLAN 的配置利用了主 VLAN 和辅助 VLAN。主 VLAN 包含所有混合端口(如后所述),并包括一个或多个辅助 VLAN,这些辅助 VLAN 可以是隔离 VLAN 或社区 VLAN。
将辅助VLAN配置为隔离VLAN会完全阻止辅助VLAN上的设备之间的通信。每个主VLAN只能有一个隔离VLAN,并且只有混杂端口可以与隔离VLAN上的端口通信。隔离 VLAN 可用于不受信任的网络(如支持访客的网络)。
本配置示例将 VLAN 11 配置为隔离 VLAN 并将其与主 VLAN(即 VLAN 20)关联起来。此示例还将接口FastEthernet 1/1配置为VLAN 11上的隔离端口:
!
vlan 11
private-vlan isolated
!
vlan 20
private-vlan primary
private-vlan association 11
!
interface FastEthernet 1/1
description *** Port in Isolated VLAN ***
switchport mode private-vlan host
switchport private-vlan host-association 20 11
!
配置为社区VLAN的辅助VLAN允许VLAN成员之间以及与主VLAN上的任意混杂端口之间的通信。但是,在任何两个社区 VLAN 之间,或者在社区 VLAN 与隔离 VLAN 之间,无法进行通信。社区VLAN必须用于将需要相互连接的服务器分组,但不需要连接到VLAN上的所有其它设备。这种情况常见于可公开访问的网络或服务器向不受信任的客户端提供内容的任何位置。
本示例配置一个社区 VLAN 并将交换机端口 FastEthernet 1/2 配置为该 VLAN 的成员。社区 VLAN(即 VLAN 12)是主 VLAN 20 的辅助 VLAN。
!
vlan 12
private-vlan community
!
vlan 20
private-vlan primary
private-vlan association 12
!
interface FastEthernet 1/2
description *** Port in Community VLAN ***
switchport mode private-vlan host
switchport private-vlan host-association 20 12
!
置于主VLAN中的交换机端口称为混合端口。混杂端口可以与主VLAN和辅助VLAN上的所有其它端口通信。路由器或防火墙接口是这些 VLAN 上最常见的设备。
本配置示例结合了前面的隔离和社区 VLAN 示例,并添加了作为混合端口的接口 FastEthernet 1/12 的配置:
!
vlan 11
private-vlan isolated
!
vlan 12
private-vlan community
!
vlan 20
private-vlan primary
private-vlan association 11-12
!
interface FastEthernet 1/1
description *** Port in Isolated VLAN ***
switchport mode private-vlan host
switchport private-vlan host-association 20 11
!
interface FastEthernet 1/2
description *** Port in Community VLAN ***
switchport mode private-vlan host
switchport private-vlan host-association 20 12
!
interface FastEthernet 1/12
description *** Promiscuous Port ***
switchport mode private-vlan promiscuous
switchport private-vlan mapping 20 add 11-12
!
实施PVLAN时,必须确保现有的第3层配置支持PVLAN施加的限制,并且不允许破坏PVLAN配置。带路由器ACL或防火墙的第3层过滤器可以防止PVLAN配置被破坏。
有关使用和配置专用 VLAN 的详细信息,请参阅位于 LAN 安全主页上的专用 VLAN (PVLAN) - 混合 VLAN、隔离 VLAN、社区 VLAN。
本文档全面概述了可用于保护Cisco IOS系统设备的方法。如果您保护设备,就会提高您管理的网络的整体安全性。本概述讨论了管理平面、控制层面和数据层面的保护,并提供了一些配置建议。在可能的情况下,我们为每一种相关功能的配置提供了足够详细的信息。但是,在所有的情况下,我们都为您提供了做出进一步评估所需的全面参考资料。
本文档中介绍的一些功能由思科信息开发团队编写。
此核对表汇总了本指南中介绍的所有强化设备步骤。管理员可使用它来提醒您思科 IOS 设备使用和考虑的所有强化功能,即使某项功能由于未应用而没有实施亦不例外。建议管理员在实施选项之前,评估每个选项的潜在风险。
版本 | 发布日期 | 备注 |
---|---|---|
2.0 |
12-Sep-2024 |
全面更新CCW风险通告,包括简介、机器翻译、风格要求和大量更新链接。 |
1.0 |
10-Dec-2001 |
初始版本 |