CCNA Security 个人总结
最近在念CCNA安全,真的很多很多内容,所以手动记录整理下,方便日后用到可以快速检索
记录日期:2021年的大三无暑假假期 @Mane
更新日期:2021年7月21日
无论如何都禁止转载!!!
注意:为什么图片这么劣质?因为我还没有稳定的图床,之前的图床丢过一次图片后我就再也没有去用外面的图床。我还没有建立图片服务器也就只能省空间把他变成Base64存在html里了(随便啦。。能看好了)。
用电脑版打开会有目录出现!
现代的网络安全威胁
查看即时的 DDOS / 工具扫描 的地图可以 参考这里
渗透测试工具
大部分的工具都基于 UNIX 或 Linux;因此,搞安全的专业人员应该要有较强的 UNIX 和 Linux 背景。
-
密码破解器 - 密码是最容易受攻击的。密码破解工具通常被叫做密码恢复工具,黑客用来破解或恢复密码。通过绕过数据加密后删除原始密码或直接找到密码。密码破解器可以反复猜测密码,破解密码来访问系统。密码破解工具的有 Ripper、Ophcrack、L0phtCrack、THC Hydra、RainbowCrack 和 Medusa。
-
无线黑客工具 - 无线网络更容易被攻击。无线破解工具侵入无线网络,以检测安全漏洞。无线黑客工具的示例包括 Aircrack-ng、Kismet、InSSIDer、KisMAC、Firesheep 和 NetStumbler。
- 网络扫描工具 - 网络扫描工具用于探测网络设备、服务器和主机中已打开 TCP 或 UDP 端口。扫描工具的示例包括 Nmap、SuperScan、Angry IP Scanner 和 NetScanTools。
- 数据包构造工具 - 这些工具可以伪造特定的数据包来探测和测试防火墙的稳健性。这些工具的示例包括 Hping、Scapy、Socat、Yersinia、Netcat、Nping 和 Nemesis。
- 数据包嗅探器 - 这些工具用于捕获和分析传统以太网 LAN 或 WLAN 中的数据包。工具包括 Wireshark、Tcpdump、Ettercap、Dsniff、EtherApe、Paros、Fiddler、Ratproxy 和 SSLstrip。
- Rootkit 探测器 - 这是白帽黑客使用的提权探测器,用于检测是否感染了 Rootkit 的黑客程序。示例工具包括 AIDE、Netfilter 和 PF: OpenBSD Packet Filter。
- 用于搜索漏洞的模糊测试工具 - 模糊测试工具是黑客在试图发现系统的安全漏洞时使用的工具。Fuzzer 示例包括 Skipfish、Wapiti 和 W3af。
- 调查分析工具 - 这些工具是白帽黑客使用的工具,用于找出系统入侵后的痕迹。工具示例包括 Sleuth Kit、Helix、Maltego 和 Encase。
- 调试程序 - 这些工具是黑帽黑客编写的漏洞攻击工具,对二进制文件进行反向工程所使用的工具。“白帽黑客”分析恶意软件时,也会使用这些工具。调试工具包括 GDB、WinDbg、IDA Pro 和 Immunity Debugger。
- 攻击操作系统 - 这些是专门设计的操作系统,预装有针对黑客攻击而优化的工具。专门设计的攻击操作系统的示例包括 Kali Linux、SELinux、Knoppix、BackBox linux。
- 加密工具 - 这些工具用来加密数据包或者是数据。加密工具使用算法对数据进行编码,以防止对加密数据进行未经授权的访问。这些工具的示例包括 VeraCrypt、CipherShed、OpenSHH、OpenSSL、Tor、OpenVPN 和 Stunnel。
- 漏洞攻击工具 - 这些工具用已知的漏洞来测试系统是否容易被入侵。漏洞攻击工具的示例包括 Metasploit、Core Impact、Sqlmap、Social Engineer Toolkit 和 Netsparker。
- 漏洞扫描程序 - 这些工具用于扫描网络,识别打开的端口,它们还可以用来扫描已知漏洞。比如:扫描虚拟机、BYOD 设备和客户端数据库。这些工具的示例包括 Nipper、Secunia PSI、Core Impact、Nessus v6、SAINT 和 Open VAS。
侦查跟踪攻击的示例
以下是一些恶意的黑客来寻找目标进行攻击时使用的一些技术:
-
开展对目标的信息查询 - 黑客查找有关目标的初始信息。相关工具有很多,包括 Google 搜索、组织网站、whois 等等。
-
对目标网络发起 ping 扫描 - 信息查询通常会揭示目标的网络地址。现在,黑客可以发起 ping 扫描,以确定哪些 IP 地址处于活动状态。
-
发起活动 IP 地址的端口扫描 - 这是为了确定哪些端口或服务可用。端口扫描程序的例子包括 Nmap、SuperScan、Angry IP Scanner 和 NetScanTools。
-
运行漏洞扫描程序 - 这是为了查询已识别的端口,以确定目标主机运行的应用和操作系统的类型和版本。相关工具的例子包括 Nipper、Secunia PSI、Core Impact、Nessus v6、SAINT 和 Open VAS。
-
运行漏洞攻击工具 - 黑客尝试发现可以被攻击的存在漏洞的服务。漏洞攻击工具五花八门,包括 Metasploit、Core Impact、Sqlmap、Social Engineer Toolkit 和 Netsparker。
访问攻击的类型
有以下五种常见的访问攻击:
-
密码攻击 - 黑客试图使用各种方法(例如社交工程、字典攻击、暴力攻击或网络嗅探)来发现关键系统的密码。暴力密码攻击涉及使用诸如 Ophcrack、L0phtCrack、THC Hydra、RainbowCrack 和 Medusa 等工具进行的反复尝试。
-
信任攻击 - 黑客使用未经授权的特权获得系统的访问,可能进一步攻击目标系统。
-
端口重定向 - 黑客将攻击其他目标的基地。
-
中间人攻击 - 黑客置身于两个合法实体之间,以便读取或修改双方之间传输的数据。
-
缓冲区溢出 - 黑客攻击缓冲区内存并用不该出现的值填写。这通常会导致系统无法运行,形成 DoS 攻击。据估计,有三分之一的恶意攻击起因于缓冲区溢出。
-
IP、MAC、DHCP 欺骗 - 欺骗攻击是指一个设备试图通过伪造数据来冒充另一个设备。欺骗攻击有多种类型。例如,当一台计算机根据另一台计算机的 MAC 地址接受数据包时,就是 MAC 地址欺骗。
社交工程攻击
社会工程攻击是一种尝试诱导个人执行操作或泄露机密信息的访问攻击。特定社交工程攻击类型包括:
-
假托 - 这是指黑客致电某人,企图以谎言取得特许数据的访问权限。例如,攻击者假装需要个人或财务数据才能确认收件人的身份。
-
钓鱼 - 网络钓鱼是指恶意的攻击者伪装成合法、可信的发件人发送欺诈邮件。该邮件旨在诱导收件人在他们的设备上安装恶意软件,或者共享个人信息或财务信息。
-
鱼叉式 网络钓鱼 - 这是针对特定个人或组织机构进行的钓鱼攻击。
-
垃圾邮件 - 黑客可以使用垃圾邮件欺骗用户点击受感染的链接或下载受感染的文件。
-
近距尾随 - 黑客快速跟随获得授权的人员进入安全位置。黑客随后就可以访问安全区域。
-
以物换物(交换条件)- 这是指黑客要求当事方提供个人信息以换取某物(例如免费礼品)。
-
引诱 - 这是指黑客在公共位置(例如公司的洗手间)留下已感染恶意软件的物理设备(例如 USB 闪存驱动器)作为诱饵。捡到物理设备的人将其查到自己的计算机上,无意中就会安装恶意软件。
社交工程工具包 (Social Engineering Toolkit, SET) 用于帮助白帽黑客和其他网络安全专业人员发起社交工程攻击。
拒绝服务攻击
拒绝服务 (DoS) 攻击是广为所知的网络攻击。DoS 攻击会造成对用户、设备或应用的服务中断。DoS 攻击主要有两种来源:
-
恶意格式的数据包 - 这是指攻击者向主机或应用转发恶意格式的数据包并且接收方无法这种意外情况。例如,黑客转发包含该应用无法识别的错误的数据包,或者转发格式不当的数据包。这将导致接收设备崩溃或运行速度非常缓慢。
-
超大流量 - 这是当网络、主机或应用无法处理超量数据时,导致系统崩溃或变得极其缓慢的情形。
三种早期 DoS 攻击包括:
-
死亡之 ping - 攻击者发送死亡之 ping,它是回应请求的 IP 数据包,但是大于最大允许的数据包大小(65,535 字节)。接收主机无法处理这么大的数据包,因此会崩溃。
-
Smurf 攻击 - 在此传统攻击中,黑客向各个收件人发送大量 ICMP 请求。使用多个收件人会放大这种攻击。此外,数据包源地址包含伪造的既定目标的 IP 地址。这是一种反射攻击,因为回应应答将全部反射回目标主机,试图淹没它。自思科 IOS 版本 12.0 起,可以使用 no ip directed-broadcast 命令缓解 Smurf 攻击,这是默认接口设置。更新形式的攻击仍在继续使用反射和放大技术。例如,点击此处了解基于 DNS 的反射和放大攻击。
-
TCP SYN 泛洪攻击 - 在这种类型的攻击中,攻击者会使用伪造的源 IP 地址将许多 TCP SYN 会话请求数据包发送到攻击目标设备。目标设备会向伪造的 IP 地址发送 TCP SYN-ACK 数据包作为应答,并等待 TCP ACK 数据包。但是,响应永远不会送达,最后目标主机会被超量的 TCP 半开连接拖累死。
社交工程示例
咖啡馆相对比较安静,我穿着一身套装坐在空桌子旁。我将公文包放在桌子上并等待合适的受害者。很快,就有一位受害者跟朋友一起进来,并坐在我旁边的桌子上。她将包放在她旁边的座位上,然后将座位朝她旁边挪了挪,而且她的手始终放在她的包上。
几分钟后,她的朋友离开去洗手间。[目标] 剩下一个人,所以我给 Alex 和 Jess 发出信号。Alex 和 Jess 扮作一对夫妻,询问目标是否能给他们拍张照。她非常乐意帮忙。她将手从包上移开,拿起相机来为这 “幸福的一对” 拍照。在她的注意力转移时,我赶紧伸手拿走她的包,然后锁进我的公文包内。在 Alex 和 Jess 离开咖啡馆时,我的受害者仍未注意到她的钱包丢了。然后,Alex 走进附近的停车场。
没过多久,她意识到她的包不见了。她开始有些慌了,急忙四处寻找。这正是我们希望看到的,我问她是否需要帮助。
她问我是否看到了什么。我告诉她没有,但说服她坐下并想一想她的包里有什么。电话。化妆品。一些现金。还有她的信用卡。好极了!
我问她是在哪家银行开的户,然后告诉她我就在这家银行工作。多么幸运啊!我让她放心并保证没事,但是她需要立即取消她的信用卡。我拨打了 “服务中心” 号码(这实际上是 Alex),并且将我的手机递给她。
Alex 在停车场的货车中。在仪表板上,一台 CD 播放机正在播放办公室的噪音。他向目标保证她的卡可以轻松销户,但是要验证她的身份,她需要通过她使用的手机的键盘输入她的 PIN。我的手机和我的键盘。
在我们得到她的 PIN 后,我离开了。如果我们是真的窃贼,我们将可以通过 ATM 取款和 PIN 购买获得其账户访问权。对她来说,幸运的是,这只是一档电视节目。
思科 NFP 框架 - 三个平面
思科 Network Foundation Protection (NFP) 框架为保护网络基础设施提供全面的指南。它们为持续提供服务奠定基础。
NFP 在逻辑上将路由器和交换机分为三个功能区:
-
控制平面 - 负责正确路由数据。控制平面流量包括网络本身运行所需的、设备生成的数据包(例如 ARP 消息交换或 OSPF 路由通告)。
-
路由协议认证 - 路由协议认证或邻居认证可防止路由器接受欺诈性路由更新。大多数路由协议支持邻居认证。
-
控制平面管控 (CoPP) - CoPP 是思科 IOS 的一种功能,旨在允许用户控制网络设备的路由处理器处理的业务 (traffic) 流。CoPP 旨在防止不必要的流量对路由处理器造成负担。CoPP 功能将控制平面视为单独实体,拥有自己的入口(输入)端口和出口(输出)端口。可以建立一组规则并将其与控制平面的入口端口和出口端口关联。
-
AutoSecure - AutoSecure 可以锁定管理平面功能和转发平面服务以及路由器的功能。
-
管理平面 - 负责管理网络单元。管理平面流量由网络设备或网络管理站点使用 Telnet、SSH、TFTP、FTP、NTP、AAA、SNMP、系统日志、TACACS+、RADIUS 和 NetFlow 等进程和协议生成。
-
登录和密码策略 - 限制设备可访问性。限制可访问端口以及允许访问的“用户”和“访问方式”。
-
提供法律通知 - 显示法律通知。这些通知通常由公司的法律顾问制定。
-
确保数据的保密性 - 防止查看或复制本地存储的敏感数据。使用强认证的管理协议,缓解旨在窃取密码和设备配置的保密性攻击。
-
基于角色的访问控制 (Role-based access control, RBAC) - 确保仅为认证用户、组和服务授予访问权限。RBAC 以及认证、授权和审计 (authentication, authorization, and accounting, AAA) 服务提供有效管理访问控制的机制。
-
授权操作 - 限制任何特定用户、组或服务允许的操作和视图。
-
启用管理访问报告 - 记录并审计所有访问。记录访问设备的用户、发生的事件,以及发生时间。
-
数据平面(转发平面)- 负责转发数据。数据平面流量通常包括在终端设备之间转发的、用户生成的数据包。大多数流量经由数据平面通过路由器或交换机传输。
-
阻止不需要的流量或用户 - ACL 可以过滤网络接口上传入或传出的数据包。可基于源地址、目的地址或用户认证来控制访问。
-
降低 DoS 攻击的可能性 - ACL 可用于设定来自不同主机、网络或用户的流量是否可以访问网络。也可以配置 TCP 拦截功能以防止服务器遭受连接请求泛洪攻击。
-
缓解欺骗攻击 - ACL 允许安全专业人员按建议实践,以缓解欺骗攻击。
-
提供带宽控制 - 在慢速链路上实施 ACL 可以防止过多的流量。
-
进行流量分类以保护管理和控制平面 - 可以在 VTY (Virtual TeleType) 线路上应用 ACL。
思科 Catalyst 交换机可以使用集成功能来帮助保护第 2 层基础设施。以下第 2 层安全工具已集成到思科 Catalyst 交换机中:
-
端口安全 - 可防止 MAC 地址欺骗和 MAC 地址泛洪攻击。
-
DHCP 监听 (snooping) - 可防止对 DHCP 服务器和交换机上的客户端攻击。
-
动态 ARP 检查 (DAI) - 通过使用 DHCP 监听表,最大限度降低 ARP 毒化和欺骗攻击的影响,增强 ARP 安全。
-
IP 源保护 - 通过使用 DHCP 监听表防止 IP 地址欺骗。
保护网络设备
如果攻击者获得了路由器的访问权限,可能会危害整个网络的安全和管理。例如,攻击者清除启动配置 erase startup-config
,且将路由器配置为在五分钟后重新加载。当路由器重新启动时,它将没有启动配置。
边缘路由器安全方法
边缘路由器是内部网络和外部网络中间的路由器
-
单路由器方法 - 一台路由器将受保护的网络或内部局域网 (LAN) 连接到互联网。在此设备上配置了所有安全策略。这通常用于小型站点的实施中,例如分支机构和小型办公室、家庭办公室 (SOHO) 站点。在小型网络中,集成多业务路由器 (Integrated Services Routers, ISR) 能够支持所需安全功能,而不会影响路由器的性能。
-
纵深防御方法 - 纵深防御方法比单路由器方法更安全。它在流量进入受保护的 LAN 之前使用多层安全措施。有三个主要防御层:边缘路由器、防火墙和连接到受保护 LAN 的内部路由器。边缘路由器充当第一道防线,并被称为筛选路由器。执行初始流量过滤后,边缘路由器会将去往内部 LAN 的所有连接传递到第二道防线(即防火墙)。通常,防火墙会在边缘路由器过滤的基础上执行进一步过滤。它通过跟踪连接的状态来提供额外访问控制,并充当检查点设备。默认情况下,防火墙拒绝从外部(不受信任)网络向内部(受信任)网络发起连接。但是,它允许内部用户与不受信任的网络建立连接,并允许响应通过防火墙返回。它还可以执行用户认证(认证代理),用户必须通过认证才能获得网络资源访问权限。纵深防御方法中能够使用的设备并不只有路由器。也可以部署其他安全工具,如入侵防御系统(intrusion prevention system,IPS)、Web 安全设备(代理服务器)和邮件安全设备(垃圾邮件过滤)。
-
DMZ 方法 - 纵深防御方法的一种变体。此方法采用一种中间区域,通常称为隔离区 (DMZ)。DMZ 可用于必须支持从互联网或某些其他外部网络访问的服务器。可以在两台路由器之间设置 DMZ,内部路由器连接到受保护网络,外部路由器连接到未受保护的网络。或者,DMZ 可以是单台路由器的一个端口。防火墙位于受保护和未受保护网络之间。防火墙设置为允许从外部(不受信任)网络发起到 DMZ 中的公共服务器的所需连接(例如 HTTP)。防火墙用作 DMZ 中所有设备的主要保护措施。
提高访问安全
R1(config)# security passwords min-length 10
R1(config)# service password-encryption
R1(config)# line vty 0 4
R1(config-line)# exec-timeout 3 30
R1(config-line)# line console 0
R1(config-line)# exec-timeout 3 30
-
默认情况下,最小密码长度为六个字符。要增加最小长度,请使用
security passwords min-length
长度全局配置模式命令。长度 全局配置模式命令启用 OSPFv2。 -
默认情况下,除
enable secret
命令生成的密码之外,所有思科路由器密码都以明文形式存储在路由器启动和运行配置文件中。要加密所有明文密码,请在全局配置模式下使用service password-encryption
命令。使用合适的工具可轻松破解加密。因此,不应指望通过使用此命令可以保护配置文件免受严重攻击。 -
默认情况下,管理接口将在最近一个会话活动后保持 10 分钟活动登录状态。要禁用无人值守的连接,请在线路配置模式下,为配置允许访问的每个线路使用
exec-timeout <minutes> [seconds]
命令。
加密密码算法
R2(config)# enable secret cisco12345
R2(config)# do show run | include enable
enable secret 5 $1$cam7$99EfzkvmJ5h1gEbryLVRy.
R1(config)# enable secret ?
0 Specifies an UNENCRYPTED password will follow
5 Specifies a MD5 HASHED secret will follow
8 Specifies a PBKDF2 HASHED secret will follow
9 Specifies a SCRYPT HASHED secret will follow
LINE The UNENCRYPTED (cleartext) 'enable' secret
level Set exec level password
- 默认是MD5加密,现在MD5很容易破解,所以思科 IOS 15.3(3)M 中引入了第 8 类和第 9 类。第 8 类和第 9 类基于 SHA 加密。
使用第9类密码必须要指定是第9类且是已经过加密的密文,否则:
R1(config)# enable secret 9 cisco12345
ERROR: The secret you entered is not a valid encrypted secret.
To enter an UNENCRYPTED secret, do not specify type 9 encryption.
When you properly enter an UNENCRYPTED secret, it will be encrypted.
不过你可以这样来启用加密:
enable algorithm-type {md5 | scrypt | sha256 } secret unencrypted-password
保护 Console 口访问
R1(config)# username Bob algorithm-type scrypt secret cisco54321
R1(config)# line con 0
R1(config-line)# login local
R1(config-line)# exit
R1(config)# line aux 0
R1(config-line)# login local
R1(config-line)# exit
R1(config)# line vty 0 4
R1(config-line)# login local
R1(config-line)# transport input ssh
默认情况下,控制台和辅助端口无需密码即可进行管理访问。此外,在控制台、VTY 和辅助线路上配置的 password 命令只能使用第 7 类密码。因此,您应使用 login local 命令为控制台和辅助线路配置用户名/密码认证。此外,仅应为 SSH 访问配置 VTY 线路。
注意:有些思科设备有 5 条以上的 VTY 线路。在配置密码之前,核对运行配置中的 VTY 线路数量。例如,思科交换机支持最多 16 个同步 VTY 线路,编号为 0 到 15。
配置登录增强功能
R1(config)# login block-for 15 attempts 5 within 60
R1(config)# ip access-list standard PERMIT-ADMIN
R1(config-std-nacl)# remark Permit only Administrative hosts
R1(config-std-nacl)# permit 192.168.10.10
R1(config-std-nacl)# permit 192.168.11.10
R1(config-std-nacl)# exit
R1(config)# login quiet-mode access-class PERMIT-ADMIN
R1(config)# login delay 10
R1(config)# login on-success log
R1(config)# login on-failure log
login block-for seconds attempts tries within seconds
login block-for 命令可用于在达到指定失败登录尝试次数后禁用登录,从而防御 DoS 攻击。
login quiet-mode access-class {acl-name|acl-number}
login quiet-mode 命令用于映射到一个指定允许的主机的 ACL。这可确保仅授权主机才能尝试登录路由器。
login delay seconds
login delay 命令用于指定用户在两次登录失败尝试之间必须等待的秒数。
login on-success log [every login]
login on-failure log [every login]
login on-success 和 login on-failure 命令用于记录成功和失败登录尝试。
注意:仅当使用本地数据库对本地和远程访问进行认证时,才能启用这些登录增强功能。如果线路仅配置了密码认证 (password authentication),则不能启用增强型登录功能。
启用登录增强功能
login block-for seconds attempts tries within seconds
R1(config)# login block-for 120 attempts 5 within 60
login block-for 命令用于监控登录设备的活动,并在两种模式下运行:
-
正常模式 - 这也称为监控模式。路由器将记录确定的时间段内失败的登录尝试次数。
-
静默模式 - 这也称为静默期。如果登录失败次数超过配置的阈值,则在 login block-for 命令指定的时间内,系统将拒绝使用 Telnet、SSH 和 HTTP 进行的所有登录尝试。
当启用静默模式时,所有登录尝试(包括合法的管理访问)都会被拒绝。如果要为关键主机(如特定管理主机)提供随时访问的权限,则可使用 ACL 覆盖此行为。
R1(config)# ip access-list standard PERMIT-ADMIN
R1(config-std-nacl)# remark Permit only Administrative hosts
R1(config-std-nacl)# permit 192.168.10.10
R1(config-std-nacl)# permit 192.168.11.10
R1(config-std-nacl)# exit
R1(config)# login quiet-mode access-class PERMIT-ADMIN
- 使用 login quiet-mode access-class 命令创建并标识 ACL。在静默模式期间,仅 ACL 中指定的主机有权访问设备。
R1(config)# login delay 3
- 实施 login block-for 命令时,在登录尝试间隔中会自动调用一秒延迟。要为攻击者增加难度,可以使用 login delay 命令增加登录尝试间隔的延迟时间。
记录失败的尝试 (syslog)
R1(config)# login on-success log [every login]
R1(config)# login on-failure log [every login]
R1(config)# security authentication failure rate threshold-rate log
- 前两个命令(login on-success log 和 login on-failure log)可生成成功和失败登录尝试的系统日志 (syslog) 消息。使用 [every login] 语法(其中默认值为 1 次尝试)可以指定生成日志记录消息之前的登录尝试次数。有效值范围为 1 至 65,535。
作为 login on-failure log 命令的替代选项,security authentication failure rate 命令可配置为在超出登录失败率时生成日志消息。
R1# show login
A login delay for 10 sec is applied.
Quiet-Mode access list PERMIT-ADMIN is applied.
Router enabled to watch for login Attacks.
If more than 5 login failures occur in 60 sec or less,
login will be disabled for 120 secs.
Router presently in Normal-Mode.
Current Watch Window
Time remaining: 5 seconds.
Login failures for current window: 4.
Total login failures:4.
- 使用 show login 命令可验证 login block-for 命令设置和当前模式。
R1# show login failures
Total failed logins: 22
Detailed information about last 50 failures
Username SourceIPAddr lPort Count TimeStamp
admin 1.1.2.1 23 5 15:38:54 UTC Wed Dec 10 2008
Admin 10.10.10.10 23 13 15:58:43 UTC Wed Dec 10 2008
admin 10.10.10.10 23 3 15:57:14 UTC Wed Dec 10 2008
cisco 10.10.10.10 23 1 15:57:21 UTC Wed Dec 10 2008
- show login failures 命令显示有关失败尝试的其他信息,例如发起失败的登录尝试的 IP 地址。
配置SSH
在配置 SSH 之前,路由器必须满足四个要求:
-
运行支持 SSH 的思科 IOS 版本
-
使用唯一的主机名
-
包含网络的正确域名
-
配置成本地认证或 AAA 服务
R1# conf t
R1(config)# ip domain-name span.com
R1(config)# crypto key generate rsa general-keys modulus 1024
The name for the keys will be: R1.span.com
% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 2 seconds)
R1(config)#
*Feb 16 21:18:41.977: %SSH-5-ENABLED: SSH 1.99 has been enabled
R1(config)# ip ssh version 2
R1(config)# username Bob algorithm-type scrypt secret cisco54321
R1(config)# line vty 0 4
R1(config-line)# login local
R1(config-line)# transport input ssh
R1(config-line)# end
步骤 1:在全局配置模式下,使用 ip domain-name [domain-name] 命令配置网络的 IP 域名。domain-name命令可重新配置超时时间。
步骤 2:必须生成单向密钥以便路由器可以加密 SSH 流量。这些密钥称为非对称密钥。思科 IOS 使用 Rivest、Shamir 和 Adleman (RSA) 算法生成密钥。要创建 RSA 密钥,请在全局配置模式下使用 crypto key generate rsa general-keys modulus [modulus_size] 命令。modulus_size 命令可重新配置超时时间。该模数确定 RSA 密钥大小并且可配置为 360 位至 4,096 位。模数越大,RSA 密钥越安全。但是,密钥模数值越大,生成、加密和解密花费的时间也会略微延长。推荐的模数密钥长度不低于 1,024 位。
注意:生成 RSA 密钥之后,会自动启用 SSH。
步骤 3:尽管在技术上并无要求,但因为思科路由器默认为 SSH 版本 2,您可以使用 ip ssh version 2 全局配置命令手动配置版本 2。原始版本存在已知漏洞。
步骤 4:确保存在有效的本地数据库用户名条目。如果没有,请使用 username name algorithm-type scrypt secret secret命令创建一个条目。
步骤 5. 使用 line vty 命令 login local 和 transport input ssh 启用 VTY 入站 SSH 会话。
R1# show crypto key mypubkey rsa
% Key pair was generated at: 21:18:41 UTC Feb 16 2015
Key name: R1.span.com
Key type: RSA KEYS
Storage Device: not specified
Usage: General Purpose Key
Key is not exportable.
Key Data:
30819F30 0D06092A 864886F7 0D010101 05000381 8D003081 89028181 00CF35DB
A58A1BDB F7C7E600 F189C2F3 2EC6E584 D923EE5B 71841D98 B5472A03 D19CD620
ED125825 5A58412B B7F29234 DE2A1809 6C421AC3 07F298E6 80BE149D 2A262E13
74888DAF CAC8F187 B11111AF A413E76F 6C157CDF DFEF0D82 2961B58C BE1CAD21
176E82B9 6D81F893 06E66C93 94E1C508 887462F6 90AC63CE 5E169845 C1020301 0001
% Key pair was generated at: 21:18:42 UTC Feb 16 2015
Key name: R1.span.com.server
Key type: RSA KEYS
Temporary key
Usage: Encryption Key
Key is not exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00AB914D 8172DFBE
DE57ACA9 7B844239 1F3B5942 3943AC0D F54E7746 3895CF54 606C3961 8A44FEB3
1A019F27 D9E71AAE FC73F423 A59CB8F5 50289272 3392CEBC 4C3CBD6D DB9233DE
9DDD9DAD 79D56165 4293AA62 FD1CBAB2 7AB859DC 2890C795 ED020301 0001
R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# crypto key zeroize rsa
% All keys will be removed.
% All router certs issued using these keys will also be removed.
Do you really want to remove these keys? [yes/no]: yes
- 要验证 SSH 并显示生成的密钥,请在特权 EXEC 模式下使用 show crypto key mypubkey rsa 命令。如果存在现有密钥对,建议使用 crypto key zeroize rsa 命令进行覆盖。如果存在现有密钥对,建议使用 crypto key zeroize rsa 命令删除。
修改 SSH 配置
R1# show ip ssh
SSH Enabled - version 2.0
Authentication methods:publickey,keyboard-interactive,password
Authentication timeout: 120 secs; Authentication retries: 3
<省略部分输出>
R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip ssh time-out 60
R1(config)# ip ssh authentication-retries 2
R1(config)# ^Z
R1#
*Feb 16 21:23:51.237: %SYS-5-CONFIG_I: Configured from console by console
R1# show ip ssh
SSH Enabled - version 2.0
Authentication methods:publickey,keyboard-interactive,password
Authentication timeout: 60 secs; Authentication retries: 2
<省略部分输出>
- 要验证可选 SSH 命令设置,请使 show ip ssh 命令。您还可以修改默认 SSH 超时间隔和认证尝试次数。使用 ip ssh time-out seconds 全局配置模式命令修改超时间隔(默认为 120 秒)。这会配置 SSH 可用于对用户进行认证的时间(以秒为单位)。进行认证后,EXEC 会话启动,且会应用为 VTY 配置的标准 exec-timeout 值。
默认情况下,正在登录的用户在断开连接之前可尝试输入正确的密码三次。要配置不同的连续 SSH 重试次数,请使用 ip ssh authentication-retries [integer] 全局配置模式命令。整数全局配置模式命令启用 OSPFv2。
限制命令可用性
默认情况下,思科 IOS 软件 CLI 具有两种命令访问级别:
-
用户 EXEC 模式(权限级别 1)- 提供最低 EXEC 模式用户权限,并仅允许在 router> 提示符后使用用户级别 (user-level) 命令。
-
特权 EXEC 模式(权限级别 15)- 在 router# 提示符后使用所有启用级 (enable-level) 命令。
16 个权限级别
- 0 级:预定义的用户级访问权限。很少使用,但包含五个命令:disable、enable、exit、help 和 logout。
- 级别 1:使用路由器提示符 Router> 登录的默认级别。用户无法进行任何更改或查看运行中的配置文件。
- 级别 2-14:可为用户级别权限进行自定义。来自较低级别的命令可以上移至另一个较高级别,来自较高级别的命令也可以下移至较低级别。
- 级别 15:为启用模式权限保留的级别(enable 命令)。用户可以更改配置,并查看配置文件。
共有 16 个权限级别。权限级别越高,用户具有的路由器访问权限越多。在较低权限级别可用的命令也可在较高级别执行。
privilege mode {level level | reset} command
要将命令分配到自定义权限级别,请使用 privilege 全局配置模式命令
配置和分配权限级别
R1# conf t
R1(config)# !Level 5 and SUPPORT user configuration
R1(config)# privilege exec level 5 ping
R1(config)# enable algorithm-type scrypt secret level 5 cisco5
R1(config)# username SUPPORT privilege 5 algorithm-type scrypt secret cisco5
R1(config)# !Level 10 and JR-ADMIN user configuration
R1(config)# privilege exec level 10 reload
R1(config)# enable algorithm-type scrypt secret level 10 cisco10
R1(config)# username JR-ADMIN privilege 10 algorithm-type scrypt secret cisco10
R1(config)# !Level 15 and ADMIN user configuration
R1(config)# enable algorithm-type scrypt secret level 15 cisco123
R1(config)# username ADMIN privilege 15 algorithm-type scrypt secret cisco123
要配置具有特定命令的权限级别,使用 privilege exec level level [command]
上面的例子中演示了:
-
权限级别 5 有权使用对预定义级别 1 可用的所有命令和 ping 命令。
-
权限级别 10 有权使用对级别 5 可用的所有命令以及 reload 命令。
-
权限级别 15 为预定义,无需明确配置。此权限级别有权使用所有命令,包括查看和更改配置。
可采用两种方法将 enable 密码 分配不同的权限:
-
要分配给授予特定权限级别的用户,请使用 username [name] privilege [level] secret password 全局配置模式命令name privilege level secret password全局配置模式命令
-
要分配给权限级别,请使用 enable secret level [level] [password] 全局配置模式命令level password全局配置模式命令,也就是说 enable 5 要知道密码才可以用。
注意:username secret 和 enable secret 命令都配置了第 9 类加密。
R1> enable 5
Password: <cisco5>
R1# show privilege
Current privilege level is 5
R1# ping 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
R1# reload
Translating "reload"
% Bad IP address or host name
Translating "reload"
% Unknown command or computer name, or unable to find computer address
R1# enable 10
Password: <cisco10>
R1# show privilege
Current privilege level is 10
R1# ping 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
R1# reload
System configuration has been modified. Save? [yes/no]: ^C
R1# show running-config
^
% Invalid input detected at '^' marker.
R1# enable 15
Password:
R1# show privilege
Current privilege level is 15
R1# show running-config
Building configuration...
Current configuration : 1979 bytes
!
! Last configuration change at 15:30:07 UTC Tue Feb 17 2015
!
version 15.4
<省略部分输出>
使用 username 命令将权限级别分配给特定用户。使用 enable secret 命令将权限级别分配给特定 EXEC 模式密码。例如,为 SUPPORT 用户分配了权限级别 5,密码为 cisco5。如果知道启用密码为 cisco5,则任何用户均可访问权限级别 5。
基于角色的视图
视图英文是(View),基于角色的 CLI 提供三种类型的视图,用来表明哪些命令可用:
- 根视图 - 要配置系统的任何视图,管理员必须位于根视图中。根视图与具有 15 级权限的用户具有相同的访问权限。但是,根视图与 15 级用户不同。仅根视图用户可以配置新的视图,并在现有视图中添加或删除命令。
- CLI 视图 - 一组特定的命令可以捆绑到 CLI 视图中。与权限级别不同的是,CLI 视图没有命令层次结构且没有更高或更低的视图。必须为每个视图分配与该视图关联的所有命令。视图不会从任何其他视图继承命令。此外,可以在多个视图中使用相同的命令。
- 超级视图 - 超级视图包含一个或多个 CLI 视图。管理员可以定义接受的命令以及显示的配置信息。超级视图允许网络管理员一次为用户和用户组分配多个 CLI 视图,而不必为每个用户分配单个 CLI 视图并使所有命令与该 CLI 视图关联。
超级视图(多个捆绑)具有多个特殊的特征:
-
单个 CLI 视图可在多个超级视图中共享。
-
无法为超级视图配置命令。管理员必须将命令添加到 CLI 视图并将相应 CLI 视图添加到超级视图。
-
登录到超级视图的用户可以访问为属于超级视图的任何 CLI 视图配置的所有命令。
-
每个超级视图都有密码,用于在超级视图之间切换,或从 CLI 视图切换到超级视图。
-
删除超级视图不会删除关联的 CLI 视图。CLI 视图仍可用于分配给另一个超级视图。
配置基于角色的视图
必须先使用 aaa new-model 命令启用 AAA,管理员才能创建视图。要配置和编辑视图,管理员必须使用 enable view 特权 EXEC 命令以 root view 登录。此外,还可以使用 enable view root 命令。系统提示时,输入启用加密密码 (enable secret password)。
创建和管理特定视图包括五个步骤:
步骤 1:使用 aaa new-model 全局配置模式命令启用 AAA。退出并使用 enable view 命令进入根视图。
enable [view [view-name]]
- 此命令用于进入 CLI 视图。输入名称 root 或特定视图名称。如果未指定名称,则假定为 root。
- 在进入视图之前,必须配置 aaa new-model 命令。
步骤 2:使用 parser view [view-name] 全局配置模式命令来创建视图。view-name 全局配置模式命令启用 OSPFv2。这会启用视图配置模式。不包括根视图,最大视图数限制为一共 15 个。
parser view [view-name]
- 创建一个视图并进入视图配置模式。
步骤 3:使用 secret [encrypted-password] 视图配置模式命令将加密密码 (secrete password) 分配给视图。encrypted-password 视图配置模式命令将加密密码分配给视图。
secret [encrypted-password]
- 设置密码,保护对视图的访问。
- 创建视图后必须立即创建密码;否则,系统将显示一条错误信息。
步骤 4:在视图配置模式下,使用 commands parser-mode命令将命令分配给所选视图。
commands parser mode {include | include-exclusive | exclude} [all]
[interface interface-name | command]
命令 | 说明 |
---|---|
commands | 将命令或接口添加到视图中。 |
parser-mode | 存在指定命令的模式;例如,EXEC 模式。 |
include | 将一个命令或接口添加到视图中,并允许将相同的命令或接口添加到其他视图中。 |
include-exclusive | 将一个命令或接口添加到视图中,并拒绝将相同的命令或接口添加到所有其他视图中。 |
exclude | 从视图中排除某个命令或接口。 |
all | 这是一种 “通配符”,用于允许指定配置模式中以相同关键字开头的每一个命令,或允许指定接口的每一个子接口作为视图的一部分。 |
interface interface-name | 添加到视图中的接口。 |
command | 添加到视图中的命令。 |
步骤 5. 键入 exit 命令退出视图配置模式。
一个配置视图的例子:
R1(config)# aaa new-model
R1(config)# parser view SHOWVIEW
R1(config-view)# secret ?
0 Specifies an UNENCRYPTED password will follow
5 Specifies an ENCRYPTED secret will follow
LINE The UNENCRYPTED (cleartext) view secret string
R1(config-view)# secret cisco
R1(config-view)# commands exec include show
R1(config-view)# exit
R1(config)# parser view VERIFYVIEW
R1(config-view)# commands exec include ping
% Password not set for the view VERIFYVIEW
R1(config-view)# secret cisco5
R1(config-view)# commands exec include ping
R1(config-view)# exit
R1(config)# parser view REBOOTVIEW
R1(config-view)# secret cisco10
R1(config-view)# commands exec include reload
R1(config-view)# exit
R1# show running-config
< 省略部分输出 >
parser view SHOWVIEW
secret 5 $1$GL2J$8njLecwTaLAc0UuWo1/Fv0
commands exec include show
!
parser view VERIFYVIEW
secret 5 $1$d08J$1zOYSI4WainGxkn0Hu7lP1
commands exec include ping
!
parser view REBOOTVIEW
secret 5 $1$L7lZ$1Jtn5IhP43fVE7SVoF1pt.
commands exec include reload
!
配置基于角色的 CLI 超级视图
view [view-name] 命令用于将命令分配到超级视图,除此之外, 配置超级视图的步骤基本上与配置 CLI 视图的步骤相同。view-name 命令用于将命令分配到超级视图除外。管理员必须在根视图中才能配置超级视图。要确认所使用的根视图,请使用 enable view 或 enable view root 命令。系统提示时,输入 secret 密码。
创建和管理超级视图包括四个步骤:
步骤 1:使用 parser view view-name superview 命令创建视图,并进入超级视图配置模式。
parser view [view-name] superview
- 将关键字 superview 附加到 parser view 命令,可以创建超级视图并进入视图配置模式。
步骤 2:encrypted-password使用 secret encrypted-password 命令为试图分配 secret password。
secret [encrypted-password]
- 设置密码,保护对超级视图的访问。
- 创建视图后必须立即创建密码;否则,系统将显示一条错误信息。
步骤 3:在视图配置模式下,使用 view view-name 命令将命令分配给所选视图。
view [view-name]
- 将 CLI 视图添加到超级视图中。
- 可以添加多个视图。
- 可以在超级视图之间共享视图。
步骤 4:键入 exit 命令退出超级视图配置模式。
R1(config)# parser view USER superview
R1(config-view)# secret cisco
R1(config-view)# view SHOWVIEW
R1(config-view)# exit
R1(config)# parser view SUPPORT superview
R1(config-view)# secret cisco1
R1(config-view)# view SHOWVIE
% Invalid view name SHOWVIE
R1(config-view)# view SHOWVIEW
R1(config-view)# view VERIFYVIEW
R1(config-view)# exit
R1(config)# parser view JR-ADMIN superview
R1(config-view)# secret cisco2
R1(config-view)# view SHOWVIEW
R1(config-view)# view VERIFYVIEW
R1(config-view)# view REBOOTVIEW
R1(config-view)# exit
要访问现有视图,请在用户模式下输入 enable view view-name 命令,并输入已分配给自定义视图的密码。使用相同的命令从一个视图切换到另一个视图。
验证基于角色的 CLI 视图
R1# enable view USER
Password: <cisco1>
R1# ?
Exec commands:
<0-0>/<0-4> Enter card slot/sublot number
do-exec Mode-independent "do-exec" prefix support
enable Turn on privileged commands
exit Exit from the EXEC
show Show running system information
R1# show ?
banner Display banner information
flash0: display information about flash0: file system
flash1: display information about flash1: file system
flash: display information about flash: file system
parser Display parser information
usbflash0: display information about usbflash0: file system
R1# enable view SUPPORT
Password: <cisco1>
R1# ?
Exec commands:
<0-0>/<0-4> Enter card slot/sublot number
do-exec Mode-independent "do-exec" prefix support
enable Turn on privileged commands
exit Exit from the EXEC
ping Send echo messages
show Show running system information
R1# enable view JR-ADMIN
Password:
R1# ?
Exec commands:
<0-0>/<0-4> Enter card slot/sublot number
do-exec Mode-independent "do-exec" prefix support
enable Turn on privileged commands
exit Exit from the EXEC
ping Send echo messages
reload Halt and perform a cold restart
show Show running system information
R1# show parser view
Current view is 'JR-ADMIN'
R1# enable view
Password:
R1# show parser view
Current view is 'root'
R1# show parser view all
Views/SuperViews Present in System:
SHOWVIEW
VERIFYVIEW
REBOOTVIEW
USER *
SUPPORT *
JR-ADMIN *
-------(*) represent superview-------
在 enable view 命令中不指定视图时,可以以 root 用户身份登录。在Root View中,使用 show parser view all 命令查看所有视图的摘要。请注意星号如何标识超级视图。
思科 IOS 恢复配置功能
如果有人恶意或无意重新格式化闪存或清除非易失性随机访问存储器(nonvolatile random-access memory,NVRAM)中的启动配置文件,利用恢复配置功能可以更快实现恢复。该功能可维护路由器 IOS 映像文件的安全工作副本以及运行中配置文件的副本。用户无法删除这些安全文件,且这些文件称为主 bootset。
- 主 bootset 中的配置文件是首次启用该功能时路由器中运行配置的副本。
- 该功能可保护最小有效数量的文件,以保留持久的存储空间。保护思科 IOS 主映像文件不需要额外的空间。
- 该功能会自动检测映像或配置版本不匹配的情况。
- 只有本地存储可用于保护文件,这消除了在 TFTP 服务器上存储多个映像和配置的可扩展性维护挑战。
- 该功能只能通过控制台会话禁用。
- 该功能仅适用于支持 PCMCIA ATA 闪存接口的系统。
启用 IOS 映像恢复功能
R1# conf t
R1(config)# secure boot-image
*Feb 18 17:57:29.035: %IOS_RESILIENCE-5-IMAGE_RESIL_ACTIVE:
Successfully secured running image
R1(config)# secure boot-config
*Feb 18 18:02:29.459: %IOS_RESILIENCE-5-CONFIG_RESIL_ACTIVE:
Successfully secured config archive [flash0:.runcfg-20150218-180228.ar]
R1(config)# exit
R1# show secure bootset
IOS resilience router id FTX1636848Z
IOS image resilience version 15.4 activated at 18:02:04 UTC Wed Feb
18 2015
Secure archive flash0:c1900-universalk9-mz.SPA.154-3.M2.bin type is
image (elf) []
file size is 75551300 bytes, run size is 75730352 bytes
Runnable image, entry point 0x81000000, run from ram
IOS configuration resilience version 15.4 activated at 18:02:29 UTC
Wed Feb 18 2015
Secure archive flash0:.runcfg-20150218-180228.ar type is config
configuration archive size 2182 bytes
要保护 IOS 映像并启用思科 IOS 映像恢复,请使用 secure boot-image 全局配置模式命令。
- 首次启用时,系统将保护正在运行的思科 IOS 映像并生成一个日志条目。只能使用该命令的 no 形式通过控制台会话禁用思科 IOS 映像恢复功能。仅当将系统配置为从具有 ATA 接口的闪存驱动器运行映像时,此命令才正常运行。此外,必须从要作为主设备进行保护的永久存储器来加载运行映像。无法保护从远程位置(例如 TFTP 服务器)加载的映像。
使用 secure boot-config 全局配置模式命令获取路由器运行配置的快照,并将其安全存档在永久存储器中。
- 控制台上将显示一条日志消息,通知用户配置恢复已激活。配置存档将隐藏,且无法直接从 CLI 提示符查看或删除。您可以重复使用 secure boot-config 命令在发出新配置命令后,将配置存档升级到更新的版本。
CLI 发出的 dir 不会显示受保护的文件。这是因为思科 IOS 文件系统可防止列出受保护的文件。运行映像和运行配置存档在 dir 命令输出中不可见。使用 show secure bootset 命令验证存档是否存在。
主 Bootset 映像
Router# reload
<Issue Break sequence, if necessary>
rommon 1 > dir flash0:
program load complete, entry point: 0x80803000, size: 0x1b340
Directory of flash0:
4 75551300 -rw- c1900-universalk9-mz.SPA.154-3.M2.bin
<省略部分输出>
rommon 2 > boot flash0:c1900-universalk9-mz.SPA.154-3.M2.bin
<Router reboots with specified image>
Router> enable
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# secure boot-config restore flash0:rescue-cfg
ios resilience:configuration successfully restored as flash0:rescue-cfg
Router(config)# end
Router# copy flash0:rescue-cfg running-config
Destination filename [running-config]?
%IOS image resilience is already active
%IOS configuration resilience is already active
2182 bytes copied in 0.248 secs (8798 bytes/sec)
在路由器已被篡改后,从受保护的存档恢复主 bootset:
步骤 1:使用 reload 命令重新加载路由器。若必要,发出中断序列以进入 ROMmon 模式。
步骤 2:从 ROMmon 模式,输入 dir 命令以列出包含受保护 bootset 文件的设备中的内容。
步骤 3:使用受保护 bootset 映像启动路由器,需使用 boot 命令后跟闪存位置(例如 flash0)、冒号和步骤 2 中找到的文件名。
步骤 4:进入全局配置模式,并使用 secure boot-config restore 命令后跟闪存位置(例如 flash0)、冒号和所选文件名,将受保护的配置恢复到所选文件名。在此图中,使用文件名 rescue-cfg。
步骤 5. 退出全局配置模式并发出 copy 命令,以将恢复的配置文件复制到运行配置中。
配置安全复制
思科 IOS 恢复功能提供一种方法,可在本地保护设备上的 IOS 映像和配置文件。使用安全复制协议(Secure Copy Protocol,SCP)功能可远程复制这些文件。SCP 依赖于 SSH 并要求配置 AAA 认证和授权,以便路由器可以确定用户是否具有正确的权限级别。
将使用本地 AAA 的路由器配置为 SCP 服务器端:
R1(config)# ip domain-name span.com
R1(config)# crypto key generate rsa general-keys modulus 2048
R1(config)# username Bob privilege 15 algorithm-type scrypt secret cisco12345
R1(config)# aaa new-model
R1(config)# aaa authentication login default local
R1(config)# aaa authorization exec default local
R1(config)# ip scp server enable
步骤 1:如果尚未配置 SSH,则进行配置。
步骤 2:对于本地认证,请配置至少一个具有权限级别 15 的用户。
步骤 3:使用 aaa new-model 全局配置模式命令启用 AAA。
步骤 4:使用 aaa authentication login default local 命令指定用于认证的本地数据库。
步骤 5. 使用 aaa authorization exec default local 命令配置命令授权。在本示例中,所有本地用户都有权访问 EXEC 命令。
步骤 6. 使用 ip scp server enable 命令启用 SCP 服务器端功能。
现在,R1 是 SCP 服务器,且将使用 SSH 连接接受来自经认证和授权用户的受保护的副本。传输可源自任何 SCP 客户端,无论该客户端是另一个路由器、交换机还是工作站。
R2# copy flash0:R2backup.cfg scp:
Address or name of remote host []? 10.1.1.1
Destination username [R2]? Bob
Destination filename [R2backup.cfg]?
Writing R2backup.cfg
Password: <cisco12345>
!
1381 bytes copied in 8.596 secs (161 bytes/sec)
- 在 R2 上,使用 copy 命令。首先指定源文件位置 (flash0:R2backup.cfg),然后指定目的地 (scp:)。回答一系列提示,与 R1 上的 SCP 服务器建立连接。
R1# debup ip scp
Incoming SCP debugging is on
R1#
*Feb 18 20:37:15.363: SCP: [22 -> 10.1.1.2:61656] send <OK>
*Feb 18 20:37:15.367: SCP: [22 <- 10.1.1.2:61656] recv C0644 1381 R2backup.cfg
*Feb 18 20:37:15.367: SCP: [22 -> 10.1.1.2:61656] send <OK>
*Feb 18 20:37:15.479: SCP: [22 <- 10.1.1.2:61656] recv 1381 bytes
*Feb 18 20:37:15.479: SCP: [22 <- 10.1.1.2:61656] recv <OK>
*Feb 18 20:37:15.479: SCP: [22 -> 10.1.1.2:61656] send <OK>
*Feb 18 20:37:15.483: SCP: [22 <- 10.1.1.2:61656] recv <EOF>
- 在 R1 上,可以输入 debug ip scp 命令,以监测传输操作。最常见的认证问题是用户名/密码组合错误。如果没有使用 privilege 15 关键字在 SCP 服务器上配置用户名/密码组合,则认证也会失败。
恢复路由器密码
如果忘了密码,就恢复密码把,有些机器不一样,点击此处了解密码恢复程序的完整列表,通常都是:
步骤 | 动作 |
---|---|
步骤 1: | 连接到控制台端口。 |
步骤 2: | 记录配置寄存器的设置。 |
步骤 3: | 重新启动路由器。 |
步骤 4: | 发布中断序列。 |
步骤 5: | 使用 confreg 0x2142 命令更改默认配置寄存器。 |
步骤 6: | 重新启动路由器。 |
步骤 7: | 按 Ctrl-C 跳过初始设置程序。 |
步骤 8: | 让路由器进入特权 EXEC 模式。 |
步骤 9: | 将启动配置复制到运行配置中。 |
步骤 10: | 确认配置。 |
步骤 11: | 更改启用加密密码。 |
步骤 12: | 启用所有接口。 |
步骤 13: | 将配置寄存器恢复为步骤 2 中记录的原始设置。使用 config-register 全局配置命令。 |
步骤 14: | 保存配置更改。 |
密码恢复
如果有人有机会物理访问路由器,他们可能会通过密码恢复程序获得对该设备的控制。如果执行正确,此程序会使路由器配置保持不变。如果攻击者没有进行重大更改,则此类攻击很难检测出来。
管理员可以通过使用 no service password-recovery 全局配置模式命令缓解此潜在安全漏洞。此命令是隐藏的思科 IOS 命令,没有任何参数或关键字。如果使用 no service password-recovery 命令配置路由器,则会禁用对 ROMmon 模式的所有访问。
R1(config)# no service password-recovery
WARNING:
Executing this command will disable password recovery
mechanism.
Do not execute this command without another plan for
password recovery.
Are you sure you want to continue? [yes/no]: yes
- 输入 no service password-recovery 命令时,系统会显示一条警告消息,且必须先确认才能启用该功能。
R1# show running-config
Building configuration...
Current configuration : 836 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
no service password-recovery
- 配置时,show running-config 命令会显示 no service password-recovery 语句
System Bootstrap, Version 12.4(13r)T, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 2006 by cisco Systems, Inc.
PLD version 0x10
GIO ASIC version 0x127
c1841 platform with 131072 Kbytes of main memory
Main memory is configured to 64 bit mode with parity disabled
PASSWORD RECOVERY FUNCTIONALITY IS DISABLED
program load complete, entry point: 0x8000f000, size:0xcb80
- 当路由器启动时,初始启动序列会显示一条消息,指出密码恢复功能被禁用。
要在输入 no service password-recovery 命令后恢复设备,请在启动期间在解压缩映像后五秒内启动中断序列。系统会提示您确认中断键操作。确认操作后,系统将完全清除启动配置,启用密码恢复程序,且路由器将使用工厂默认配置启动。如果您未确认中断操作,在启用 no service password-recovery 命令的情况下路由器将正常启动。
注意:如果路由器闪存由于损坏或删除而不包含有效思科 IOS 映像,则无法使用 ROMmon xmodem 命令加载新的闪存映像。要修复路由器,管理员必须从闪存 SIMM 或 PCMCIA 卡上获取新的思科 IOS 映像。但是,如果管理员有权访问 ROMmon,就可以使用 TFTP 服务器将 IOS 文件恢复到闪存中。
系统日志简介
从联网的设备访问系统消息的最常用方法是使用系统日志 (syslog) 协议(RFC 5424 中对其进行了描述)。系统日志 (syslog) 使用用户数据报协议(User Datagram Protocol,UDP)端口 514 将事件通知消息通过 IP 网络发送到事件消息收集器 (collector)
系统日志操作
思科路由器可对有关配置更改、ACL 违规、接口状态和许多其他类型事件的信息进行日志记录。可将思科路由器配置为将系统日志 (syslog) 发送到多个不同设备:
-
日志记录缓冲区 - 消息会在路由器内存中存储一段时间。但是,重启路由器时,事件会被清除。
-
控制台 - 默认情况下,控制台日志记录处于打开状态。当管理员激活接口时,系统日志 (syslog) 消息会发送到控制台线路。
-
终端线路 - 可配置已启用的 EXEC 会话以便在任何终端线路上接收日志消息。
-
系统日志 (syslog) 服务器 - 可以对思科路由器进行配置,以便将日志消息转发到外部系统日志 (syslog) 服务。
系统日志消息
级别 | 关键字 | 说明 | 定义 | |
---|---|---|---|---|
最高级别 | 0 | emergencies | 系统不可用 | LOG_EMERG |
1 | alerts | 需要立即采取措施 | LOG_ALERT | |
2 | critical | 存在高危情况 | LOG_CRIT | |
3 | errors | 存在错误情况 | LOG_ERR | |
4 | warnings | 存在警告情况 | LOG_WARNING | |
5 | notifications | 正常但比较重要的情况 | LOG_NOTICE | |
6 | informational | 仅信息性消息 | LOG_INFO | |
最低级别 | 7 | debugging | 调试消息 | LOG_DEBUG |
配置系统日志记录
配置系统日志记录:
步骤 1:使用 logging host 命令设置目的日志记录主机(服务器)
logging host [hostname | ip-address]
步骤 2:(可选)使用 logging trap 命令设置日志严重性
logging trap [level]
- [level] : 将传到系统日志 (syslog) 服务器的消息记录限制为指定级别及以下。您可以输入级别编号(0 到 7)或级别名称。
步骤 3:使用 logging source-interface 命令设置源接口。此命令可指定系统日志 (syslog) 数据包包含特定接口的 IPv4 或 IPv6 地址,而不考虑数据包从哪个接口离开路由器。
logging source-interface [interface-type] [interface-number]
参数 | 说明 |
---|---|
interface-type | 指定接口类型。 |
interface-number | 指定接口编号(例如,0/1)。 |
步骤 4:使用 logging on 命令将记录发送到所有已启用目的地(服务器)
logging on
一个完整的例子:
R1(config)# logging host 10.2.2.6
000051: *Feb 19 12:45:32.491: %SYS-6-LOGGINGHOST_STARTSTOP:
Logging to host 10.2.2.6 port 514 started - CLI initiated
R1(config)# logging trap informational
R1(config)# logging source-interface gigabitethernet0/1
R1(config)# logging on
R1(config)# exit
000052: *Feb 19 12:46:07.151: %SYS-5-CONFIG_I: Configured from console by console
R1# show logging
Syslog logging: enabled (0 messages dropped, 2 messages rate-limited, 0 flushes,
0 overruns, xml disabled, filtering disabled)
<省略部分输出>
Trap logging: level informational, 55 message lines logged
Logging to 10.2.2.6 (udp port 514, audit disabled,
link up),
2 message lines logged,
0 message lines rate-limited,
0 message lines dropped-by-MD,
xml disabled, sequence number disabled
filtering disabled
Logging Source-Interface: VRF Name:
GigabitEthernet0/1
Log Buffer (8192 bytes):
<省略部分输出>
000048: *Feb 19 11:36:48.779: %LINEPROTO-5-UPDOWN:
Line protocol on Interface Serial0/0/0, changed state to up
000049: *Feb 19 11:43:25.043: %SYS-5-CONFIG_I: Configured from console by console
000050: *Feb 19 12:45:31.491: %SYS-6-LOGGINGHOST_STARTSTOP:
Logging to host 10.2.2.6 port 0 CLI Request Triggered
000051: *Feb 19 12:45:32.491: %SYS-6-LOGGINGHOST_STARTSTOP:
Logging to host 10.2.2.6 port 514 started - CLI initiated
000052: *Feb 19 12:46:07.151: %SYS-5-CONFIG_I: Configured from console by console
SNMP 简介
另一个常用监控工具是简单网络管理协议 (Simple Network Management Protocol, SNMP)。SNMP 旨在让管理员管理 IP 网络上的设备。它使网络管理员能够监控网络性能,管理网络设备。
SNMP 包括与网络管理系统 (Network Management System, NMS) 相关的三个要素:
-
SNMP 管理器
-
SNMP 代理(托管节点)
-
管理信息库 (MIB)
SNMP 管理器和代理使用 UDP 来交换信息。具体而言,SNMP 代理侦听 UDP 端口 161,而 SNMP 管理器侦听 UDP 端口 162
管理信息库 (MIB)
SNMP set、get 和 trap 消息全部具有在 MIB 中创建和更改信息的访问权限。此类信息按层次结构组织,以便 SNMP 可以快速进行访问。MIB 中每一项信息都会分配一个对象 ID (OID)。MIB 根据 RFC 标准将 OID 组织为 OID 层次结构。
MIB可以看成是本地的数据库。
SNMP 版本
SNMP 有几个版本:
-
SNMPv1 - 在 RFC 1157 中定义;不提供认证或加密机制
-
SNMPv2c - 在 RFC 1901 至 1908 中定义;改进了 SNMPv1 但不提供认证或加密机制
-
SNMPv3 - 在 RFC 2273 至 2275 中定义;通过认证和加密通过网络传输的数据包实现对设备的安全访问
因为攻击者可以使用 get 请求轮询 SNMP 代理,并使用 set 请求要求 SNMP 代理接受配置更改。例如,set 请求可以使路由器重新启动、发送配置文件或接收配置文件。也可以将 SNMP 代理配置为发送陷阱或通知。
在 SNMPv1 和 SNMPv2c 中,不会对这些请求和通知进行认证或加密。SNMPv3 对网络上的数据包进行认证和加密,以提供对设备的安全访问。这解决了 SNMP 早期版本的漏洞。
SNMPv3 提供三种安全功能:
-
消息完整性和认证 - 确保数据包在传输过程中未被篡改,并且来自有效源
-
加密 - 混杂数据包的内容,防止其被未经授权的来源看到
-
访问控制 - 将每个主体的操作限制为对数据特定部分的特定操作
配置 SNMPv3
步骤 1:配置 ACL,允许访问经授权的 SNMP 管理器的 ACL。
Router(config)# ip access-list standard acl-name
Router(config-std-nacl)# permit source_net
步骤 2:使用 snmp-server view 命令配置 SNMP 视图,以识别 SNMP 管理器能够读取的 MIB OID。要将 SNMP 消息限制为只读权限需要配置视图。
Router(config)# snmp-server view view-name oid-tree
步骤 3:使用 snmp-server group 命令配置 SNMP 组功能:
Router(config)# snmp-server group group-name v3
priv read view-name access [acl-number | acl-name]
-
为该组配置一个名称。
-
使用 v3 关键字将 SNMP 版本设置为 3。
-
使用 priv 关键字要求认证和加密。
-
将视图关联至该组并使用 read 命令授予其只读权限。
-
详细说明在步骤 1 中配置的 ACL。
步骤 4:使用 snmp-server user 命令配置 SNMP 组用户功能:
Router(config)# snmp-server user username group-name v3
auth {md5 | sha} auth-password priv {des | 3des | aes
{128 | 192 | 256}} privpassword
-
配置用户名并将用户与步骤 3 中配置的组名称关联。
-
使用 v3 关键字将 SNMP 版本设置为 3。
-
将认证类型设置为 md5 或 sha 并配置认证密码。SHA 应为首选且应受 SNMP 管理软件的支持。
-
使用 priv 关键字要求加密,并配置加密密码。
保护 SNMPv3 配置示例
R1(config)# ip access-list standard PERMIT-ADMIN
R1(config-std-nacl)# permit 192.168.1.0 0.0.0.255
R1(config-std-nacl)# exit
R1(config)# snmp-server view SNMP-RO iso included
R1(config)# snmp-server group ADMIN v3 priv read SNMP-RO access PERMIT-ADMIN
R1(config)# snmp-server user BOB ADMIN v3 auth sha cisco12345 priv aes 128 cisco54321
R1(config)# end
步骤 1:配置一个名为 PERMIT-ADMIN 的标准 ACL,以仅允许 192.168.1.0/24 网络访问。连接到该网络的所有主机将被允许访问 R1 上运行的 SNMP 代理。
步骤 2:一个 SNMP 视图被命名为 SNMP-RO 并配置为包括来自 MIB 的整个 iso 树。在生产网络上,网络管理员可能会将此视图配置为仅包含监控和管理网络所需的 MIB OID。
步骤 3:SNMP 组使用名称 ADMIN 进行配置。SNMP 被设置为要求认证和加密的第 3 版。该组被授予对该视图 (SNMP-RO) 的只读权限。该组的访问通过 PERMIT-ADMIN ACL 来限制。
步骤 4:SNMP 用户 BOB 被配置为组 ADMIN 的成员。SNMP 被设置为第 3 版。认证被设置为使用 SHA,且已配置认证密码。尽管 R1 最高可支持 AES 256 加密,但 SNMP 管理软件仅支持 AES 128。因此,加密被设置为 AES 128,且已配置加密密码。
检验 SNMPv3 配置
R1# show run | include snmp
snmp-server group ADMIN v3 priv read SNMP-RO access PERMIT-ADMIN
snmp-server view SNMP-RO iso included
R1# show snmp user
User name: BOB
Engine ID: 80000009030030F70DA30DA0
storage-type: nonvolatile active
Authentication Protocol: SHA
Privacy Protocol: AES128
Group-name: ADMIN
- 通过查看运行配置,验证大部分 SNMPv3 安全配置,snmp-server user 配置已隐藏。
- 使用 show snmp user 命令查看用户信息。
NTP 服务器
ntp master [stratum]
- 将系统设置为权威 NTP 服务器。
- 层数 (stratum number) 是距离权威源(如原子钟)的跳数。
ntp server {ip-address | host name} [version number] [key keyid] [source interface]
[prefer]
- 允许使用 NTP 时间服务器同步软件时钟。
ntp broadcast client
- 将设备配置为接收接口上的 NTP 广播消息。
一个NTP服务器例子 R1 <---> R2 :
R1# conf t
R1(config)# ntp master 1
R1(config)# ^Z
R1# show clock
13:01:15.735 UTC Tue Dec 16 2008
R2# conf t
R2(config)# ntp server 10.10.10.1
R2(config)# ^Z
R2# show clock
13:01:41.986 UTC Tue Dec 16 2008
R2# show ntp status
Clock is synchronized, stratum 2, reference is 10.10.10.1
nominal freq is 250.0000 Hz, actual freq is 249.9992 Hz, precision is 2**18
reference time is CCF2253E.5DC2A53B (13:01:50.366 UTC Tue Dec 16 2008) clock
offset is 0.3072 msec, root delay is 23.41 msec
root dispersion is 0.38 msec, peer dispersion is 0.05 msec
NTP 认证
NTP 版本 3 (NTPv3) 和更高版本支持在两个 NTP 对等体之间实施加密认证机制。使用此认证机制有助于缓解攻击。
例子 R1 <---> R2:
R1# conf t
R1(config)# ntp authenticate
R1(config)# ntp authentication-key 1 md5 cisco123
R1(config)# ntp trusted-key 1
R1(config)# ^Z
R2# show ntp associations detail
10.10.10.1 configured, our_master, sane, valid, stratum 2
ref ID 127.127.7.1, time CCF29760.A8F4DB7D (21:08:48.659 UTC Tue Dec 16 2008)
our mode client, peer mode server, our poll intvl 64, peer poll intvl 64
root delay 0.00 msec, root disp 0.03, reach 17, sync dist 1886.810
delay 23.41 msec, offset 0.9618 msec, dispersion 1875.08
precision 2**18, version 3
org time CCF2979B.8E2195E9 (21:09:47.555 UTC Tue Dec 16 2008)
rcv time CCF2979B.90E1A99D (21:09:47.565 UTC Tue Dec 16 2008)
xmt time CCF2979B.8AE1EA33 (21:09:47.542 UTC Tue Dec 16 2008)
filtdelay = 23.41 23.47 23.61 23.41 0.00 0.00 0.00 0.00
filtoffset = 0.96 0.94 0.94 0.66 0.00 0.00 0.00 0.00
filterror = 0.02 0.99 1.97 2.94 16000.0 16000.0 16000.0 16000.0
R2# conf t
R2(config)# ntp authenticate
R2(config)# ntp authentication-key 1 md5 cisco123
R2(config)# ntp trusted-key 1
R2(config)# ^Z
R2# show ntp associations detail | include 10.10.10.1
10.10.10.1 configured, our_master, sane, valid, stratum 16
R2# show ntp associations detail | include 10.10.10.1
10.10.10.1 configured, authenticated, our_master, sane, valid, stratum 2
NTP 主设备和 NTP 客户端上使用三个命令:
- ntp authenticate
-
启用认证功能
-
ntp authentication-key key-number md5 key-value
-
定义认证密钥
-
ntp trusted-key key-number
- 认证 NTP 将同步的系统的身份。
- 密钥编号对应于 ntp authentication-key 命令中的密钥编号。
未经认证配置的客户端仍然从服务器获取时间。区别是这些客户端不会将服务器认证为安全来源。
使用 show ntp associations detail 命令确认服务器是获认证的来源
CDP 和 LLDP 发现协议
该协议如果开启了可以发现连接在一起的设备,CDP默认会在思科路由器上启用。链路层发现协议 (Link Layer Discovery Protocol, LLDP) 是一种开放标准,可在思科设备,以及支持 LLDP 的其他供应商的设备上启用。使用 lldp run 全局配置命令为 R1 和 S1 均配置 LLDP。默认情况下,两台设备都运行 CDP。
R1(config)# lldp run
R1(config)# end
R1# show cdp neighbors detail
-------------------------
Device ID: S1
Entry address(es):
IP address: 192.168.1.254
Platform: cisco WS-C2960-24TT-L, Capabilities: Switch IGMP
Interface: GigabitEthernet0/1, Port ID (outgoing port): FastEthernet0/5
Holdtime : 164 sec
Version :
Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 15.0(2)SE7,
RELEASE SOFTWARE (fc1)
<省略部分输出>
R1# show lldp neighbors detail
------------------------------------------------
Local Intf: Gi0/1
Chassis id: 0022.9121.0380
Port id: Fa0/5
Port Description: FastEthernet0/5
System Name: S1
System Description:
Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 15.0(2)SE7,
RELEASE SOFTWARE (fc1)
<省略部分输出>
- show cdp neighbors detail 和 show lldp neighbors detail 的输出将显示设备的地址、平台和操作系统的详细信息。
由于攻击者无需手动启用 CDP 或启用 LLDP 即可收集此敏感信息(比如 cisco cdp monitor 的软件),所以应谨慎启用这些发现协议。
协议和服务设置
攻击者会选择使网络更容易受到恶意漏洞攻击的服务和协议。由于历史原因,默认还是会打开一些服务,应根据组织机构的安全需要,禁用或限制其中的许多功能。这些功能范围很广,从网络发现协议(如 CDP 和 LLDP)到全局可用协议(如 ICMP 和其他扫描工具)。
特性 | 默认 | 建议 |
---|---|---|
思科发现协议 (CDP) | 已启用 | 如果不需要,则应全局禁用或根据每个接口状况禁用。 |
链路层发现协议 (LLDP) | 禁用 | 如果不需要,则应全局禁用或根据每个接口状况禁用。 |
配置自动加载 | 禁用 | 在路由器不使用时,应保持禁用。 |
FTP 服务器 | 禁用 | 不需要时应禁用。 |
TFTP 服务器 | 禁用 | 不需要时应禁用。 |
网络时间协议 (NTP) 服务 | 禁用 | 不需要时应保持禁用。 |
数据包汇编程序 / 反汇编程序 (PAD) 服务 | 已启用 | 不使用时应明确禁用。 |
TCP 和用户数据报协议 (UDP) 次要服务 | 在版本 11.3 及更高版本中启用 | 明确禁用此服务。 |
维护操作协议 (MOP) 服务 | 在大多数以太网接口上启用 | 不使用时应明确禁用。 |
简单网络管理协议 (SNMP) | 已启用 | 不需要时禁用此服务。 |
HTTP 或 HTTPS 配置和监控 | 设置取决于思科设备。 | 不需要时禁用此服务。如果需要此服务,则使用访问控制列表(access control list,ACL)限制对路由器 HTTP 或 HTTPS 服务的访问。 |
域名系统 (DNS) | 已启用 | 不需要时禁用。如果需要 DNS 查询服务,请确保您明确设置 DNS 服务器地址。 |
互联网控制消息协议 (ICMP) 重定向 | 已启用 | 不需要时禁用。 |
IP 源路由 | 已启用 | 不需要时禁用此服务。 |
Finger 服务 | 已启用 | 不需要时禁用此服务。 |
ICMP 不可达通知 | 已启用 | 在不受信任网络的接口上禁用。 |
ICMP 掩码应答 | 禁用 | 在不受信任网络的接口上禁用。 |
IP 标识服务 | 已启用 | 应明确禁用此服务。 |
TCP keepalives | 禁用 | 应全局启用,以管理 TCP 连接并阻止某些拒绝服务(denial of service,DoS)攻击。此服务在 12.0 之前的思科 IOS 软件版本中启用,在 12.0 及更高版本的思科 IOS 版本中禁用。不需要时禁用此服务。 |
免费 ARP (GARP) | 已启用 | 在每个路由器接口上禁用免费 ARP,除非需要此服务。 |
代理 ARP | 已启用 | 在每个接口上禁用此服务,除非路由器用作 LAN 网桥。 |
-
禁用不必要的服务和接口。
-
禁用和限制通常配置的管理服务,如 SNMP。
-
禁用探测和扫描,如 ICMP。确保终端访问安全。
-
禁用免费和代理地址解析协议 (ARP)。
-
禁用 IP 定向广播。
思科 AutoSecure
思科的 IOS 在12.3 以上就内置了AutoSecure脚本,执行它就可以人性化的打开或者关闭以上的服务。
R1# auto secure
--- AutoSecure Configuration ---
*** AutoSecure configuration enhances the security
of the router but it will not make router
absolutely secure from all security attacks ***
All the configuration done as part of AutoSecure
will be shown here. For more details of why and
how this configuration is useful, and any possible
side effects, please refer to Cisco documentation of
AutoSecure.
At any prompt you may enter '?' for help.
Use ctrl-c to abort this session at any prompt.
Gathering information about the router for
AutoSecure
Is this router connected to internet? [no]:yes
AutoSecure 可以锁定管理平面功能和路由器的转发平面服务和功能。管理平面服务和功能包括:
-
Secure BOOTP、CDP、FTP、TFTP、PAD、UDP 和 TCP 小型服务器、MOP、ICMP(重定向、掩码应答)、IP 源路由、Finger、密码加密、TCP keepalives、免费 ARP、代理 ARP 和定向广播。
-
使用横幅提供法律通知
-
安全密码和登录功能
-
安全 NTP
-
安全 SSH 访问
-
TCP 拦截服务
使用思科 AutoSecure 功能
auto secure [no-interact | full] [forwarding | management]
[ntp | login | ssh | firewall | tcp-intercept]
- 使用 auto secure 命令启用思科 AutoSecure 功能设置。此设置可以是交互式,也可以是非交互式。
R1# auto secure ?
firewall AutoSecure Firewall
forwarding Secure Forwarding
full Interactive full
login AutoSecure Login
management Secure Management
no-interact Non-interactive
ntp AutoSecure NTP
ssh AutoSecure SSH
tcp-intercept AutoSecure TCP
<cr>
- 在交互模式下,路由器会提示用于启用和禁用服务及其他安全功能的选项。这是默认模式,但也可以使用 auto secure full 命令配置。
使用 auto secure no-interact 命令配置非交互模式。这将使用思科建议的默认设置,以便自动执行思科 AutoSecure 功能。输入的 auto secure 命令也可以带有关键字,以配置特定组件,如管理平面(management 关键字)和转发平面(forwarding 关键字)。
auto secure 参数说明:
参数 | 说明 |
---|---|
no-interact | (可选)系统将不提示用户进行任何交互式配置。 不配置任何交互式对话框参数,包括用户名或密码。 |
full | (可选)系统将提示用户回答所有交互式问题。这是默认设置。 |
forwarding | (可选)仅保护转发平面。 |
management | (可选)仅保护管理平面。 |
ntp | (可选)在 AutoSecure CLI 中指定 NTP 功能的配置。 |
login | (可选)在 AutoSecure CLI 中指定登录功能的配置。 |
ssh | (可选)在 AutoSecure CLI 中指定 SSH 功能的配置。 |
firewall | (可选)在 AutoSecure CLI 中指定防火墙功能的配置。 |
tcp-intercept | (可选)在 AutoSecure CLI 中指定 TCP 拦截功能的配置。 |
注意:在初始配置路由器时,应使用 AutoSecure。建议不要在生产路由器上使用。
路由协议欺骗
通过中断对等网络路由器,或者伪造或欺骗路由协议内传输的信息,可以攻击路由系统。欺骗路由信息会有几个后果:
-
因流量重定向而造成路由环路
-
流量需要重定向,致使它在不安全的链路上被人监控
-
流量在重定向后被丢弃
OSPF MD5 路由协议认证
EIGRP 支持使用 MD5 进行路由协议认证。MD5 认证可以针对所有接口开启全局设置使用,也可基于单个接口启用。
全局启用 OSPF MD5 认证:
-
ip ospf message-digest-key [key] md5 [password] 接口配置命令。 密钥 md5 password 接口配置命令在接口上手动配置开销。
-
area area-id authentication message-digest 路由器配置命令。
此方法在所有启用了 OSPF 的接口上强制进行认证。如果一个接口没有配置 ip ospf message-digest-key 命令,那么它不能与其他 OSPF 邻居形成邻接关系。
针对单个接口启用 MD5 认证:
-
ip ospf message-digest-key [key] md5 [password] 接口配置命令。 密钥 md5 password 接口配置命令在接口上手动配置开销。
-
ip ospf authentication message-digest 接口配置命令。
针对单个接口的设置会覆盖全局设置。MD5 认证密码在整个区域中不必相同;但是,它们在邻居之间必须相同。
R1# show run | begin router ospf
router ospf 1
passive-interface GigabitEthernet0/1
network 10.1.1.0 0.0.0.3 area 0
network 192.168.1.0 0.0.0.255 area 0
!
<省略部分输出>
R2# show run | begin router ospf
router ospf 1
passive-interface GigabitEthernet0/1
network 10.1.1.0 0.0.0.3 area 0
network 192.168.2.0 0.0.0.255 area 0
!
<省略部分输出>
- R1 和 R2 均配置了 OSPF 且路由工作正常。但是,OSPF 消息不会进行认证或加密。
R1# conf t
R1(config)# interface s0/0/0
R1(config-if)# ip ospf message-digest-key 1 md5 cisco12345
R1(config-if)# ip ospf authentication message-digest
R1(config-if)#
000209: Feb 20 13:59:35.091 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.2 on
Serial0/0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R1(config-if)#
000210: Feb 20 14:01:09.975 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.2 on
Serial0/0/0 from LOADING to FULL, Loading Done
R2# conf t
000137: Feb 20 13:59:35.091 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on
Serial0/0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R2(config)# interface s0/0/0
R2(config-if)# ip ospf message-digest-key 1 md5 cisco12345
R2(config-if)# ip ospf authentication message-digest
R2(config-if)#
000138: Feb 20 14:01:09.975 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on
Serial0/0/0 from LOADING to FULL, Loading Done
R2(config-if)#
- R1 和 R2 均配置了 OSPF MD5 认证。因为这两个路由器仅使用一个接口形成 OSPF 邻接关系,因此根据每个接口的状况配置认证。请注意,当配置 R1 时,会失去与 R2 的 OSPF 邻接关系,直到 R2 配置了相应的 MD5 认证。
OSPF SHA 路由协议认证
现在,MD5 被视为易受攻击,因此仅应在更强认证不可用时才能使用。思科 IOS 版本 15.4(1)T 增加了对 OSPF SHA 认证的支持,详细信息请参阅 RFC 5709。因此,只要所有路由器操作系统都支持 OSPF SHA 认证,管理员应使用 SHA 认证。
OSPF SHA 认证包括两个主要步骤:
步骤 1:在全局配置模式中指定认证密钥链:
Router(config)# key chain name
Router(config-keychain)# key key-id
Router(config-keychain-key)# key-string string
Router(config-keychain-key)# cryptographic-algorithm hmac-sha-256
Router(config)# send-lifetime start-time {infinite | end-time | duration seconds}
-
使用 key chain 命令配置密钥链名称。
-
使用 key 和 key-string 命令为密钥链分配编号和密码。
-
使用 cryptographic-algorithm 命令指定 SHA 认证。
-
(可选)使用 send-lifetime 命令指定此密钥的过期时间。
步骤 2:使用 ip ospf authentication key-chain 命令将认证密钥分配到所需接口。
Router(config)# interface type number
Router(config-if)# ip ospf authentication key-chain name
例子:
R1(config)# key chain SHA256
R1(config-keychain)# key 1
R1(config-keychain-key)# key-string ospfSHA256
R1(config-keychain-key)# cryptographic-algorithm hmac-sha-256
R1(config-keychain-key)# exit
R1(config-keychain)# exit
R1(config)# interface s0/0/0
R1(config-if)# ip ospf authentication key-chain SHA256
R1(config-if)#
000218: Feb 20 15:06:07.607 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.2 on Serial0/0/0
from FULL to DOWN, Neighbor Down: Dead timer expired
R1(config-if)#
000219: Feb 20 15:07:22.635 UTC: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.2 on Serial0/0/0
from LOADING to FULL, Loading Done
R1(config-if)#
R2(config)# key chain SHA256
R2(config-keychain)# key 1
R2(config-keychain-key)# key-string ospfSHA256
R2(config-keychain-key)# cryptographic-algorithm hmac-sha-256
R2(config-keychain-key)# exit
R2(config-keychain)# exit
R2(config)# interface s0/0/0
R2(config-if)# ip ospf authentication key-chain SHA256
R2(config-if)#
000142: Feb 20 15:07:22.631: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on Serial0/0/0
from LOADING to FULL, Loading Done
R2(config-if)#
- 使用名为 SHA256 的密钥和密钥字符串 ospfSHA256 为 R1 和 R2 配置了 OSPF SHA 认证。请注意,当配置 R1 时,会失去与 R2 的 OSPF 邻接关系,直到 R2 配置了相应的 SHA 认证。
小结
-
配置 NTP 主服务器和客户端
-
配置 NTP 认证
-
启用 OSPF 认证
-
加密所有密码
-
要求密码的最小长度
-
使用安全密码创建用户账户
-
将消息记录到系统日志 (syslog) 服务器
-
配置 SSH
-
保护启动映像
-
创建安全的备份配置
-
使用 autosecure 命令
认证、授权和审计
这章讲配置AAA服务,和AAA认证
无 AAA 认证
R1(config)# line vty 0 4
R1(config-line)# password cis5cio
R1(config-line)# login
R1(config)# ip domain-name cisco-academy.com
R1(config)# crypto key generate rsa general-keys modulus 2048
R1(config)# username Admin algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# line vty 0 4
R1(config-line)# transport input ssh
R1(config-line)# login local
- 最简单的远程访问认证方法是在控制台、VTY 线路和 AUX 端口上配置登录(无需用户名)和密码组合。此方法最容易实施,但也是最薄弱和最不安全的方法。此方法无法追责。任何拥有密码的人都可以进入设备并修改配置。
AAA 组成部分
思科的网络和管理 AAA 安全有三个功能组成部分:
-
认证 - 用户和管理员必须证明他们身份的真实性。认证可以结合使用用户名和密码组合、提示问题和响应问题、令牌卡以及其他方法。例如:“我是用户‘student’,我知道密码来证明我的身份。”
-
授权 - 完成用户认证后,授权服务将确定该用户可以访问哪些资源,能够执行哪些操作。例如,“用户‘student’只能使用 SSH 访问主机 serverXYZ。”
-
审计 - 对用户行为记录进行审计,包括访问的内容、访问资源的时间及所做的任何更改。审计用于跟踪网络资源的使用情况。例如,“用户‘student’使用 SSH 访问主机 serverXYZ 15 分钟”。
思科支持两种常用的AAA 服务的部署:
-
本地 AAA 认证 -本地 AAA 使用本地数据库进行认证。此方案有时也称为自带认证(self-contained authentication)。在本课程中,它将称为本地 AAA 认证。该方案在思科路由器本地存储用户名和密码,并根据本地数据库对用户进行认证。此数据库与建立基于角色的 CLI 所需的数据库是同一个。本地 AAA 是小型网络的理想选择。
-
基于服务器的 AAA 认证 - 使用基于服务器的方案时,路由器访问中央 AAA 服务器,如适用于 Windows 的思科安全访问控制系统 (ACS)。中央 AAA 服务器包含所有用户的用户名和密码。路由器使用远程认证拨号用户服务(Remote Authentication Dial-In User Service,RADIUS)或终端访问控制器访问控制系统(Terminal Access Controller Access Control System,TACACS+)协议与 AAA 服务器通信。当有多台路由器和交换机时,基于服务器的 AAA 方案更适合。
对管理访问进行认证
R1(config)# username JR-ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# username ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# aaa new-model
R1(config)# aaa authentication login default local-case
- aaa authentication login 命令允许 ADMIN 和 JR-ADMIN 用户通过控制台或 VTY 终端线路登录路由器。关键字 default 表示该认证方法适用于所有线路,除了针对特定线路的配置覆盖掉默认值的情况。认证区分大小写,由关键字 local-case 表示。这表示密码和用户名都区分大小写。
本地 AAA 认证方法与使用 login local 命令类似,但有一个例外。AAA 还能配置认证方法的备用方案。
对管理访问进行认证,需要以下几个基本步骤来配置本地 AAA 服务:
步骤 1:将需要路由器的管理访问权限用户的用户名和密码,添加到本地路由器数据库。
步骤 2:在路由器上全局启用 AAA。
步骤 3:在路由器上配置 AAA 参数。
步骤 4:确认 AAA 配置并进行排除故障。
认证方式
要启用 AAA,必须首先配置 aaa new-model 全局配置命令。要禁用 AAA,请使用此命令的 no 形式。
注意:在输入此命令前,任何其他 AAA 命令都不可用。
注意:必须要知道的是,当首次输入 aaa new-model 命令时,使用本地数据库进行看不见的“默认”认证会自动应用于所有线路(控制台除外)。为此,在启用 AAA 之前最好配置一个本地数据库条目。
aaa authentication login {default | list-name} method1…[method4]
命令 | 说明 |
---|---|
default | 使用此关键字后列出的认证方法作为用户登录时的默认方法列表。 |
list-name | 用于给用户登录时激活的认证方法列表命名的字符串。 |
method1...[method4] | AAA 认证流程将按指定序列查询的方法列表。必须指定至少一种方法。最多可以指定四种方法。 |
- aaa authentication login 命令启用控制台、AUX 和 VTY 线路的认证。关键字 default 将认证应用于所有线路。或者,也可以使用list-name给出自定义的认证方法。
method1 ... method4 给出了将依次尝试的认证方法。最多可以定义四种方法,一旦一种方法不可用,则提供回退方法。
方法类型关键字 | 说明 |
---|---|
enable | 使用启用密码进行认证。 |
local | 使用本地用户名数据库进行认证。 |
local-case | 使用区分大小写的本地用户名认证。 |
none | 不使用任何认证。 |
group radius | 使用所有 RADIUS 服务器组成的列表进行认证。 |
group tacacs+ | 使用所有 TACACS+ 服务器组成的列表进行认证。 |
group group-name | 使用 aaa group server radius 或 aaa group server tacacs+ 命令定义的一部分 RADIUS 或 TACACS+ 服务器进行认证。 |
- 当用户尝试登录时,使用列出的第一种方法。仅当没有响应或上一种方法出错时,思科 IOS 软件才会尝试使用下一个列出的认证方法进行认证。如果认证方法拒绝用户访问,则认证流程会停止且系统不允许继续尝试任何其他认证方法。
要使用预先配置的本地数据库启用本地认证,请使用关键字 local 或 local-case。这两个选项之间的区别是 local 接受用户名不区分大小写,而 local-case 则区分大小写。例如,如果配置了用户名为 ADMIN 的本地数据库条目,则 local 方法可接受 ADMIN、Admin,甚至是 admin。如果配置了 local-case 方法,则仅 ADMIN 可接受。
如果需要支持用户使用启用密码进行认证,请使用关键字 enable 。要确保即使所有方法都返回错误认证也会成功,请指定 none 作为最终方法。
注意:出于安全目的,仅当测试 AAA 配置时,才使用 none 关键字。切勿将其应用于现用的生产网络。
默认值和自定义的方法
为了增加灵活性,可以使用 aaa authentication login list-name 命令向不同的接口应用不同的方法列表。
R1(config)# username JR-ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# username ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# aaa new-model
R1(config)# aaa authentication login default local-case enable
R1(config)# aaa authentication login SSH-LOGIN local-case
R1(config)# line vty 0 4
R1(config-line)# login authentication SSH-LOGIN
- 管理员可以为 SSH 采用特殊登录,然后为线路控制台采用默认登录方法,VTY 线路将仅使用本地数据库进行认证。所有其他线路(如控制台和 AUX 线路)将使用本地数据库,并在设备上没有数据库条目时使用启用密码作为回退方案。
请注意,必须使用 login authentication 线路配置命令在线路上明确启用命名的列表。如果一条线路上采用了自定义认证方法列表,则该方法列表会覆盖该接口的原本的默认方法列表。将自定义认证方法列表应用于接口后,可以使用 no authentication login 命令返回默认方法列表。
调整认证配置
aaa local authentication attempts max-fail [number-of-unsuccessful-attempts]
- number-of-unsuccessful-attempts : 失败尝试次数
- 可使用 aaa local authentication attempts max-fail 来锁定失败尝试次数过多的账户,以此来保护 AAA 用户账户。
login delay 命令在两次失败登录尝试之间引入延迟而不锁定账户,而aaa local authentication attempts max-fail 命令在认证失败时锁定用户账户。锁定的用户账户将保持锁定,直到管理员使用 clear aaa local user lockout 特权 EXEC 模式命令将其手动清除。
R1# show aaa local user lockout
Local-user Lock time
JR-ADMIN 04:28:49 UTC Sat Dec 27 2015
- 要显示所有锁定用户列表,请在特权 EXEC 模式下使用 show aaa local user lockout 命令
要显示收集了一个 AAA 会话的哪些属性,请在特权 EXEC 模式下使用 show aaa user 命令。此命令不提供登录设备的所有用户的信息,但仅提供已使用 AAA 进行认证或授权,或 AAA 模块已对其会话进行审计的用户的信息。
R1# show aaa sessions
Total sessions since last reload: 4
Session Id: 1
Unique Id: 175
User Name: ADMIN
IP Address: 192.168.1.10
Idle Time: 0
CT Call Handle: 0
- show aaa sessions 命令可用于显示会话的唯一 ID
Debug功能
R1# debug aaa ?
accounting Accounting
administrative Administrative
api AAA api events
attr AAA Attr Manager
authentication Authentication
authorization Authorization
cache Cache activities
coa AAA CoA processing
db AAA DB Manager
dead-criteria AAA Dead-Criteria Info
id AAA Unique Id
ipc AAA IPC
mlist-ref-count Method list reference counts
mlist-state Information about AAA method
list state change and notification
per-user Per-user attributes
pod AAA POD processing
protocol AAA protocol processing
server-ref-count Server handle reference counts
sg-ref-count Server group handle reference counts
sg-server-selection Server Group Server Selection
subsys AAA Subsystem
testing Info. about AAA generated test packets
- 思科路由器支持 debug 命令,这对认证问题进行故障排除非常有用。debug aaa 命令包含可用于此目的的多个关键字。比较适合的是 debug aaa authentication 命令。
在生产环境下使用任何 debug 命令时要小心谨慎,这些命令由控制平面解释;因此会给路由器造成很大负担并对网络性能造成负面影响。
调试AAA认证
R1# debug aaa authentication
113123: Feb 4 10:11:19.305 CST: AAA/MEMORY: create_user (0x619C4940) user=''ruser=''
port='tty1' rem_addr='async/81560' authen_type=ASCII service=LOGIN priv=1
113124: Feb 4 10:11:19.305 CST: AAA/AUTHEN/START (2784097690): port='tty1' list=''
action=LOGIN service=LOGIN
113125: Feb 4 10:11:19.305 CST: AAA/AUTHEN/START (2784097690): using "default" list
113126: Feb 4 10:11:19.305 CST: AAA/AUTHEN/START (2784097690): Method=LOCAL
113127: Feb 4 10:11:19.305 CST: AAA/AUTHEN (2784097690): status = GETUSER
113128: Feb 4 10:11:26.305 CST: AAA/AUTHEN/CONT (2784097690): continue_login
(user='(undef)')
113129: Feb 4 10:11:26.305 CST: AAA/AUTHEN (2784097690): status = GETUSER
113130: Feb 4 10:11:26.305 CST: AAA/AUTHEN/CONT (2784097690): Method=LOCAL
113131: Feb 4 10:11:26.305 CST: AAA/AUTHEN (2784097690): status = GETPASS
113132: Feb 4 10:11:28.145 CST: AAA/AUTHEN/CONT (2784097690): continue_login
(user='diallocal')
113133: Feb 4 10:11:28.145 CST: AAA/AUTHEN (2784097690): status = GETPASS
113134: Feb 4 10:11:28.145 CST: AAA/AUTHEN/CONT (2784097690): Method=LOCAL
113135: Feb 4 10:11:28.145 CST: AAA/AUTHEN (2784097690): status = PASS
- 当对 AAA 问题进行故障排除时,debug aaa authentication 命令十分有用
- 专门寻找 GETUSER 和 GETPASS 状态消息。当确定所引用的方法列表时,这些消息也十分有帮助。在本示例中,使用了本地数据库方案。登录状态由 PASS 消息指示,此消息表示登录成功
注意:要禁用此命令,请使用 no debug aaa authentication 命令或包含一切的 undebug all 语句。
TACACS+ 和 RADIUS 简介
TACACS+ | RADIUS | |
---|---|---|
功能 | 根据 AAA 架构分离 AAA,支持模块化的安全服务器部署方式 | 结合身份验证与授权,但分离审计,实施灵活性低于 TACACS+ |
标准 | 大多数受思科支持 | 开放 / RFC 标准 |
传输协议 | TCP | UDP |
CHAP | 在质询握手身份验证协议 (CHAP) 中使用双向质询和响应 | 从 RADIUS 安全服务器到 RADIUS 客户端使用单向质询和响应 |
保密性 | 加密整个数据包 | 加密密码 |
可以定制 | 按用户或组提供路由器命令授权 | 没有按用户或组授权路路由器命令的选择 |
审计 | 有限 | 丰富的 |
- TACACS+ 和 RADIUS 是用于与 AAA 服务器通信的认证协议。每个协议均支持不同的性能和功能。选择 TACACS+ 还是 RADIUS 取决于组织机构的需求。
- 大型 ISP 可能会选择 RADIUS,因为 RADIUS 支持为用户计费所需的详细审计。拥有各种用户组的组织机构可能会选择 TACACS+,因为 TACACS+ 可以按照每个用户或每个组为基础,分别应用授权策略。
以下是 TACACS+ 的三个关键因素:
-
分离认证和授权
-
加密所有通信
-
利用 TCP 端口 49
以下是 RADIUS 的四个关键因素:
-
将 RADIUS 认证和授权合并为一个流程
-
仅加密密码
-
使用 UDP
-
支持远程访问技术、802.1X 和会话初始协议 (SIP)
虽然两个协议均可用于在路由器和 AAA 服务器之间进行通信,但是 TACACS+ 被视为较安全的协议。这是因为所有的 TACACS+ 协议交换都被加密,而 RADIUS 仅加密用户密码。RADIUS 不加密用户名、审计信息或 RADIUS 消息中传输的其他信息。
配置 TACACS+ 服务器
R1(config)# aaa new-models
R1(config)# tacacs server Server-T
R1(config-server-tacacs)# address ipv4 192.168.1.101
R1(config-server-tacacs)# single-connection
R1(config-server-tacacs)# key TACACS-Pa55w0rd
R1(config-server-tacacs)# exit
- 要配置 TACACS+ 服务器,使用 aaa new-model 命令全局启用 AAA
- 使用 tacacs server name 命令。在 TACACS+ 服务器配置模式下,使用 address ipv4 命令配置 TACACS+ 服务器的 IPv4 地址。address ipv4 命令允许修改认证端口和审计端口
- 使用 single-connection 命令,让整个会话生命期内保持单一 TCP 连接来增强 TCP 性能。否则,默认情况下,会为每个会话打开 TCP 连接,然后关闭。如果需要,可以通过使用 tacacs server name 命令标识多台 TACACS+ 服务器
- key 密钥 命令用于配置共享密钥,以加密 TACACS+ 服务器和启用了 AAA 的路由器之间的数据传输。必须在路由器和 TACACS+ 服务器上以完全相同的方式配置此密钥
配置 RADIUS 服务器
R1(config)# aaa new-model
R1(config)# radius server SERVER-R
R1(config-radius-server)# address ipv4 192.168.1.100 auth-port 1812 acct-port 1813
R1(config-radius-server)# key RADIUS-Pa55w0rd
R1(config-radius-server)# exit
- 要配置 RADIUS 服务器,请使用 radius server name 命令。这会进入 RADIUS 服务器配置模式。
- 由于 RADIUS 使用 UDP,因此没有等效的 single-connection 关键字。如果需要,可以通过为每台服务器输入 radius server name 命令来标识多台 RADIUS 服务器。
- 在 RADIUS 服务器配置模式下,使用 address ipv4 ipv4-address命令。
- 默认情况下,思科路由器使用端口 1645 进行认证,使用端口 1646 进行审计。但是,IANA 将端口 1812 保留用作 RADIUS 认证端口,将端口 1813 保留用作 RADIUS 审计端口。请务必确保思科路由器和 RADIUS 服务器之间的这些端口匹配。
- 要配置共享密钥以便加密密码,请使用 key 命令。在路由器和 RADIUS 服务器上,此密钥的配置方式必须完全相同。
配置AAA 服务器实现认证
R1(config)# aaa authentication login default ?
cache Use Cached-group
enable Use enable password for authentication.
group Use Server-group
krb5 Use Kerberos 5 authentication.
krb5-telnet Allow logins only if already authenticated via Kerberos V
Telnet.
line Use line password for authentication.
local Use local username authentication.
local-case Use case-sensitive local username authentication.
none NO authentication.
passwd-expiry enable the login list to provide password aging support
R1(config)# aaa authentication login default group ?
WORD Server-group name
ldap Use list of all LDAP hosts.
radius Use list of all Radius hosts.
tacacs+ Use list of all Tacacs+ hosts.
- 当已完成标识(配置) AAA 安全服务器后,这些服务器必须包含在 aaa authentication login 命令的方法列表中。AAA 服务器使用 group tacacs+ 或 group radius 关键字标识。
一个完整的例子:
R1(config)# aaa new-model
R1(config)# tacacs server Server-T
R1(config-server-tacacs)# address ipv4 192.168.1.100
R1(config-server-tacacs)# single-connection
R1(config-server-tacacs)# key TACACS-Pa55w0rd
R1(config-server-tacacs)# exit
R1(config)# radius server SERVER-R
R1(config-radius-server)# address ipv4 192.168.1.101 auth-port 1812 acct-port 1813
R1(config-radius-server)# key RADIUS-Pa55w0rd
R1(config-radius-server)# exit
R1(config)# aaa authentication login default group tacacs+ group radius local-case
- 使用 aaa authentication login default 命令指定了认证顺序,将默认登录方法列表配置为首先使用 TACACS+ 服务器进行认证,其次使用 RADIUS 服务器进行认证,最后使用本地用户名数据库进行认证。请务必意识到,如果无法访问 TACACS+ 服务器,则 R1 将仅尝试使用 RADIUS 进行认证。同样,如果 TACACS+ 和 RADIUS 服务器不可用,则 R1 将仅尝试使用本地数据库进行认证
调试 TACACS+ 和 RADIUS
R1# debug radius ?
accounting RADIUS accounting packets only
authentication RADIUS authentication packets only
brief Only I/O transactions are recorded
elog RADIUS event logging
failover Packets sent upon fail-over
local-server Local RADIUS server
retransmit Retransmission of packets
verbose Include non essential RADIUS debugs
<cr>
R1# debug tacacs ?
accounting TACACS+ protocol accounting
authentication TACACS+ protocol authentication
authorization TACACS+ protocol authorization
events TACACS+ protocol events
packet TACACS+ packets
<cr>
基于服务器的 AAA 授权简介
TACACS+ 协议允许认证与授权分离。可以配置路由器,以限制认证成功的用户仅能执行某些功能。RADIUS 不会将认证与授权分离。比如:用户执行一条命令路由器就去问AAA有没有权限执行。
AAA 授权配置
R1(config)# aaa authorization (network | exec | commands level}
{default | list-name} method1...[method4]
-
要配置命令授权,请使用 aaa authorization 命令
-
network - 对于网络服务,如 PPP
-
exec - 对于启动 exec (shell)
-
commands 级别- 对于 exec (shell) 命令
R1(config)# aaa authorization exec ?
WORD Named authorization list.
default The default authorization list.
R1(config)# aaa authorization exec default ?
cache Use Cached-group
group Use server-group.
if-authenticated Succeed if user has authenticated.
krb5-instance Use Kerberos instance privilege maps.
local Use local database.
none No authorization (always succeeds).
R1(config)# aaa authorization exec default group ?
WORD Server-group name
ldap Use list of all LDAP hosts.
radius Use list of all Radius hosts.
tacacs+ Use list of all Tacacs+ hosts.
一个简单的例子:
R1(config)# username JR-ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# username ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# aaa new-model
R1(config)# aaa authorization exec default group tacacs+
R1(config)# aaa authorization network default group tacacs+
- 未启用 AAA 授权时,所有用户都可以完全访问。启动认证后,默认值会更改为不允许访问。这表示管理员必须创建一个具有完全访问权的用户才能启用授权
- 否则,一输入 aaa authorization 命令就会立即将管理员锁定在系统外。恢复访问的唯一方式是重新启动路由器。如果这是生产路由器,重启路由器是难以容忍的。请确保至少一个用户始终拥有完全访问权限。
AAA 审计配置
审计的意思是在服务器上记录你执行过什么指令
aaa accounting (network | exec | connection} {default | list-name}
{start-stop | stop-only | none } [broadcast] method1...[method4]
以下三个参数是常用的 aaa accounting 关键字:
-
network - 审计所有网络相关的服务请求,包括 PPP。
-
exec - 审计 EXEC shell 会话。
-
connection - 审计所有出站连接(如 SSH 和 Telnet)。
R1(config)# aaa accounting exec default start-stop?
broadcast Use Broadcast for Accounting
group Use Server-group
R1(config)# aaa accounting exec default start-stop group?
WORD Server-group name
radius Use list of all Radius hosts.
tacacs+ Use list of all Tacacs+ hosts.
触发器配置:
-
start-stop - 在流程开始时发送“启动”审计通知,在流程结束时发出“停止”审计通知。
-
stop-only - 发送所有情况(包括认证失败)的“停止”审计记录。
-
none - 在线路或接口上禁用审计服务。
R1(config)# username JR-ADMIN algorithm-type scrypt secret Str0ng5rPa5w0rd
R1(config)# username ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# aaa new-model
R1(config)# aaa authentication login default group tacacs+
R1(config)# aaa authorization exec default group tacacs+
R1(config)# aaa authorization network default group tacacs+
R1(config)# aaa accounting exec default start-stop group tacacs+
R1(config)# aaa accounting network default start-stop group tacacs+
- 记录 EXEC 命令的使用和网络连接的审计示例
802.1X 端口授权状态
如果客户端成功经过认证(收到来自认证服务器的“accept”帧),则端口状态更改为已授权,且来自认证客户端的所有帧均可通过该端口。
如果认证失败,该端口保持未授权状态,但可重试认证。如果无法访问认证服务器,则交换机可以重新传输该请求。如果在指定尝试次数后未收到服务器的响应,则认证失败,并且不授予网络访问的权限。
S1(config-if)# authentication port-control {auto | force-authorized | force-
unauthorized}
- 使用 authentication port-control 命令来控制端口授权状态。默认情况下,端口处于强制授权状态,这意味着它无需 802.1X 认证即可发送和接收流量。
参数 | 说明 |
---|---|
自动 | 启用 802.1X 基于端口的认证,并使端口一开始处于未授权状态,从而仅允许通过端口发送和接收 EAPOL 帧。 |
force-authorized | 端口发送和接收正常流量,而无需客户端进行基于 802.1X 的认证。这是默认设置。 |
force-unauthorized | 使端口保持未授权状态,忽略客户端的所有认证尝试。交换机无法通过该端口向客户端提供认证服务。 |
- 必须输入 auto 关键字才能启用 802.1X 认证。
客户端注销时会发送 EAPOL 注销消息,导致交换机端口更改为未授权状态。
如果端口的链路状态从启用更改为关闭,或如果收到 EAPOL 注销帧,则端口将返回未授权状态。
配置 802.1X
S1(config)# aaa new-model
S1(config)# radius server CCNAS
S1(config-radius-server)# address ipv4 10.1.1.50 auth-port 1812 acct-port 1813
S1(config-radius-server)# key RADIUS-Pa55w0rd
S1(config-radius-server)# exit
S1(config)# aaa authentication dot1x default group radius
S1(config)# dot1x system-auth-control
S1(config)# interface F0/1
S1(config-if)# description Access Port
S1(config-if)# switchport mode access
S1(config-if)# authentication port-control auto
S1(config-if)# dot1x pae authenticator
配置 802.1X 需要几个基本步骤:
步骤 1:使用 aaa new-model 命令启用 AAA 并配置 RADIUS 服务器。
步骤 2:使用 aaa authentication dot1x 命令创建 802.1X 基于端口的认证方法列表。
步骤 3:使用 dot1x system-auth-control 命令全局启用 802.1X 基于端口的认证。
步骤 4:使用 authentication port-control auto 命令在接口上启用基于端口的认证。
步骤 5. 使用 dot1x pae 命令在接口上启用 802.1X 认证。使用 authenticator 选项可设置端口访问实体 (Port Access Entity ,PAE) 类型,此时接口仅用作认证方,且不会对发送给请求方的任何消息作出响应。
实施防火墙技术
实施防火墙有两种常见的方法:
-
数据包过滤防火墙 (Packet filtering firewall) - 通常是能够使用 ACL 过滤数据包内容(如第 3 层信息,有时是第 4 层信息)的路由器。
-
状态防火墙 (Stateful firewall) - 监控连接的状态,无论连接是处于发起状态、数据传输状态还是终止状态。
状态防火墙可以采用以下三种方式实施:
-
流量过滤解决方案 - 包括使用 TCP established 选项的 ACL,和扩展 ACL 的功能以考虑网络流量的双向性质的自反 ACL。
-
思科 IOS 传统防火墙 - 传统防火墙以前称为 CBAC,对大多数形式的现代应用流量提供复杂的状态过滤。传统防火墙配置非常复杂,且依赖于对相应接口应用的 ACL 和检查规则。
-
ZPF - 于 2006 年推出,这是最先进的现代防火墙。ZPF 配置以创建与网络的各个区域关联并用于实现不同安全性级别的区域为中心。与 CBAC 相比,ZPF 更结构化且更容易理解。ZPF 使用类映射和策略映射以便对流量进行分类和过滤。
配置编号和命名 ACL
标准编号ACL语法
access-list {acl-#} {permit | deny | remark} source-addr [source-wildcard][log]
参数 | 说明 |
---|---|
acl-# | 这是一个十进制数,值在 1 到 99 或 1300 到 1999 之间。 |
deny | 匹配条件时拒绝访问。 |
permit | 匹配条件时允许访问。 |
remark | 在 IP 访问列表中添加备注,增强列表的可读性。 |
source-addr | 发送数据包的网络号或主机号。可通过两种方法指定 source-addr:使用以点分十进制格式分四部分的 32 位数字。使用关键字 any 作为 source 和 source-wildcard d 0.0.0.0 255.255.255.255 的缩写。 |
source-wildcard | (可选)要应用到源的 32 位通配符掩码。在要忽略的位上置 1。 |
日志 | (可选)对匹配条目的数据包生成信息性日志消息,该消息将随后发送到控制台。(记录到控制台的消息级别由 logging console 命令控制。) 消息内容包括 ACL 号、数据包是被允许还是被拒绝、源地址以及数据包的数量。此消息在出现与条件匹配的第一个数据包时生成,随后每五分钟生成一次,其中会包含在过去的五分钟内允许或拒绝的数据包的数量。 |
- 标准 ACL 仅根据源地址过滤 IP 数据包。
扩展编号 ACL 语法
access-list acl-# {permit | deny | remark} protocol source-addr [source-wildcard]
dest-addr [dest-wildcard][operator port][established]
参数 | 说明 |
---|---|
acl-# | 使用 100 至 199(扩展 IP ACL)或 2000 至 2699(扩充 IP ACL)之间的数字标识访问列表。 |
deny | 匹配条件时拒绝访问。 |
permit | 匹配条件时允许访问。 |
remark | 用于输入注释或评论。 |
protocol | Internet 协议的名称或编号。常用关键字包括 .icmp、ip、tcp 或 udp。要匹配所有 Internet 协议(包括 ICMP、TCP 和 UDP),则使用 ip 关键字。 |
source-addr | 发送数据包的网络号或主机号。 |
source-wildcard | 要对源应用的通配符位。 |
destination-addr | 接收数据包的网络号或主机号。 |
destination-wildcard | 要对目的应用的通配符位。 |
operator | (可选)对比源或目的端口。可能的运算符包括 . lt(小于)、gt(大于)、eq(等于)、neq(不等于)和 range(范围)。 |
port | (可选)TCP 或 UDP 端口的十进制数或名称。 |
established | (可选)仅用于 TCP 协议:指示已建立的连接。 |
命名 ACL 语法
Router(config)# ip access-list [standard | extended] name_of_ACL
- 可以使用名称(而不是使用编号)配置 ACL。必须指定为标准或扩展类型。
Router(config-std-nacl)# {permit | deny | remark} {source [source-wildcard] | any}
Router(config-ext-nacl)# {permit | deny | remark} protocol source-addr [source-wildcard]
dest-address [dest-wildcard] [operator port]
应用 ACL
创建 ACL 后,管理员可以采用许多不同的方式应用它。
Router(config-if)# ip access-group {acl-#|name} {in|out}
- 将 ACL 应用于接口
Router(config-line)# access-class {acl-#|name} {in|out}
- 将 ACL 应用于VTY 线路
R1(config)# ip access-list standard NO_ACCESS
R1(config-std-nacl)# deny host 192.168.11.10
R1(config-std-nacl)# permit any
R1(config-std-nacl)# exit
R1(config)# interface g0/0
R1(config-if)# ip access-group NO_ACCESS out
- 标准命名:应用于出站流量的标准命名 ACL的一个例子
R1(config)# ip access-list extended SURFING
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 any eq 80
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 any eq 443
R1(config-ext-nacl)# exit
R1(config)# ip access-list extended BROWSING
R1(config-ext-nacl)# permit tcp any 192.168.10.0 0.0.0.255 established
R1(config-ext-nacl)# exit
R1(config)# interface g0/0
R1(config-if)# ip access-group SURFING in
R1(config-if)# ip access-group BROWSING out
- 扩展命名的一个示例
R1(config)# ip access-list standard VTY_ACCESS
R1(config-std-nacl)# permit 192.168.10.10 log
R1(config-std-nacl)# deny any
R1(config-std-nacl)# exit
R1(config)# line vty 0 4
R1(config-line)# access-class VTY_ACCESS in
R1(config-line)# end
R1#!The administrator accesses the vty lines from 192.168.10.10
R1#
*Feb 26 18:58:30.579: %SEC-6-IPACCESSLOGNP: list VTY_ACCESS permitted 0
192.168.10.10 -> 0.0.0.0, 5 packets
R1# show access-lists
Standard IP access list VTY_ACCESS
10 permit 192.168.10.10 log (6 matches)
20 deny any
- 已使用 log 参数启用日志记录。在第一个数据包匹配时,系统会生成日志消息。然后,系统以五分钟的时间间隔生成日志消息。可以使用 show access-list 命令查看有多少数据包与语句匹配。
- 在思科路由器或交换机上启用 log 参数会严重影响该设备的性能。当网络受到攻击,且管理员尝试确定谁是攻击者时,仅应使用 log 参数。
ACL 配置指南
- 在全局范围内创建一个 ACL,然后应用它。
- 确保最后一个语句是一个隐式 deny any 或 deny any any。
- 请记住,语句顺序很重要,因为 ACL 是自上而下处理的。只要匹配一条语句,就会退出 ACL。
- 确保最具体的语句位于列表顶部。
- 请记住,每个接口的每个协议在每个方向上只允许一个 ACL。
- 请记住,默认情况下,现有 ACL 的新语句会添加到 ACL 的底部。
- 请记住,出站 ACL 不会过滤路由器生成的数据包。
- 尽可能靠近目的地址放置标准 ACL。
- 扩展 ACL 应尽可能靠近源。
编辑现有 ACL
Router# show access-lists
Extended IP access list 101
10 permit tcp any any
20 permit udp any any
30 permit icmp any any
- 默认情况下,以 10 为增量进行序列编号。
Router(config)# ip access-list extended 101
Router(config-ext-nacl)# no 20
Router(config-ext-nacl)# 5 deny tcp any any eq telnet
Router(config-ext-nacl)# 20 deny udp any any
- 编辑访问列表,添加新的 ACE 并替换 ACE 第 20 行。
Router# show access-lists
Extended IP access list 101
5 deny tcp any any eq telnet
10 permit tcp any any
20 deny udp any any
30 permit icmp any any
- 更新和插入。
序列号和标准 ACL例子
router# show access-lists
Standard IP access list 19
10 permit 192.168.100.1
20 permit 10.10.10.0, wildcard bits 0.0.0.255
30 permit 201.101.110.0, wildcard bits 0.0.0.255
40 deny any
- 现在有四个ACL
router(config)# ip access-list standard 19
router(config-std-nacl)# 25 permit 172.22.1.1
- 编辑访问列表,添加新的 ACE 并允许特定 IP 地址。
router# show access-lists
Standard IP access list 19
10 permit 192.168.100.1
25 permit 172.22.1.1
20 permit 10.10.10.0, wildcard bits 0.0.0.255
30 permit 201.101.110.0, wildcard bits 0.0.0.255
40 deny any
- 更新的访问列表将新的 ACE 置于 ACE 第 20 行前面。
注意:编号表示语句的输入顺序,而不是语句的处理顺序。在重新加载路由器后,系统会对显示访问列表序列号重新编号,以反映新的序列。
利用 ACL 反欺骗
大多数 DoS 攻击都会使用某种欺骗手段。IP 地址欺骗通过插入具有不同源 IP 地址的自定义 IP 报头覆盖正常数据包创建过程。
在路由器外网入内网:
R1(config)# access-list 150 deny ip host 0.0.0.0 any
R1(config)# access-list 150 deny ip 10.0.0.0 0.255.255.255 any
R1(config)# access-list 150 deny ip 127.0.0.0 0.255.255.255 any
R1(config)# access-list 150 deny ip 172.16.0.0 0.15.255.255 any
R1(config)# access-list 150 deny ip 192.168.0.0 0.0.255.255 any
R1(config)# access-list 150 deny ip 224.0.0.0 15.255.255.255 any
R1(config)# access-list 150 deny ip host 255.255.255.255 any
有许多已知 IP 地址类永远不能视为进入组织网络的流量的源 IP 地址。例如,图中的 S0/0/0 接口连接到互联网,永远不能接受来自以下地址的入站数据包:
-
所有全零地址
-
广播地址
-
本地主机地址 (127.0.0.0/8)
-
保留的私有地址 (RFC 1918)
-
IP 组播地址范围 (224.0.0.0/4)
允许必要的流量通过防火墙
R1(config)# access-list 180 permit udp any host 192.168.20.2 eq domain
R1(config)# access-list 180 permit tcp any host 192.168.20.2 eq smtp
R1(config)# access-list 180 permit tcp any host 192.168.20.2 eq ftp
R1(config)# access-list 180 permit tcp host 200.5.5.5 host 10.0.1.1 eq 22
R1(config)# access-list 180 permit udp host 200.5.5.5 host 10.0.1.1 eq syslog
R1(config)# access-list 180 permit udp host 200.5.5.5 host 10.0.1.1 eq snmptrap
减轻 ICMP 滥用
黑客可以使用互联网控制消息协议(Internet Control Message Protocol,ICMP)回应数据包 (ping),来发现受保护网络上的子网和主机,并发起 DoS 泛洪攻击。或者使用 ICMP 重定向消息来修改主机路由表。路由器应阻止 ICMP 回应消息和重定向消息入站。
R1(config)# access-list 112 permit icmp any any echo-reply
R1(config)# access-list 112 permit icmp any any source-quench
R1(config)# access-list 112 permit icmp any any unreachable
R1(config)# access-list 112 deny icmp any any
R1(config)# access-list 112 permit ip any any
要使网络正常运行,请建议允许以下几种 ICMP 消息通过,并且应允许这些消息进入内部网络:
-
回应应答 (Echo reply) - 允许用户对外部主机执行 ping 操作。
-
源抑制 (Source quench) - 请求发送方减少消息的流量速率。
-
不可达 (Unreachable) - 为 ACL 管理性拒绝的数据包生成该消息。
R1(config)# access-list 114 permit icmp 192.168.1.0 0.0.0.255 any echo
R1(config)# access-list 114 permit icmp 192.168.1.0 0.0.0.255 any parameter-problem
R1(config)# access-list 114 permit icmp 192.168.1.0 0.0.0.255 any packet-too-big
R1(config)# access-list 114 permit icmp 192.168.1.0 0.0.0.255 any source-quench
R1(config)# access-list 114 deny icmp any any
R1(config)# access-list 114 permit ip any any
要使网络正常运行,需要使用以下几条 ICMP 消息且应允许这些消息离开网络:
-
回应 (Echo) - 允许用户对外部主机执行 ping 操作。
-
参数问题 (Parameter problem) - 通知主机数据包报头问题。
-
数据包过大 (Packet too big) - 启用数据包最大传输单元 (MTU) 发现。
-
源抑制 (Source quench) - 必要时控制流量。
通常,应阻止所有其他 ICMP 消息类型出站。
IPv6 ACL 语法
IPv6 中的 ACL 功能与 IPv4 中的 ACL 类似。但是,没有任何 IPv6 ACL 与 IPv4 标准 ACL 完全等同,且必须为所有 IPv6 ACL 配置名称。IPv6 ACL 允许基于源和目的地址过滤出入特定接口的流量,还支持基于 IPv6 选项报头和可选上层协议类型信息过滤流量,以实现更精细的控制,类似于 IPv4 中的扩展 ACL。
R1(config)# ipv6 access-list access-list-name
R1(config-ipv6-acl)# deny | permit protocol {source-ipv6-prefix/prefix-length | any | host
source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any
| host destination-ipv6-address} [operator [port-number]]
- 要配置 IPv6 ACL,请使用 ipv6 access-list 命令进入 IPv6 ACL 配置模式。接下来配置每个访问列表条目,以明确允许或拒绝流量。使用 ipv6 traffic-filter 命令将 IPv6 ACL 应用于相应接口。
参数 | 说明 |
---|---|
deny | permit | 指定允许还是拒绝数据包。 |
protocol | 输入 Internet 协议的名称或编号,或代表 IPv6 协议号的整数。 |
source-ipv6-prefix/prefix-length destination-ipv6-address | 要设置拒绝或允许条件的源或目的 IPv6 网络或网络类别。 |
any | 输入 any 作为 IPv6 前缀 ::/0 的缩写。这将匹配所有地址。 |
host | 对于 host source-ipv6-address 或 destination-ipv6-address,输入要设置拒绝或允许条件的源或目的 IPv6 主机地址。 |
operator | (可选)比较指定协议的源或目的端口的运算。运算包括 lt(小于)、gt(大于)、eq(等于)、neq(不等于)和范围。 |
port-number | (可选)分别用于过滤 TCP 或 UDP 的 TCP 或 UDP 端口的十进制数或名称。 |
配置 IPv6 ACL
IPv6 ACL 包含隐式 deny ipv6 any。每个 IPv6 ACL 还包含隐式允许规则以启用 IPv6 邻居发现。IPv6 NDP 需要使用 IPv6 网络层发送邻居通告(neighbor advertisement,NA)和邻居请求(neighbor solicitation,NS)。如果管理员配置 deny ipv6 any 命令时未显式允许邻居发现,则 NDP 将被禁用。
R1(config)# ipv6 access-list LAN_ONLY
R1(config-ipv6-acl)# permit 2001:db8:1:1::/64 any
R1(config-ipv6-acl)# permit icmp any any nd-na
R1(config-ipv6-acl)# permit icmp any any nd-ns
R1(config-ipv6-acl)# deny ipv6 any any
R1(config-ipv6-acl)# end
R1# show ipv6 access-list
IPv6 access list LAN_ONLY
permit ipv6 2001:DB8:1:1::/64 any sequence 10
permit icmp any any nd-na sequence 20
permit icmp any any nd-ns sequence 30
deny ipv6 any any sequence 40
- R1 允许来自 2001:DB8:1:1::/64 网络的入站流量通过 G0/0。明确允许任何 NA 和 NS 数据包。明确拒绝源自任何其他 IPv6 地址的流量。如果管理员仅配置了第一条 permit 语句,ACL 将具有同样的效果。但是,较好的做法是通过显式配置来记录隐式语句。
基于区域的防火墙策略 (ZPF)
ZPF是个防火墙,比如配置内部机器主动连接外部服务器发送请求,外部服务器可以返回数据给内部机器,但是外部服务器却不可以主动发送请求去内网的机器。
步骤 1:创建区域
在创建区域之前,请回答下面几个问题:
-
区域中应包含哪些接口?
-
每个区域的名称是什么?
-
各区域间的哪些流量是必要的以及是什么方向的?
Router(config)# zone security zone-name
- 使用 zone security 命令创建防火墙的区域
R1(config)# zone security PRIVATE
R1(config-sec-zone)# exit
R1(config)# zone security PUBLIC
- 一个例子
步骤 2:使用类映射标识流量
一种使用“匹配”条件基于内容标识一组数据包的方式。通常,您要定义一个类,以便您可以将某种操作应用于反映策略的已标识流量。使用类映射定义类。
Router(config)# class-map type inspect [match-any | match-all] class-map-name
参数 | 说明 |
---|---|
match-any | 数据包必须满足其中一个匹配条件才会被视为类成员。 |
match-all | 数据包必须满足所有匹配条件才会被视为类成员。 |
class-map-name | 用于在策略映射中为类配置策略的类映射名称。 |
- class-map 命令的语法。类映射有多种类型。对于 ZPF 配置,使用 inspect 关键字来定义类映射。确定存在多个匹配条件时如何评估数据包。数据包必须满足其中一个匹配条件 (match any) 或所有匹配条件 (match-all) 才会被视为类成员。
Router(config-cmap)# match access-group {acl-# | acl-name }
Router(config-cmap)# match protocol protocol-name
Router(config-cmap)# match class-map class-map-name
参数 | 说明 |
---|---|
match access-group | 根据指定 ACL 编号或名称为类映射配置匹配条件。 |
match protocol | 根据指定协议为类映射配置匹配条件。 |
match class-map | 使用另一个类映射标识流量。 |
- 类映射子配置模式下的匹配语句的语法。将流量与 ACL、特定协议甚至另一个类映射进行匹配。
R1(config)# class-map type inspect match-any HTTP-TRAFFIC
R1(config-cmap)# match protocol http
R1(config-cmap)# match protocol https
R1(config-cmap)# match protocol dns
- HTTP 流量被允许通过 R1 传输到公共区域。当允许 HTTP 流量时,建议特别包括 HTTPS 和 DNS 协议。流量匹配任何语句即可成为 HTTP-TRAFFIC 类的成员。
步骤 3:使用策略映射定义操作
第三步是使用策略映射定义对属于类成员的流量应采取的操作。
配置策略映射的命令语法。操作是一种特定功能。它通常与流量类关联。例如,检查、丢弃和通过都属于操作。
Router(config)# policy-map type inspect policy-map-name
Router(config-pmap)# class type inspect class-map-name
Router(config-pmap-c)# { inspect | drop | pass }
-
inspect - 此操作提供基于状态的流量控制。例如,如果检查从专用区域传输到公共区域的流量,路由器将维护 TCP 和 UDP 流量的连接或会话信息。然后,路由器将允许从公共区域主机发送返回流量,以回复专用区域连接请求。
-
drop - 这是对所有流量的默认操作。与每个 ACL 末尾的隐式 deny any 操作类似,IOS 在每个策略映射的末尾都应用了显式 drop操作。其在任何策略映射配置的最后一部分作为 class class-default 列出。策略映射内的其他类映射也可配置为丢弃不需要的流量。与 ACL 不同的是,系统以静默方式丢弃流量,且不会向流量的源发送 ICMP 不可达消息。
-
pass - 此操作允许路由器将流量从一个区域转发到另一个区域。pass 操作不会跟踪连接状态。pass 操作仅允许一个方向的流量。要允许返回流量从相反方向通过,必须应用相应的策略。pass 操作适用于具有可预测行为的安全协议,例如 IPsec。但是,在ZPF中,使用inspect操作能更好地处理大多数应用流量。
R1(config)# policy-map type inspect PRIV-TO-PUB-POLICY
R1(config-pmap)# class type inspect HTTP-TRAFFIC
R1(config-pmap-c)# inspect
- 策略映射配置的示例。上一步中配置的 HTTP-TRAFFIC 类与名为 PRIV-TO-PUB-POLICY 的新的策略映射关联。第三个 inspect 命令用于将 R1 配置为维护属于 HTTP-TRAFFIC 类成员的所有流量的状态信息。
步骤 4:标识区域对,并将其与策略映射匹配
第四步是标识区域对并将该区域对与策略映射关联
Router(config)# zone-pair security zone-pair-name source {source-zone-name | self
} destination {destination-zone-name | self }
Router(config-sec-zone-pair)# service-policy type inspect policy-map-name
参数 | 说明 |
---|---|
source source-zone-name | 指定流量来自的区域的名称。 |
destination destination-zone-name | 指定流量发往的区域的名称。 |
self | 指定系统定义的区域。表示流量是否流向路由器自身或从路由器自身处流出。 |
- 使用 zone-pair security 命令创建区域对。然后,使用 service-policy type inspect 命令将策略映射及其关联的操作附加到该区域对。
R1(config)# zone-pair security PRIV-PUB source PRIVATE destination PUBLIC
R1(config-sec-zone-pair)# service-policy type inspect PRIV-TO-PUB-POLICY
- 区域对配置的示例。创建一个名为 PRIV-PUB 的区域对,将专用区域指定为源区域,将公共区域指定为目的区域。然后,将在上一步中创建的策略映射与该区域对关联。
在配置防火墙策略后,管理员可以使用 zone-pair security 命令将其应用于区域对之间的流量。要应用策略,请将其分配给区域对。区域对需要指定源区域、目的区域和用于处理源区域和目的区域之间的流量的策略。
步骤 5:将区域分配给适当的接口
第五步是将区域分配给适当的接口。将区域与接口关联后,系统将立即应用已与区域关联的服务策略。如果尚未为区域配置服务策略,则将丢弃所有传输流量。
Router(config-if)# zone-member security zone-name
R1(config)# interface GigabitEthernet 0/0
R1(config-if)# zone-member security PRIVATE
R1(config-if)# interface Serial 0/0/0
R1(config-if)# zone-member security PUBLIC
- 使用 zone-member security 命令将区域分配给接口。在本例中,为 千兆端口G0/0 分配专用区域,为串行接口 0/0/0 分配公共区域。
服务策略现在处于活动状态。系统会检查来自专用区域和发往公共区域的 HTTP、HTTPS 和 DNS 流量。仅当来自公共区域和发往专用区域的流量属于由专用区域主机发起的会话时,才允许这些流量。
验证 ZPF 配置
R1# show run | begin class-map
!
<省略部分输出>
!
class-map type inspect match-any HTTP-TRAFFIC
match protocol http
match protocol https
match protocol dns
!
policy-map type inspect PRIV-TO-PUB-POLICY
class type inspect HTTP-TRAFFIC
inspect
class class-default
drop
!
zone security PRIVATE
zone security PUBLIC
zone-pair security PRIV-PUB source PRIVATE destination PUBLIC
service-policy type inspect PRIV-TO-PUB-POLICY
!
interface GigabitEthernet0/0
zone-member security PRIVATE
!
interface Serial0/0/0
zone-member security PUBLIC
!
- 首先列出类映射。然后,策略映射利用类映射。另请注意, class class-default 将丢弃不属于 HTTP-TRAFFIC 类成员的所有其他流量。
区域配置遵循策略映射配置,进行区域命名、区域配对,并将服务策略与区域对关联。最后,为接口分配区域。
R1# show policy-map type inspect zone-pair sessions
policy exists on zp PRIV-PUB
Zone-pair: PRIV-PUB
Service-policy inspect : PRIV-TO-PUB-POLICY
Class-map: HTTP-TRAFFIC (match-any)
Match: protocol http
12 packets, 384 bytes
30 second rate 0 bps
Match: protocol https
5 packets, 160 bytes
30 second rate 0 bps
Match: protocol dns
0 packets, 0 bytes
30 second rate 0 bps
Inspect
Number of Established Sessions = 1
Established Sessions
Session 2204E220 (192.168.1.3:1049)=>(10.1.1.2:443) https:tcp
SIS_OPEN/TCP_CLOSEWAIT
Created 00:00:14, Last heard 00:00:11
Bytes sent (initiator:responder) [821:1431]
Class-map: class-default (match-any)
Match: any
Drop
4 packets, 160 bytes
- 显示测试 ZPF 配置后的验证信息。专用区域主机 192.168.1.3 与位于 10.1.1.2 上的 Web 服务器建立 HTTPS 会话。继续向下看命令输出,您还会发现四个数据包与 class class-default 匹配。此验证信息通过让主机 192.168.1.3 对位于 10.1.1.2 上的 Web 服务器执行 ping 操作生成。
Router# show class-map type inspect
Router# show zone security
Router# show zone-pair security
Router# show policy-map type inspect
- 查看 ZPF 配置的特定部分的其他验证命令。
R1# show class-map type inspect
Class Map type inspect match-any HTTP-TRAFFIC (id 1)
Match protocol http
Match protocol https
Match protocol dns
R1# show zone security
zone self
Description: System Defined Zone
zone PRIVATE
Member Interfaces:
GigabitEthernet0/0
zone PUBLIC
Member Interfaces:
Serial0/0/0
R1# show zone-pair security
Zone-pair name PRIV-PUB
Source-Zone PRIVATE Destination-Zone PUBLIC
service-policy PRIV-TO-PUB-POLICY
R1# show policy-map type inspect
Policy Map type inspect PRIV-TO-PUB-POLICY
Class HTTP-TRAFFIC
Inspect
Class class-default
Drop
ZPF 配置注意事项
使用 CLI 配置 ZPF 时,要考虑以下几个因素:
-
不会对区域内流量应用过滤 - 路由器永远不会过滤同一区域中的接口之间的流量。
-
只允许向每个接口分配一个区域 - 一个接口不能属于多个区域。要创建安全区域联合体,请指定新的区域以及相应的策略映射和区域对。
-
不在同一个接口上同时配置传统防火墙和基于区域的策略防火墙 - 虽然 ZPF 可以与传统防火墙共存,但不能在同一接口上使用它们。先删除 ip inspect 接口配置命令,然后再应用 zone-member security 命令。
-
如果只分配了一个区域成员,系统将丢弃所有流量 - 流量不能在分配给某个区域的接口和未分配区域的接口之间流动。应用 zone-member 配置命令总是会导致服务暂时中断,直到配置了其他区域成员。
-
仅在区域之间转发明确允许的流量 - 默认区域间策略是丢弃所有流量,除非为区域对配置的服务策略明确允许相应流量。
-
不过滤进入自身区域的流量 - zone-member 命令不会保护路由器本身(发往路由器和来自路由器的流量不受影响),除非使用预定义 self zone 配置区域对。
创建ZPF小结
-
创建 ACL 以定义可以在不同区域之间传输的流量。
-
创建区域。
-
将区域分配给接口。
-
创建类映射以标识流量。
-
创建策略映射,以丢弃、检查或允许流量。
-
将类映射分配给策略映射。
-
配置区域对。
-
将相应策略映射与区域对关联。
-
测试并进行验证。
实施入侵防御
网络必须能够立即识别并缓解蠕虫和病毒威胁。要保护网络免受迅速扩散的互联网蠕虫和病毒入侵,应通过内联方式实施基于网络的 IPS,同时离线实施 IDS。
IPS 签名类似于防病毒 .dat 文件,因为它们为 IPS 提供已发现问题的列表。IPS 签名配置为使用各种触发器和操作。安全人员必须持续监控 IPS 解决方案,以确保它提供充分的保护。否则,可能需要根据具体网络情况调整签名。
端口镜像
端口镜像功能允许交换机复制传入的以太帧,然后将其从某个端口发送出去,同时连接一个数据包分析器来捕获数据包。原始帧以正常方式转发。
Cisco SPAN
思科交换机上的交换端口分析器 (SPAN) 功能可以将进入某个端口的帧的副本发送到同一交换机上的其他端口。运行数据包分析器或 IDS 的主机可以位于该端口的另一端。
SPAN 术语包括几个特定项目:
-
入口流量 - 进入交换机的流量。
-
出口流量 - 离开交换机的流量。
-
源 (SPAN) 端口 - 使用 SPAN 功能进行监控的端口。
-
目的 (SPAN) 端口 - 监控源端口的端口,通常连接数据包分析器、IDS 或 IPS。
配置 SPAN 时需考虑以下三个重要事项:
-
目的端口不能是源端口,源端口也不能是目的端口。
-
目的端口的数量取决于平台。一些平台允许多个目的端口。
-
目的端口不再是普通的交换机端口。仅被监控的流量会通过该端口。
使用入侵检测配置思科 SPAN
思科交换机上的 SPAN 功能将进入源端口的每个帧的副本从目的端口发往数据包分析器或 IDS。
Switch(config)# monitor session number source [ interface interface | vlan vlan ]
- 将 SPAN 会话与源端口关联
Switch(config)# monitor session number destination [ interface interface | vlan vlan ]
- 将 SPAN 会话与目的端口关联
S1(config)# monitor session 1 source interface fastethernet 0/1
S1(config)# monitor session 1 destination interface fastethernet 0/2
- PCA 连接到 F0/1,IDS 连接到 F0/2。目的是捕获 PCA 通过端口 F0/1 发送或接收的所有流量,并将这些帧的副本发送到端口 F0/2 上的 IDS(或数据包分析器)。交换机上的 SPAN 会话将它通过源端口 F0/1 发送和接收的所有流量复制到目的端口 F0/2。
S1# show monitor
Session 1
---------
Type : Local Session
Source Ports :
Both : Fa0/1
Destination Ports : Fa0/2
Encapsulation : Native
Ingress : Disabled
- show monitor 命令用于验证 SPAN 会话。此命令显示会话的类型、每个流量方向的源端口以及目的端口。会话编号为 1,两个流量方向的源端口为 F0/1,目的端口为 F0/2。禁用目的端口的入口 SPAN,因此仅将目的端口发送的流量复制到该端口。
实施 IOS IPS
思科 IOS IPS 可让管理员管理路由器上的入侵防御。思科 IOS IPS 可监控并阻止入侵,其将流量与已知威胁的签名进行比较,并在检测到威胁时阻止流量。
将思科 IOS CLI 与 IOS IPS 5.x 格式的签名配合使用需要几个步骤。思科 IOS 版本 12.4(10) 或更早版本使用 IPS 4.x 格式的签名,且某些 IPS 命令已更改。
实施 IOS IPS:
步骤 1:下载 IOS IPS 文件。
在配置 IPS 之前,必须从 cisco.com 下载 IOS IPS 签名包文件和公共加密密钥。要下载的具体 IPS 文件因当前版本而异。只有注册客户才能下载签名包文件和密钥。
-
IOS-Sxxx-CLI.pkg - 最新签名包。
-
realm-cisco.pub.key.txt - IOS IPS 使用的公共加密密钥。
步骤 2:在闪存中创建 IOS IPS 配置目录。
在闪存中创建一个用于存储签名文件和配置的目录。使用 mkdir 特权 EXEC 命令可在闪存中创建目录。其他有用命令包括 rename,这允许更改目录的名称。要验证闪存的内容,请输入 dir flash: 特权 EXEC 模式命令。
Router# mkdir directory-name
- 创建目录
Router# rename current-name new-name
- 重命名目录
Router# dir [/all] [filesystem: ][file-url]
- 显示目录
思科 IOS IPS 支持任何思科 IOS 文件系统作为配置位置,只要其具有适当的写入访问权限。连接到路由器上的 USB 端口的思科 USB 闪存驱动器可用作存储签名文件和配置的替代位置。如果 USB 闪存驱动器用作 IOS IPS 配置目录位置,它必须保持连接到路由器上的 USB 端口。
R1# mkdir IPSDIR
Create directory filename [IPSDIR]?
Created dir flash0:/IPSDIR
R1# dir flash:
Directory of flash0:/
14 -rw- 1381 Feb 18 2015 20:37:14 +00:00 R2backup.cfg
15 drw- 0 Feb 28 2015 01:14:12 +00:00 IPSDIR
256487424 bytes total (175632384 bytes free)
R1#
步骤 3:配置 IOS IPS 加密密钥。
第三步是配置 IOS IPS 使用的加密密钥。此密钥位于在第一步中获取的 realm-cisco.pub.key.txt 文件中。
加密密钥用于验证主签名文件 (sigdef-default.xml) 的数字签名。该文件的内容由思科私钥签名,以保证其真实性和完整性。
打开要配置 IOS IPS 加密密钥的文本文件。复制文件的内容,并在全局配置提示符后将内容粘贴到路由器。文本文件会发出各种命令以生成 RSA 密钥。
在编译签名时,如果公共加密密钥无效,将生成错误信息。
错误消息示例:
%IPS-3-INVALID_DIGITAL_SIGNATURE: Invalid Digital Signature found (key not found)(IPS-3-INVALID_DIGITAL_SIGNATURE:找到无效的数字签名(未找到密钥))
如果密钥配置错误,则必须删除密钥,然后重新配置。使用 no crypto key pubkey-chain rsa 和 no named-key realm-cisco.pub signature 命令。然后,重复第三步中的程序以重新配置密钥。
R1# show run
<省略部分输出>
crypto key pubkey-chain rsa
named-key realm-cisco.pub signature
key-string
30820122 300D0609 2A864886 F70D0101 01050003 82010F00 3082010A 02820101
00C19E93 A8AF124A D6CC7A24 5097A975 206BE3A2 06FBA13F 6F12CB5B 4E441F16
17E630D5 C02AC252 912BE27F 37FDD9C8 11FC7AF7 DCDD81D9 43CDABC3 6007D128
B199ABCB D34ED0F9 085FADC1 359C189E F30AF10A C0EFB624 7E0764BF 3E53053E
5B2146A9 D7A5EDE3 0298AF03 DED7A5B8 9479039D 20F30663 9AC64B93 C0112A35
FE3F0C87 89BCB7BB 994AE74C FA9E481D F65875D6 85EAF974 6D9CC8E3 F0B08B85
50437722 FFBE85B9 5E4189FF CC189CB9 69C46F9C A84DFBA5 7A0AF99E AD768C36
006CF498 079F88F8 A3B3FB1F 9FB7B3CB 5539E1D1 9693CCBB 551F78D2 892356AE
2F56D826 8918EF3C 80CA4F4D 87BFCA3B BFF668E9 689782A5 CF31CB6E B4B094D3
F3020301 0001
<省略部分输出>
步骤 4:启用 IOS IPS。
第四步是配置 IOS IPS,此过程包含四个子步骤。
a. 识别 IPS 规则名称并指定位置。
Router(config)# ip ips name [rule-name]
- 使用命令 ip ips name 命令创建规则名称。
Router(config)# ip ips config location flash:<directory-name>
- 使用 ip ips config location flash 命令配置 IPS 签名存储位置。在示例中,闪存中的 IPS 位置标识为 flash:IPS。
- 注意:在 IOS 12.4(11)T 之前,使用 ip ips sdf location 命令。
R1(config)# ip ips name IOSIPS
R1(config)# ip ips name IOSIPS list ?
<1-199> Numbered access list
WORD Named access list
R1(config)# ip ips config location flash:IPS
- 上面的例子创建了一个名为 IOSIPS 的 IPS 规则。可以配置可选扩展或标准 ACL 以过滤扫描的流量。ACL 允许的所有流量都要经过 IPS 的检查。IPS 不会检查 ACL 拒绝的流量。
b. 启用 SDEE 和日志记录事件通知。
R1(config)# ip http server
R1(config)# ip ips notify ?
SDEE Send events to SDEE
log Send events as syslog messages
R1(config)# ip ips notify sdee
R1(config)# ip ips notify log
- 要使用 SDEE,必须首先使用 ip http server 或 ip https server 命令启用 HTTP 或 HTTPS 服务器。如果未启用 HTTP 服务器,则路由器无法响应 SDEE 客户端,因为它无法查看请求。默认情况下,禁用 SDEE 通知并且必须明确启用。
Router(config)# ip ips notify [ sdee | log ]
参数 | 说明 |
---|---|
sdee | 以 SDEE 格式发送消息。 |
log | 以系统日志格式发送消息。注意:如果未指定选项,则将以系统日志格式发送警报消息。 |
- 使用 ip ips notify sdee 命令启用 IPS SDEE 事件通知。IOS IPS 还支持日志记录以发送事件通知。SDEE 和日志记录可以使用单独,也可以同时启用。默认情况下,启用日志记录通知。如果启用日志记录控制台,控制台上会显示 IPS 日志消息。使用 ip ips notify log 命令启用日志记录。将 IPS 日志消息发送到系统日志服务器(如果已配置)。
c. 配置签名类别。
所有签名都按类别分组,且类别是分层的。这有助于对签名进行分类,便于分组和调整。最常用的三个类别是 all、basic 和 advanced。
IOS IPS 用于扫描流量的签名可以停用或取消停用。停用签名意味着 IOS IPS 不会将该签名编译到内存中以便进行扫描。取消停用签名会指示 IOS IPS 将签名编译到内存,并使用它扫描流量。当首次配置 IOS IPS 时,应停用 all 类别中的所有签名。然后,应在较低内存密集型类别中取消停用所选签名。要停用和取消停用签名,请先使用 ip ips signature-category 命令输入 IPS 类别模式。接下来使用 category 命令更改类别。例如,使用 category all 命令进入 IPS 类别 all 操作模式。要停用某个类别,请使用 retired true 命令。要取消停用某个类别,请使用 retired false 命令。
R1(config)# ip ips signature-category
R1(config-ips-category)# category all
R1(config-ips-category-action)# retired true
R1(config-ips-category-action)# exit
R1(config-ips-category)# category ios_ips ?
advanced Advanced
basic Basic
< cr >
R1(config-ips-category)# category ios_ips basic
R1(config-ips-category-action)# retired false
R1(config-ips-category-action)# end
Do you want to accept these changes? [confirm]
R1#
*Dec 9 04:29:39.119: Applying Category configuration to signatures ...
R1#
- all IPS 类别停用,basic IPS 类别取消停用。
小心:不要取消停用 all 类别。all 签名类别包含签名版本中的所有签名。IOS IPS 无法一次编译并使用所有签名,否则会耗尽内存。
在路由器上配置签名类别的顺序也很重要。IOS IPS 按配置中列出的顺序处理类别命令。有些签名属于多个类别。如果配置了多个类别且某个签名属于多个类别,IOS IPS 将使用最后配置的类别中的签名属性,例如,已停用、已取消停用或操作。
d. 将 IPS 规则应用于所需接口,并指定方向。
Router(config)# ip ips ips-name { in | out }
参数 | 说明 |
---|---|
in | 将 IPS 应用于入站流量。 |
out | 将 IPS 应用于出站流量。 |
- 使用 ip ips 接口配置命令应用 IPS 规则
R1(config)# interface g0/0
R1(config-if)# ip ips IOSIPS in
R1(config-if)# exit
R1(config)# interface g0/1
R1(config-if)# ip ips IOSIPS in
R1(config-if)# ip ips IOSIPS out
R1(config-if)# end
- IPS 规则 IOSIPS 应用于 G0/0 接口上的传入流量。它还应用于 G0/1 接口上的传入和传出流量。
步骤 5:将 IOS IPS 签名包加载到路由器中。
最后一步是让管理员将签名包上传到路由器。最常见的方法是 FTP 或 TFTP。要将下载的签名包从 TFTP 服务器复制到路由器,请使用命令末尾带 idconf 参数的 copy tftp 命令。
R1# copy tftp://192.168.1.3/IOS-S416-CLI.pkg idconf
Loading IOS-S416-CLI.pkg from 192.168.1.3 (via GigabitEthernet0/1): !!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 9553609 bytes]
Feb 27 18:17:42.507: %IPS-6-ENGINE_BUILDS_STARTED: 18:17:42 UTC Feb 27 2015
Feb 27 18:17:42.515: %IPS-6-ENGINE_BUILDING: atomic-ip - 342 signatures - 1 of 13
engines
Feb 27 18:17:45.975: %IPS-6-ENGINE_READY: atomic-ip - build time 3460 ms - packets
for this engine will be scanned
Feb 27 18:17:45.975: %IPS-6-ENGINE_BUILDING: normalizer - 10 signatures - 2 of 13
engines
Feb 27 18:17:45.979: %IPS-6-ENGINE_READY: normalizer - build time 4 ms - packets
for this engine will be scanned
<省略部分输出>
Feb 27 18:17:51.391: %IPS-6-ENGINE_BUILDING: service-dns - 39 signatures - 10 of 13
engines
Feb 27 18:17:51.427: %IPS-6-ENGINE_READY: service-dns - buil
R1#d time 36 ms - packets for this engine will be scanned
Feb 27 18:17:51.427: %IPS-6-ENGINE_BUILDING: string-udp - 78 signatures - 11 of 13
engines
Feb 27 18:17:51.483: %IPS-6-ENGINE_READY: string-udp - build time 56 ms - packets
for this engine will be scanned
Feb 27 18:17:51.483: %IPS-6-ENGINE_BUILDING: multi-string - 17 signatures - 12 of 13
engines
Feb 27 18:17:51.519: %IPS-6-ENGINE_READY: multi-string - build time 36 ms - packets
for this engine will be scanned
Feb 27 18:17:51.519: %IPS-6-ENGINE_BUILDING: string-icmp - 3 signatures - 13 of 13
engines
将下载的签名包从 FTP 服务器复制到路由器:
Router# copy ftp://ftp_user: password @ Server_IP_address/signature_package idconf
- idconf 参数向路由器指示,正在复制 IDConf 配置文件。
验证签名:
R1# show ip ips signature count
Cisco SDF release version S416.0
Trend SDF release version V0.0
Signature Micro-Engine: atomic-ip: Total Signatures 342
atomic-ip enabled signatures: 90
atomic-ip retired signatures: 321
atomic-ip compiled signatures: 21
atomic-ip obsoleted signatures: 3
<省略部分输出>
Total Signatures: 3027
Total Enabled Signatures: 1048
Total Retired Signatures: 2726
Total Compiled Signatures: 301
Total Obsoleted Signatures: 9
停用和取消停用签名
停用单个签名
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip ips signature-definition
R1(config-sigdef)# signature 6130 10
R1(config-sigdef-sig)# status
R1(config-sigdef-sig-status)# retired true
R1(config-sigdef-sig-status)# exit
R1(config-sigdef-sig)# exit
R1(config-sigdef)# exit
Do you want to accept these changes? [confirm] y
取消停用某个签名类别
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip ips signature-category
R1(config-ips-category)# category ios_ips basic
R1(config-ips-category-action)# retired false
R1(config-ips-category-action)# exit
R1(config-ips-category)# exit
Do you want to accept these changes? [confirm] y
更改签名操作
要更改操作,必须在 IPS 类别操作模式或签名定义引擎模式下使用 event-action 命令。
Router(config-sigdef-sig)# event-action action
参数 | 说明 |
---|---|
deny-attacker-inline | 在指定时间段内终止来自此攻击者地址的当前数据包和后续数据包。 |
deny-connection-inline | 终止此 TCP 流上的当前数据包和后续数据包。 |
deny-packet-inline | 终止该数据包。 |
produce-alert | 将事件作为警报写入事件存储区。 |
reset-tcp-connection | 发送 TCP 重置以劫持并终止 TCP 流。仅适用于分析单个连接的 TCP 签名。它不适用于扫描或泛洪。 |
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip ips signature-definition
R1(config-sigdef)# signature 6130 10
R1(config-sigdef-sig)# engine
R1(config-sigdef-sig-engine)# event-action produce-alert
R1(config-sigdef-sig-engine)# event-action deny-packet-inline
R1(config-sigdef-sig-engine)# event-action reset-tcp-connection
R1(config-sigdef-sig-engine)# exit
R1(config-sigdef-sig)# exit
R1(config-sigdef)# exit
Do you want to accept these changes? [confirm] y
R1(config)#
- 一个更改 subsig ID 为 10 的签名 6130 的操作的示例
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip ips signature-category
R1(config-ips-category)# category ios_ips basic
R1(config-ips-category-action)# event-action produce-alert
R1(config-ips-category-action)# event-action deny-packet-inline
R1(config-ips-category-action)# event-action reset-tcp-connection
R1(config-ips-category-action)# exit
R1(config-ips-category)# exit
Do you want to accept these changes? [confirm] y
R1(config)#
- 一个更改属于签名 IOS IPS Basic 类别的所有签名的事件操作的示例
验证 IOS IPS
实施 IPS 后,必须验证配置以确保正常运行。有几个 show 命令可用于验证 IOS IPS 配置:
- show ip ips 特权 EXEC 命令可与其他参数一起使用以提供特定 IPS 信息。
R1# show ip ips all
IPS Signature File Configuration Status
Configured Config Locations: flash:/ipsdir/
Last signature default load time: 04:39:33 UTC Jan 15 2009
Last signature delta load time: -none-
Last event action (SEAP) load time: -none-
General SEAP Config:
Global Deny Timeout: 3600 seconds
Global Overrides Status: Enabled
Global Filters Status: Enabled
IPS Auto Update is not currently configured
IPS Syslog and SDEE Notification Status
Event notification through syslog is enabled
Event notification through SDEE is enabled
IPS Packet Scanning and Interface Status
IPS Rule Configuration
IPS name iosips
IPS fail closed is disabled
IPS deny-action ips-interface is false
Obsolete tuning is disabled
Regex compile threshold (MB) 25
Interface Configuration
Interface Serial0/0/0
Inbound IPS rule is iosips
Outgoing IPS rule is not set
Interface GigabitEthernet0/1
Inbound IPS rule is iospis
Outgoing IPS rule is not set
IPS Category CLI Configuration:
Category all:
Retire: True
Category ios_ips basic:
Retire: False
IPS License Status:Not Required
Current Date: Feb 27 2015
Expiration Date: Not Available
Extension Date: Not Available
Signatures Loaded: Jul 15 2009 s416.0
Signature Package: Jul 15 2009 s416.0
- 使用 show ip ips all 命令可显示所有 IPS 配置数据,输出可能很长,具体取决于 IPS 配置。
R1# show ip ips configuration
IPS Signature File Configuration Status
Configured Config Locations: flash:ipsdir
Last signature default load time: 18:22:30 UTC Feb 27 2015
Last signature delta load time: -none-
Last event action (SEAP) load time: -none-
General SEAP Config:
Global Deny Timeout: 3600 seconds
Global Overrides Status: Enabled
Global Filters Status: Enabled
IPS Auto Update is not currently configured
IPS Syslog and SDEE Notification Status
Event notification through syslog is enabled
Event notification through SDEE is enabled
IPS Signature Status
Total Active Signatures: 301
Total Inactive Signatures: 2726
<省略部分输出>
- 使用 show ip ips configuration 命令可显示使用 show running-config 命令不显示的其他配置数据。
R1# show ip ips interfaces
Interface Configuration
Interface Serial0/0/0
Inbound IPS rule is iosips
Outgoing IPS rule is not set
Interface GigabitEthernet0/1
Inbound IPS rule is iosips
Outgoing IPS rule is not set
- 使用 show ip ips interfaces 命令可显示接口配置数据,其输出显示应用于特定接口的入站和出站规则。
R1# show ip ips signatures | begin SigID
SigID:SubID En Cmp Action Sev Trait EC AI GST SI SM SW SFR Rel
----------- -- ---- ------ --- ----- ---- ---- ----- --- -- -- --- ---
4703:0 Y* Nr A HIGH 0 1 0 0 3600 FA N 100 S367
9433:1 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
9430:1 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
9418:1 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
9403:2 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
4607:9 N Y A HIGH 0 1 0 0 0 FA N 100 S256
4607:8 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
4607:7 N Y A HIGH 0 1 0 0 0 FA N 100 S256
4607:6 N* Nr A HIGH 0 1 0 0 0 FA N 100 S256
50000:2 N* Nr A HIGH 0 1 0 0 300 FA N 100 S181
50000:1 N* Nr A HIGH 0 1 0 0 300 FA N 100 S181
50000:0 N* Nr A HIGH 0 1 0 0 300 FA N 100 S181
- 使用 show ip ips signatures 命令可验证签名配置,此命令还可与关键字 detail 一起使用,以提供更明确的输出。
R1# show ip ips statistics
Signature audit statistics [process switch:fast switch]
signature 2000 packets audited: [0:2]
signature 2001 packets audited: [9:9]
signature 2004 packets audited: [0:2]
signature 3151 packets audited: [0:12]
Interfaces configured for audit 2
Session creations since subsystem startup or last reset 11
Current session counts (estab/half-open/terminating) [0:0:0]
Maxever session counts (estab/half-open/terminating) [2:1:0]
Last session created 19:18:27
Last statistic reset never
HID:1000 OID:100 S:218 A:3 H:14085 HA:7114 DA:0 R:0
- 使用 show ip ips statistics 命令可显示审核的数据包数和发送的警报数,使用可选 reset 关键字可重置输出以反映最新统计信息。
使用 clear ip ips configuration 命令可禁用 IPS,删除所有 IPS 配置条目,以及释放动态资源。使用 clear ip ips statistics 命令可重置有关已分析的数据包和已发送警报的统计信息。
报告 IPS 警报
R1# config t
R1(config)# logging 192.168.10.100
R1(config)# ip ips notify log
R1(config)# logging on
- 使用 ip ips notify 全局配置模式命令指定事件通知方法。使用 log 关键字可以系统日志格式发送消息。使用 sdee 关键字可以 SDEE 格式发送消息。
启用 SDEE
SDEE 是报告 IPS 活动的首选方法。SDEE 使用 HTTP 和 XML 提供一种标准化方法。可以使用 ip ips notify sdee 命令在 IOS IPS 路由器上启用 SDEE。思科 IOS IPS 路由器仍可通过系统日志发送 IPS 警报。
R1# config t
R1(config)# ip http server
R1(config)# ip http secure-server
R1(config)# ip ips notify sdee
R1(config)# ip sdee events 500
- 在启用 SDEE 时,管理员还必须在路由器上启用 HTTP 或 HTTPS。使用 HTTPS 可确保数据在通过网络时受到保护。
禁用思科 SDEE 通知时,所有存储的事件都将丢失。重新启用通知时会分配新缓冲区。SDEE 采用提取机制。借助提取机制,请求来自网络管理应用且 IDS 或 IPS 路由器会作出响应。SDEE 是供应商设备向网络管理应用传达事件的标准格式。
默认情况下,缓冲区可存储最多 200 个事件。如果请求的缓冲区较小,则所有已存储事件都会丢失。如果请求的缓冲区较大,则会保存所有已存储事件,并为超出先前缓冲区大小的条目分配其他空间。
Router(config)# ip sdee events events
- 可以使用 ip sdee events 命令修改默认缓冲区大小。最大事件数为 1,000。
Router# clear ip ips sdee {events| subscription}
- 使用 clear ip ips sdee 命令可清除 SDEE 事件或订用。图中显示了这两个命令的语法。
ip ips notify 命令可替换较早的 ip audit notify 命令。如果 ip audit notify 命令是现有配置的一部分,IPS 会将其解释为 ip ips notify 命令。
保护局域网
在第 2 层,存在大量需要采用专业缓解技术的漏洞:
- CAM 表溢出攻击(大量MAC地址攻击),可以通过端口安全功能缓解。
- 通过禁用 DTP 和遵循配置中继端口的基本指南来控制 VLAN 攻击。
- 使用 DHCP 监听处理 DHCP 攻击。
- ARP 欺骗和 ARP 毒化攻击,可以通过动态 ARP 检查(Dynamic ARP Inspection,DAI)缓解。
- MAC 和 IP 地址欺骗攻击,可以通过 IP 源保护 (IP Source Guard) 缓解。
- STP 恶意操纵攻击,可以通过 PortFast、BPDU 防护 (BPDU guard)、根防护 (root guard) 和环路防护 (loop guard) 缓解。
层数 | 功能 |
---|---|
最高层 | IPSG |
DAI | |
DHCP监听 | |
最底层 | 端口安全 |
基本交换机操作
为做出转发决策,第 2 层 LAN 交换机会构建一个存储在内容可寻址存储器(Content Addressable Memory,CAM)中的 MAC 地址表。CAM 表与 MAC 地址表是同一个东西。
S1# show mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0001.9717.22e0 DYNAMIC Fa0/4
1 000a.f38e.74b3 DYNAMIC Fa0/1
1 0090.0c23.ceca DYNAMIC Fa0/3
1 00d0.ba07.8499 DYNAMIC Fa0/2
- 使用 mac address table 可以看到交换机中存储了哪些地址
如果 CAM 表中存在目的 MAC 地址,交换机将相应地转发帧。但如果 CAM 表中不存在目的 MAC 地址,交换机会将该帧广播到所有主机。
CAM 表操作示例
在这个例子中,PC-A 上的用户将会 ping PC-B 的 IP 地址。PC A 将首先找本地的ARP缓存库,如果没有的话就会发送ARP协议来得到PC-B 的 MAC 地址。
在这个过程中,PC-A 发生ARP请求的一瞬间,交换机就会在CAM表里面记住了当前的MAC地址来自这个端口,等PC-B回应了,交换机也会记住PC-B的MAC地址。
CAM 表攻击
所有 CAM 表都具有固定大小,交换机可能会耗尽用来存储 MAC 地址的资源。CAM 表溢出攻击(也称为 MAC 地址溢出攻击)利用这一限制,利用虚假的源 MAC 地址轰击交换机,直到交换机 MAC 地址表全满。
如果CAM表满了,交换机将帧作为未知单播处理,将所有流入流量广播至所有端口。交换机实际上是在起类似于集线器的作用。因此,攻击者可以捕获在主机间发送的所有帧。
注意:仅在本地 VLAN 内广播流量,因此入侵者只会看到与其连接的本地 VLAN 内的流量,比如:攻击者只能捕获默认端口 (VLAN 1) 上的流量。
# macof -i eth1
36:a1:48:63:81:70 15:26:8d:4d:28:f8 0.0.0.0.26413 > 0.0.0.0.49492: S 1094191437:1094191437(0) win 512
16:e8:8:0:4d:9c da:4d:bc:7c:ef:be 0.0.0.0.61376 > 0.0.0.0.47523: S 446486755:446486755(0) win 512
18:2a:de:56:38:71 33:af:9b:5:a6:97 0.0.0.0.20086 > 0.0.0.0.6728: S 105051945:105051945(0) win 512
e7:5c:97:42:ec:1 83:73:1a:32:20:93 0.0.0.0.45282 > 0.0.0.0.24898: S 1838062028:1838062028(0) win 512
62:69:d3:1c:79:ef 80:13:35:4:cb:d0 0.0.0.0.11587 > 0.0.0.0.7723: S 1792413296:1792413296(0) win 512
c5:a:b7:3e:3c:7a 3a:ee:c0:23:4a:fe 0.0.0.0.19784 > 0.0.0.0.57433: S 1018924173:1018924173(0) win 512
88:43:ee:51:c7:68 b4:8d:ec:3e:14:bb 0.0.0.0.283 > 0.0.0.0.11466: S 727776406:727776406(0) win 512
b8:7a:7a:2d:2c:ae c2:fa:2d:7d:e7:bf 0.0.0.0.32650 > 0.0.0.0.11324: S 605528173:605528173(0) win 512
e0:d8:1e:74:1:e 57:98:b6:5a:fa:de 0.0.0.0.36346 > 0.0.0.0.55700: S 2128143986:2128143986(0) win 512
- macof 是一种网络攻击工具,能够非常快速地生成大量随机源和目的 MAC 和 IP 地址,CAM 表在较短时间内填满,填充完整后,交换机开始泛洪接收的所有帧。只要攻击工具继续攻击,CAM 表保持完整,并且交换机继续泛洪每个端口的所有传入帧。这允许攻击者捕获各种帧,并将数据包发送至本来无法访问的设备。
- 这些工具十分危险,因为攻击者可以在几秒钟内创建 CAM 表溢出攻击。例如,Catalyst 6500 交换机可以在 CAM 表中存储 132,000 MAC 地址。macof 等工具可以通过每秒多达 8,000 个伪造帧泛洪交换机;只需几秒即可创建 CAM 表溢出攻击。
注意:Yersinia 是另一种网络攻击工具,旨在攻击协议漏洞,包括生成树协议 (STP)、思科发现协议 (CDP)、动态中继协议 (DTP)、动态主机配置协议 (DHCP) 热待机路由器协议 (HSRP)、IEEE 802.1 q、IEEE 802.1 X 和 VLAN 中继协议 (VTP)。
为了缓解 CAM 表溢出攻击,网络管理员必须实施端口安全。
CAM 表攻击的对策
防止 CAM 表溢出攻击最简单且有效的方法是启用端口安全。端口安全允许管理员为端口静态指定 MAC 地址,或允许交换机动态获取有限数量的 MAC 地址。通过将端口上允许的 MAC 地址数最多限制为 1 就可以拿来控制未授权扩展。
为安全端口分配了 MAC 地址之后,该端口将不会转发源地址不在所定义的地址组中的帧。在配置了端口安全的端口接收到帧之后,将该帧的源 MAC 地址与端口上手动配置或自动配置(获取)的安全源地址列表进行比较。
端口安全
S1(config)# interface f0/1
S1(config-if)# switchport port-security
Command rejected: FastEthernet0/1 is a dynamic port.
S1(config-if)# switchport mode access
S1(config-if)# switchport port-security
S1(config-if)# end
-
要启用端口安全,请在接入端口上使用 switchport port-security 接口配置命令,
-
必须将端口配置为接入端口才能启用端口安全。这是因为只能在接入端口上配置端口安全,在默认情况下,第 2 层交换机端口设置为 dynamic auto(启用中继)。因此,必须首先通过 switchport mode access 接口配置命令配置该端口。
S1# show port-security interface f0/1
Port Security : Enabled
Port Status : Secure-shutdown
Violation Mode : Shutdown
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 1
Total MAC Addresses : 0
Configured MAC Addresses : 0
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0000.0000.0000:0
Security Violation Count : 0
- 接口 FastEthernet 0/1 的默认端口安全设置。注意如何启用端口安全、违规模式为何是关闭(shutdown),以及为何 MAC 地址最大数量为 1。
S1(config)# interface f0/1
S1(config-if)# switchport port-security ?
aging Port-security aging commands
mac-address Secure mac address
maximum Max secure addresses
violation Security violation mode
<cr>
S1(config-if)# switchport port-security
- 启用端口安全后,可以输出所示配置其他端口安全具体信息。
启用端口安全选项
switchport port-security maximum [value]
- 要设置端口上允许的最大 MAC 地址数量,请使用 switchport port-security maximum 值命令,默认端口安全值为“1”。
注意:可配置最大安全 MAC 地址数量由交换机数据库管理(Switch Database Management,SDM)模板允许的最大可用 MAC 地址数量设置。使用 show sdm prefer 命令查看当前模板设置。
S1(config)# interface f0/1
S1(config-if)# switchport port-security maximum ?
<1-8192> Maximum addresses
S1(config-if)# switchport port-security maximum 4
- 显示一个示例配置,将默认最大 MAC 地址数量更改为 4。
可以配置交换机,以下两种方式之一学习安全端口上的 MAC 地址:
switchport port-security mac-address mac-address {vlan | {access | voice}}
参数 | 说明 |
---|---|
mac-address mac-address | (可选)通过输入 48 位 MAC 地址,为端口指定安全 MAC 地址。添加其他安全 MAC 地址,直至达到已配置的最大值。 |
VLAN access | (可选)仅在接入端口上将 VLAN 指定为接入 VLAN。 |
vlan voice | (可选)仅在接入端口上将 VLAN 指定为语音 VLAN。注意:仅当已配置语音 VLAN 且该端口不属于接入端口时,才可使用关键字 voice(语音)。 |
- 手动配置 - 管理员使用 switchport port-security mac-address 接口配置命令手动配置 MAC 地址。
switchport port-security mac-address sticky
参数 | 说明 |
---|---|
mac-address sticky | (可选)允许端口动态学习已连接 MAC 地址。此端口将所有动态学习的 MAC 地址添加到运行配置中。保存运行配置提交地址。 |
- 动态学习 - 管理员通过 switchport port-security mac-address sticky 接口配置命令允许交换机动态学习 MAC 地址。
S1(config-if)# switchport port-security mac-address aaaa.bbbb.1234
S1(config-if)# switchport port-security mac-address sticky
S1(config-if)# end
S1#
S1# show port-security interface f0/1
Port Security : Enabled
Port Status : Secure-shutdown
Violation Mode : Shutdown
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 4
Total MAC Addresses : 1
Configured MAC Addresses : 1
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0000.0000.0000:0
Security Violation Count : 0
- 用于手动配置 MAC 地址并启用动态学习来获知按最大值配置的允许地址总数的剩余值。
S1# show port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
1 aaaa.bbbb.1234 SecureConfigured F0/1 -
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 8192
- 使用 show port-security [interface interface-id] 地址命令查看所有交换机接口或某个指定接口上配置的所有安全 MAC 地址。
端口违规模式
如果端口的设备 MAC 地址与安全地址列表不一致,则会发生端口违规,同时端口进入错误禁用状态。
违规模式 | 转发流量 | 发出 Syslog 消息 | 增加违规 计数器 | 关闭端口 |
---|---|---|---|---|
保护 | 不支持 | 不支持 | 不支持 | 不支持 |
限制 | 不支持 | 支持 | 支持 | 不支持 |
关闭 | 不支持 | 支持 | 支持 | 支持 |
-
保护 - 这是最不安全的安全违规模式。当安全 MAC 地址的数量达到端口允许的限制时,带有未知源地址的数据包将被丢弃,直至移除足够数量的安全 MAC 地址或增加允许的最大地址数。出现安全违规时不会发出通知。
-
限制 - 当安全 MAC 地址的数量达到端口允许的限制时,带有未知源地址的数据包将被丢弃,直至移除足够数量的安全 MAC 地址或增加允许的最大地址数。在该模式下,出现安全违规时会发出通知。
-
关闭 - 在此(默认)违规模式下,端口安全违规将造成接口立即变为禁用状态,并关闭端口 LED。它增添了违规计数器。当安全端口处于错误禁用状态时,先输入 shutdown 再输入 no shutdown 接口配置模式命令可使其脱离此状态。更重要的是,必须由管理员重新启动端口。
S1(config)# interface f0/1
S1(config-if)# switchport port-security violation restrict
S1(config-if)# end
S1#
S1# show port-security interface f0/1
Port Security : Enabled
Port Status : Secure-shutdown
Violation Mode : Restrict
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 4
Total MAC Addresses : 1
Configured MAC Addresses : 1
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0050.56be.e4dd:1
Security Violation Count : 1
-
要设置端口安全违规模式,请使用 switchport port-security violation {protect | restrict | shutdown | shutdown vlan} 接口配置命令。
-
将安全违规更改为“restrict”(限制)的配置示例。show port-security interface 命令的输出可确认已进行更改。
-
要重新启用错误禁用端口,请通过输入 shutdown 和 no shutdown 接口配置命令手动重新启用已禁用的端口。
注意:可以通过 errdisable recovery cause psecure-violation global 配置模式命令将交换机配置为自动重新启用错误禁用端口。
端口违规自动启用
可以设置端口违规自动启用对端口上的静态和动态安全地址设置一个时间。每个端口支持两种类型:
-
绝对 (Absolute) - 在指定的启用时间后删除端口上的安全地址。
-
非活动 (Inactivity) - 仅当端口上的安全地址在指定启用时间内处于非活动状态时才会被删除。
switchport port-security aging {static | time time| type {absolute | inactivity}}
参数 | 说明 |
---|---|
static | 为此端口上静态配置的安全地址启用老化。 |
time time | 为此端口指定启用时间。范围为 0 至 1440 分钟。如果时间为 0,则为此端口禁用启用。 |
type absolute | 设置绝对启用时间。此端口上的所有安全地址都在指定的时间(以分钟为单位)后完全老化,并从安全地址列表中删除。 |
type inactivity | 设置不活动启用类型。只有在指定时间段内没有来自安全源地址的数据流量时,此端口上的安全地址才会启用。 |
S1(config)# interface fa0/1
S1(config-if)# switchport port-security aging time 10
S1(config-if)# switchport port-security aging type inactivity
S1(config-if)# exit
S1(config)# snmp-server enable traps port-security trap-rate 5
S1(config)# exit
S1#
S1# show port-security interface fa0/1
Port Security : Enabled
Port Status : Secure-shutdown
Violation Mode : Restrict
Aging Time : 10 mins
Aging Type : Inactivity
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 4
Total MAC Addresses : 1
Configured MAC Addresses : 1
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0050.56be.e4dd:1
Security Violation Count : 1
- 更改启用时间
- 用于将启用类型更改为 10 分钟非活动状态。
IP 电话的端口安全
S1(config)# interface fa0/1
S1(config-if)# switchport mode access
S1(config-if)# switchport port-security
S1(config-if)# switchport port-security maximum 3
S1(config-if)# switchport port-security violation shutdown
S1(config-if)# switchport port-security aging time 120
- 连接 IP 电话和一台计算机的接入端口(如图 1 所示)通常需要两个安全 MAC 地址。但是,在某些交换机上,此数量应设置为 3,因为该端口连接到思科 IP 电话时,IP 电话最多需要两个 MAC 地址。可以通过语音 VLAN 获知 IP 电话地址,也可通过接入 VLAN 获知。将 PC 连接到 IP 电话需要额外的 MAC 地址。
SNMP MAC 地址通知
向转发表新增 MAC 地址或从表中删除旧地址时,该操作通知会向网络管理站(network management station,NMS)发送 SNMP 信息。仅对动态和安全 MAC 地址生成 MAC 地址通知,可以使用 mac address-table notification 命令在交换机上启用 MAC 地址通知功能。
VLAN 跳跃攻击
VLAN 跳跃 (VLAN hopping) 攻击是一种特定类型的 VLAN 威胁。VLAN 跳跃攻击会使一个 VLAN 无需路由器帮助即可看到来自另一个 VLAN 的流量。在基本 VLAN 跳跃攻击中,攻击者利用大多数交换机端口上默认启用的自动中继端口功能。
网络攻击者配置主机以欺骗交换机使用 802.1Q 信令和思科专有动态中继协议(Dynamic Trunking Protocol,DTP)信令与连接的交换机建立中继链路。如果成功,并且交换机与主机建立中继链路,则攻击者可以访问交换机上的所有 VLAN,并转移(即发送和接收)所有 VLAN 上的流量。
可以使用以下两种方式之一启动 VLAN 跳跃攻击:
-
发起攻击的主机伪造 DTP 消息,使交换机进入中继模式。然后,攻击者可以发送标记为目标 VLAN 的流量,然后交换机向目的地传输数据包。
-
引入非法交换机并启用中继。然后攻击者就可以通过非法交换机访问被攻击交换机上的所有 VLAN。
VLAN 双重标记 (Double-Tagging) 攻击
另一种 VLAN 跳跃攻击是双重标记 (Double-Tagging) 攻击,又称双封装 (double-encapsulated) 攻击。此攻击利用大多数交换机的硬件工作原理。
PC A (VLAN10) 发送下列数据包到 SWITCH 1 :
以太网 | VLAN 10 | VLAN 20 | 数据 |
---|---|---|---|
SWITCH 1 上面的数据包,并解析后发送下列数据包到 SWITCH 2:
以太网 | VLAN 20 | 数据 |
---|---|---|
SWITCH 2 再把下列数据包发给 PC B (VLAN20):
以太网 | 数据 |
---|---|
大多数交换机只进行一级 802.1Q 解封。这样会让攻击者在帧中嵌入隐藏的 802.1Q 标记。此标记会将帧转发到原始 802.1Q 标记未指定的 VLAN。双封装 VLAN 跳跃攻击的一个重要特征是,即使 TRUNK 端口被禁用,攻击仍然有效,因为主机通常在非 TRUNK 链路的数据段上发送帧。
这种攻击是单向的,只有当攻击者连接的端口与 TRUNK 端口的本征 VLAN 位于同一 VLAN 时,此类攻击才会有效。即,攻击者通过双重标记可以将数据发送到 VLAN 上的主机或服务器,否则就会被某种访问控制配置阻止。假设同样允许返回流量,从而使攻击者能与通常被阻止的 VLAN 上的设备通信。
缓解 VLAN 跳跃攻击
阻止基本 VLAN 跳跃攻击的最佳方式:
-
使用 switchport mode access 接口配置命令禁用非中继端口上的 DTP(自动中继)协商。
-
使用 switchport mode trunk 接口配置命令手动启用中继端口上的中继链路。
-
使用 switchport non-negotiate 接口配置命令禁用中继端口上的 DTP(自动中继)协商。
-
将本征 VLAN 设置为除 VLAN 1 以外的其他 VLAN,同时使用 switchport trunk native vlan vlan_number接口配置模式命令将其设置为未使用的 VLAN。
-
禁用未使用的端口并将其放在未使用的 VLAN 中。
S1(config)# interface range fa0/1 - 16
S1(config-if-range)# switchport mode access
S1(config-if-range)# exit
S1(config)#
S1(config)# interface range fa0/17 - 20
S1(config-if-range)# switchport mode access
S1(config-if-range)# switchport access vlan 1000
S1(config-if-range)# shutdown
S1(config-if-range)# exit
S1(config)#
S1(config)# interface range fa0/21 - 24
S1(config-if-range)# switchport mode trunk
S1(config-if-range)# switchport nonegotiate
S1(config-if-range)# switchport trunk native vlan 999
S1(config-if-range)# exit
S1(config)#
-
FastEthernet 0/1 至 0/16 端口是接入端口,因此明确将其变为接入端口会禁用中继。
-
FastEthernet 0/17 至 0/20 端口是未使用的端口,已禁用这些端口并将其分配给未使用的 VLAN。
-
FastEthernet 0/21 至 0/24 端口是中继链路,已经作为禁用 DTP 的中继手动启用。本征 VLAN 也从默认的 VLAN 1 更改为未使用的 VLAN 999。
PVLAN Edge 功能
使用 PVLAN(专用 VLAN)Edge 功能可以确保交换机上的 PVLAN Edge 端口之间不会交换单播、广播或组播流量,PLVAN Edge 功能也称为受保护端口。
PVLAN Edge 功能具有以下特点:
-
受保护端口不会向任何其他同为受保护端口的端口转发任何流量(例如单播、组播或广播)。第 2 层的受保护端口之间无法转发数据流量,仅转发控制流量,因为这些数据包都由 CPU 处理并且在软件中转发。在受保护端口之间传递的所有数据流量都必须通过第 3 层设备转发。
-
受保护端口和不受保护端口之间的转发行为照常继续。
-
默认未定义任何受保护端口。
PVLAN Edge 是一项仅对交换机在本地有效的功能,位于不同交换机上的两个受保护端口之间无隔离。受保护端口不会向同一交换机上的任何其他受保护端口转发任何流量(单播、组播或广播)。
要配置 PVLAN Edge 功能,请输入 switchport protected 接口配置模式命令。
Switch# show interfaces gigabitethernet1/0/1 switchport
Name: G1/0/1
Switchport: Enabled
Administrative Mode: dynamic auto
Operational Mode: static access
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Voice VLAN: none
<省略部分输出 >
Operational private-vlan: none
Trunking VLANs Enabled: ALL
Pruning VLANs Enabled: 2-1001
Capture Mode Disabled
Capture VLANs Allowed: ALL
Protected: false <---- 看这里
Unknown unicast blocked: disabled
Unknown multicast blocked: disabled
Voice VLAN: none (Inactive)
Appliance trust: none
- 可以在物理接口或 EtherChannel 组中配置 PVLAN Edge 功能。为端口通道启用 PVLAN Edge 功能后,则 port-channel 组中的所有端口都将启用此功能。要禁用受保护端口,请在接口配置模式输入 no switchport protected 命令。
- 要验证 PVLAN Edge 功能的配置,请使用 show interfaces interface-id switchport 全局配置模式命令,如图所示。
DHCP 欺骗攻击
DHCP 服务器动态地提供 IP 配置信息,包括 IP 地址、子网掩码、默认网关、DNS 服务器,以及客户端的更多信息,当非法 DHCP 服务器连接到网络并向合法客户端提供虚假的 IP 配置参数时,会出现 DHCP 欺骗攻击。非法服务器可以提供各种各样的误导信息:
-
错误的默认网关 - 攻击者提供无效的默认网关或其主机的 IP 地址以创建中间人攻击。当入侵者拦截通过网络的数据流时,可能完全不会察觉这一情况。
-
错误的 DNS 服务器 - 攻击者提供不正确的 DNS 服务器地址,该地址将用户指向恶意网站。
-
错误的 IP 地址 - 攻击者提供无效的默认网管 IP 地址并在 DHCP 客户端上创建 DoS 攻击。
DHCP攻击例子:
- 黑客(假的DHCP服务器)和 真的DHCP服务器 和 客户(DHCP客户端)连在同一个交换机上
- 客户刚连到网络需要获取IP地址,就发广播找DHCP服务器要ip地址,结果黑客也受到了,就伪装DHCP服务器来回应
- 只要回应的速度比DHCP服务器快,那么客户就拿到了假的IP地址。
DHCP 耗竭攻击
另一种 DHCP 攻击是 DHCP 耗竭攻击,也就是用光DHCP里面的所有IP,这种攻击的目标是为连接客户端创建 DoS。DHCP 耗竭攻击需要攻击工具,比如 Gobbler。Gobbler 能够以查看整个可租用的 IP 地址范围和并尝试全部租用。具体而言,它会使用伪造 MAC 地址创建 DHCP Discovery 消息。
缓解 DHCP 攻击
可以通过端口安全可以缓解 DHCP 耗竭攻击。但是,Gobbler 为每个 DHCP request 和端口安全使用唯一的 MAC 地址,Gobbler 也可配置为使用相同的接口 MAC 地址,每个请求的硬件地址不同。这将使端口安全失效。
通过在受信任的端口上使用 DHCP 监听可缓解 DHCP 欺骗攻击。DHCP 监听还可通过速率限制不受信任的端口可以接收的 DHCP Discovery 消息数量,从而帮助缓解 DHCP 耗竭攻击。DHCP 监听会构建并维护 DHCP 监听绑定数据库,可供交换机用于过滤来自不受信任的来源的 DHCP 消息。DHCP 监听绑定表包括每个不受信任的交换机端口或接口上的客户端 MAC 地址、IP 地址、DHCP 租用时间、绑定类型、VLAN 编号和接口信息。
注意:在大型网络中,DHCP 绑定表在启用后可能还需要花时间进行构建。例如,如果 DHCP 租用时间为 4 天,则 DHCP 监听可能需要 2 天才能完成表。
当在接口或 VLAN 上启用 DHCP 监听,并且交换机收到不受信任的端口上的数据包时,交换机将源数据包信息与 DHCP 监听绑定表中保留的信息进行比较。交换机将拒绝包含指定信息的数据包:
-
来自不受信任端口的未经授权的 DHCP 服务器消息
-
不遵守监听绑定表或速率限制的未经授权的 DHCP 客户端消息
-
包含不受信任端口上的选项 82 信息的 DHCP 中继代理数据包
注意:为了应对使用相同 MAC 地址的 Gobbler,DHCP 监听还会让交换机检查 DHCP request 中的客户端硬件地址 (CHADDR) 字段。这可确保其与 DHCP 监听绑定表中的硬件 MAC 地址和 CAM 表中的 MAC 地址匹配。如果没有匹配项,请求将被丢弃。
注意:类似的缓解技术也可用于 DHCPv6 和 IPv6 客户端。由于 IPv6 的设备还可从路由器的路由通告(Router Advertisement,RA)消息中接收编址信息,因此还有防止各种非法 RA 消息的缓解解决方案。
配置 DHCP 监听
DHCP 监听可识别两种类型的端口:
-
可信 DHCP 端口 - 仅连接到上游 DHCP 服务器的端口应为可信端口。根据预期,这些端口会有 DHCP offer 和 DHCP Ack 消息应答。必须在配置中明确标识可信端口。
-
不可信端口 - 这些端口连接到不应提供 DHCP 服务器消息的主机。默认情况下,所有交换机端口都不可信。
配置 DHCP 监听的一般规则是“信任端口并通过 VLAN 启用 DHCP 监听”。因此,应通过以下步骤启用 DHCP 监听:
-
步骤 1:通过 ip dhcp snooping 全局配置命令启用 DHCP 监听。
-
步骤 2:在受信任的端口中使用 ip dhcp snooping trust 接口配置命令。
-
步骤 3:通过 VLAN 或一系列 VLAN 启用 DHCP 监听。
不受信任的端口还应通过 ip dhcp snooping limit rate 接口配置命令速率限制它们每秒可以接收的 DHCP Discovery 消息数。
注意:速率限制可进一步缓解 DHCP 耗竭攻击风险。
配置 DHCP 监听示例
S1(config)# ip dhcp snooping
S1(config)#
S1(config)# interface f0/1
S1(config-if)# ip dhcp snooping trust
S1(config-if)# exit
S1(config)#
S1(config)# interface range f0/5 - 24
S1(config-if-range)# ip dhcp snooping limit rate 6
S1(config-if-range)# exit
S1(config)#
S1(config)# ip dhcp snooping vlan 5,10,50-52
S1(config)#
- 启动DHCP 监听,在f0/1信任 DHCP 服务器,接下来,FastEthernet F0/5 到 F0/24 端口范围均不受信任,而且其速率限制为每秒 6 个数据包。最后,在 VLAN 5、10、50、51、和 52 上启用 DHCP 监听。
注意:要提供生成 DHCP request 的实际客户端的详细信息,请使用 ip dhcp snooping information option 全局配置命令启用 DHCP 选项 82。这样会将交换机端口标识符添加到 DHCP request 中。
S1# show ip dhcp snooping
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
5,10,50-52
DHCP snooping is operational on following VLANs:
none
DHCP snooping is configured on the following L3 Interfaces:
Insertion of option 82 is enabled
circuit-id default format: vlan-mod-port
remote-id: 0cd9.96d2.3f80 (MAC)
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Verification of giaddr field is enabled
DHCP snooping trust/rate is configured on the following Interfaces:
Interface Trusted Allow option Rate limit (pps)
----------------------- ------- ------------ ----------------
FastEthernet0/1 yes yes unlimited
Custom circuit-ids:
FastEthernet0/5 no no 6
Custom circuit-ids:
FastEthernet0/6 no no 6
Custom circuit-ids:
<省略部分输出>
- show ip dhcp snooping 命令生成的输出。
S1# show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
00:03:47:B5:9F:AD 192.168.10.10 193185 dhcp-snooping 5 FastEthernet0/5
- show ip dhcp snooping binding 命令生成的输出。另一种验证方法是使用 show ip dhcp snooping database 命令。
注意:动态 ARP 检查(Dynamic ARP Inspection,DAI)同样需要 DHCP 监听:
ARP 欺骗和 ARP 毒化攻击
通常,主机会向其他主机广播 ARP 请求,以确定具有特定 IP 地址的主机的 MAC 地址。子网上的所有主机接收并处理 ARP 请求。与 ARP 请求中的 IP 地址匹配的主机发送 ARP 应答。
根据 ARP RFC,任何客户端都可以发送一个未请求 ARP 应答。当主机发送 ARP 时,子网上的其他主机会将 ARP 中包含的 MAC 地址和 IP 地址存储在它们的 ARP 表中。
但问题是,攻击者可以向交换机发送包含伪造 MAC 地址的 ARP 消息,而交换机也会相应地更新 CAM 表。因此,任何主机都可以自称是它们选择的任何 IP/MAC 的所有者。在典型的攻击中,恶意用户可能会使用攻击者的 MAC 地址和默认网关的 IP 地址,向子网中的其他主机发送未经请求的 ARP 应答。
注意:互联网上有许多工具都可以发起 ARP 中间人攻击,包括 dsniff、Cain & Abel、ettercap、Yersinia 等等。
注意:IPv6 使用 ICMPv6 邻居发现 (Neighbor Discovery) 协议解析第 2 层地址。IPv6 还包含缓解邻居通告 (Neighbor Advertisement) 欺骗的策略,方式类似于 IPv6 防止伪造 ARP 应答。
缓解 ARP 攻击
动态 ARP 检查(Dynamic ARP Inspection)通过不向同一 VLAN 中的其他端口中继无效或假的 ARP 应答来防止此类攻击。动态 ARP 检查会拦截不受信任的端口上的所有 ARP 请求和应答。每个拦截的数据包都要接受检验,看它是否具有有效的 IP-MAC 绑定。来自无效设备的 ARP 应答会被审计交换机丢弃或记录,以便阻止 ARP 毒化攻击。也可对 DAI 进行速率限制来限制 ARP 数据包数量,如果超过速率,接口可能处于错误(看上面的端口安全)或者是禁用状态。
DAI 需要 DHCP 监听。DAI 根据有效 MAC 地址到 IP 地址绑定数据库(由 DHCP 监听构建)来确定 ARP 数据包的有效性。此外,为了处理使用静态配置 IP 地址的主机,DAI 可以根据用户配置的 ARP ACL 验证 ARP 数据包。
配置动态 ARP 检查
通常建议将所有访问交换机端口配置为不可信,将所有连接到其他交换机的端口配置为可信。为了减少 ARP 欺骗的机会,推荐遵循以下过程:
-
通过启用全局 DHCP 监听来实施对 DHCP 欺骗的保护。
-
在选定的 VLAN 上启用 DHCP 监听。
-
在选定的 VLAN 上启用 DAI。
-
为 DHCP 监听和 ARP 检查配置受信任接口(默认为不受信任接口)。
配置动态 ARP 检查示例
S1(config)# ip dhcp snooping
S1(config)#
S1(config)# ip dhcp snooping vlan 10
S1(config)# ip arp inspection vlan 10
S1(config)#
S1(config)# interface fa0/24
S1(config-if)# ip dhcp snooping trust
S1(config-if)# ip arp inspection trust
- 由于 DAI 要求运行 DHCP 监听表,因此启用 DHCP 监听。接下来,为 VLAN 10 上的 PC 启用 DHCP 监听和 ARP 检查。连接到路由器的上行链路端口受信任,因此也在 DHCP 监听和 ARP 检查中配置为受信任的端口。
还可以配置 DAI 以检查目的或源 MAC 和 IP 地址:
-
目的 MAC - 根据 ARP 正文中的目的 MAC 地址检查以太网报头中的目的 MAC 地址。
-
源 MAC - 根据 ARP 正文中的发送方 MAC 地址检查以太网报头中的源 MAC 地址。
-
IP 地址 - 在 ARP 正文中检查无效和意外 IP 地址,包括地址 0.0.0.0 和 255.255.255.255 以及所有 IP 组播地址。
S1(config)# ip arp inspection validate ?
dst-mac Validate destination MAC address
ip Validate IP addresses
src-mac Validate source MAC address
S1(config)# ip arp inspection validate src-mac
S1(config)# ip arp inspection validate dst-mac
S1(config)# ip arp inspection validate ip
S1(config)#
S1(config)# do show run | include validate
ip arp inspection validate ip
S1(config)#
S1(config)# ip arp inspection validate src-mac dst-mac ip
S1(config)#
S1(config)# do show run | include validate
ip arp inspection validate src-mac dst-mac ip
- ip arp inspection validate {[src-mac] [dst-mac] [ip]} 全局配置命令用于配置 DAI,从而在 IP 地址无效时丢弃 ARP 数据包。如果 ARP 数据包正文中的 MAC 地址与以太网报头中指定的地址不匹配,则可以使用。注意如何只配置一个命令。因此,输入多个 ip arp inspection validate 命令以覆盖之前的命令。要包含多个验证方法,请在同一命令行上输入,如输出中所示。
地址欺骗攻击
攻击者可出于各种原因伪造 MAC 地址和 IP 地址,交换机用于填充 MAC 地址表会产生 MAC 地址欺骗的漏洞。攻击者修改主机 MAC 地址以匹配目标主机的另一个已知 MAC 地址,就会发生 MAC 地址欺骗攻击。
攻击主机用新配置的 MAC 地址向整个网络发送一个帧。当交换机收到此帧时,它会检查源 MAC 地址。交换机将该MAC 地址分配给新端口,覆盖掉之前 CAM 表该条目的内容,然后无意中将发往目标主机的帧转发给发起攻击的主机。当交换机更改 CAM 表时,目标主机在发送流量之前不会接收任何流量。当目标主机发送流量时,交换机接收并检查帧,导致再次重写 CAM 表,将 MAC 地址重新调整为原始端口。
为了阻止交换机将伪造的 MAC 地址端口分配恢复正确状态,发起攻击的主机可以创建一个程序或脚本,从而不断地向交换机发送帧,使交换机保留不正确的或伪造的信息。因为第 2 层中没有允许交换机验证 MAC 地址来源的安全机制,因此容易受到欺骗攻击。
非法 PC 劫持邻居的有效 IP 地址,或使用随机 IP 地址时,就会产生 IP 地址欺骗攻击。IP 地址欺骗攻击很难缓解,在 IP 所属的子网内发生这种攻击时尤其如此。
缓解地址欺骗攻击
要防止 MAC 和 IP 地址欺骗,请配置 IP 源保护(IP Source Guard,IPSG)安全功能。IPSG 运行方式与 DAI 类似,但它不仅查看 ARP 数据包,而是查看每个数据包。正如 DAI,IPSG 还需要启用 DHCP 监听。
IPSG 部署在不受信任的第 2 层访问和中继端口中。IPSG 将根据 IP 到 MAC 到交换机端口绑定动态维护每个端口的 VLAN ACL (PVACL)。开始时,系统会阻止端口上的所有 IP 流量,但由 DHCP 监听进程捕获的 DHCP 数据包除外。当客户端从 DHCP 服务器接收到有效 IP 地址,或者用户配置了静态 IP 源绑定时,PVACL 将会安装在该端口上。
此过程将客户端 IP 流量限制为绑定中配置的那些源 IP 地址。源IP地址不在 IP 源绑定中的所有 IP 流量会被过滤。此过滤限制主机通过冒用邻居主机的 IP 地址攻击网络的能力。
对于每个不受信任的端口,有两种可能的 IP 流量安全过滤级别:
-
源 IP 地址过滤 - 根据源 IP 地址过滤 IP 流量,并且仅允许与 IP 源绑定条目匹配的源 IP 地址的 IP 流量。在端口上创建或删除新的 IP 源条目绑定时,PVACL 自行调整以体现 IP 源绑定更改。
-
源 IP 和 MAC 地址过滤 - 根据源 IP 地址和 MAC 地址过滤 IP 流量。仅允许源 IP 和 MAC 地址与 IP 源绑定条目匹配的 IP 流量。
配置 IP 源保护
S1(config)# interface range fastethernet 0/1 - 2
S1(config-if-range)# ip verify source
S1(config-if-range)# end
- 可以使用 ip verify source 命令在不受信任的端口上启用 IP 源保护。只能在第 2 层接入或中继端口中配置该功能,而且在学习有效的 IP 地址和 MAC 地址对时需要执行 DHCP 监听。
S1# show ip verify source
Interface Filter-type Filter-mode IP-address Mac-address Vlan
--------- ----------- ----------- --------------- ----------------- ----
F0/1 ip active 192.168.10.10 10
F0/2 ip active 192.168.10.11 10
- 使用 show ip verify source 命令来验证 IP 源保护 (IP Source Guard) 配置。在本例中,已对 FastEthernet F0/1 和 F0/2 配置 IP 源保护 (IP Source Guard)。每个接口都有一个有效的 DHCP 绑定。
生成树协议简介(Spanning Tree Protocol,STP)
冗余功能可防止网络因单点故障(例如网络电缆或交换机故障)而无法运行,以此提高第 2 层基础设施的可用性。当物理冗余功能引入设计时,便会出现环路和重复帧。环路和重复帧对交换网络有着极为严重的影响。STP 的开发就是为了解决这些问题。
STP 确保冗余物理链路是无环路的。它会特意阻塞可能导致环路的冗余路径,以确保网络中所有目的地之间只有一条逻辑路径。端口处于阻塞状态时,用户数据将无法进入或流出该端口。阻塞的端口仍会交换 BPDU 帧,STP 利用这些帧来动态阻塞冗余路径,或在网络更改时取消阻塞,从而防止形成环路。
阻塞冗余路径对于防止网络环路非常关键。为了提供冗余功能,这些物理路径实际依然存在,只是被禁用以免产生环路。一旦需要启用此类路径来抵消网络电缆或交换机故障的影响时,STP 就会重新计算路径,将必要的端口解除阻塞,使冗余路径进入活动状态。
STP 的各种实施方式
STP 有多种实施方式,例如快速生成树协议 (RSTP) 和多生成树协议 (MSTP)。为了正确交流生成树概念,必须参考上下文中的特定实施方式或标准。有关生成树的最新 IEEE 文档 IIEEE-802-1D-2004 中指出,“STP 现已被快速生成树协议 (RSTP) 取代”。IEEE 使用“STP”指代生成树的原始实施方式,使用“RSTP”描述 IEEE-802.1D-2004 指定的生成树版本。在本课程中,当讨论原始 STP 时,为了避免混淆,我们使用短语“原始 802.1D 生成树”。
注意:STP 确保无环路拓扑,可提供重要的意外或恶意桥接环路保护。桥接环路可以轻松快速地禁用 LAN,因此,除非在清楚了解风险的特定条件下,否则绝对不能禁用 STP。
STP 端口角色
名词 | 解释 |
---|---|
根端口 | 根端口最靠近根网桥的交换机端口。 |
指定端口 | 指定端口是网络中获准转发流量的、除根端口之外的所有端口。指定端口按逐个 TRUNK 进行选择。如果 TRUNK 的一端是根端口,则另一端是指定端口。根网桥上的所有端口都是指定端口。 |
代替端口 | 替代和备用端口配置为阻止环路的拦截状态。替代端口只能在两端都不是根端口的 TRUNK 链路上选择。 |
生成树算法会将一台交换机指定为根网桥,然后将其用作所有路径计算的参考点。在图中,交换机 S1 在选择过程中被选为根网桥。所有参与 STP 的交换机互相交换 BPDU 帧,以确定网络中哪台交换机的网桥 ID (BID) 最小。BID 最小的交换机将自动成为生成树算法计算中的根网桥。
注:为了简单起见,除非另有说明,否则假设所有交换机的所有端口都已分配给 VLAN 1。交换机均已配置默认 PVST +。每台交换机都有唯一的 MAC 地址关联 VLAN 1。
BPDU 是交换机之间为 STP 交换的消息帧。每个 BPDU 都包含一个 BID,用于标识发送该 BPDU 的交换机。BID 包含优先级值、发送方交换机的 MAC 地址以及可选的扩展系统 ID。最低的 BID 值取决于这三个字段的组合。
确定根网桥后,生成树算法会计算到根网桥的最短路径。每台交换机使用生成树算法来确定要阻塞的端口。当生成树算法为广播域中的所有交换机端口确定到达根网桥的最佳路径时,网络中的所有流量都会停止转发。生成树算法在确定要阻塞的端口时,会同时考虑路径开销和端口开销。路径开销是根据端口开销值计算出来的,而端口开销值与给定路径上的每个交换机端口的端口速度相关联。端口开销值的总和决定了到达根桥的路径总开销。如果可供选择的路径不止一条,生成树算法会选择路径开销最低的路径。
生成树算法确定到每台交换机的最佳路径之后,它会为相关交换机端口分配端口角色。图中的端口角色描述了网络中端口与根网桥的关系,以及端口是否能转发流量。
注意:已关闭的端口被称为已禁用端口。
注意:在图中,TRUNK 只有一端处于阻塞状态。这样可以在必要时更快地转换到转发状态。
STP 根网桥
每个生成树实例(交换 LAN 或广播域)都有一台交换机指定为根网桥。根网桥是所有生成树计算的参考点,用于确定哪些冗余路径应被阻塞,根桥通过选择来确定。
广播域中的所有交换机都会参与选择过程。当交换机启动时,它会每两秒钟发送一次 BPDU 帧。这些 BPDU 包含交换机的 BID 和根 ID。
随着交换机开始转发 BPDU 帧,广播域中的邻接交换机从 BPDU 帧中读取到根 ID 信息。如果收到的 BPDU 中包含的根 ID 比接收方交换机的根 ID 更小,接收方交换机会更新自己的根 ID,将邻接交换机作为根网桥。实际上,也可能不是邻接交换机,而是广播域中的任何其他交换机。交换机然后将含有较小根 ID 的新 BPDU 帧发送给其它邻接交换机。最终,具有最小 BID 的交换机被确定为生成树实例的根网桥。
一般会为每个生成树实例选择一个根网桥。也可能有多个不同的根网桥。如果所有交换机的所有端口都是 VLAN 1 的成员,则只有一个生成树实例。扩展系统 ID 在确定生成树实例时也能起到一定作用。
STP 路径开销计算
为生成树实例选择根网桥后,生成树算法便开始确定从广播域内所有目的地到根网桥的最佳路径。将从目的地到根桥的路径上沿途的每个端口开销加在一起便可得到路径信息。每个“目的地”实际上是一个交换机端口。
默认情况下,端口开销由端口的运行速度决定。10 Gb/s 以太网端口的端口开销为 2,1 Gb/s 以太网端口的端口开销为 4,100 Mb/s 快速以太网端口的端口开销为 19,10 Mb/s 以太网端口的端口开销为 100。
注意:随着更新、更快的以太网技术面世,路径开销值也可能进行相应的改变,以满足各种可用速度的要求。表中的非线性值满足对旧版以太网标准的部分改进。为了满足 10 Gb/s 以太网标准,这些值已经更改。为了说明与高速网络相关的持续变化,Catalyst 4500 和 6500 交换机支持更长的路径开销方法;例如,10 Gb/s 的路径开销为 2000,100 Gb/s 的路径开销为 200,1 Tb/s 的路径开销为 20。
尽管交换机端口关联有默认的端口开销,但端口开销是可以配置的。通过单独配置各个端口开销,管理员便能手动灵活控制到根网桥的生成树路径。
S2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
S2(config)# interface f0/1
S2(config-if)# spanning-tree cost 25
S2(config-if# end
- 配置端口开销,范围介于 1 到 200,000,000 之间。
S2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
S2(config)# interface f0/1
S2(config-if)# no spanning-tree cost
S2(config-if)# end
- 重设端口开销,要将该端口开销恢复为默认值 19。
- 路径开销是到根网桥的路径上所有端口开销的总和。开销最低的路径会成为首选路径,所有其他冗余路径都会被阻塞。在示例中,路径 1 上 S2 到根网桥 S1 的路径开销是 19(根据 IEEE 规定的单端口开销),而路径 2 上的路径开销是 38。由于路径 1 到根网桥的总路径开销更低,因此它是首选路径。STP 随后将其它冗余路径阻塞,以防形成环路。
S2# show spanning-tree
VLAN001
Spanning tree enabled protocol ieee
Root ID Priority 27577
Address 000A.0033.3333
Cost 19
Port 1
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000A.0011.1111
Hello time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
----------- ----- ---- ----- --------- -----------------
F0/1 Root FWD 19 128.1 Edge P2p
F0/2 Desg FWD 19 128.2 Edge P2p
- 要检验到根网桥的端口和路径开销,则输入 show spanning-tree 命令。“Cost”(开销)字段显示了到根网桥的总路径开销。此值取决于到达根网桥的过程中要经过多少个交换机端口。输出显示,每个接口的单端口开销是 19。
802.1D BPDU 帧格式
字段编号 | 字节 | 字段 | 解释 |
---|---|---|---|
1-4 | 2 | 协议 ID | 协议 ID 字段指示所使用的协议类型。此字段的值为 0。 |
1 | 版本 | 版本字段指示协议的版本。此字段的值为 0。 | |
1 | 消息类型 | 消息类型字段指示消息的类型。此字段的值为 0。 | |
1 | 标志 | 标志字段包含下列内容之一:拓扑更改 (TC) 位,用于在指向根网桥的路径中断时指示拓扑更改;拓扑更改确认 (TCA) 位,用于确认收到拓扑更改位的配置消息。 | |
5-8 | 8 | 根 ID | “根 ID”字段通过列出其 2 字节优先级和其 6 字节 MAC 地址 ID 指示根桥。当交换机第一次启动时,根 ID 与网桥 ID 相同。但是,当选举过程发生时,最低网桥 ID 会替换本地根 ID 以确定根桥交换机。 |
4 | 路径开销 | 路径开销字段指示网桥向根桥发送配置消息时所用路径的开销。到根网桥途中的每台交换机都会更新路径开销字段。 | |
8 | 网桥 ID | 网桥 ID 字段指示发送消息的网桥的优先级和 MAC 地址 ID。此标签供根桥识别生成 BPDU 的源,并且可用来标识从交换机到根桥的多条路径。当根桥从一台交换机收到具有不同路径开销的一个以上 BPDU 时,它便知道它们之间有两条不同的路径,根桥会使用开销较低的那条路径。 | |
2 | 端口 ID | 端口 ID 字段指示用来发送该配置消息的端口号。此字段用于检测和纠正因多个相连网桥造成的环路。 | |
9-12 | 2 | 消息老化时间 | “Message age”(消息老化时间)字段指示从根网桥送出被当前配置消息作为依据的配置消息以来,已经过多长时间。 |
2 | 最大老化时间 | 最大年龄字段指示何时应删除当前的配置消息。一旦消息老化时间达到最大老化时间,交换机就会认为自己已经与根网桥断开连接,因此它会使当前配置过期,并发起新一轮选举来确定新的根网桥。这是因为交换机假设已从根网桥断开连接。此值默认为 20 秒,不过可调整为 6 至 40 秒之间的值。 | |
2 | Hello 时间 | Hello 时间字段指示根桥配置消息之间的时间。该时间间隔定义了根桥在发送配置消息 BPDU 之前应等待多长时间。此值默认为 2 秒,不过可调整为 1 至 10 秒之间的值。 | |
2 | 转发延迟 | 转发延迟字段指示网桥在发生拓扑更改后应等待多长时间才能转换到新的状态。如果网桥转换太快,那么有可能有些网络链路尚未准备好更改状态,结果造成环路。默认情况下,每转换一个状态要等待 15 秒,不过此时间可调整为 4 至 30 秒之间的值。 |
生成树算法通过交换 BPDU 来确定根网桥。BPDU 帧包含传达路径和优先级信息的 12 个不同字段,这些字段可以用来确定根网桥和到根网桥的路径。
-
前四个字段标识协议、版本、消息类型和状态标志。
-
接下来的四个字段用于标识根桥以及到根桥的路径开销。
-
最后四个字段全是计时器字段,用于确定 BPDU 消息的发送频率、通过 BPDU 过程所收到信息的保留时间。
在捕获到的 BPDU 帧中,根 ID 及 BID 两者相同。这表明该帧捕获自根网桥。所有计时器都设置为默认值。
BPDU 传播和流程
广播域中的每台交换机最初假设自己是生成树实例的根网桥,因此发送的 BPDU 帧中将本地交换机的 BID 作为根 ID。默认情况下,启动交换机后每 2 秒发送一次 BPDU 帧。这就表示,BPDU 帧中指定的 Hello 计时器的默认值是 2 秒。每台交换机都维护着有关其 BID、根 ID 以及到根桥的路径开销的本地信息。
当邻接交换机收到 BPDU 帧时,它们会比较 BPDU 帧内包含的根 ID 与本地根 ID。如果 BPDU 根 ID 低于本地根 ID,交换机会将本地根 ID 更新为 BPDU 中的根 ID。交换机向其他交换机发送的 BPDU 消息中也会包含新的根。到根网桥的距离也由路径开销更新指示。例如,如果快速以太网交换机端口上收到 BPDU,路径开销会增加 19。如果本地根 ID 小于 BPDU 帧内的根 ID,该 BPDU 帧将被丢弃。
交换机的根 ID 更新后,其送出的所有后续 BPDU 帧都会包含新的根 ID 以及更新后的路径开销。通过这种方式,所有其它邻接交换机就能始终看到最小的根 ID。随着 BPDU 帧在其它邻接交换机之间传递,路径开销也不断更新,以指示到根桥的总路径开销。生成树中的每台交换机使用其路径开销来指示到根桥的最佳可能路径。
扩展系统 ID
网桥 ID (BID) 用于确定网络中的根桥。BPDU 帧的 BID 字段包含三个不同的字段:根桥选择时会用到这些字段。
网桥优先级
网桥优先级是一个可自定义的值,您可使用它来影响哪台交换机能成为根网桥。具有最低优先级的交换机也表示其具有最低 BID,因为优先考虑优先级值较低的交换机,所以它会成为根网桥。例如,要确保某台交换机始终是根网桥,可将其优先级设置为比网络中的其他交换机都低。所有思科交换机的默认优先级值为 32768。范围是 0 到 61440(增量为 4096)。有效优先级值为 0、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、53248、57344 和 61440。系统拒绝其他所有值。网桥优先级 0 优先于其他网桥优先级。
扩展系统 ID
IEEE 802.1D 早期实施方式用于不使用 VLAN 的网络设计。所有交换机构成一颗简单的生成树。因此,在旧款思科交换机中,BPDU 帧中可以省略扩展系统 ID。随着 VLAN 逐渐用于网络基础设施分段,802.1D 增强了对 VLAN 的支持,要求在 BPDU 帧中包含 VLAN ID。VLAN 信息通过使用扩展系统 ID 而包含在 BPDU 帧中。默认情况下,所有新款交换机都使用扩展系统 ID。
当两台交换机配置有相同的优先级和相同的扩展系统 ID 时,MAC 地址所含的十六进制值最低的交换机具有较小的 BID。一开始,所有交换机都具有相同的默认优先级值。随后 MAC 地址成为确定哪台交换机能成为根桥的决定因素。为确保根网桥决策最大限度满足网络要求,我们建议管理员为所需的根网桥交换机配置较低的优先级。这样也可确保向网络添加新交换机时,不会发生新的生成树选择,避免因选择新根网桥而干扰网络通信。
选择根网桥
如果管理员要将特定交换机作为根网桥,必须对其网桥优先级值加以调整,以确保该值小于网络中所有其他交换机的网桥优先级值。在思科 Catalyst 交换机上配置网桥优先级值有两种不同的方法。
下面的例子假设三个交换机都连在一起
方法 1
要确保交换机具有最低的网桥优先级值,请在全局配置模式下使用 spanning-tree vlan vlan-id root primary 命令。交换机的优先级即被设置为预定义的值 24,576,或者是小于网络中检测到的最低网桥优先级的 4,096 的最大倍数。
如果需要备用根网桥,则使用 spanning-tree vlan vlan-id root secondary 全局配置模式命令。此命令将交换机的优先级设置为预定义的值 28,672。这可确保主根网桥发生故障时替代交换机成为根网桥。这里假设网络中的其他交换机都将默认优先级值定义为 32,768。
s1(config)# spanning-tree VLAN 1 root primary
s1(config)# end
s2(config)# spanning-tree VLAN 1 root secondary
s2(config)# end
s3(config)# spanning-tree VLAN 1 priority 24576
s3(config)# end
- S1 已使用 spanning-tree vlan 1 root primary 命令指定为主根网桥,S2 已使用 spanning-tree vlan 1 root secondary 命令配置为次根网桥。
方法 2
另一种配置网桥优先级值的方法是使用全局配置模式命令 spanning-tree vlan vlan-id priority value 。此命令可更为精确地控制网桥优先级值。优先级值介于 0 和 61,440 之间,增量为 4,096。在上面的示例中,使用 spanning-tree vlan 1 priority 24576 命令向 S3 分配了网桥优先级值 24,576。
S3# show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 24577
Address 00A.0033.3333
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24577 (priority 24576 sys-id-ext 1)
Address 000A.0033.3333
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
------------ ----- ---- ----- ---------- ------
Fa0/1 Desg FWD 4 128.1 p2p
Fa0/2 Desg FWD 4 128.2 p2p
- 要验证交换机的网桥优先级,可使用 show spanning-tree 命令。交换机的优先级设置为 24,576。另请注意,交换机已指定为生成树实例的根网桥。
STP 恶意操纵攻击
网络攻击者可以操纵 STP,通过伪造根网桥和更改网络拓扑以执行攻击。攻击者可以让自己的主机显示为根网桥,因此可以捕获立即交换域的所有流量。
要执行 STP 恶意操纵攻击,发起攻击的主机将广播 STP 配置和强制重新计算生成树的拓扑更改。由发起攻击的主机发送的 BPDU 会通告较低的网桥优先级,从而试图获选为根网桥。如果成功,发起攻击的主机将成为根网桥,可以查看原本无法访问的各种帧。
这种攻击可用于破坏三个安全目标:保密性、完整性和可用性。
缓解 STP 攻击
为缓解 STP 恶意操纵攻击,请使用思科 STP 稳定性机制来提高交换机的整体性能并减少拓扑更改期间损失的时间。
以下是有关使用 STP 稳定性机制的推荐做法:
-
PortFast - PortFast 可直接配置为从阻塞状态变为转发状态,绕过侦听和学习状态。适用于所有最终用户端口。仅当主机连接到端口(而非另一台交换机)时才能配置 PortFast。
-
BPDU 防护 (BPDU Guard) - BPDU 防护立即错误禁用接收 BPDU 的端口。通常用于已启用 PortFast 的端口。适用于所有最终用户端口。
-
根防护 (Root Guard) - 根防护可防止将不适当的交换机变为根网桥。根防护将会限制可进行根网桥协商的交换机端口。适用于不应成为根端口的所有端口。
-
环路防护 (Loop Guard) - 环路防护可防止备选端口或根端口由于导致单向链路的故障变成指定端口。适用于已经成为或可以成为非指定端口的所有端口。
这些功能可在网络中放置根网桥并建立 STP 域边界。
配置 PortFast
生成树 PortFast 功能可配置为第 2 层接入端口的接口立即从阻塞状态变为转发状态,绕过侦听和学习状态。可以在连接到单个工作站或服务器的第 2 层接入端口上使用 PortFast,从而让这些设备立即连接至网络,而不是等待 STP 收敛。
由于 PortFast 的目的是将接入端口等待 STP 收敛的时间降至最低,因此该技术只能用于接入端口上。如果在连接到其他交换机的端口上启用 PortFast,则会产生形成生成树环路的风险。
可以通过 spanning-tree portfast default 全局配置命令在所有非中继端口上全局配置 Portfast。或者,可以通过 spanning-tree portfast 接口配置命令在接口上启用 PortFast。
要验证是否已启用 PortFast,请使用 show running-config interface type slot/port命令来验证是否启用 SNMP。
配置 BPDU 防护
即使启用了 PortFast,接口仍将侦听 BPDU。偶尔可能会收到意外 BPDU,或发生未经授权尝试将交换机添加到网络的操作。BPDU 防护 (BPDU Guard) 可以为启用 PortFast 的端口保护完整性。BPDU 还可防止将额外的交换机添加到拓扑中,这可能会违反此 STP 拓扑中允许的端到端交换机数量。如果在启用 BPDU 防护的端口上收到任何 BPDU,该端口将进入错误禁用状态。这就表示端口是关闭的,而且必须手动重新启用或通过错误禁用超时功能自动恢复。
使用 spanning-tree portfast bpduguard default 全局配置命令在所有启用 PortFast 的端口上全局启用 BPDU 防护。如果未配置 PortFast,则 BPDU 防护未激活。或者,可以通过 spanning-tree bpduguard enable 接口配置命令在已启用 PortFast 的端口上启用 BPDU 防护。
注意:请始终在所有已启用 PortFast 的端口上启用 BPDU 防护。
%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port F0/1 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard error detected on Et0/0, putting F0/1 in err-disable state
- 最好在面向用户的端口上部署 BPDU 防护,以防发起攻击的主机进行非法交换机网络扩展。在本例中,攻击者正在尝试在全局启用 PortFast 和 BPDU 防护的交换机上发送 BPDU。请注意,系统生成了 CLI 通知消息,说明 FastEthernet 0/1 端口处于关闭状态。
Switch# show spanning-tree summary
Root bridge for: VLAN0001, VLAN0004-VLAN1005
VLAN1013-VLAN1499, VLAN2001-VLAN4094
EtherChannel misconfiguration guard is enabled
Extended system ID is enabled
Portfast is enabled by default
PortFast BPDU Guard is enabled
Portfast BPDU Filter is disabled by default
Loopguard is disabled by default
UplinkFast is disabled
BackboneFast is disabled
Pathcost method used is long
<省略部分输出>
- 要显示有关生成树状态的信息,请使用 show spanning-tree summary 命令。
Switch# show spanning-tree summary totals
Root bridge for: none.
PortFast BPDU Guard is enabled
UplinkFast is disabled
BackboneFast is disabled
Spanning tree default pathcost method used is short
Name Blocking Listening Learning Forwarding STP Active
---------------- -------- --------- -------- ---------- ----------
1 VLAN 0 0 0 1 1
<省略部分输出>
- show spanning-tree summary totals 命令也可有效验证 BPDU 防护配置。该命令显示端口状态摘要或生成树状态部分的总行数。
配置根防护
在网络中,用户连接的交换机无论在什么情况下都不应成为 STP 根网桥。根防护 (Root Guard) 通过限制哪些交换机可以成为网桥,从而提供一种在网络中放置根网桥的方法。
最好将根防护部署在不是作为根网桥的交换机的端口上。如果已启用根防护的端口接收的 BPDU 优先级高于当前根网桥发送的 BPDU,则端口会进入当前根不一致状态。这是实际上等同于 STP 侦听状态,并且没有数据流量通过该端口转发。使用 spanning-tree guard root 接口配置命令在接口上配置 BPDU 防护。
要查看已接收更优 BPDU 并处于根不一致状态的根防护端口,请使用 show spanning-tree inconsistent ports 命令。
注意:根防护似乎并不必要,因为管理员可以将交换机的网桥优先级手动设置为 0。但是,这无法保证将该交换机将被选为根网桥。如果其他交换机的优先级同样为 0,而且 MAC 地址较低,则也有可能成为根。
配置环路防护
双向链路上的流量双向流动。如果由于某些原因一个方向的流量流动失败,将会出现可能引发第 2 层环路的单向链路。STP 依赖于基于端口角色的 BPDU 持续接收或传输。指定端口会传输 BPDU,而非指定端口将接收 BPDU。当冗余拓扑中的 STP 端口停止接收 BPDU 并且错误转换成转发状态时就会产生第 2 层环路。
STP 环路防护功能可针对第 2 层环路提供额外保护。如果已启用环路防护的非指定端口上收到 BPDU,则端口转换到环路不一致阻塞状态,而不是侦听/学习/转发状态。没有环路防护功能,端口将承担指定端口的角色并创建环路。
使用 spanning-tree guard loop 接口配置命令在所有非根防护端口上启用环路防护。
注意:也可使用 spanning-tree loopguard default 全局配置命令在全局启用环路防护。这样可在所有点对点链路上启用环路防护。
S1(config)# spanning-tree portfast default
%Warning: this command enables portfast by default on all interfaces. You
should now disable portfast explicitly on switched ports leading to hubs,
switches and bridges as they may create temporary bridging loops.
S1(config)# spanning-tree portfast bpduguard default
S1(config)# spanning-tree loopguard default
- 为交换机上的所有非中继端口全局配置 PortFast。在所有启用 PortFast 的端口上全局启用 BPDU 防护。 在所有点对点链路上全局启用环路防护。
S1(config)# do show spanning-tree summary
Switch is in pvst mode
Root bridge for: none
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is enabled
Portfast BPDU Filter Default is disabled
Loopguard Default is enabled
EtherChannel misconfig guard is enabled
UplinkFast is disabled
BackboneFast is disabled
Configured Pathcost method used is short
Name Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001 1 0 0 5 6
---------------------- -------- --------- -------- ---------- ----------
1 vlan 1 0 0 5 6
- 验证在 S1 上是否已启用 PortFast、BPDU 防护和环路防护。
实施虚拟专用网络
VPN 是在公共网络(通常为互联网)中通过隧道创建的专用网络。组织机构通常会部署站点间 VPN 和远程访问 VPN。
本章主要讲如何建立IPsec的VPN。
VPN 需要使用现代加密技术,确保安全传输信息。IPsec 是制定安全通信规则的开放标准框架。IPsec 依赖现有算法来实现加密、认证和密钥交换。IPsec 可以通过认证报头(Authentication Header,AH)或更安全的选项 - 封装安全协议(Encapsulation Security Protocol,ESP)来封装数据包。
IPsec 使用 IKE 协议建立密钥交换过程。要创建站点间 VPN,需要完成多项任务:
-
为 IKE 第 1 阶段配置 ISAKMP 策略。
-
为 IKE 第 2 阶段配置 IPsec 策略。
-
为 IPsec 策略配置加密映射。
-
应用 IPsec 策略。
-
验证 IPsec 隧道正常运行。
IPsec 通道
建立 VPN 的 IPsec 通道包括 5 个步骤,其中包含 IKE(互联网密钥交换) 第 1 阶段和第 2 阶段:
步骤 1:当主机 A 向主机 B 发送需要关注的流量时,启动 ISAKMP 隧道。在对等体之间传输并满足 ACL 中定义标准的流量即被视为需要关注的流量。
步骤 2:IKE 第 1 阶段开始。对等体协商 ISAKMP SA 策略。当对等体策略达成一致,并完成认证后,安全隧道即创建完成。
步骤 3:IKE 第 2 阶段开始。IPsec 对等体使用经过认证的安全隧道协商 IPsec SA 策略。对共享策略的协商决定了如何建立 IPsec 隧道。
步骤 4:创建 IPsec 隧道,并根据 IPsec SA 在 IPsec 对等体之间传输数据。
步骤 5:手动删除 IPsec SA 或当其生命周期结束时,终止 IPsec 隧道。
现有 ACL 配置
理想中的ISP没有防火墙限制,但是事实上的边界路由器通常会实施严格的安全策略,除了允许的流量,其它所有流量均被拦截。在站点间实施 IPsec VPN 之前,请确保现有 ACL 不会阻止 IPsec 建立通道的封包。
access-list acl permit udp source wildcard destination wildcard eq isakmp
- 允许 ISAKMP 流量
access-list acl permit esp source wildcard destination wildcard
- 允许 ESP 流量
access-list acl permit ahp source wildcard destination wildcard
- 允许 AH 流量
处理广播和组播流量
IPsec 建立了如果要进行广播和组播就要建立GRE通道。
默认 ISAKMP 策略
架构: PC1 <--> R1 <--> ISP <--> R2 <--> PC2
R1 有七个默认 ISAKMP 策略,安全级别由高到低为策略 65507 至策略 65514。如果管理员未定义其他策略,R1 将尝试使用最安全的默认策略。如果 R2 具有匹配策略,R1 和 R2 可以成功协商 IKE 第 1 阶段 ISAKMP 隧道,无需管理员进行任何配置。七个默认策略可实现协商灵活性。如果没有协议规定要使用最安全的默认策略,R1 将尝试使用下一个最安全的策略。
R1# show crypto isakmp default policy
Default IKE policy
Default protection suite of priority 65507
encryption algorithm: AES - Advanced Encryption Standard (128 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65508
encryption algorithm: AES - Advanced Encryption Standard (128 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65509
encryption algorithm: AES - Advanced Encryption Standard (128 bit keys).
hash algorithm: Message Digest 5
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65510
encryption algorithm: AES - Advanced Encryption Standard (128 bit keys).
hash algorithm: Message Digest 5
authentication method: Pre-Shared Key
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65511
encryption algorithm: Three key triple DES
hash algorithm: Secure Hash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65512
encryption algorithm: Three key triple DES
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65513
encryption algorithm: Three key triple DES
hash algorithm: Message Digest 5
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Default protection suite of priority 65514
encryption algorithm: Three key triple DES
hash algorithm: Message Digest 5
authentication method: Pre-Shared Key
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
- 思科 IOS 提供默认的 ISAKMP 策略配置。要查看默认策略,请输入 show crypto isakmp default policy 命令
配置新 ISAKMP 策略的语法
R1(config)# crypto isakmp policy ?
<1-10000> Priority of protection suite
R1(config)# crypto isakmp policy 1
R1(config-isakmp)# ?
ISAKMP commands:
authentication Set authentication method for protection suite
default Set a command to its defaults
encryption Set encryption algorithm for protection suite
exit Exit from ISAKMP protection suite configuration mode
group Set the Diffie-Hellman group
hash Set hash algorithm for protection suite
lifetime Set lifetime for ISAKMP security association
no Negate a command or set its defaults
- 要配置新的 ISAKMP 策略,请使用 crypto isakmp policy 命令,该命令的唯一参数用于设置策略优先级(从 1 到 10000)。对等体将尝试利用编号最小(最高优先级)的策略进行协商。对等体不需要匹配优先级编号。
在 ISAKMP 策略配置模式下,可以为 IKE 第 1 阶段隧道配置 SA。利用助记法 HAGLE 可以帮助记住要配置的五个 SA:介绍视频
-
Hash(散列)
-
Authentication(认证)
-
Group(组)
-
Lifetime(声明周期)
-
Encryption(加密)
ISAKMP 策略配置
R1(config)# crypto isakmp policy 1
R1(config-isakmp)# hash sha
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 24
R1(config-isakmp)# lifetime 3600
R1(config-isakmp)# encryption aes 256
R1(config-isakmp)# end
R1# show crypto isakmp policy
Global IKE policy
Protection suite of priority 1
encryption algorithm: AES - Advanced Encryption Standard (256 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #24 (2048 bit, 256 bit subgroup)
lifetime: 3600 seconds, no volume limit
为了满足安全策略要求,请使用以下 SA 配置 ISAKMP 策略:
-
散列为 SHA
-
认证为预共享密钥
-
组 24
-
生命期为 3600 秒
-
加密为 AES
配置预共享秘钥
R1 和 R2 配置共享秘钥可以用下列命令:
crypto isakmp key keystring address peer-address
crypto isakmp key keystring hostname peer-hostname
- R1和R2的命令是一样的
例子:配置 ISAKMP 策略
- 使用以下 SA 参数配置 ISAKMP 策略,将其优先级设置为 1:
散列为 SHA - Authentication pre-shared key
- Diffie-Hellman Group is 24
- 生命期为 3600 秒
- Encryption is AES with a 256 bit key
R2(config)# crypto isakmp policy 1
R2(config-isakmp)# hash sha
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# group 24
R2(config-isakmp)# lifetime 3600
R2(config-isakmp)# encryption aes 256
!配置预共享 ISAKMP 密钥,以 cisco12345 作为密钥,以 172.30.2.1 作为对等体的 IP 地址。
R2(config-isakmp)# crypto isakmp key cisco12345 address 172.30.2.1
!在配置模式下使用 do 命令显示 ISAKMP 策略。
R2(config)# do show crypto isakmp policy
Global IKE policy
Protection suite of priority 1
encryption algorithm: AES - Advanced Encryption Standard (256 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #24 (2048 bit, 256 bit subgroup)
lifetime: 3600 seconds, no volume limit
定义需要转发的流量
尽管已为 IKE 第 1 阶段隧道配置 ISAKMP 策略,但尚未建立隧道。
R1# show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id status
IPv6 Crypto ISAKMP SA
- 此命令用于显示对等体之间构建的 Internet 安全连接和密钥管理协议 (ISAKMP) 安全关联 (SA)。
接下来定义哪些流量允许穿过IPSec VPN:
架构: PC1 <--> R1 <--> ISP <--> R2 <--> PC2
-
假设R1 内网是:10.0.1.0/24
-
假设R2 内网是:192.168.1.0/24
R1# conf t
R1(config)# access-list 101 permit ip 10.0.1.0 0.0.0.255 192.168.1.0 0.0.0.255
- R1 配置文件
R2# conf t
R2(config)# access-list 102 permit ip 192.168.1.0 0.0.0.255 10.0.1.0 0.0.0.255
- R2 配置文件
配置 IPsec 转换集
下一步是配置加密方法和封装算法集,这些算法将通过 IPsec 隧道发送封包进行加密,这称为转换集。
R1(config)# crypto ipsec transform-set ?
WORD Transform set tag
R1(config)# crypto ipsec transform-set R1-R2 ?
ah-md5-hmac AH-HMAC-MD5 transform
ah-sha-hmac AH-HMAC-SHA transform
ah-sha256-hmac AH-HMAC-SHA256 transform
ah-sha384-hmac AH-HMAC-SHA384 transform
ah-sha512-hmac AH-HMAC-SHA512 transform
comp-lzs IP Compression using the LZS compression algorithm
esp-3des ESP transform using 3DES(EDE) cipher (168 bits)
esp-aes ESP transform using AES cipher
esp-des ESP transform using DES cipher (56 bits)
esp-gcm ESP transform using GCM cipher
esp-gmac ESP transform using GMAC cipher
esp-md5-hmac ESP transform using HMAC-MD5 auth
esp-null ESP transform w/o cipher
esp-seal ESP transform using SEAL cipher (160 bits)
esp-sha-hmac ESP transform using HMAC-SHA auth
esp-sha256-hmac ESP transform using HMAC-SHA256 auth
esp-sha384-hmac ESP transform using HMAC-SHA384 auth
esp-sha512-hmac ESP transform using HMAC-SHA512 auth
- 通过 crypto ipsec transform-set 命令配置转换集,指定转换集(本例中为 R1-R2)的名称。然后可以按其它顺序配置加密和散列算法。
R1 和 R2 的配置:
R1(config)# crypto ipsec transform-set R1-R2 esp-aes esp-sha-hmac
配置加密映射的语法
目前已经定义需要转发的流量,并配置完成 IPsec 转换集。现在可以将上述配置与加密映射中的其它 IPsec 策略绑定在一起。启动加密映射集的语法如下语法:
crypto map map-name seq-num [ipsec-isakmp | ipsec-manual]
参数 | 说明 |
---|---|
map-name | 标识加密映射集。 |
seq-num | 您分配给加密映射条目的序号。使用 crypto map map-name seq-num 命令,没有任何关键字可修改任何现有加密映射条目或配置文件。 |
ipsec-isakmp | 表示将使用 IKE 建立 IPsec 以保护此加密映射条目指定的流量。 |
ipsec-manual | 表示不会将 IKE 用于建立保护此加密映射条目指定的流量的 IPsec SA。 |
配置多个加密映射条目时,序列号非常重要。
R1(config)# crypto map R1-R2_MAP 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R1(config-crypto-map)# ?
Crypto Map configuration commands:
default Set a command to its defaults
description Description of the crypto map statement policy
dialer Dialer related commands
exit Exit from crypto map configuration mode
match Match values.
no Negate a command or set its defaults
qos Quality of Service related commands
reverse-route Reverse Route Injection.
set Set values for encryption/decryption
步骤 1:将 ACL 和转换集绑定到映射中。
步骤 2:指定对等体的 IP 地址。
步骤 3:配置 DH 组。
步骤 4:配置 IPsec 隧道生命周期。
R1(config)# crypto map R1-R2_MAP 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R1(config-crypto-map)# match address 101
R1(config-crypto-map)# set transform-set R1-R2
R1(config-crypto-map)# set peer 172.30.2.2
R1(config-crypto-map)# set pfs group24
R1(config-crypto-map)# set security-association lifetime seconds 900
R1(config-crypto-map)# exit
- R1 和 R2 配置一样
R1# show crypto map
Interfaces using crypto map NiStTeSt1:
Crypto Map IPv4 "R1-R2_MAP" 10 ipsec-isakmp
Peer = 172.30.2.2
Extended IP access list 101
access-list 101 permit ip 10.0.1.0 0.0.0.255 192.168.1.0 0.0.0.255
Security association lifetime: 4608000 kilobytes/900 seconds
Responder-Only (Y/N): N
PFS (Y/N): Y
DH group: group24
Mixed-mode : Disabled
Transform sets={
R1-R2: { esp-aes esp-sha-hmac } ,
}
Interfaces using crypto map R1-R2_MAP:
- 使用 show crypto map 命令来验证加密映射配置。全部所需 SA 应准备就绪。请注意,上面代码的最后是空的表示:当前没有接口列为正在使用加密映射。
应用加密映射
R1(config)# interface serial0/0/0
R1(config-if)# crypto map R1-R2_MAP
R1(config-if)#
*Mar 19 19:36:36.273: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R1(config-if)# end
R1# show crypto map
Interfaces using crypto map NiStTeSt1:
Crypto Map IPv4 "R1-R2_MAP" 10 ipsec-isakmp
Peer = 172.30.2.2
Extended IP access list 101
access-list 101 permit ip 10.0.1.0 0.0.0.255 192.168.1.0 0.0.0.255
Security association lifetime: 4608000 kilobytes/900 seconds
Responder-Only (Y/N): N
PFS (Y/N): Y
DH group: group24
Mixed-mode : Disabled
Transform sets={
R1-R2: { esp-aes esp-sha-hmac } ,
}
Interfaces using crypto map R1-R2_MAP:
Serial0/0/0
-
为了使用加密映射,需要进入出站接口的接口配置模式,并配置 crypto map map-name 命令启用 SNMP。
-
show crypto map 的输出,将显示串行接口 0/0/0 正在使用该加密映射,并配置 crypto map。
- R2的配置命令和R1相同。
测试 IPsec 通道
可以在路由器上使用ping来ping对方的PC,
R1# ping ip 192.168.1.1 source 10.0.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.0.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/4 ms
- 因为该流量可匹配两台路由器上的 ACL,来自 R1 的扩展 ping 可以测试 VPN 配置。
- 第一次 ping 失败,因为它需要几毫秒来建立 ISAKMP 和 IPsec 隧道。
验证 ISAKMP 和 IPsec 隧道
即使 ISAKMP 和 IPsec 策略配置错误,R1 和 R2 也会在两个 LAN 之间路由流量。要验证隧道是否已建立,请使用 show crypto isakmp sa 和 show crypto ipsec sa 命令。
R1# show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id status
172.30.2.2 172.30.2.1 QM_IDLE 1005 ACTIVE
IPv6 Crypto ISAKMP SA
R1# show crypto ipsec sa
interface: Serial0/0/0
Crypto map tag: R1-R2_MAP, local addr 172.30.2.1
protected vrf: (none)
local ident (addr/mask/prot/port): (10.0.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
current_peer 172.30.2.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
#pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 172.30.2.1, remote crypto endpt.: 172.30.2.2
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb Serial0/0/0
current outbound spi: 0xD3E56A5F(3555027551)
PFS (Y/N): Y, DH group: group24
inbound esp sas:
spi: 0x5D620493(1566704787)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2019, flow_id: Onboard VPN:19, sibling_flags 80004040, crypto map: R1-R2_MAP
sa timing: remaining key lifetime (k/sec): (4155730/802)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0xD3E56A5F(3555027551)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2020, flow_id: Onboard VPN:20, sibling_flags 80004040, crypto map: R1-R2_MAP
sa timing: remaining key lifetime (k/sec): (4155730/802)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
实施思科自适应安全设备
目前有多种类型的防火墙,包括数据包过滤防火墙、状态过滤防火墙、应用网关(代理)防火墙、地址转换防火墙、基于主机的防火墙、透明防火墙和混合防火墙。在现代网络设计中,必须适当设置一个或多个防火墙以保护资源。思科提供两个防火墙解决方案:支持防火墙的 ISR 和思科自适应安全设备 (ASA)。
思科 ASA 5500 系列是思科安全无边界网络的主要组件。思科 ASA 5500 系列可以帮助组织提供高性能的安全连接,通过集成以下功能保护关键资产:
-
成熟的防火墙技术
-
基于思科全球关联和有保障防护的全面高效的入侵防御系统 (IPS)
-
高性能 VPN 和全天候远程访问
-
可提高容错能力的故障切换(failover)功能
ASA 是独立的防火墙设备,也是思科 SecureX 技术的主要组件。它将防火墙、VPN 集中器和入侵防御功能整合到一个设备中,可保护内部网络免受未经授权的外部访问。ASA 还可以支持高级功能,例如虚拟化、具有故障转移的高可用性、身份防火墙和高级威胁控制。ASA 可以配置为路由模式或透明模式。
ASA 分配安全级别以区分内部和外部网络。安全级别定义接口的可信度级别;级别越高,接口越值得信任。安全级别编号从 0(不可信)到 100(非常可信)。必须为每个操作界面分配名称和安全级别,范围为 0(最低)至 100(最高)。
可以通过 CLI 或 ASDM GUI 配置和管理 ASA 设备。ASA CLI 是专有 OS,与路由器 IOS 具有类似外观。
ASA 5505 附带默认配置,足以进行 SOHO 部署。配置包括:
-
两个预配置 VLAN 网络
-
已为内部主机启用 DHCP
-
用于外部访问的 NAT
网络设计中的防火墙概述
讨论连有一个防火墙的网络时,我们需要了解一些通用术语:
-
外部网络 - 不受防火墙保护的网络/区域
-
内部网络 - 位于防火墙后且受保护的网络/区域
-
DMZ - 允许内部和外部用户访问受保护网络资源的隔离区域
Cisco ISR 可以通过基于区域的策略防火墙 (Zone-Based Policy Firewall,ZPF) 或通过早期的基于情景的访问控制 (Context-based Access Control,CBAC) 功能提供防火墙功能。ASA 可提供相同功能,但配置与 IOS路由器上ZPF的配置明显不同。
ASA 是专用防火墙设备。默认情况下,它将定义的内部 (inside) 接口视为可信网络,而将定义的外部 (outside) 接口视为不可信网络。
每个接口都有关联的安全级别。ASA使用这些安全级别来实施安全策略。例如,内部用户通过要求认证或授权,或配合使用外部 URL 过滤服务器,即可基于某些地址访问外部网络。
注意:安全级别有时也称为信任级别。在本课程中,我们将使用安全级别术语。
外部用户所需的网络资源(例如 Web 和 FTP 服务器)可放置在 DMZ 中。防火墙在保护内部网络不受外部用户访问的同时,还允许对DMZ进行有限的访问。
ASA 防火墙操作模式
ASA 设备支持两种防火墙操作模式:
- 路由模式 - 两个或多个接口分离第 3 层网络,即域。ASA 被视为网络中的一条路由器,可以连接网络之间执行 NAT。路由模式支持多个接口。每个接口都位于不同子网中,并且需要配置属于该子网的 IP 地址。ASA 对流经防火墙的数据流应用策略。
- 透明模式 - 连接两个路由器之间的防火墙,因为在此模式下, ASA 的功能类似于第 2 层设备,不作为一跳路由器。ASA上仅需要分配一个在本地网络上的IP地址以用于管理路由器。此模式可有效简化网络配置,也适用于现有 IP 地址无法更改的情况。但是,缺点包括不支持动态路由协议、VPN、QoS、或 DHCP 中继。
注意:本章重点介绍路由模式。
ASA 安全级别
ASA 分配安全级别以区分内部和外部网络。安全级别定义接口的可信度级别。级别越高,接口越值得信任。安全级别编号从 0(不可信)到 100(非常可信)。必须为每个可使用接口配置名称和安全级别,安全级别范围为 0(最低)至 100(最高)。
级别 100 应分配给最安全的网络,例如内部网络。而级别 0 应分配给连接到互联网的外部网络。可为 DMZ 和其他网络分配介于 0 到 100 之间的安全级别。从具有较高安全级别接口移动到具有较低安全级别接口的流量会被视为出站流量。相反,当流量从较低安全级别的接口移动至较高安全级别的接口中时,它被视为入站流量。
-
网络接入层:默认情况下,默许从安全级别较高的接口访问安全级别较低的接口(出站)。较高安全级别接口上的主机可以访问较低安全级别接口上的主机。您可以为多个接口分配同一安全级别。如果为同一安全级别接口启用通信,则会隐式允许接口之间的流量。
-
应用程序过滤:HTTP(S) 和 FTP 过滤仅适用于出站连接(从更高级别到更低级别)。如果为相同安全级别的接口启用通信,则可以过滤任一方向的流量。
-
检测引擎:某些应用检测引擎依赖于安全级别。当接口具有相同的安全级别时,ASA 会检查任一方向上的流量。
默认允许并检查出站流量。状态数据包检查可允许返回流量。例如,位于内部接口上的内部用户可以轻松访问 DMZ 上的资源。他们无需额外的策略或其他命令即可无限制地发起互联网初始化连接且。但是,默认情况下,从外部网络发起的到 DMZ 或内部网络的流量将被拒绝。而源于内部网络并通过外部接口返回的返回流量将被允许。对于默认行为之外的任何例外行为,都需要配置 ACL 以明确允许流量从较低安全级别的接口流向较高安全级别的接口(例如流量从外部流向内部)。
ASA 5505 部署场景
ASA 5505 通常用作边缘安全设备。小型企业可通过 ASA 5505 连接到 ISP 设备(例如 DSL 或电缆调制解调器)以访问互联网。它可以部署为互联,并保护多个工作站、网络打印机和 IP 电话。小型分支机构中的常见部署包括安全级别为 100 的内部网络 (VLAN 1) 和安全级别为 0 的外部网络 (VLAN 2)。
一个网段是内部网络 (VLAN 1),可用于连接工作站和 IP 电话。另一个网段是 DMZ (VLAN 3),可连接公司 Web 服务器。外部接口 (VLAN 2) 用于连接互联网。
基本 ASA 设置
ASA 命令行界面 (CLI) 是专有 OS,与路由器 IOS 具有类似外观。例如,ASA CLI 包含与思科 IOS 路由器类似的命令提示符。此外,如 IOS CLI 一样,ASA CLI 也可识别以下内容:
-
命令和关键字缩写
-
使用 Tab 键补全部分命令
-
在命令后使用帮助命令 (?) 查看更多语法
IOS 路由器命令 | 等效的 ASA 命令 |
---|---|
enable secret password | enable password password |
line vty 0 - 4 password password login | passwd password |
ip route | route if_name |
show ip interfaces brief | show interfaces ip brief |
show ip route | show route |
show vlan | show switch vlan |
show ip nat translations | show xlate |
copy running-config startup-config | write [memory] |
erase startup-config | write erase |
但是,ASA CLI 还具有与 IOS 路由器不同的命令。表格对比了常用 IOS 路由器和 ASA 命令,
ASA 默认配置
ASA 5505 附带默认配置,在大多数情况下,该配置足以进行基本 SOHO 部署。
注意:使用全局配置模式下的 configure factory-default 命令将 ASA 恢复为出厂默认配置。
此配置包含两个预配置的 VLAN 网络:
-
VLAN 1 - 用于内部网络
-
VLAN 2 - 用于外部网络
ASA 交互式初始化设置向导
ASA 提供交互式初始化设置向导,可以简化设备的初始化配置。该向导将引导管理员根据交互提示配置基本设置。
当在特权模式下使用 write erase 和 reload 命令清除配置并重启 ASA 时将显示此向导。
设备重启时,ASA 向导显示提示“Pre-configure Firewall now through interactive prompts [yes]?”。输入 no 取消交互式配置进入 ASA 默认的用户模式,如图 1 所示。否则,请输入 yes ,或只需按 Enter 接受默认 [yes] 选项。这将启动向导,而 ASA 也会以交互方式指导管理员配置默认设置。
配置基本设置
ASA 命令 | 说明 |
---|---|
hostname name | 指定一个主机名,最长为 63 个字符。主机名必须以字母或数字开头和结尾,并且内部字符只能是字母、数字或连字符。 |
domain-name name | 设置默认域名。 |
enable password password | 为特权 EXEC 模式设置启用密码。将密码设置为区分大小写的字符串,包含 3 到 32 个字母数字和特殊字符(不包括问号或空格)。 |
banner motd message | 提供法律通知并配置系统,当连接到 ASA 时显示当日消息横幅。 |
key config-key password-encryption [ new-pass [ old-pass ]] | 设置的口令长度必须介于 8 到 128 个字符之间。用于生成加密密钥。 |
password encryption aes | 启用密码加密,并对所有用户密码进行加密。 |
- 必须为 ASA 配置基本管理设置。
ciscoasa(config)# hostname CCNAS-ASA
CCNAS-ASA(config)# domain-name ccnasecurity.com
CCNAS-ASA(config)# enable password class
CCNAS-ASA(config)#
CCNAS-ASA(config)# banner motd -----------------------------------------------
CCNAS-ASA(config)# banner motd Authorized access only!
CCNAS-ASA(config)# banner motd You have logged into a secure device.
CCNAS-ASA(config)# banner motd -----------------------------------------------
CCNAS-ASA(config)# banner motd
CCNAS-ASA(config)# exit
CCNAS-ASA# exit
Logoff
---------------------------------------------------------
Authorized access only!
You have logged into a secure device.
---------------------------------------------------------
Type help or '?' for a list of available commands.
- 可通过 banner motd 命令提供法律通知。但是,配置命令与 IOS 版本略有不同。要配置多行 banner,必须多次输入 banner motd。要删除一行 banner,请使用 no banner motd message 命令。
CCNAS-ASA# show password encryption
Password Encryption: Disabled
Master key hash: Not set(saved)
CCNAS-ASA#
CCNAS-ASA# conf t
CCNAS-ASA(config)# key config-key password-encryption cisco123
CCNAS-ASA(config)# password encryption aes
CCNAS-ASA(config)# exit
CCNAS-ASA#
CCNAS-ASA# show password encryption
Password Encryption: Enabled
Master key hash: 0x45ebef8e 0x77a0f287 0x90247f80 0x2a184246 0xe85cbcc4(not saved)
CCNAS-ASA#
CCNAS-ASA# write
Building configuration...
Cryptochecksum: 99934042 e6c6b12b 607a9920 89d8a181
2359 bytes copied in 1.340 secs (2359 bytes/sec)
[OK]
- 要更改主密码,请使用 key config-key password-encryption 命令。要确定是否启用密码加密,请使用 show password encryption 命令。
配置逻辑 VLAN 接口
5505 上的接口配置与其他 ASA 5500 系列不同。其他 ASA,可以直接为物理端口分配第 3 层 IP 地址,与思科路由器非常类似。使用 ASA 5505,集成的 8 个交换机端口均为第 2 层端口。因此,在配置 ASA 5505 时,需要配置两种接口:
-
逻辑 VLAN 接口 - 对这些接口配置第 3 层信息,包括名称、安全级别和 IP 地址。
-
物理交换机端口 - 这些是二层交换端口,需要将这些接口指派到逻辑VLAN中。
在 ASA 5505 中,在称为交换机虚拟接口 (SVI) 的逻辑 VLAN 接口上配置第 3 层参数。SVI 需要名称、接口安全级别和 IP 地址。然后将第 2 层交换端口分配给具体 VLAN。在同一 VLAN 上的交换机端口可以通过硬件交换互相通信。但是,如果 VLAN 1 上的交换机端口希望与 VLAN 2 上的交换机端口通信,则 ASA 为两个 VLAN 之间的流量应用安全策略并路由。
ASA 命令 | 说明 |
---|---|
interface vlan vlan-number | 进入 VLAN 接口配置模式。 |
nameif if_name | 接口的名称字符串最多不超过 48 个字符。该名称不区分大小写。可以重新输入此命令,使用一个新值更改其名称。请勿输入 no 形式,因为此命令会导致引用此名称的所有命令被删除。 |
security-level value | 设置安全级别,其中,number 是 0(最低)至 100(最高)之间的整数。 |
证书注意:具有基础许可证的 ASA 5505 不允许创建三个功能完备的 VLAN 接口。但是,如果首先通过 no forward interface vlan 命令配置,则可以创建第三个“有限”VLAN 接口。此命令将限制接口启动与其他 VLAN 的联系。因此,当内部和外部 VLAN 接口均已配置时,在第三个VLAN接口中配置“nameif”命令之前,必须先输入 no forward interface vlan number 命 命令,然后再输入 nameif 命令。
可以使用以下选项之一配置接口的 IP 地址:
-
手动 - 通常用于向接口分配 IP 地址和掩码。
-
DHCP - 当接口连接到提供 DHCP 服务的上游设备时使用。该接口可以是 DHCP 客户端,并从上游设备发现其 IP 地址和 DHCP 相关信息。
-
PPPoE - 当接口连接到可通过以太网服务提供点对点连接的上游 DSL 设备时使用。该接口可以是 PPPoE 客户端,并从上游 PPPoE DSL 设备中发现其 IP 地址。
配置内容 | ASA 命令 | 说明 |
---|---|---|
手动 | ip address ip-address netmask | 向接口分配 IP 地址。 |
使用 DHCP | ip address dhcp | 用于让接口从上游设备请求 IP 地址配置。 |
ip address dhcp setroute | 用于让接口从上游设备请求并安装默认路由。 | |
使用 PPP0E | ip address pppoe | 用于从上游设备请求 IP 地址的接口配置模式命令。 |
ip address pppoe setroute | 相同命令,但同时向上游设备请求并安装默认路由。 |
CCNAS-ASA(config)# interface vlan 1
CCNAS-ASA(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
CCNAS-ASA(config-if)# security-level 100
CCNAS-ASA(config-if)# ip address 192.168.1.1 255.255.255.0
CCNAS-ASA(config-if)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# interface vlan 2
CCNAS-ASA(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
CCNAS-ASA(config-if)# security-level 0
CCNAS-ASA(config-if)# ip address 209.165.200.226 255.255.255.248
CCNAS-ASA(config-if)# exit
- 注意:已向内部接口和外部接口分配默认安全级别值。因此,实际上仅当管理员选择更改这些值时,才需要使用 security-level 命令。应该为任何其它接口分配一个安全级别值。
将第 2 层端口分配到 VLAN
默认情况下,所有第 2 层交换机端口都分配给 VLAN 1。因此,要更改默认 VLAN 分配,就必须使用接口配置命令 switchport access vlan vlan-ids 配置二层端口。二层 端口使用接口配置命令 no shutdown 启用端口。
注意:运行配置(running configuration)仅为其 VLAN 成员身份已从默认 VLAN 1 更改的接口显示 switchport access vlan 命令。属于默认 VLAN 1 中的接口不会显示 switchport access vlan 1 命令。
CCNAS-ASA(config)# interface e0/0
CCNAS-ASA(config-if)# switchport access vlan 2
CCNAS-ASA(config-if)# no shut
CCNAS-ASA(config-if)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config-if)# interface e0/1
CCNAS-ASA(config-if)# switchport access vlan 1
CCNAS-ASA(config-if)# no shut
CCNAS-ASA(config-if)# exit
CCNAS-ASA(config)#
- ASA 5505 第 2 层端口配置示例
CCNAS-ASA# show switch vlan
VLAN Name Status Ports
---- -------------------------------- --------- -----------------------------
1 inside up Et0/1, Et0/2, Et0/3, Et0/4
Et0/5, Et0/6, Et0/7
2 outside up Et0/0
CCNAS-ASA#
- 要验证 VLAN 设置,请使用 show switch vlan 命令
CCNAS-ASA# show interface ip brief
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 unassigned YES unset up up
Ethernet0/1 unassigned YES unset up up
Ethernet0/2 unassigned YES unset up up
Ethernet0/3 unassigned YES unset up up
Ethernet0/4 unassigned YES unset down down
Ethernet0/5 unassigned YES unset down down
Ethernet0/6 unassigned YES unset down down
Ethernet0/7 unassigned YES unset down down
Internal-Data0/0 unassigned YES unset up up
Internal-Data0/1 unassigned YES unset up up
Vlan1 192.168.1.1 YES manual up up
Vlan2 209.165.200.226 YES manual up up
Virtual0 127.1.0.1 YES unset up up
CCNAS-ASA#
- 要显示所有 ASA 接口的状态,请使用 show interface 或 show interface ip brief 命令。
CCNAS-ASA# show ip address
System IP Addresses:
Interface Name IP address Subnet mask Method
Vlan1 inside 192.168.1.1 255.255.255.0 manual
Vlan2 outside 209.165.200.226 255.255.255.248 manual
Current IP Addresses:
Interface Name IP address Subnet mask Method
Vlan1 inside 192.168.1.1 255.255.255.0 manual
Vlan2 outside 209.165.200.226 255.255.255.248 manual
CCNAS-ASA#
- VLAN 接口信息,请使用 show ip address 命令
配置默认静态路由
CCNAS-ASA(config)# route outside 0.0.0.0 0.0.0.0 209.165.200.225
CCNAS-ASA(config)#
CCNAS-ASA(config)# show route | begin Gateway
Gateway of last resort is 209.165.200.225 to network 0.0.0.0
S* 0.0.0.0 0.0.0.0 [1/0] via 209.165.200.225, outside
C 192.168.1.0 255.255.255.0 is directly connected, inside
L 192.168.1.1 255.255.255.255 is directly connected, inside
C 209.165.200.224 255.255.255.248 is directly connected, outside
L 209.165.200.226 255.255.255.255 is directly connected, outside
CCNAS-ASA(config)#
- 如果 ASA 配置为 DHCP 客户端,则可以从上游设备接收并安装默认路由。否则,必须使用 route interface-name 0.0.0.0 0.0.0.0 next-hop-ip-address命令 配置 默认 静态路由。要验证路由条目,请使用 show route 命令。
配置远程访问服务
ASA 命令 | 说明 |
---|---|
{passwd | password} password | 为 Telnet 设置不超过 80 个字符的登录密码。 |
telnet {ipv4_address mask | ipv6_address/prefix } if_name | 标识哪个内部主机或网络可以通过 Telnet 连接到 ASA 接口。使用 clear configure telnet 命令删除 Telnet 连接。 |
telnet timeout minutes | 默认情况下,Telnet 会话在空闲五分钟后即被 ASA 关闭。该命令可修改默认的五分钟 exec 超时值设置。 |
aaa authentication telnet console LOCAL | 配置 Telnet 以引用本地数据库进行认证。关键字 LOCAL 区分大小写,属于预定义服务器标记。 |
clear configure telnet | 从配置中删除 Telnet 连接。 |
- 远程管理 ASA 5505 需要使用 TELNET 或者 SSH,它们基于 CLI。要启用 Telnet 服务
CCNAS-ASA(config)# password cisco
CCNAS-ASA(config)# telnet 192.168.1.3 255.255.255.255 inside
CCNAS-ASA(config)# telnet timeout 3
CCNAS-ASA(config)#
CCNAS-ASA(config)# show run telnet
telnet 192.168.1.3 255.255.255.255 inside
telnet timeout 3
CCNAS-ASA(config)#
- 在 ASA 5505 上启用了 Telnet。在本例中,仅允许 IP 地址为 192.168.1.3 的内部主机访问 ASA。ASA 将在非活动三分钟之后关闭 Telnet 会话。
ASA 命令 | 说明 |
---|---|
username name password password | 创建一个本地数据库条目。 |
aaa authentication ssh console LOCAL | 配置 SSH 以引用本地数据库进行认证。关键字 LOCAL 区分大小写,属于预定义服务器标记。 |
crypto key generate rsa modulus modulus_size | 生成 SSH 加密所需的 RSA 密钥。modulus_size (位)可以是 512、768、1024 或 2048。建议值为 2048 位。 |
ssh {ip_address mask | ipv6_address/prefix } if_name | 标识哪个内部主机或网络可以通过 SSH 连接到 ASA 接口。配置中可以有多个命令。如果未指定 if_name,将在除外部接口之外的所有接口上启用 SSH。使用 clear configure ssh 命令删除 SSH 连接。 |
ssh version version_number | (可选)默认情况下,ASA 允许 SSH 第 1 版(较不安全)和版本 2(较安全)。输入此命令,限制与特定版本的连接。 |
ssh timeout minutes | 修改五分钟的默认 exec 超时值设置。 |
clear configure ssh | 从配置中删除 SSH 连接。 |
- Telnet不安全,启用ssh命令如上表
CCNAS-ASA(config)# username ADMIN password class
CCNAS-ASA(config)#
CCNAS-ASA(config)# aaa authentication ssh console LOCAL
CCNAS-ASA(config)#
CCNAS-ASA(config)# crypto key generate rsa modulus 2048
WARNING: You have a RSA keypair already defined named .
Do you really want to replace them? [yes/no]: y
Keypair generation process begin. Please wait...
CCNAS-ASA(config)#
CCNAS-ASA(config)# ssh 192.168.1.3 255.255.255.255 inside
CCNAS-ASA(config)# ssh 192.168.1.4 255.255.255.255 inside
CCNAS-ASA(config)# ssh 172.16.1.3 255.255.255.255 outside
CCNAS-ASA(config)#
CCNAS-ASA(config)# ssh version 2
CCNAS-ASA(config)#
CCNAS-ASA(config)# show ssh
Timeout: 5 minutes
Version allowed: 2
192.168.1.3 255.255.255.255 inside
192.168.1.4 255.255.255.255 inside
172.16.1.3 255.255.255.255 outside
CCNAS-ASA(config)#
- 在 ASA 5505 上启用 SSH 访问。在本例中,启用基于本地数据库的 AAA 认证,生成的 RSA 密钥长度为 2048 位。允许两个内部主机和一个外部主机访问ASA,SSH的版本为第2版。
配置网络时间协议服务
可以在 ASA 上启用网络时间协议 (NTP) 服务,以便从 NTP 服务器获取日期和时间。
ASA 命令 | 说明 |
---|---|
ntp authenticate | 启用 NTP 服务器认证。 |
ntp trusted-key key_id | 指定要作为受信任密钥的认证密钥 ID,通过 NTP 服务器进行认证时需要用到它。 |
ntp authentication-key key_id md5 key | 设置用于 NTP 服务器认证的密钥。 |
ntp server ip_address [key key_id] | 标识 NTP 服务器。 |
CCNAS-ASA(config)# ntp authenticate
CCNAS-ASA(config)# ntp trusted-key 1
CCNAS-ASA(config)# ntp authentication-key 1 md5 cisco123
CCNAS-ASA(config)# ntp server 192.168.1.254
CCNAS-ASA(config)#
- 用来启用认证的 NTP。
- 要验证 NTP 配置和状态,请使用 show ntp status 和 show ntp associations 命令。
配置 DHCP 服务
可以将 ASA 配置为 DHCP 服务器,从而向主机提供 IP 地址和 DHCP 相关信息。要将 ASA 作为 DHCP 服务器启用并向主机提供 DHCP 服务。
ASA 命令 | 说明 |
---|---|
dhcpd address IP_address1 [-IP_address2 ] if_name | 创建 DHCP 地址池,其中从 IP_address1 开始,到 IP_address2 结束,由连字符分隔。该地址池必须与 ASA 接口位于同一子网中。 |
dhcpd dns dns1 [dns2 ] | (可选)指定 DNS 服务器的 IP 地址。 |
dhcpd lease lease_length | (可选)更改向客户端授予的租用时间,即租赁到期之前客户端可以使用向其分配的 IP 地址的时间(以秒为单位)。lease_length 默认为 3600 秒(1 小时),但可以是 0 到 1,048,575 秒之间的任意值。 |
dhcpd domain domain_name | (可选)指定分配给客户端的域名。 |
dhcpd enable if_name | 在 ASA 的接口(通常是内部接口)上启用 DHCP 服务器服务(后台守护程序)。 |
CCNAS-ASA(config)# dhcpd address 192.168.1.10-192.168.1.100
ERROR: % Incomplete command
CCNAS-ASA(config)# dhcpd address 192.168.1.10-192.168.1.100 inside
Warning, DHCP pool range is limited to 32 addresses, set address range as:192.168.1.10-192.168.1.41
CCNAS-ASA(config)# dhcpd address 192.168.1.10-192.168.1.41 inside
CCNAS-ASA(config)# dhcpd lease 1800
CCNAS-ASA(config)#
- 在 ASA 上启用 DHCP,从而为内部客户端提供 DHCP 服务。
注意:ASA 5505 基础许可证最多可为 32 个 DHCP 客户端提供 IP 配置信息。但是,基础许可证是 10 位用户许可证,意味着最多 10 个并发内部 IP 地址与外部接口或其他 VLAN 通信。对于 50 位用户的许可证,最多可允许 128 个客户端。对于不受限制的许可证 (UL),最大值为 256,与所有其他 ASA 型号相同。
注意:如果 ASA 外部接口配置为 DHCP 客户端,则可以使用 dhcpd auto_config outside 全局配置模式命令将通过 DHCP 获取的信息传递给 DHCP 内部客户端。
要验证 DHCP 设置,请使用以下命令:
-
show dhcpd state - 显示内部和外部接口的当前 DHCP 状态。
-
show dhcpd binding - 显示内部用户的当前 DHCP 绑定。
-
show dhcpd statistics - 显示当前 DHCP 统计信息。
要清除 DHCP 绑定或统计信息,请使用 clear dhcpd binding 或 clear dhcpd statistics 命令。
对象和对象组简介
CCNAS-ASA(config)# object ?
configure mode commands/options:
network Specifies a host, subnet or range IP addresses
service Specifies a protocol/port
CCNAS-ASA(config)#
CCNAS-ASA(config)# object-group ?
configure mode commands/options:
icmp-type Specifies a group of ICMP types, such as echo
network Specifies a group of host or subnet IP addresses
protocol Specifies a group of protocols, such as TCP, etc
service Specifies a group of TCP/UDP ports/services
user Specifies single user, local or import user group
CCNAS-ASA(config)#
在任何给定配置中,ASA 都会创建并使用对象来代替内联 IP 地址。可以使用特定IP地址、整个子网、一系列地址、协议或特定端口或端口范围来定义对象。然后可以在多个配置中重复使用该对象。
此操作的优势在于,修改对象时,系统会向使用此特定对象的所有规则自动应用更改。因此,对象可以轻松维护配置。
如果需要,对象可与一个或多个对象组连接或分离,确保对象不会重复,但可根据需要重复使用。这些对象可在 NAT、访问列表和对象组中使用。具体而言,网络对象是配置 NAT 的重要部分。
可以配置两种类型的对象:
-
网络对象(Network object) - 包含单个 IP 地址和子网掩码。网络对象可分为三种类型:主机、子网或地址范围。通过 object network 命令配置网络对象。
-
服务对象 (Service object) - 包含协议和可选源和/或目的端口。使用 object service 命令配置的服务对象。
注意:在 ASA 映像版本 8.3 及更高版本中配置 NAT 需要网络对象。
配置网络对象
要创建网络对象,请在全局模式下使用 object network object-name命 令。提示更改为网络对象配置模式。
一个网络对象名称只能包含一个 IP 地址和掩码对。因此,网络对象中只能有一条语句。如果输入第二个 IP 地址/掩码对,将替换现有配置。
ASA 命令 | 说明 |
---|---|
host ip-addr | 将 IP 地址分配给命名对象。 |
subnet net-address net-mask | 将网络子网分配给命名对象。 |
range ip-addr-1 ip-addr-n | 将一系列 IP 地址分配给命名对象 |
- 可以使用上表列出的三种方法之一定义网络对象。
在这任意三个命令之前加上 no 即可删除网络对象。要清除所有网络对象,请使用 clear config object network 命令。
注意:此命令将清除所有的网络对象。
CCNAS-ASA(config)# object network EXAMPLE-1
CCNAS-ASA(config-network-object)# host 192.168.1.3
CCNAS-ASA(config-network-object)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# show running-config object
object network EXAMPLE-1
host 192.168.1.3
CCNAS-ASA(config)#
CCNAS-ASA(config)# object network EXAMPLE-1
CCNAS-ASA(config-network-object)# host 192.168.1.4
CCNAS-ASA(config-network-object)# range 192.168.1.10 192.168.1.20
CCNAS-ASA(config-network-object)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# show running-config object
object network EXAMPLE-1
range 192.168.1.10 192.168.1.20
CCNAS-ASA(config)#
- 建立一个网络对象配置示例。如需验证,请使用 show running-config object 命令
配置服务对象
要创建服务对象,请使用全局配置模式命令 object service object-name 命 令。提示更改为服务对象配置模式。服务对象可以包含协议、ICMP、ICMPv6、TCP 或 UDP 端口(或端口范围)。
CCNAS-ASA(config)# object service EXAMPLE-2
CCNAS-ASA(config-service-object)#
CCNAS-ASA(config-service-object)# service ?
service-object mode commands/options:
<0-255> Enter protocol number (0 - 255)
ah
eigrp
esp
gre
icmp
icmp6
igmp
igrp
ip
ipinip
ipsec
nos
ospf
pcp
pim
pptp
snp
tcp
udp
configure mode commands/options:
call-home Enable or disable Smart Call-Home
internal Advanced settings (use only under Cisco supervision)
password-recovery Password recovery configuration
resetinbound Send reset to a denied inbound TCP packet
resetoutbound Send reset to a denied outbound TCP packet
resetoutside Send reset to a denied TCP packet to outside interface
CCNAS-ASA(config-service-object)#
- 上表显示可用的服务选项
ASA 命令 | 说明 |
---|---|
service protocol [ source [ operator port ]] [ destination [ operator port ]] | 指定 IP 协议名称或编号。 |
service tcp [ source [ operator port ]] [ destination [ operator port ]] | 指定用于 TCP 协议的服务对象。 |
service udp [ source [ operator port ]] [ destination [ operator port ]] | 指定用于 UDP 协议的服务对象。 |
service icmp icmp-type | 指定用于 ICMP 协议的服务对象。 |
service icmp6 icmp6-type | 指定用于 ICMPv6 协议的服务对象。 |
- 可用的常见服务选项。可选关键字用于确定源端口或目的端口(或两者)。 eq(等于)、 neq(不等于)、 lt(小于)、 gt(大于)或 range 等运算符支持为给定协议配置端口。如果未指定运算符,则默认运算符为 eq。
- 使用命令的 no 形式来删除服务对象。要清除所有服务对象,请使用 clear config object service 命令。
CCNAS-ASA(config)# object service SERV-1
CCNAS-ASA(config-service-object)# service tcp destination eq ftp
CCNAS-ASA(config-service-object)# service tcp destination eq www
CCNAS-ASA(config-service-object)# exit
CCNAS-ASA(config)# show running-config object service
object service SERV-1
service tcp destination eq www
CCNAS-ASA(config)#
-
一个服务对象配置示例。一个服务对象名称只能与一个协议和端口(或多个端口)相关联。如果为一个已存在的服务对象配置不同的协议和端口,新配置会将现有协议和端口替换为新协议和端口。
-
如需验证,请使用 show running-config object service 命令。
对象组
可以将对象分组,创建对象组。通过将对象分组,即可在访问控制条目 (ACE) 中使用对象组,而不必为每个对象单独输入 ACE。
ASA 支持各种类型的对象组:
- 网络接入层: 基于网络的对象组指定 IP 主机、子网或网络地址列表。
- 用户:可以定义本地创建和导入的 Active Directory 用户组,从而在支持身份防火墙的功能中使用。
- 服务:基于服务的对象组用于将 TCP、UDP 或 TCP 和 UDP 端口分组到对象中。ASA 能够创建包含 TCP 服务、UDP 服务、ICMP 类型服务和任何协议(例如 ESP、GRE 和 TCP)混合内容的服务对象组。
- 安全:通过在扩展 ACL 中包含组,可以将安全组对象组用于支持思科 TrustSec 的功能,然后该组又可用于访问规则等。
- ICMP 类型:ICMP 协议使用唯一类型发送控制消息 (RFC 792)。ICMP-type 对象组可以对满足组织机构安全需求所需的必要类型进行分组,例如创建名为“ECHO”的对象组以将回应和回应应答进行分组。
注意:也可创建协议对象组。但是,并不建议这样操作,应使用服务对象组。
以下准则和限制适用于对象组:
-
对象和对象组共享相同的命名空间。
-
对象组必须具有唯一名称。
-
如果对象组在命令中已被使用,则无法删除或清空这些对象组。
-
ASA 不支持 IPv6 嵌套对象组。
配置通用对象组
要配置网络对象组,请使用全局配置模式命令 object-group network grp-name grp-name全局配置模式命令。输入命令后,通过 network-object 和 group-object 命令向网络组添加网络对象。
注意:网络对象组不能用于实施 NAT。但实施 NAT 需要网络对象。
CCNAS-ASA(config)# object-group network ADMIN-HOST
CCNAS-ASA(config-network-object-group)# description Administrative hosts
CCNAS-ASA(config-network-object-group)# network-object host 192.168.1.3
CCNAS-ASA(config-network-object-group)# network-object host 192.168.1.4
CCNAS-ASA(config-network-object-group)# exit
CCNAS-ASA(config)# object-group network ALL-HOSTS
CCNAS-ASA(config-network-object-group)# description All inside hosts
CCNAS-ASA(config-network-object-group)# network-object 192.168.1.32 255.255.255.240
CCNAS-ASA(config-network-object-group)# group-object ADMIN-HOST
CCNAS-ASA(config-network-object-group)# exit
CCNAS-ASA(config)# show run object-group
object-group network ADMIN-HOST
description Administrative host IP addresses
network-object host 192.168.1.3
network-object host 192.168.1.4
object-group network ALL-HOSTS
network-object 192.168.1.32 255.255.255.240
group-object ADMIN-HOST
CCNAS-ASA(config)#
- 一个网络对象组配置示例。
CCNAS-ASA(config)# object-group icmp-type ICMP-ALLOWED
CCNAS-ASA(config-icmp-object-group)# icmp-object echo
CCNAS-ASA(config-icmp-object-group)# icmp-object time-exceeded
CCNAS-ASA(config-icmp-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# show running-config object-group id ICMP-ALLOWED
object-group icmp-type ICMP-ALLOWED
icmp-object echo
icmp-object time-exceeded
CCNAS-ASA(config)#
- 一个示例 ICMP 对象组配置。
- 要配置 ICMP 对象组,请使用全局配置模式命令 object-group icmp-type grp-name 。命令。输入命令后,通过 icmp-object 和 group-object 命令向 ICMP 对象组添加 ICMP 对象。
CCNAS-ASA(config)# object-group service SERVICES-1
CCNAS-ASA(config-service-object-group)# service-object tcp destination eq www
CCNAS-ASA(config-service-object-group)# service-object tcp destination eq https
CCNAS-ASA(config-service-object-group)# service-object tcp destination eq pop3
CCNAS-ASA(config-service-object-group)# service-object udp destination eq ntp
CCNAS-ASA(config-service-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# object-group service SERVICES-2 tcp
CCNAS-ASA(config-service-object-group)# port-object eq www
CCNAS-ASA(config-service-object-group)# port-object eq smtp
CCNAS-ASA(config-service-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# object-group service SERVICES-3 tcp
CCNAS-ASA(config-service-object-group)# group-object SERVICES-2
CCNAS-ASA(config-service-object-group)# port-object eq ftp
CCNAS-ASA(config-service-object-group)# port-object range 2000 2005
CCNAS-ASA(config-service-object-group)# exit
CCNAS-ASA(config)#
- 一个服务对象组配置示例。
- 要配置服务对象组,请使用全局配置模式命令 object-group service grp-name命全局配置模式命令。服务对象组可以定义 TCP 服务、UDP 服务、ICMP 类型的服务以及任何协议的混合内容。输入 object-group service 命令后,使用 service-object 和 group-object 命令将服务对象添加到服务组。
- 请在全局配置模式命令 object-group service grp-name [tcp|udp|tcp-udp]”中指定选项命 [tcp | udp | tcp-udp] 全局配置模式命令中指定该选项。可在命令中选择指定 tcp、udp 或 tcp-udp,服务可定义 TCP/UDP 端口规范的标准服务对象组,例如“eq smtp”和“range 2000 2010”。输入命令后,通过 port-object 和 group-object 命令向服务组添加端口对象。
要从配置中删除所有的对象组,请使用 clear configure object-group 全局配置模式命令。
要验证组对象配置,请使用 show running-config object-group 命令。
配置 ACL 和 NAT 时会显示对象组的实用示例。ASA 不支持 IPv6 嵌套对象组。
ASA ACL
思科 ASA 5505 提供 ACL 的基本流量过滤功能。ACL 通过阻止已定义流量进出来控制网络访问。
ASA ACL 和 IOS ACL 有诸多相似之处。例如,两者都由 ACE 组成,按从上到下的顺序处理,并且在底部具有隐含 deny any 内容。此外,每个接口、每个协议、每个方向只有一个 ACL 的规则仍然适用。
ASA ACL 与 IOS ACL 的不同之处在于,前者使用网络掩码(例如,255.255.255.0)而不是通配符掩码(例如,0.0.0.255)此外,大多数 ASA ACL 使用命名而非编号。
ASA ACL 和 IOS ACL 的相似之处:
- ACL 由一个或多个 ACE 组成。ACE 应用于协议、源与目的 IP 地址、网络,或源与目的端口。
- 系统自上而下按顺序处理 ACL。
- ACL 中一个条件找到匹配项后,系统就会退出该 ACL。
- 底部具有隐式拒绝。
- 每个 ACE 或 ACL 均可添加备注。
- 每个接口的每个协议在每个方向上只能应用一个访问列表。
- 可以根据时间范围启用 / 禁用 ACL。
ASA ACL 和 IOS ACL 的差异:
- ASA 使用网络掩码(例如,255.255.255.0),不使用通配符掩码(例如 0.0.0.255)。
- 始终应对 ACL 进行命名,而不要进行编号。
- 默认情况下,安全级别无需配置 ACL 即可应用访问控制。
ASA ACL 过滤的类型
ASA 是独立的防火墙设备,也是思科 SecureX 技术的主要组件。它将防火墙、VPN 集中器和入侵防御功能整合到一个设备中,可保护内部网络免受未经授权的外部访问。ASA 还可以支持高级功能,例如虚拟化、具有故障转移的高可用性、身份防火墙和高级威胁控制。ASA 可以配置为路由模式或透明模式。
利用安全设备上的 ACL,不仅可以过滤通过设备的数据包,还可过滤发往设备的数据包。
-
Through-traffic 过滤 - 通过安全设备从一个接口流向另一个接口的流量。配置分两步完成。第一步是设置 ACL。第二步是将该 ACL 应用于接口。
-
To-the-box-traffic 过滤 - 也称为管理访问规则,to-the-box-traffic过滤适用于以ASA为目的地的流量。在 8.0 版中引入,用于过滤发往 ASA 控制平面的流量。它只需一步即可完成,但是需要一组额外规则来实施访问控制。
接口安全级别将 ASA 设备与其他路由器区分开来。默认情况下,安全级别无需配置 ACL 即可应用访问控制。例如,允许流量从较高安全级别的接口(例如,安全级别 100)访问较低安全级别的接口(例如级别 0)。系统将阻止来自较低安全级别接口的流量访问更安全的接口。
例如,来自安全级别为 100 的内部网络的主机可以访问安全级别为 0 的外部接口,但是,来自安全级别为 0 的外部接口的主机无法访问较高安全级别的内部接口。如果需要,必须明确配置 ACL 以允许从较低安全级别到较高安全级别的流量。
要允许与同一安全级别接口之间的连接,需要使用 same-security-traffic permit inter-interface 全局配置模式命令。要使流量进出相同接口,例如,加密流量进入接口,然后以未加密方式路由出同一接口,请使用 same-security-traffic permit intra-interface 全局配置模式命令。
ASA ACL 类型
ASA 支持五种类型的访问列表:
-
扩展访问列表 - 最常见的 ACL 类型。包含一个或多个 ACE 以指定源和目的地址和协议、端口(用于 TCP 或 UDP)或 ICMP 类型(用于 ICMP)。
-
标准 ACL - 与IOS的标准ACL不同,IOS的标准ACL识别源主机/网络地址,ASA的标准ACL识别目的IP地址它们通常仅用于 OSPF 路由,也可用于 OSPF 重新分发的路由映射。不能将标准访问列表应用于接口以控制流量。
-
EtherType ACL - 仅当安全设备以透明模式运行时,才能配置 EtherType ACL。
-
Webtype ACL - 用于支持无客户端 SSL VPN 过滤的配置。
-
IPv6 ACL - 用于确定要阻止的 IPv6 流量,以及要在路由器接口转发的流量。
ACL 用途 | 说明 |
---|---|
控制 IP 流量的网络访问 | 除非扩展访问列表明确允许,否则 ASA 不允许任何流量从较低安全性接口流向较高安全性接口。 |
识别 AAA 规则的流量 | AAA 规则使用访问列表识别流量。 |
为 NAT 标识地址 | 策略 NAT 允许您通过在扩展访问列表中指定源和目的地址来标识本地流量以进行地址转换。 |
建立 VPN 访问 | 扩展访问列表可用于 VPN 命令。 |
为模块化策略框架 (MPF) 标识流量。 | 访问列表可用于识别类映射中的流量,该用途用于支持 MPF 的功能。支持 MPF 的功能包括 TCP 和常规连接设置及检查。 |
- 扩展ACL的例子
ACL 用途 | 说明 |
---|---|
识别 OSPF 目的网络 | 标准访问列表仅包含目的地址。它可以用于控制 OSPF 路由的重新分发。 |
- 标准 ACL 示例
ACL 用途 | 说明 |
---|---|
为 IPv6 网络控制网络访问 | 可用于添加并应用访问列表,以便控制 IPv6 网络中的流量。 |
- IPv6 ACL 示例
使用 help access-list 特权 EXEC 命令显示 ASA 平台上支持的所有 ACL 的语法。
注意:本章重点介绍扩展 ACL。
配置 ACL
鉴于所支持的参数数量,ASA上配置ACL的语法选项是非常多的。
CCNAS-ASA(config)# help access-list
USAGE:
Extended access list:
Use this to configure policy for IP traffic through the firewall
[no] access-list [line ] [extended] {deny | permit}
{<protocol> | object-group {<service_obj_grp_id> |
<protocol_obj_grp_id>} | object <service_object_name>}
[user-group [<domain_nickname>\\]<user_group_name> |
user [<domain_nickname>\]<user_name> |
object-group-user < object_group_user_name>]
[security-group {name <sgname> | tag <sgt>} |
object-group-security <security_obj_grp_id>]
{host <sip> | <sip> <smask> | <sip-prefix> |
interface <ifc> | any | any4 | any6
object-group <network_obj_grp_id> |
object <network_obj_name>}
[<operator> <port> [<port>] |
object-group <service_obj_grp_id>]
[security-group {name <sgname> | tag <sgt>} |
object-group-security <security_obj_grp_id>]
{host <dip> | <dip> <dmask> | <dip-prefix> |
interface <ifc> | any | any4 |any6
<--- More --->
- help access-list 命令输出所示。这些参数不仅可让管理员完全控制检查内容,还可提供完整的日志记录功能,以便今后分析流量。
- 有多个选项可与 ACL 一并使用。但是,图所示的语法版本更实用、更精简,可满足大多数需求。
元素 | 说明 |
---|---|
ACL id | ACL 的名称。可以是任何字母数字名称,最多不超过 241 个字符。 |
行动 | 可以是 permit 或 deny。 |
协议编号 - 源 | 可以是所有流量的 ip,或名称 / IP 协议编号 (0-250),包括 icmp (1)、tcp (6)、udp (17) 或协议对象组。 |
源 | 确定源,可以是 any、host、网络或网络对象组。对于过滤传入设备的流量,关键字 interface 用于指定 ASA 的源接口。 |
源端口运营商 | (可选)运算符与源端口配合使用。有效的操作数包括 lt(小于)、gt(大于)、eq(等于)、neq(不等于)和 range(闭区间)。 |
源端口 | (可选)可以是实际的 TCP 或 UDP 端口号,选定的端口名称或服务对象组。 |
目的地 | 确定目的,与源类似,可以是 any、host、网络或网络对象组。要过滤传入设备的流量,可以使用关键字 interface 指定 ASA 的目的接口。 |
目的端口运营商 | (可选)运算符与目的端口配合使用。有效运算符与源端口运算符相同。 |
目的端口 | (可选)可以是实际的 TCP 或 UDP 端口号,选定的端口名称或服务对象组。 |
日志 | 可以为系统日志 (syslog) 设置元素,包括严重性级别和日志间隔。 |
时间范围 | (可选)为此 ACE 指定时间范围。 |
- 表格介绍了 ASA ACL 元素
应用 ACL
配置 ACL 后,接下来需要在接口的入站或出站方向上应用 ACL。
access-group id { in | out } interface if_name [ per-user-override | control-plane ]
- 通过 access-group 命令语法向接口应用 ACL 的命令语法和参数说明。
要验证 ACL,请使用 show access-list 和 show running-config access-list 命令。
要清除已配置的 ACL,请使用 clear configure access-list id 命令。
下面是一些配置ACL的例子:
access-list ACL-IN extended permit ip any any
access group ACL-IN in interface inside
- ACL 允许内部网络上的所有主机通过 ASA。
- 默认情况下,所有其他流量将被拒绝,除非显式允许。
access-list ACL-IN extended deny tcp 192.168.1.0 255.255.255.0 209.165.201.0
255.255.255.224
access-list ACL-IN extended permmit ip any any
access-group ACL-IN in interface inside
- ACL 可阻止 192.168.1.0/24 上的主机访问 209.165.201.0/27 网络。
- 允许内部主机访问所有其他地址。
- 所有其他流量将被隐式拒绝。
access-list ACL-IN extended permit ip 192.168.1.0 255.255.255.0 209.165.201.0
255.255.255.224
access-group ACL-IN in interface inside
- ACL 允许 192.168.1.0/24 上的主机访问 209.165.201.0/27 网络。
- 默认情况下,所有其他流量将被拒绝,除非显式允许。
access-list ACL-IN extended deny tcp any host 209.165.201.29 eq www
access-list ACL-IN extended permit ip any any
access-group ACL-IN in interface inside
- ACL 会阻止所有内部主机访问 209.165.201.29 上的 Web 服务。
- 允许内部主机访问 209.165.201.29 上的所有其他服务。
- 允许内部主机访问所有其他地址。
- 所有其他流量将被隐式拒绝。
ACL 和对象组
- 两个可信的远程主机(PC1和PC2)应被允许访问WEB和电子邮件两个服务器。而其他所有试图通过ASA的流量应被丢弃并记录。
CCNAS-ASA(config)# access-list ACL-IN remark Permit PC-1 -> Server A for HTTP / SMTP
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.131 eq http
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.131 eq smtp
CCNAS-ASA(config)# access-list ACL-IN remark Permit PC-1 -> Server B for HTTP / SMTP
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.132 eq http
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.132 eq smtp
CCNAS-ASA(config)# access-list ACL-IN remark Permit PC-2 -> Server A for HTTP / SMTP
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.131 eq http
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.131 eq smtp
CCNAS-ASA(config)# access-list ACL-IN remark Permit PC-2 -> Server B for HTTP / SMTP
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.132 eq http
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.132 eq smtp
CCNAS-ASA(config)# access-list ACL-IN extended deny ip any any log
CCNAS-ASA(config)#
CCNAS-ASA(config)# access-group ACL-IN in interface outside
CCNAS-ASA(config)#
- ACL 将需要为每台 PC 配备两个 ACE 以完成任务。隐式 deny any 命令会丢弃并记录不匹配电子邮件或 Web 服务的数据包。如本例所示,ACL 应始终通过 remark 命令彻底记录。
CCNAS-ASA(config)# show running-config access-list
access-list ACL-IN remark Permit PC-1 -> Server A for HTTP / SMTP
access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.131 eq www
access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.131 eq smtp
access-list ACL-IN remark Permit PC-1 -> Server B for HTTP / SMTP
access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.132 eq www
access-list ACL-IN extended permit tcp host 209.165.201.1 host 209.165.202.132 eq smtp
access-list ACL-IN remark Permit PC-2 -> Server A for HTTP / SMTP
access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.131 eq www
access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.131 eq smtp
access-list ACL-IN remark Permit PC-2 -> Server B for HTTP / SMTP
access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.132 eq www
access-list ACL-IN extended permit tcp host 209.165.201.2 host 209.165.202.132 eq smtp
access-list ACL-IN extended deny ip any any log
CCNAS-ASA(config)#
CCNAS-ASA(config)# show access-list ACL-IN brief
access-list ACL-IN; 9 elements; name hash: 0x44d1c580
CCNAS-ASA(config)#
- 要验证 ACL 语法,请使用 show running-config access-list 和 show access-list 命令
ACL 使用对象组示例
对象分组是一种将类似条目组合在一起以减少 ACE 数量的方法。将类似对象分组,可以在 ACL 中使用对象组,而不必为每个对象单独输入 ACE。不进行对象分组,安全设备配置中可能包含数千行 ACE,从而变得难以管理。
access-list id extended { deny | permit } protocol object-group network-obj-grp-id object-group network-obj-grp-id object-group service-obj-grp-id
- 具有对象组的精简扩展 ACL 语法
定义 ACE 后,安全设备需遵循倍增因子规则。例如,如果两个外部主机需要访问两个正在运行 HTTP 和 SMTP 服务的内部服务器,ASA 将具有八个基于主机的 ACE。计算方法如下:
ACE 数量 =(2 个外部主机)x(2 个内部主机)x(2 项服务)= 8
对象分组可分别将网络对象和外部主机集群到不同组中。安全设备还可组合这两种 TCP 服务,形成服务对象组。
在上一页的扩展 ACL 示例中,此拓扑共需要 9 个 ACL ACE、8 个 permit ACE 和 1 个隐式拒绝 ACE。创建以下对象有助于将实际 ACL-IN ACL 简化为一个 ACE。例如,将创建以下对象组:
-
名为 NET-HOSTS 的网络对象组 - 确定两个外部主机。
-
名为 SERVERS 的网络对象组 - 确定提供电子邮件和 Web 服务的服务器。
-
服务对象组 HTTP-SMTP - 确定 SMTP 和 HTTP 协议。
CCNAS-ASA(config)# object-group network NET-HOSTS
CCNAS-ASA(config-network-object-group)# description OG matches PC-A and PC-B
CCNAS-ASA(config-network-object-group)# network-object host 209.165.201.1
CCNAS-ASA(config-network-object-group)# network-object host 209.165.201.2
CCNAS-ASA(config-network-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# object-group network SERVERS
CCNAS-ASA(config-network-object-group)# description OG matches Web / Email Servers
CCNAS-ASA(config-network-object-group)# network-object host 209.165.202.131
CCNAS-ASA(config-network-object-group)# network-object host 209.165.202.132
CCNAS-ASA(config-network-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# object-group service HTTP-SMTP tcp
CCNAS-ASA(config-service-object-group)# description OG matches SMTP / WEB traffic
CCNAS-ASA(config-service-object-group)# port-object eq smtp
CCNAS-ASA(config-service-object-group)# port-object eq www
CCNAS-ASA(config-service-object-group)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# access-list ACL-IN remark Only permit PC-A / PC-B -> Internal Servers
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp object-group NET-HOSTS
object-group SERVERS object-group HTTP-SMTP
- 与ACL 和对象组中相同结果的配置
CCNAS-ASA(config)# show running-config access-list
access-list ACL-IN remark Only permit PC-A / PC-B -> Internal Servers
access-list ACL-IN extended permit tcp object-group NET-HOSTS object-group SERVERS object-group HTTP-SMTP
CCNAS-ASA(config)#
- 验证 ACL 和对象组配置示例
完成对象组的配置后,对象组可以任何ACL和多个ACL中使用。可使用单个 ACE 允许可信主机对一组内部服务器发起服务请求。
虽然对象组的配置貌似繁琐,但优势在于这些对象可在其他 ASA 命令中重复使用,还可轻松修改。例如,如果需要添加新的内部邮件服务器,只需编辑内部服务器对象组即可。
注意:对象组还可嵌套在其他对象组中。
!根据以下信息创建对象组:
!创建名为 NET-HOSTS 的网络对象组。
!提供一个说明“OG matches PC-A and PC-B”(OG 与 PC-A 和 PC-B 匹配)。
!定义网络对象主机 209.165.201.1 和 209.165.201.2。
CCNAS-ASA(config)# object-group network NET-HOSTS
CCNAS-ASA(config-network-object-group)# description OG matches PC-A and PC-B
CCNAS-ASA(config-network-object-group)# network-object host 209.165.201.1
CCNAS-ASA(config-network-object-group)# network-object host 209.165.201.2
!创建名为 SERVERS 的网络对象组。
!提供一个说明“OG matches Web/Email Servers”(OG 与 Web/邮件服务器匹配)。
!定义网络对象主机 209.165.202.131 和 209.165.202.132。
CCNAS-ASA(config-network-object-group)# object-group network SERVERS
CCNAS-ASA(config-network-object-group)# description OG matches Web/Email Servers
CCNAS-ASA(config-network-object-group)# network-object host 209.165.202.131
CCNAS-ASA(config-network-object-group)# network-object host 209.165.202.132
!为 TCP 流量创建名为 HTTP-SMTP 的服务对象组。
!提供说明“OG matches SMTP/WEB traffic”(OG 与 SMTP/WEB 流量匹配)。
!定义端口对象以匹配 SMTP 和 WWW。
Exit service-object-group configuration mode.
CCNAS-ASA(config-network-object-group)# object-group service HTTP-SMTP tcp
CCNAS-ASA(config-service-object-group)# description OG matches SMTP/WEB traffic
CCNAS-ASA(config-service-object-group)# port-object eq smtp
CCNAS-ASA(config-service-object-group)# port-object eq www
CCNAS-ASA(config-service-object-group)# exit
!使用以下参数创建并验证名为 ACL-IN 的 ACL:
!为 ACL-IN 添加备注“Only permit PC-A/PC-B to Internal Servers”(仅允许 PC-A/PC-B 访问内部服务!器)。
!允许从 NET-HOSTS 组流向 SERVERS 组的、与 HTTP-SMTP 组匹配的 TCP 流量。
!显示运行配置中的 ACL 配置。
!显示 ACL 统计信息。
CCNAS-ASA(config)# access-list ACL-IN remark Only permit PC-A/PC-B to Internal Servers
CCNAS-ASA(config)# access-list ACL-IN extended permit tcp object-group NET-HOSTS object-group SERVERS object-group HTTP-SMTP
CCNAS-ASA(config)# show running-config access-list
access-list ACL-IN remark Only permit PC-A/PC-B to Internal Servers
access-list ACL-IN extended permit tcp object-group NET-HOSTS object-group SERVERS object-group HTTP-SMTP
CCNAS-ASA(config)# show access-list
access-list cached ACL log flows: total 0, denied 0 (deny-flow-max 4096)
alert-interval 300
access-list ACL-IN; 8 elements; name hash: 0x44d1c580
access-list ACL-IN line 1 remark Only permit PC-A/PC-B to Internal Servers
access-list ACL-IN line 2 extended permit tcp object-group NET-HOSTS object-group SERVERS object-group HTTP-SMTP (hitcnt=0) 0x7946c018
access-list ACL-IN line 2 extended permit tcp host 209.165.201.1 host 209.165.202.131 eq smtp (hitcnt=0) 0x3f0a0233
access-list ACL-IN line 2 extended permit tcp host 209.165.201.1 host 209.165.202.131 eq www (hitcnt=0) 0xab920b7c
<省略部分输出>
ASA NAT 概述
如同 IOS 路由器,ASA 支持网络地址转换 (NAT)。NAT 专门用于将私有 IP 地址转换为公共 IP 地址。
-
内部 NAT:根据典型的 NAT 部署方法,较高安全性接口的主机将流量发往较低安全性接口,而 ASA 将内部主机地址转换为全局地址。然后,ASA 将为返回流量恢复原始内部 IP 地址。
-
外部 NAT:如果从较低安全性接口发往较高安全性接口主机的流量必须转换,则可以使用此方法。此方法可让位于内部网络以外的企业主机显示为来自已知内部 IP 地址。
- 双向 NAT:表示内部 NAT 和外部 NAT 一起使用。
以上三种类型的 NAT 称为网络对象 NAT,因为此配置需要配置网络对象。
具体而言,思科 ASA 支持以下常见 NAT 类型:
-
动态 NAT - 这是多对多转换。通常,一个内部私有地址池需要另一个公有地址池。
-
动态 PAT - 这是多对一转换。也称为“NAT 过载”。通常,内部私有地址池使用会使外部接口或外部地址过载。
-
静态 NAT - 这是一对一转换。通常是外部地址映射到内部服务器。
-
策略 NAT - 基于策略的 NAT 基于一组规则。这些规则可以指定仅转换用于特定目的地址和/或特定端口的某些源地址。
注意:另一个 ASA NAT 功能称为 Twice-NAT。Twice-NAT 在一个规则中确定源和目的地址(nat 命令)。配置远程访问 IPsec 和 SSL VPN 时将使用 Twice-NAT。Twice-NAT 不属于本章范围,不再进一步探讨。
配置动态 NAT
要配置网络对象动态 NAT,需要两个网络对象:
-
其中一个网络对象可确定内部地址转换后的公有 IP 地址池。可通过 range 或 subnet 网络对象命令确定。
-
另一个网络对象确定要转换的内部地址,然后绑定两个对象。可通过 range 或 subnet 网络对象命令确定。然后通过 nat (real-ifc、 mapped-ifc) dynamic mapped-obj网络对象命令绑定两个网络对象。
-
图所示为将配置动态NAT、动态PAT和静态NAT的参考拓扑
-
在此动态 NAT 示例中,位于 192.168.1.0/27 网络上的内部主机将中动态分配到公有IP地址,从 209.165.200.240 到 209.165.200.248。
CCNAS-ASA(config)# object network PUBLIC
CCNAS-ASA(config-network-object)# range 209.165.200.240 209.165.200.248
CCNAS-ASA(config-network-object)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# object network DYNAMIC-NAT
CCNAS-ASA(config-network-object)# subnet 192.168.1.0 255.255.255.224
CCNAS-ASA(config-network-object)# nat (inside,outside) dynamic PUBLIC
CCNAS-ASA(config-network-object)# end
CCNAS-ASA#
- 配置动态 NAT 配置示例。PUBLIC 网络对象确定了转换后的公有地址,而 DYNAMIC-NAT 可确定要转换的内部地址
CCNAS-ASA(config)# policy-map global_policy
CCNAS-ASA(config-pmap)# class inspection_default
CCNAS-ASA(config-cmap)# access-list ICMPACL extended permit icmp any any
CCNAS-ASA(config)# access-group ICMPACL in interface outside
CCNAS-ASA(config)#
- 启用返回流量示例:允许从外部主机返回 ICMP 流量的配置
CCNAS-ASA(config)# show xlate
1 in use, 1 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
s - static, T - twice, N - net-to-net
NAT from inside:192.168.1.3 to outside:209.165.200.242 flags i idle 0:00:02 timeout 3:00:00
CCNAS-ASA(config)#
CCNAS-ASA(config)# show nat
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
CCNAS-ASA(config)#
CCNAS-ASA(config)# show nat detail
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.1.0/27, Translated: 209.165.200.240-209.165.200.248
CCNAS-ASA(config)#
- 内部主机 ping 通外部主机后,通过 show xlate 命令验证网络地址转换。可以通过 show nat 和 show nat detail 命令收集更多信息。
完整的示例:
!使用以下参数创建 NAT 对象:
!创建名称为 PUBLIC 的网络对象。
!设置 209.165.200.240 至 209.165.200.248 的 NAT 公共池范围。
!创建名称为 DYNAMIC-NAT 的网络对象。
!将子网地址设置为 192.168.1.0/27。
!将内部专用地址映射至 PUBLIC 池。
!退出到全局配置模式。
CCNAS-ASA(config)# object network PUBLIC
CCNAS-ASA(config-network-object)# range 209.165.200.240 209.165.200.248
CCNAS-ASA(config-network-object)# object network DYNAMIC-NAT
CCNAS-ASA(config-network-object)# subnet 192.168.1.0 255.255.255.224
CCNAS-ASA(config-network-object)# nat (inside,outside) dynamic PUBLIC
CCNAS-ASA(config-network-object)# exit
!使用以下参数启用返回流量:
!修改全局策略中的默认检查规则。
!创建名为 ICMPACL 的 ACL,允许所有 ICMP 流量。
!将 ACL 应用于外部接口入站方向。
CCNAS-ASA(config)# policy-map global_policy
CCNAS-ASA(config-pmap)# class inspection_default
CCNAS-ASA(config-cmap-c)# access-list ICMPACL extended permit icmp any any
CCNAS-ASA(config)# access-group ICMPACL in interface outside
!通过显示以下信息验证动态 NAT:
!显示 NAT 转换。
!显示 NAT 策略摘要。
!显示详细的 NAT 信息。
CCNAS-ASA(config)# show xlate
1 in use, 1 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
s - static, T - twice, N - net-to-net
NAT from inside:192.168.1.3 to outside:209.165.200.242 flags i idle 0:00:02 timeout 3:00:00
CCNAS-ASA(config)# show nat
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
CCNAS-ASA(config)# show nat detail
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.1.0/27, Translated: 209.165.200.240-209.165.200.248
配置动态 PAT
此配置的变体被称为动态 PAT。当实际外部 IP 地址而不是 ASA 接口 IP 地址配置且过载时会出现此变体。
过载外部接口时,只需一个网络对象。要让内部主机过载 (overload) 外部地址,请使用 nat (real-ifc、mapped-ifc) dynamic interface 命令。
CCNAS-ASA(config)# object network INSIDE-NET
CCNAS-ASA(config-network-object)# subnet 192.168.1.0 255.255.255.224
CCNAS-ASA(config-network-object)# nat (inside,outside) dynamic interface
CCNAS-ASA(config-network-object)# end
CCNAS-ASA#
CCNAS-ASA# show xlate
1 in use, 1 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
s - static, T - twice, N - net-to-net
ICMP PAT from inside:192.168.1.3/1 to outside:209.165.200.226/1 flags ri idle
0:00:02 timeout 0:00:30
CCNAS-ASA#
- 显示同一参考拓扑的动态 PAT 配置。内部主机 ping 通外部主机后,请通过 show xlate 命令验证网络地址转换。
配置静态 NAT
当内部地址映射到外部地址时,将配置静态 NAT。例如,如果必须从外部访问服务器,则可以使用静态 NAT。
要配置静态 NAT,请使用 nat (real-ifc、mapped-ifc) static mapped-inline-host-ip 网络对象命令。
CCNAS-ASA(config)# interface Vlan3
CCNAS-ASA(config-if)# no forward interface Vlan1
CCNAS-ASA(config-if)# nameif dmz
INFO: Security level for "dmz" set to 0 by default.
CCNAS-ASA(config-if)# security-level 70
CCNAS-ASA(config-if)# ip address 192.168.2.1 255.255.255.0
CCNAS-ASA(config-if)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# interface Ethernet0/2
CCNAS-ASA(config-if)# switchport access vlan 3
CCNAS-ASA(config-if)# no shut
CCNAS-ASA(config-if)# exit
CCNAS-ASA(config)#
- 配置 DMZ 接口示例
CCNAS-ASA(config)# object network DMZ-SERVER
CCNAS-ASA(config-network-object)# host 192.168.2.3
CCNAS-ASA(config-network-object)# nat (dmz,outside) static 209.165.200.227
CCNAS-ASA(config-network-object)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# access-list OUTSIDE-DMZ extended permit ip any host 192.168.2.3
CCNAS-ASA(config)# access-group OUTSIDE-DMZ in interface outside
CCNAS-ASA(config)#
CCNAS-ASA(config)# policy-map global_policy
CCNAS-ASA(config-pmap)# class inspection_default
CCNAS-ASA(config-pmap-c)# access-list ICMPACL extended permit icmp any any
CCNAS-ASA(config)# access-group ICMPACL in interface dmz
CCNAS-ASA(config)#
- 启用静态 NAT 的配置
CCNAS-ASA(config)# show xlate
2 in use, 2 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
s - static, T - twice, N - net-to-net
NAT from dmz:192.168.2.3 to outside:209.165.200.227
flags s idle 0:00:21 timeout 0:00:00
NAT from inside:192.168.1.3 to outside:209.165.200.242 flags i idle 0:09:06 timeout
3:00:00
CCNAS-ASA(config)#
CCNAS-ASA(config)# show nat detail
Auto NAT Policies (Section 2)
1 (dmz) to (outside) source static DMZ-SERVER 209.165.200.227
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.2.3/32, Translated: 209.165.200.227/32
2 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.1.0/27, Translated: 209.165.200.240-209.165.200.248
CCNAS-ASA(config)#
- 验证静态 NAT 配置示例
- 使用 show xlate 和 show nat detail 命令验证转换
注意:要成功转换,必须具备 ACL。
一个完整的示例:
!为接口 VLAN 3 创建 DMZ 区域:
!关闭从 VLAN 3 转发至 VLAN 1 的流量。
!将 VLAN 3 接口命名为“dmz”
!将安全级别设置为 70。
!分配接口 IP 地址 192.168.2.1/24
!为 VLAN 3 配置 Ethernet0/2。
!激活接口。
!返回全局配置模式。
CCNAS-ASA(config)# interface Vlan3
CCNAS-ASA(config-if)# no forward interface Vlan1
CCNAS-ASA(config-if)# nameif dmz
INFO: Security level for "dmz" set to 0 by default.
CCNAS-ASA(config-if)# security-level 70
CCNAS-ASA(config-if)# ip address 192.168.2.1 255.255.255.0
CCNAS-ASA(config-if)# interface Ethernet0/2
CCNAS-ASA(config-if)# switchport access vlan 3
CCNAS-ASA(config-if)# no shut
CCNAS-ASA(config-if)# exit
!为 DMZ 创建静态 NAT 映射:
!创建名为 DMZ-SERVER 的网络对象。
!将主机 IP 设置为 192.168.2.3。
!将 DMZ 接口映射至外部地址 209.165.200.227。
!返回全局配置模式。
!创建名为 OUTSIDE-DMZ 的 ACL,允许所有流量访问 192.168.2.3。
!将 ACL 应用于外部接口入站方向。
!修改全局策略中的默认检查规则。
!创建名为 ICMPACL 的 ACL,允许所有 ICMP 流量。
!将 ACL 应用于 dmz 接口入站方向。
CCNAS-ASA(config)# object network DMZ-SERVER
CCNAS-ASA(config-network-object)# host 192.168.2.3
CCNAS-ASA(config-network-object)# nat (dmz,outside) static 209.165.200.227
CCNAS-ASA(config-network-object)# exit
CCNAS-ASA(config)# access-list OUTSIDE-DMZ extended permit ip any host 192.168.2.3
CCNAS-ASA(config)# access-group OUTSIDE-DMZ in interface outside
CCNAS-ASA(config)# policy-map global_policy
CCNAS-ASA(config-pmap)# class inspection_default
CCNAS-ASA(config-pmap-c)# access-list ICMPACL extended permit icmp any any
CCNAS-ASA(config)# access-group ICMPACL in interface dmz
!显示以下信息,验证静态 NAT:
!显示 NAT 转换。
!显示详细的 NAT 信息。
CCNAS-ASA(config)# show xlate
2 in use, 2 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
s - static, T - twice, N - net-to-net
NAT from dmz:192.168.2.3 to outside:209.165.200.227
flags s idle 0:00:21 timeout 0:00:00
NAT from inside:192.168.1.3 to outside:209.165.200.242 flags i idle 0:09:06 timeout 3:00:00
CCNAS-ASA(config)# show nat detail
Auto NAT Policies (Section 2)
1 (dmz) to (outside) source static DMZ-SERVER 209.165.200.227
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.2.3/32, Translated: 209.165.200.227/32
2 (inside) to (outside) source dynamic DYNAMIC-NAT PUBLIC
translate_hits = 1, untranslate_hits = 1
Source - Origin: 192.168.1.0/27, Translated: 209.165.200.240-209.165.200.248
AAA 本地数据库和服务器
可以将思科 ASA 配置为通过本地用户数据库或外部服务器(或两者)进行认证。
本地 AAA 使用本地数据库进行认证。此方法在 ASA 上本地存储用户名和密码,并根据本地数据库对用户进行认证。本地 AAA 无需专门的 AAA 服务器,是小型网络的理想选择。
注意:不同于 ISR,ASA 设备不支持不使用 AAA 的本地认证。
使用 username name password password [privilege priv-level] 命令创建本地用户账户。要从本地数据库中清除用户,请使用 clear config username [name] 命令。要查看所有用户账户,请使用 show running-config username 命令。
基于服务器的 AAA 认证是一种可扩展性更强的解决方案。基于服务器的 AAA 认证使用利用 RADIUS 或 TACACS + 协议的外部数据库服务器资源。如果有多个网络设备,基于服务器的 AAA 更合适。
ASA 命令 | 说明 |
---|---|
aaa-server server-tag protocol protocol | 创建 TACACS+ 或 RADIUS AAA 服务器组。 |
aaa-server server-tag [(interface-name)] host {server-ip | name} [ key ] | 将 AAA 服务器配置为 AAA 服务器组的一部分。此外还将配置主机特定的 AAA 服务器参数。 |
CCNAS-ASA(config)# username Admin password class privilege 15
CCNAS-ASA(config)#
CCNAS-ASA(config)# show run username
username Admin password obYXcKAuUW.jT5NE encrypted privilege 15
CCNAS-ASA(config)#
CCNAS-ASA(config)# aaa-server TACACS-SVR protocol tacacs+
CCNAS-ASA(config-aaa-server-group)# aaa-server TACACS-SVR (dmz) host 192.168.2.3
CCNAS-ASA(config-aaa-server-host)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# show run aaa-server
aaa-server TACACS-SVR protocol tacacs+
aaa-server TACACS-SVR (dmz) host 192.168.2.3
key *****
CCNAS-ASA(config)#
- 配置 AAA TACACS + 例子
要清除所有 AAA 服务器配置,请使用 clear config aaa-server 命令。要查看所有用户账户,请使用 show running-config aaa-server 命令。
AAA 配置
要对通过控制台、SSH、HTTPS (ASDM) 或 Telnet 连接访问 ASA CLI 的用户或使用 enable 命令进入特权 EXEC 模式的用户进行认证,请在全局配置模式下使用 aaa authentication console 命令。
命令语法为 aaa authentication { serial | enable | telnet | ssh | http } console { LOCAL | server-group [ LOCAL ]} 命令。
要清除所有 AAA 参数,请使用 clear config aaa 命令。要查看所有用户账户,请使用 show running-config username 命令。
CCNAS-ASA(config)# aaa authentication http console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication enable console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication http console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication serial console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication ssh console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication telnet console TACACS-SVR LOCAL
CCNAS-ASA(config)#
CCNAS-ASA(config)# show run aaa
aaa authentication enable console TACACS-SVR LOCAL
aaa authentication http console TACACS-SVR LOCAL
aaa authentication serial console TACACS-SVR LOCAL
aaa authentication ssh console TACACS-SVR LOCAL
aaa authentication telnet console TACACS-SVR LOCAL
CCNAS-ASA(config)# exit
CCNAS-ASA# disable
CCNAS-ASA> exit
Logoff
Username: Admin
Password: *****
Type help or '?' for a list of available commands.
CCNAS-ASA>
- AAA 配置、验证与测试示例。
一个完整的例子:
!配置并验证如下所示的本地数据库用户:
!User name 'Admin'
!Password 'class'
!Privilege level '15'
!显示运行配置中的本地数据库。
CCNAS-ASA(config)# username Admin password class privilege 15
CCNAS-ASA(config)# show run username
username Admin password obYXcKAuUW.jT5NE encrypted privilege 15
!如下所示配置并验证 AAA:
!创建名为 TACACS-SVR 的 TACACS+ AAA 服务器组。
!创建 IP 地址为 192.168.2.3 的服务器,使其位于 DMZ 中,作为服务器组的一部分。
!返回全局配置模式。
!显示运行配置中的 AAA 服务器设置。
CCNAS-ASA(config)# aaa-server TACACS-SVR protocol tacacs+
CCNAS-ASA(config-aaa-server-group)# aaa-server TACACS-SVR (dmz) host 192.168.2.3
CCNAS-ASA(config-aaa-server-host)# exit
CCNAS-ASA(config)# show run aaa-server
aaa-server TACACS-SVR protocol tacacs+
aaa-server TACACS-SVR (dmz) host 192.168.2.3
key *****
!为以下模式的访问使用 TACACS-SVR 和 LOCAL 配置并验证 AAA 认证:
!对控制台的 HTTP 访问。
!对控制台的特权 EXEC 访问。
!对控制台的串行访问。
!对控制台的 SSH 访问。
!显示运行配置中的 AAA 设置。
CCNAS-ASA(config)# aaa authentication http console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication enable console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication serial console TACACS-SVR LOCAL
CCNAS-ASA(config)# aaa authentication ssh console TACACS-SVR LOCAL
CCNAS-ASA(config)# show run aaa
aaa authentication http console TACACS-SVR LOCAL
aaa authentication enable console TACACS-SVR LOCAL
aaa authentication serial console TACACS-SVR LOCAL
aaa authentication ssh console TACACS-SVR LOCAL
MPF 概述
模块化策略框架 (MPF) 配置定义了一套规则,可向通过 ASA 的流量应用防火墙功能(例如,流量检查和 QoS)。MPF 允许对流量进行分类,从而向不同的流应用不同的高级策略。MPF 与硬件模块配合使用,可以将流量精细地从 ASA 重定向到使用思科 MPF 的模块。通过在第 5 层到第 7 层进行分类,可使用 MPF 对流量进行高级应用层检查。还可使用 MPF 实施速率限制和 QoS 功能。
流量分类 | 定义操作 | 激活策略 |
---|---|---|
类映射 | 策略映射 | 服务政策 |
我们的目标是什么? 识别要对其执行 MPF 的流量。创建可能包含多个匹配条件的第 3/4 层类映射。class-map class-name | 我们应该如何操作?定义策略,将第 3 层的流量映射到第 7 层。通过相关操作,创建包含多个类映射的策略映射。policy-map policy-name | 在哪里执行操作?在接口上激活策略映射。创建服务策略,向一个或全部接口应用策略映射。service-policy serv-nameinterface intf-name |
虽然 MPF 语法类似于 ISR IOS 思科 Modular QoS CLI (MQC) 语法或思科常见分类策略语言 (C3PL) 语法,但可配置参数不同。与思科 IOS ZPF 的 ISR 相比,ASA 平台提供了更多可配置操作。凭借面向应用特定的参数的丰富条件,ASA 支持进行第 5 层至第 7 层检查。例如,ASA MPF 功能可用于匹配 HTTP URL 和请求方法,防止用户在特定时间内浏览特定站点,甚至阻止用户通过 HTTP/FTP 或 HTTPS/SFTP下载音乐 (MP3) 和视频文件。
在 ASA 上配置 MPF 需要四步:
- 步骤 1:(可选)配置扩展 ACL 以确定可在类映射中专门引用的精细流量。例如,ACL 可用于匹配 TCP 流量、UDP 流量、HTTP 流量或流向特定服务器的所有流量。
- 步骤 2:配置类映射以确定流量。
- 步骤 3:配置策略映射,从而向这些类映射应用操作。
- 步骤 4:配置服务策略以将策略映射附加到接口。
配置类映射 (Class Maps)
配置类映射以识别第 3/4 层流量。要创建 class-map 并进入类映射配置模式下,请使用 class-map class-map-name 全局配置模式命令。名称“class-default”和任何以“_internal”或“_default”开头的名称均已保留。类映射名称必须唯一,长度不得超过 40 个字符。此名称还应具有描述性。
注意:class-map 命令的变体可用于发往 ASA 的管理流量。在这种情况下,请使用 class-map type management class-map-name 命令。
在 class-map 配置模式下,应使用 description 命令配置说明呼叫映射用途的描述。
接下来,应通过 match any(匹配所有流量)或 match access-list access-list-name识别要匹配的流量,以便匹配扩展访问列表中指定的流量。
注意:除非另有规定,否则类映射中仅包含一个 match 命令。
CCNAS-ASA(config)# access-list UDP permit udp any any
CCNAS-ASA(config)# access-list TCP permit tcp any any
CCNAS-ASA(config)# access-list SERVER permit ip any host 10.1.1.1
CCNAS-ASA(config)#
CCNAS-ASA(config)# class-map ALL-TCP
CCNAS-ASA(config-cmap)# description "This class-map matches all TCP traffic"
CCNAS-ASA(config-cmap)# match access-list TCP
CCNAS-ASA(config-cmap)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# class-map ALL-UDP
CCNAS-ASA(config-cmap)# description "This class-map matches all UDP traffic"
CCNAS-ASA(config-cmap)# match access-list UDP
CCNAS-ASA(config-cmap)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# class-map ALL-HTTP
CCNAS-ASA(config-cmap)# description "This class-map matches all HTTP traffic"
CCNAS-ASA(config-cmap)# match port TCP eq http
CCNAS-ASA(config-cmap)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# class-map TO-SERVER
CCNAS-ASA(config-cmap)# description "Class map matches traffic 10.1.1.1"
CCNAS-ASA(config-cmap)# match access-list SERVER
CCNAS-ASA(config-cmap)# exit
CCNAS-ASA(config)#
- 映射配置示例:类映射识别流量
ASA 还通过 class-map inspection_default 自动定义一个在配置中标识的默认第 3/4 层类映射。此类映射中标识的 match default-inspection-traffic 可匹配所有检查的默认端口。在策略映射中使用时,该类映射可以根据流量的目的端口确保应用到每个数据包的检测都正确。例如,当端口 69 的 UDP 流量到达 ASA 时,ASA 将应用 TFTP 检查。仅在这种情况下才能为同一类映射配置多项检查。通常情况下,ASA 不会使用端口号来确定应用哪种检查。这样即可灵活地向非标准端口应用检查。
要显示关于类映射配置的信息,请使用 show running-config class-map 命令。
要删除所有类映射,请在全局配置模式下使用 clear configure class-map 命令。
定义并激活策略
策略映射用于绑定类映射与操作。使用 policy-map policy-map-name 全局配置模式命令,向第 3 层和第 4 层流量应用操作。策略映射名称必须唯一,长度不得超过 40 个字符。此名称还应具有描述性。
在 policy-map 配置模式下,"config pmap",使用以下命令:
-
description - 添加说明文本。
-
class class-map-name - 确定要对其执行操作的特定类映射。
策略映射的最大数量为 64。一个策略映射中可以有多个第 3/4 层类映射,而且可将一个或多个功能类型的操作分配给每个类映射。
注意:配置中包括 ASA 在默认全局策略中使用的默认第 3/4 层策略映射。它被称为 global_policy 并对默认检查流量执行检查。只能有一个全局策略。因此,要更改全局策略,请进行编辑或替换。
以下是三个在策略映射配置模式中可用的最常见命令:
-
set connection - 设置连接值。
-
inspect - 提供协议检查服务器。
-
police - 为此类流量设置速率限制。
可以操作将双向或单向应用到流量,具体情况视功能而定。
要显示有关策略映射配置的信息,请使用 show running-config policy-map 命令。
在全局配置模式下使用 clear configure policy-map 命令,删除所有策略映射。
配置服务策略
要在所有接口或在目标接口上全局激活策略映射,请使用 service-policy 全局配置模式命令,以在接口上启用一组策略:
service-policy policy-map-name [ global | interface intf]
CCNAS-ASA(config)# access-list TFTP-TRAFFIC permit udp any any eq 69
CCNAS-ASA(config)#
CCNAS-ASA(config)# class-map CLASS-TFTP
CCNAS-ASA(config-cmap)# match access-list TFTP-TRAFFIC
CCNAS-ASA(config-cmap)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# policy-map POLICY-TFTP
CCNAS-ASA(config-pmap)# class CLASS-TFTP
CCNAS-ASA(config-pmap-c)# inspect tftp
CCNAS-ASA(config-pmap-c)# exit
CCNAS-ASA(config-pmap)# exit
CCNAS-ASA(config)#
CCNAS-ASA(config)# service-policy POLICY-TFTP global
CCNAS-ASA(config)#
- 实施模块化策略框架
一个完整的示例:
!配置以下 ACL 以识别特定流量:
!名称为 UDP 的允许所有 udp 流量的 ACL。
!名称为 TCP 的允许所有 tcp 流量的 ACL。
!名称为 SERVER 的允许所有流向 10.1.1.1 的流量的 ACL。
CCNAS-ASA(config)# access-list UDP permit udp any any
CCNAS-ASA(config)# access-list TCP permit tcp any any
CCNAS-ASA(config)# access-list SERVER permit any host 10.1.1.1
!配置如下所述的类映射:
!创建名称为 ALL-TCP 的类映射。
!配置说明“Class map matches all TCP traffic”(类映射与所有 TCL 流量匹配)。
!匹配 TCP ACL 流量。
!创建名称为 ALL-UDP 的类映射。
!配置说明“Class map matches all UDP traffic”(类映射与所有 UDP 流量匹配)。
!匹配 UDP ACL 流量。
!创建名称为 ALL-HTTP 的类映射。
!配置说明“Class map matches all HTTP traffic”(类映射与所有 HTTP 流量匹配)。
!明确为 HTTP 流量匹配 TCP ACL。
!创建名为 TO-SERVER 的类映射
!配置说明“Class map matches traffic to 10.1.1.1”(类映射与流向 10.1.1.1 的流量匹配)。
!匹配 SERVER ACL 流量。
CCNAS-ASA(config)# class-map ALL-TCP
CCNAS-ASA(config-cmap)# description Class map matches all TCP traffic
CCNAS-ASA(config-cmap)# match access-list TCP
CCNAS-ASA(config-cmap)# class-map ALL-UDP
CCNAS-ASA(config-cmap)# description Class map matches all UDP traffic
CCNAS-ASA(config-cmap)# match access-list UDP
CCNAS-ASA(config-cmap)# class-map ALL-HTTP
CCNAS-ASA(config-cmap)# description Class map matches all HTTP traffic
CCNAS-ASA(config-cmap)# match port TCP eq http
CCNAS-ASA(config-cmap)# class-map TO-SERVER
CCNAS-ASA(config-cmap)# description Class map matches traffic to 10.1.1.1
CCNAS-ASA(config-cmap)# match access-list SERVER
!配置如下所述的全局服务策略:
!创建名称为 TFTP-TRAFFIC 的 ACL 以允许所有端口 69 UDP 流量。
!创建名称为 CLASS-TFTP 的类映射。
!匹配 ACL TFTP-TRAFFIC。
!创建名称为 POLICY-TFTP 的策略映射。
!标识用作 CLASS-TFTP 的类。
!配置检查 TFTP 流量的策略。
!将 POLICY-TFTP 策略与全局服务策略匹配。
CCNAS-ASA(config)# access-list TFTP-TRAFFIC permit udp any any eq 69
CCNAS-ASA(config)# class-map CLASS-TFTP
CCNAS-ASA(config-cmap)# match access-list TFTP-TRAFFIC
CCNAS-ASA(config-cmap)# policy-map POLICY-TFTP
CCNAS-ASA(config-pmap)# class CLASS-TFTP
CCNAS-ASA(config-pmap-c)# inspect tftp
CCNAS-ASA(config-pmap-c)# service-policy POLICY-TFTP global
您已成功在 ASA 上实施了 MPF。
ASA 默认策略
<省略部分输出>
! 类映射包括一条匹配特殊关键字 default-inspection-traffic 的语句。
class-map inspection_default
match default-inspection-traffic
! 策略映射关联要对类映射中标识的流量执行的操作。
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect ip-options
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
! 服务策略向一个接口应用策略映射,或通过关键字 global 向全部接口应用策略映射。关键字 global 可向未应用特定策略的接口应用策略映射。
service-policy global_policy global
<省略部分输出>
ASA 默认配置包括与所有默认应用检查流量匹配的全局策略,并且向流量全局应用检查。否则,服务策略将应用到接口或全局应用。
对于指定的功能,接口服务策略优先于全局服务策略。例如,如果具备使用检查的全局策略和使用检查的接口策略,则只有接口策略检查应用到该接口。
要更改全局策略,管理员需要编辑默认策略或禁用默认策略并应用新策略。
要显示有关服务策略配置的信息,请使用 show service-policy 或 show running-config service-policy 命令。
在全局配置模式下使用 clear configure service-policy 命令以删除所有服务策略。clear service-policy 命令将清除服务策略统计信息。
高级思科自适应安全设备(ASDM)
说白了也就是图形界面控制ASA,客户端还是java写的。。
开启 ASDM
要启用 ASDM 访问,ASA 需要一些最低配置。具体而言,ASDM是使用安全套接字(SSL)WEB浏览器连接到ASA WEB服务器实现访问。SSL 会对客户端和 ASA Web 服务器之间的流量加密。
ASA 至少要求配置管理接口。管理接口取决于 ASA 型号。ASA 5505 中的管理接口中包含内部逻辑 VLAN 接口 (VLAN 1) 和除 Ethernet 0/0 以外的物理 Ethernet端口。为所有其他 ASA 型号提供了专用的第 3 层管理 0/0 接口。
具体而言,要准备 ASDM 访问 ASA 5505,必须配置以下内容:
-
Inside logical VLAN interface(内部逻辑 VLAN 接口)- 分配第 3 层地址和安全级别。
-
Ethernet 0/1 physical port(Ethernet 0/1 物理端口)- 默认分配给 VLAN 1,但必须启用。
-
Enable the ASA Web Server(启用 ASA Web 服务器)- 默认已禁用。
-
Permit access to the ASA Web Server(允许访问 ASA Web 服务器)- 默认情况下,ASA 在封闭策略中运行;因此,与 HTTP 服务器的所有连接都将被拒绝。
ciscoasa# conf t
ciscoasa(config)# interface vlan 1
ciscoasa(config-if)# ip address 192.168.1.1 255.255.255.0
ciscoasa(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
ciscoasa(config-if)# exit
ciscoasa(config)#
ciscoasa(config)# interface Ethernet0/1
ciscoasa(config-if)# no shut
ciscoasa(config-if)# exit
ciscoasa(config)#
ciscoasa(config)# http server enable
ciscoasa(config)# http 192.168.1.3 255.255.255.255 inside
ciscoasa(config)#
- 将逻辑管理内部接口的 IP 地址配置为 192.168.1.1。它将启用 Ethernet 0/1,启用 ASA HTTP 服务器,并允许来自 IP 地址为 192.168.1.3 的内部主机的访问。
注意:要删除并禁用 ASA HTTP 服务器服务,请使用 clear configure http 全局配置模式命令。
参考
摘取 CCNA Security 官方课本
无论如何都禁止转载!!!
内容有改动,毕竟是整理。。
by Mane.
Comments
Post a Comment