• 沒有找到結果。

计算机网络实训创新教程(基于Cisco IOS) - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "计算机网络实训创新教程(基于Cisco IOS) - 万水书苑-出版资源网"

Copied!
79
0
0

加載中.... (立即查看全文)

全文

(1)

网络安全

第 11 章

随着网络技术的不断发展和网络服务的不断丰富,网络安全成为我们越来越关注的话题。网络服

务和资源经常面临不同的网络攻击的威胁,所以网络安全的部署和实施也是网络发展的必然要求。

作为一个系统管理员,保护敏感重要的数据和网络资源,防止可能的恶意入侵,是最优先考虑

的事情。网络安全的范畴很广泛,包括物理层安全、数据链路层安全、网络层安全、传输层安全以

及应用层安全,本章的重点在于网络层安全。

本章将介绍网络安全的基本知识,重点介绍 ACL 访问控制列表。

本章主要内容:

网络安全概述

安全网络架构

Cisco IOS 安全特性

ACL 访问控制列表

网络地址转换 NAT

11.1 网络安全简介

在过去的短短数年内,计算机网络不仅规模显著增长,其重要性也与日俱增。如果网络安全受

到危害,可能会导致非常严重的后果,如隐私丧失、信息失窃,有的甚至需要追究法律责任。随着

网络威胁的种类日渐增多,安全环境所面临的挑战也日趋严峻。

11.1.1 网络中的安全隐患

随着时间的推移,网络中出现的攻击方式越来越多,但需要的技术水平却越来越低,现在有各

式各样的网络攻击软件,不需要自己编译,直接使用即可,所以现在网络存在的安全隐患更多。在

前些年,攻击者必须具备高深的计算机、编程和网络知识才能利用基本的工具进行简单的攻击,如

图 11-1 所示。现在随着攻击者的方法和工具的不断改进,他们不再需要高深的知识即可进行攻击。

11

(2)

1 1 C ha p te r ▲图 11-1 网络攻击方法及入侵技术的发展

说到网络攻击,我们通常认为这种攻击行为是黑客实施的,那么到底黑客指的是哪类人呢?事

实上目前人们都有一种误解,将黑客直接和电脑犯罪者联系在一起,这种看法是错误的。而 hacker

的原意是用斧头做家具的能工巧匠,麻省理工的学生们重新赋予这个极具挑战性的古老职业新的含

义:能够面对挑战、创造技术、解决问题的人。电脑犯罪者更应该被称为黑帽子或骇客。这个分类

是非常不容易讲清楚的一个问题,因为没有统一的标准,分类方式差异非常大,按照我们的习惯可

以简单分为以下 3 种类型:

黑客(Hacker):所做的不是恶意破坏,他们是一群纵横于网络上的技术人员,热衷于科

技探索和计算机科学研究。

骇客(Cracker):闯入计算机系统或软件,从事恶意破解商业软件、恶意入侵别人的网站

等事务的一类人。他们未必具有很高的技术,通常用一些简单的攻击手段去达到炫耀、

恶作剧、搞破坏的目的。

红客(Honcker):中国特色的产物,最早出现于北约轰炸中国驻南联盟大使馆之后。他

们用自己的技术维护国内网络安全,并对外来的一切进攻进行还击。他们有爱国、正义、

进取的精神,是网络安全时代英雄的代表。

11.1.2 常见的网络攻击方式

网络攻击就是对网络隐患的具体利用,一般来讲网络攻击有以下 3 种方式:

被动攻击:对想窃取的信息进行侦听,以获取机密信息。而数据的拥有者或合法用户对

此类活动无法得知,所以被动攻击主要关注防范,而非检测。目前针对此类攻击行为,

一般都是采用加密技术来保护信息的机密性。

主动攻击:对业务数据流报文首部或数据载荷部分进行假冒或篡改,以达到冒充合法用

户对业务资源的非授权访问或对业务资源进行破坏的目的。对于此类攻击可以通过对数

据流进行分析检测以给出技术解决措施,最终保障业务的正常运行。

中间人攻击:一种“间接”类型的攻击方式,根据攻击者对信息不同的攻击行为(信息

窃取攻击、信息篡改攻击),将会有被动攻击和主动攻击的特征。通过中间人攻击能达到

(单位:年)

(3)

1 1 C ha p te r

以下两个目的:

信息窃取:当主机 A 和主机 B 进行数据交互时,攻击者对信息进行截取备份一份,

并进行数据转发(可能只是进行侦听,不对其进行转发)

。这样攻击者很容易获取主

机 A 和主机 B 的机密信息,而主机 A 和主机 B 对其一无所知。

信息篡改:攻击者作为主机 A 和主机 B 数据交互的中介,可能主机 A 和主机 B 以

为它们之间是直接通信的,其实它们之间的通信有个中转器—攻击者。此类攻击,

攻击者一般会往主机 A 和主机 B 之间的数据流中插入或更改相应信息,以达到其攻

击的目标。

11.1.3 网络安全概述

网络安全的定义是通过采用各种管理措施和技术手段,使网络系统的硬件、软件及其系统中的

数据受到保护,不因偶然或恶意的原因而遭到破坏、更改、泄露,使系统连续、可靠、正常地运行,

网络服务不中断。

网络安全的概念很长,它主要包括 4 个方面的要点:

(1)网络安全实施的方法:需要管理和技术结合起来,不能单纯地依赖于技术,管理网络时

的责任心对网络安全同样重要。

(2)网络安全保护的对象:网络系统中的硬件资源、软件资源及数据信息,尤其是数据信息

被破坏后很难恢复。

(3)网络受到威胁的类型:可能是恶意的也可能是偶然的,多数情况下是用户在下载数据时感

染木马或病毒引起的,所以计算机上网时一定要及时修补系统的漏洞,并且要安装杀毒软件。

(4)网络安全实施的目的:是为了保护系统正常的运行服务不中断,也就是说要保证网络资

源的可用性。

11.1.4 网络安全的实施目标

我们知道了网络安全的概念,那么把网络建设到什么程度就是安全的呢?一般来讲我们可以将

网络安全的实施目标归纳为以下几个方面:

系统的可靠性:保证网络系统不因各种因素的影响而中断正常工作。

系统的可控性:能够对各种资源访问和信息传播进行控制和日志记录。

数据的完整性:保护网络系统中存储和传输的软件(程序)与数据不被非法改变。

数据的可用性:保证软件(程序)和数据能被合法用户访问和正常利用。

数据的保密性:利用密码技术对数据进行加密处理,保证在系统中存储和网络上传输的

数据不被无关人员识别。

需要说明的是,网络安全是一个相对的概念,运行的服务越多,访问的数据量越大,面临网络

攻击的可能性就越大,并且整体的网络由多个设备互联而成,每个设备工作时都可能面临不同类型

的网络威胁,所以网络安全的实施需要整体规划、综合部署。后面的章节将会介绍一些常见的技术

手段用于保护企业网络的安全。

11.1.5 从 OSI 参考模型来看网络安全

在工作中可能会听到这样的词“物理层安全”“数据链路层安全”“网络层安全”“应用层安

(4)

1 1 C ha p te r

全”

,这些都是根据 OSI 参考模型的分层来说的。OSI 参考模型将数据通信分为 7 层:应用层、表

示层、会话层、传输层、网络层、数据链路层和物理层。网络安全也可以从这个角度来分类。下面

针对 OSI 参考模型的层列举一些安全的例子。

1.物理层安全

通过网络设备进行攻击:Hub 和无线 AP 进行攻击。攻击者将计算机连接到使用 Hub 组建的网

络中就可以捕获其他用户通信的数据包。无线 AP 如果没有安全措施,攻击者可以捕获无线 AP 通

信。例如,某公司的办公大楼其中一层租给了保险公司,这一层的办公室的网线还在该公司的交换

机上连接,并且没有禁用这些端口,保险公司就可以将计算机轻易接入到该公司的网络,这就是物

理层不安全。

物理层安全措施:使用交换机替代 Hub,为无线 AP 配置密码实现无线设备的接入保护和实现

数据加密通信。

2.数据链路层安全

数据链路层攻击:恶意获取数据或 MAC 地址,由于大多数 IDS 和操作系统对网络层以下的防

御很弱,因此很危险。攻击方式有 ARP 欺骗、ARP 广播、同一网段有重复的 MAC 地址。

数据链路层安全措施:在交换机的端口上控制连接计算机的数量或绑定 MAC 地址,在交换机

上划分 VLAN 都属于数据链路层安全。在计算机和路由器上添加 IP 地址和 MAC 地址绑定可以防

止 ARP 欺骗。ADSL 拨号上网的账号和密码实现的是数据链路层安全。

3.网络层安全

网络层攻击:IP Spoofing(IP 欺骗)、Fragmentation Attack(碎片攻击)、Reassembly Attack(重

组攻击)

、Ping of Death(ping 死攻击)。

网络层安全措施:在路由器上设置访问控制列表和 IPSec,在 Windows 上实现 Windows 防火

墙和 IPSec,这些都属于网络层安全。

4.传输层安全

传输层攻击:Port Scan(端口扫描)、TCP Reset Attack(TCP 重置攻击)、SYN DoS Flood(SYN

拒绝服务攻击)

、LAND Attack(LAND 攻击)、Session Hijacking(会话劫持)。

传输层安全措施:使用基于网络的入侵监测系统 IPS。

5.应用层安全

应用层攻击:MS-SQL Slammer Worm 缓冲区溢出、IIS 红色警报、E-mail 蠕虫、蠕虫、病毒、

木马、垃圾邮件、IE 漏洞。

应用层安全措施:安装杀毒软件,更新操作系统。

11.1.6 典型的安全网络架构

许多大中型企业网络中,各种各样的安全策略都是基于内网、非军事区(DMZ)路由器以及

防火墙设备。防火墙通过屏蔽各部分的网络流量来提供附加的安全保障,而进行这些工作需要使用

访问控制列表。

典型的网络架构如图 11-2 所示的三向外围网,防火墙设备连接 Internet、内网和 DMZ 区。DMZ

区部署了公司对外的 Web 和 Mail 服务器,一般是公网 IP 地址。内网是私网 IP 地址,一般不对 Internet

用户提供服务,但是需要访问 Internet。如果入侵者突破了该防火墙,就威胁到了 DMZ 和内网的

安全。

(5)

1 1 C ha p te r ▲图 11-2 三向外围网

另一种典型的网络架构是背靠背防火墙,如图 11-3 所示,两个防火墙之间是 DMZ 区,内网

在后端防火墙后面。建议这两个防火墙最好不是同一家公司的产品,如前端使用 Cisco 公司的 PIX

防火墙,后端使用微软的软件防火墙 ISA 2006。这样入侵者要想入侵内网,就需要突破两个不同

厂商的防火墙,增加了难度。

▲图 11-3 背靠背防火墙

11.2 保护 Cisco IOS 路由器的安全

因为路由器是通往其他网络的网关,所以它们是明显的攻击目标,容易遭到各种各样的攻击。

攻击者可以使用不同的方法破坏路由器,因此网络管理员无法仅靠单一的方法对抗攻击者。本节重

点介绍如何保护路由器的安全,所用的拓扑环境如图 11-4 所示。

▲图 11-4 本节使用的拓扑环境 Internet 防火墙 DMZ 内网 Web 服务器 Mak 服务器 Internet 前端防火墙 DMZ 内网 Web 服务器 Mak 服务器 后端防火墙

(6)

1 1 C ha p te r

11.2.1 路由器的密码安全

确保路由器基本安全的方法是配置口令密钥,强口令密钥是控制安全访问路由器最基本的要

素,因此应该始终配置强口令密钥,强口令密钥的相关设置包括以下几项内容:

由大写字母、小写字母、阿拉伯数字、特殊字符 4 部分组成。

设置尽可能长的口令,最佳做法是设置至少 8 个字符的口令。

请勿将口令记在明显的地方,如办公桌或显示器上。

避免使用字典中可以查到的单词、姓名、电话号码和日期,避免口令遭到字典攻击。

故意将口令中的词拼错,如 Smith 可以拼成 Smyth。

尽可能经常更改口令,降低破解口令的可能性,同时避免口令被破解后信息暴露。

注意,口令开头的空格会被忽略,但第一个字符之后的空格都不会被忽略。

默认情况下,当在路由器中输入口令时,Cisco IOS 软件会以明文的形式保存口令,而这样很

不安全,因为当查看运行配置时,使用 enable password 命令或 username username password

password 命令即会以明文的方式显示出这些口令,如下:

R1(config)#username user password cisco R1(config)#end

R1#show run | include username

username user password 0 cisco ---运行配置中显示的 0 表示口令没有被隐藏---

为了安全配置文件,所有口令都应该加密,Cisco IOS 提供了两种保护口令的方法:

7 类方案的简单加密:它使用 Cisco 定义的简单加密算法隐藏口令,很容易破解。

5 类方案的复杂加密:它使用安全的 MD5 哈希算法加密口令,理论上不能破解。

注意:7 类加密可以用于 enable password、username 和 line password 命令(包括

vty、线路控制台和辅助端口)

,此方法提供的防护较为有限,虽然不像 5 类加密

那样安全,但比不加密强。

要为口令使用 7 类加密,请使用全局配置命令 service password-encryption,该命令使配置文件

中的口令难以辨认,过程如下:

R1(config)#service password-encryption R1(config)#end

R1#show run | include username

username user password 7 121A0C041104 ---7 表示口令隐藏,同样的方式可用于 line---

Cisco 推荐尽可能使用 5 类加密代替 7 类加密,要使用此加密方法,将关键字 password 替换

为 secret 即可,如将上面 user 的 7 类加密方式删除并使用 5 类加密方式重建该信息,操作过程如下:

R1(config)#no username user R1(config)#username user secret cisco R1(config)#^Z

R1#show run | include username

username user secret 5 $1$wrQY$qi6chlccr1y4U96S5sBcG0

同样应该使用 enable secret 命令设置特权口令提高特权执行级别的安全性,而不要使用 enable

password,因为它的安全性较低,操作过程如下:

(7)

1 1 C ha p te r R1(config)#^Z

R1#show run | include enable

enable secret 5 $1$7RNE$Br.EfO8bVkG6sFJeUOo5d.

注意:某些过程可能无法使用 5 类加密口令,如 PAP 和 CHAP 要求使用明文口

令,这些过程不能使用 MD5 加密口令。

11.2.2 路由器的安全访问管理

随着网络规模的扩大和网络设备数量的增加,通过本地的终端接口管理设备的工作量将变得非

常大,对于需要管理许多设备的管理员来说,远程管理访问比本地访问更加方便。但是,我们平时

使用 Telnet 执行远程管理访问的方式很不安全,因为 Telnet 以明文的方式发送所有网络流量,攻

击者可以在管理员远程登录到路由器时捕获网络流量,并嗅探到管理员口令或路由器配置信息。我

们设置 R1 使用本地数据库对远程用户进行认证,操作过程如下:

R1(config)#line vty 0 4 R1(config-line)#login local R1(config-line)#end

在 Host1 上使用 Telnet 对 R1 进行远程管理并开启抓包软件,过程如下:

C:\Users\Administrator>telnet 10.1.0.1

User Access Verification Username: user Password: R1>enable Password: R1#show version

Cisco IOS Software, 7200 Software (C7200-ADVSECURITYK9-M), Version 12.4(11)T, RE ---输出部分省略---

Configuration register is 0x2102 R1#quit

Telnet 过程的抓包结果如图 11-5 所示。

(8)

1 1 C ha p te r

右击抓获的 Telnet 数据包并选择 Follow TCP Stream 选项,即可显示 Telnet 明文的数据包内容,

如图 11-6 所示。

▲图 11-6 Telnet 的明文内容

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定。SSH

为建立在应用层和传输层基础上的安全协议,已经取代 Telnet 成为了执行远程路由器管理的最佳做

法。要让路由器支持 SSH 的方式进行管理,需要进行如下设置:

R1(config)#ip domain-name study.net ---设置域名,路由器产生自签名密钥时使用--- R1(config)#crypto key generate rsa ---设置路由器产生自签名密钥---

The name for the keys will be: R1.study.net

Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes.

How many bits in the modulus [512]:

% Generating 512 bit RSA keys, keys will be non-exportable...[OK] *Apr 23 18:29:23.935: %SSH-5-ENABLED: SSH 1.99 has been enabled R1(config)#line vty 0 4 R1(config-line)#transport input ssh ---设置路由器仅支持 SSH 访问--- R1(config-line)#login local R1(config-line)#end

使用 PuTTY 软件通过 SSH 访问路由器并启用抓包软件,操作过程如图 11-7 所示。

▲图 11-7 使用 SSH 管理路由器

(9)

1 1 C ha p te r

SSH 过程的抓包结果如图 11-8 所示。

▲图 11-8 SSH 的数据包

右击抓获的 SSH 数据包并选择 Follow TCP Stream 选项,即可显示 SSH 数据包的内容,我们

可以看到这些内容已经进行了加密处理,如图 11-9 所示。

▲图 11-9 SSH 加密的数据内容

11.2.3 路由器的安全加固

Cisco 路由器默认运行着大量的网络服务,有些服务通常是不必要的,它们不仅耗用了系统资

密钥协商和交换 数据包加密

(10)

1 1 C ha p te r

源,还具有潜在的安全风险,表 11-1 介绍了通常易受攻击的路由器服务,并列出了与这些服务相

关的最佳做法。

▲表 11-1 易受攻击的路由器服务 功能 描述 默认 建议 Cisco 发现 协议(CDP) 运行在 Cisco 设备之间的第二层专有 协议 启用 CDP 很少用到,将其禁用 TCP 小型 服务器 标准 TCP 网络服务 echo、chargen 等 依设备版本而定 这是一项较旧的功能,将其明确禁用 UDP 小型 服务器 标准 UDP 网络服务 echo、discard 等 依设备版本而定 这是一项较旧的功能,将其明确禁用 Finger UNIX 用户查找服务,允许远程列出 用户列表 启用 未授权用户不需要知道此信息,将其 禁用 HTTP 服务 器

某些 Cisco IOS 设备允许通过 Web 进

行配置 依设备版本而定 若未使用,则明确禁用此功能;否则 需限制访问权 BOOTP 服 务器 允许其他路由器从此设备启动的一 项服务 启用 此功能很少使用,而且可能带来安全 隐患,将其禁用 IP 源路由 一项 IP 功能,允许数据包指明自己 的路由 启用 此功能很少使用,而且容易被攻击者 利用,将其禁用 代理 ARP 路由器会作为第二层地址解析的代理 启用 除非路由器用作 LAN 网桥,否则禁 用此服务 IP 定向广播 数据包可以识别广播的目标 LAN 依设备版本而定 定向广播可能被用于攻击,将其禁用 IP 重定向 对于所路由的某些 IP 数据包,路由 器会发出 ICMP 重定向消息 启用 可能被用于网络映射,在不受信任的 接口上禁用此功能 简单网络管 理协议 路由器支持 SNMP 远程查询和配置 启用 若未使用,则明确禁用此功能;否则 需限制访问权

网络管理员不需要知道如何利用这些服务进行攻击,但是他们必须知道如何禁用这些服务。如

果在路由器上分别禁用这些服务是非常繁琐的工作,管理员就需要一种自动的方法来加快设备安全

加固的过程。

Cisco 的 AutoSecure 特性可以帮助管理员精确控制各种服务的启用和禁用功能,即使管理员不

了解 Cisco IOS 软件的所有功能也可以配置安全策略,提高 Cisco IOS 网络的安全性。使用

AutoSecure 时可以采用以下两种运作模式:

交互模式(Interactive Mode):在禁用或启用服务以及设置其他安全相关特性时将提示用

户,与用户交互。

非交互模式(Noninteractive Mode):使用推荐的设置自动执行 auto secure 命令。

使用交互(interactive)选项时的主要步骤依次是:确定外网(outside)接口、管理平面的安

全设置、创建安全 banner、配置密码、AAA 和 SSH、接口的安全设置、转发平面的安全设置,操

作过程如下:

R1#auto secure

---AutoSecure Configuration--- *** AutoSecure configuration enhances the security of

(11)

1 1 C ha p te r

the router, but it will not make it absolutely resistant to all security attacks ***

AutoSecure will modify the configuration of your device. All configuration changes will be shown. For a detailed explanation of how the configuration changes enhance security and any possible side effects, please refer to Cisco.com for Autosecure documentation.

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]:

使用非交互模式时,在特权模式中执行如下命令:

R1#auto secure no-interact

---AutoSecure Configuration--- *** AutoSecure configuration enhances the security of the router, but it will not make it absolutely resistant to all security attacks ***

AutoSecure will modify the configuration of your device. All configuration changes will be shown. For a detailed explanation of how the configuration changes enhance security and any possible side effects, please refer to Cisco.com for Autosecure documentation.

Securing Management plane services... Disabling service finger

Disabling service pad

Disabling udp & tcp small servers Enabling service password encryption Enabling service tcp-keepalives-in Enabling service tcp-keepalives-out Disabling the cdp protocol Disabling the bootp server Disabling the http server Disabling the finger service Disabling source routing Disabling gratuitous arp

Configuring interface specific AutoSecure services Disabling the following ip services on all interfaces: no ip redirects

no ip proxy-arp no ip unreachables

(12)

1 1 C ha p te r no ip directed-broadcast no ip mask-reply

Disabling mop on Ethernet interfaces Securing Forwarding plane services...

Enabling CEF (This might impact the memory requirements for your platform) This is the configuration generated:

no service finger no service pad no service udp-small-servers no service tcp-small-servers service password-encryption service tcp-keepalives-in service tcp-keepalives-out no cdp run no ip bootp server no ip http server no ip finger no ip source-route no ip gratuitous-arps no ip identd

security passwords min-length 6 security authentication failure rate 10 log

service timestamps debug datetime msec localtime show-timezone service timestamps log datetime msec localtime show-timezone logging facility local2

logging trap debugging service sequence-numbers logging console critical logging buffered interface FastEthernet0/0 no ip redirects no ip proxy-arp no ip unreachables no ip directed-broadcast no ip mask-reply no mop enabled ip cef ! end

Applying the config generated to running-config R1#

我们以前介绍过使用 SDM 软件管理路由器,SDM 中提供的安全审核(Security Audit)和一步

式锁定(One-Step Lockdown)也可以完成路由器的自动安全加固。

(13)

1 1 C ha p te r

11.3 访问控制列表 ACL

作为网络管理员,所需掌握的最重要的技能之一便是访问控制列表(ACL)。管理员使用 ACL

来阻止流量,或者仅允许特定流量的同时阻止网络中的所有其他流量。本节将介绍如何在安全解决

方案中使用标准 ACL 和扩展 ACL,并提供在 Cisco 路由器上配置 ACL 的方法,其中包括 ACL

的使用技巧、注意事项、建议和一般指导原则。

11.3.1 防火墙的分类

网络设计师使用防火墙来防止网络被未授权用户使用。防火墙是强制执行网络安全策略的硬

件或软件解决方案。可以想象建筑物内一间房间的门锁,该锁仅允许拥有钥匙或门卡的授权用户

进入。类似地,防火墙过滤未经授权或可能存在危险的数据包,防止其进入网络。下面是常见的

几种防火墙类型。

1.数据包过滤

数据包过滤(Packet Filtering)技术是在网络层对数据包进行选择,选择的依据是系统内设置

的过滤逻辑,称为访问控制列表(Access Control List,ACL)。通过检查数据流中每个数据包的源

地址、目的地址、所用的端口号、协议状态等因素或它们的组合来确定是否允许该数据包通过。数

据包过滤防火墙逻辑简单、价格便宜、易于安装和使用、网络性能和透明性好,它通常安装在路由

器上。路由器是内部网络与 Internet 连接必不可少的设备,因此在原有网络上增加这样的防火墙几

乎不需要任何额外的费用。

数据包过滤又称为网络级别的防火墙,网络级别的防火墙很快,在今天仍然可以在许多网络设

施上找到它们的身影,特别是在路由器上,但是不能基于数据包的内容过滤数据。

2.应用级网关

应用级网关(Application Level Gateways)是在网络应用层上建立协议过滤和转发功能的。它

针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时对数据包进行必要的分

析、登记和统计,形成报告。实际中的应用网关通常安装在专用工作站的系统上。

数据包过滤和应用网关防火墙有一个共同的特点,就是它们仅仅依靠特定的逻辑判定是否允许

数据包通过。一旦满足逻辑,防火墙内外的计算机系统则建立直接联系,防火墙外部的用户便有可

能直接了解防火墙内部的网络结构和运行状态。

3.代理服务

代理服务(Proxy Service)也称为链路级网关(Circuit Level Gateways)或 TCP 通道(TCP

Tunnels)

,也有人将它归为应用级网关。它是针对数据包过滤和应用网关技术存在的缺点而引入的

防火墙技术,其特点是将所有跨越防火墙的网络通信链路分为两段。防火墙内外计算机系统间应用

层的“链接”由两个终止代理服务器上的“链接”来实现,外部计算机的网络链路只能到达代理服

务器,从而起到隔离防火墙内外计算机系统的作用。此外,代理服务也对过往的数据包进行分析、

注册登记,形成报告,同时当发现被攻击的迹象时会向网络管理员发出警报,并保留攻击痕迹。国

内代理服务器软件有 CCProxy,微软的代理服务器软件有 ISA2006。

4.状态化防火墙

普通的数据包过滤防火墙功能简单,只检测数据包的头部字段,不检测负载,没有应用识别的

(14)

1 1 C ha p te r

能力;应用级网关或代理服务具有应用识别的能力,但需要对负载部分做深度的数据包检测,这样

会影响防火墙的转发性能。状态检测防火墙虽然继承了数据包过滤防火墙和应用网关防火墙的优

点,它在网络层有一个检查引擎截获数据包并抽取出与应用层状态有关的信息,并以此为依据决定

对该连接是接受还是拒绝。这种技术提供了高度安全的解决方案,同时具有较好的适应性和扩展性。

5.下一代防火墙 NG Firewall

下一代防火墙是在状态化防火墙的基础上提出的可以全面应对应用层威胁的高性能防火墙。

通过深入洞察网络流量中的用户、应用和内容,并借助全新的高性能单路径异构并行处理引擎,

NGFW 能够为用户提供有效的应用层一体化安全防护,

帮助用户安全地开展业务并简化用户的网

络安全架构。

不管是什么类型的防火墙,基本的安全策略需要通过 ACL 来实现,ACL 是实施网络安全最基

本的工具。

11.3.2 访问控制列表 ACL 简介

ACL 是一种路由器配置脚本,它是由一系列 permit 或 deny 语句组成的顺序列表,执行时

从上到下逐条行进行比对,通过比较数据包报头中各字段与设定的条件是否匹配来控制路由器应该

允许还是拒绝数据包通过,也就是说 ACL 每一条语句的工作过程都是匹配了相应的条件去执行对

应的允许或拒绝动作,如果数据包与所有的语句都不匹配,最后一条隐含的语句适用于不满足之前

任何条件的所有数据包并默认发出“拒绝”指令。

创建访问控制列表相当于编写一系列 if-then 语句,如果满足给定的条件,就采取给定的措施;

如果不满足,则不采取任何措施,而继续比对下一条语句。访问控制列表语句相当于分组过滤器,

根据它对分组进行比对分类,执行相应的允许或拒绝动作。

访问控制列表 ACL 分为以下两大类:

标准 ACL:只基于 IP 数据包的源 IP 地址作为转发或拒绝的条件,所有决定是基于源 IP

地址的。这意味着标准的访问控制列表基本上允许或拒绝整个协议组,它们不区分 IP 流

量类型,如 Telnet、UDP 等服务。

扩展 ACL:以基于 IP 数据包的第三层和第四层信息作为数据包是否转发的条件,也就是

能够基于数据包的源地址、目标地址、协议和目标端口这些条件来决定是否转发数据包。

这使得扩展访问控制列表比标准访问控制列表的控制粒度更细。

创建访问控制列表 ACL 后,就可以将其应用于任何接口的入站或出站数据流,之后就可以对

穿越该接口的数据流进行控制了。ACL 要么用于入站流量,要么用于出站流量:

入站 ACL:数据包经过 ACL 处理之后才会被路由到出站接口。入站 ACL 非常高效,

如果数据包被丢弃,则节省了执行路由查找的开销。当测试表明应允许该数据包后,路

由器才会处理路由工作,如图 11-10 所示。

出站 ACL:数据包路由到出站接口后才由 ACL 进行处理,如图 11-11 所示。

(15)

1 1 C ha p te r ▲图 11-10 入站 ACL 的执行流程 ▲图 11-11 出站 ACL 的执行流程

每个 ACL 都有唯一的编号或字符名称,标准的 ACL 使用 1~99 和 1300~1999 之间的数字作

为表号,扩展的 ACL 使用 100~199 和 2000~2699 之间的数字作为表号;命名 ACL 是以列表名称

代替列表编号来定义 ACL 的,用字符可以很便捷地代表特定的意义,同样包括标准和扩展两种列

表,需要在定义时用关键字标注。

(16)

1 1 C ha p te r

11.3.3 通配符掩码

ACL 语句包含的掩码称为通配符掩码。通配符掩码是一串二进制数字,在访问控制列表的语

句中,可以使用通配符来指定特定主机、特定网络或网络的一部分作为比对的条件,所以要通过结

合使用通配符和主机(网络)地址来告诉路由器要比对的地址范围。通配符掩码为 32 位,它使用

以下规则匹配二进制 1 和 0:

通配符掩码位 0:匹配地址中对应位的值。

通配符掩码位 1:忽略地址中对应位的值。

如果要指定一台主机,可以使用类似下面的组合:

172.16.30.5 0.0.0.0 (等效于 host 172.16.30.5)

其中通配符掩码中 0 表示地址的相应字节必须与指定的地址相同,1 表示任意匹配。

如果要指定某个字节为任意值,可以使用 255。例如,下面的示例演示了如何使用通配符掩码

指定一个/24 子网:

172.16.30.0 0.0.0.255

这告诉路由器前 3 个字节必须完全相同,而第 4 个字节可以为任意值。

如果想表示所有的地址都匹配,可以使用下面的表示方式:

0.0.0.0 255.255.255.255 (等效于 any)

如果要匹配从 192.168.16.0 到 192.168.31.0 的网络,可以这样表示:

192.168.16.0 0.0.15.255 ---只检测前两个字节和第三个字节的前四个比特位---

提示:通配符掩码对创建 IP 访问控制列表来说很重要,必须掌握。在标准 IP 访

问控制列表和扩展 IP 访问控制列表中,其用法完全相同,思路和配置 OSPF 时

的反掩码一致。

11.3.4 标准访问控制列表

要在 Cisco 路由器上使用 access-list 全局配置命令以 1~99 内的数字定义标准 ACL。Cisco IOS

12.0.1 版扩大了编号的范围,允许使用 1300~1999 的编号,从而可以定义最多 799 个标准 ACL。

标准 ACL 命令的完整语法如下:

Router(config)#access-list access-list-number {deny|permit} [remark] source [source-wildcard] [log]

各个参数的意义和作用如下:

access-list-number:ACL 的编号,这是一个十进制数,值在 1~99 或 1300~1999 之间(适

用于标准 ACL)。

deny|permit:匹配条件时执行的动作。

remark:可选参数,在 IP 访问列表中添加备注,增强列表的可读性。

source:发送数据包的网络号或主机号。

source-wildcard:可选参数,要对源应用的通配符位。

log:可选参数,对匹配条目的数据包生成信息性日志消息并发送到控制台。

配置标准 ACL 之后,可以使用 ip access-group 命令将其关联到接口,如下:

Router(config-if)#ip access-group {access-list-number } {in | out}

(17)

1 1 C ha p te r 

in:对进入路由器接口的数据进行匹配。

out:对离开路由器接口的数据进行匹配。

要删除 ACL,首先在接口上输入 no ip access-group 命令,然后输入全局命令 no access-list 删

除整个 ACL。

标准 ACL 的应用实例:

如图 11-12 所示,不应该让市场部 LAN 的用户访问财务部 LAN,但应该允许它们访问因特网,

可以在 GW 上设置下列 ACL 并应用:

GW(config)#access-list 10 deny 10.3.0.0 0.0.0.255 GW(config)#access-list 10 permit any

GW(config)#interface fastEthernet 2/0 GW(config-if)#ip access-group 10 out GW(config-if)#exit

▲图 11-12 标准访问控制列表的应用实例

可以使用 show access-lists 命令验证访问控制列表的设置,操作过程如下:

GW#show access-lists

Standard IP access list 10

10 deny 10.2.0.0, wildcard bits 0.0.0.255 20 permit any

删除 ACL 时首先需要从接口移除相应的关联,再从全局模式中删除,操作如下:

GW(config)#interface fastEthernet 2/0

GW(config-if)#no ip access-group 10 out GW(config-if)#exit

GW(config)#no access-list 10

用命名访问控制列表设置如下:

GW(config)#ip access-list standard ACL1

财务部 SW 服务器 SW Server1 Server2 市场部 SW 互联网 SW GW ISP 企业内部网络 互联网

(18)

1 1 C ha p te r GW(config-std-nacl)#deny 10.3.0.0 0.0.0.255 GW(config-std-nacl)#permit any GW(config-std-nacl)#exit GW(config)#interface fastEthernet 2/0 GW(config-if)#ip access-group ACL1 out GW(config-if)#end

GW#show access-lists Standard IP access list ACL1

10 deny 10.3.0.0, wildcard bits 0.0.0.255 20 permit any

GW#

如果要拒绝市场部的特定主机(如 PC2,IP:10.3.0.2)访问财务处,可以使用下面的方式定义

ACL:

GW(config)#access-list 10 deny 10.3.0.2 0.0.0.0 GW(config)#access-list 10 permit any

GW(config)#access-list 10 host 10.3.0.2 GW(config)#access-list 10 permit any

11.3.5 扩展访问控制列表

为了更加精确地控制流量过滤,可以使用编号在 100~199 和 2000~2699 的扩展 ACL(最多

可使用 800 个扩展 ACL),当然也可以对扩展 ACL 命名。扩展 ACL 比标准 ACL 更常用,因为其

控制范围更广,可以提升安全性。与标准 ACL 类似,扩展 ACL 可以检查数据包源地址,除此之外,

它们还可以检查目的地址、协议和端口号(或服务)

,这样就可以基于更多的因素来构建 ACL。

配置扩展 ACL 的操作步骤与配置标准 ACL 的步骤相同,只不过用于支持扩展 ACL 所提供的

附加功能的命令语法和参数较为复杂,其语法格式如下:

Router(config)#access-list access-list-number {permit | deny [remark] } protocol source [ source-wildcard ] [operator

operand] [port port-number or name] destination [destination-wildcard] [operator operand] [port port-number or name]

[established]

各个参数的意义和作用如下:

access-list-number:使用 100~199(扩展 IP ACL)或 2000~2699(扩充 IP ACL)之间的

数字标识访问列表。

deny|permit:匹配条件时执行的动作。

remark:可选参数,在 IP 访问列表中添加备注,增强列表的可读性。

protocol:Internet 协议的名称或编号。常见的关键字包括 icmp、ip、tcp 或 udp,要匹配

所有 Internet 协议(包括 ICMP、TCP 和 UDP)等。

source:发送数据包的网络号或主机号。

source-wildcard:可选参数,要对源应用的通配符位。

destination:数据包发往的网络号或主机号。

destination-wildcard:要对目的地应用的通配符位。

operator:

(可选)对比源或目的端口,可用的操作符包括 lt(小于)、gt(大于)、eq(等

于)

、neq(不等于)和 range(范围)。

port:

(可选)TCP 或 UDP 端口的十进制编号或名称。

(19)

1 1 C ha p te r 

established:

(可选)仅用于 TCP 协议,指示已建立的连接。

配置扩展 ACL 之后,可以使用 ip access-group 命令将其关联到接口,使用方式和标准 ACL

一致。同样,要删除 ACL,首先在接口上输入 no ip access-group 命令,然后输入全局命令 no

access-list 删除整个 ACL。

扩展 ACL 的应用实例:

如图 11-13 所示,不应该让市场部 LAN 的用户访问内外服务器的 FTP 和 Telnet 服务,但允许

内外的其他服务,可以在 GW 上设置下列 ACL 并应用:

GW(config)#access-list 101 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq 21 GW(config)#access-list 101 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq 23 GW(config)#access-list 101 permit ip any any

GW(config)#interface fastEthernet 2/1 GW(config-if)#ip access-group 101 in GW(config-if)#exit ▲图 11-13 扩展访问控制列表的应用实例

可以使用 show access-lists 命令验证访问控制列表的设置,操作过程如下:

GW#show access-lists

Extended IP access list 101

10 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq ftp 20 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq telnet 30 permit ip any any

GW#

可以使用 show ip interface 命令验证接口上控制列表的应用情况,操作过程如下:

GW#show ip interface fastEthernet 2/1

FastEthernet2/1 is up, line protocol is up Internet address is 10.3.0.1/24 Broadcast address is 255.255.255.255 财务部 SW 服务器 SW Server1 Server2 市场部 SW 互联网 SW GW ISP 企业内部网络 互联网

(20)

1 1 C ha p te r

Address determined by setup command MTU is 1500 bytes

Helper address is not set

Directed broadcast forwarding is disabled Outgoing access list is not set

Inbound access list is 101 ---ACL 的编号和应用方向--- Proxy ARP is enabled

… GW#

删除 ACL 时首先需要从接口移除相应的关联,再从全局模式中删除,操作如下:

GW(config)#interface fastEthernet 2/1 GW(config-if)#no ip access-group 101 in GW(config-if)#exit GW(config)#no access-list 101

用命名访问控制列表的设置如下:

GW(config)#ip access-list extended ACL101

GW(config-ext-nacl)#deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq ftp GW(config-ext-nacl)#deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq telnet GW(config-ext-nacl)#permit ip any any

GW(config-ext-nacl)#exit

GW(config)#interface fastEthernet 2/1 GW(config-if)#ip access-group ACL 101 in GW(config-if)#end

GW#show access-lists Extended IP access list ACL101

10 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq ftp 20 deny tcp 10.3.0.0 0.0.0.255 10.1.0.0 0.0.0.255 eq telnet 30 permit ip any any

GW#

11.3.6 ACL 的语句顺序和放置位置

路由器执行 ACL 定义的策略时,是按照由上到下的顺序依次检查执行的,所以语句的顺序非

常重要,我们来看下面的例子:

Router#show access-lists 10 ---查看 ACL--- Standard IP access list 10

permit 192.168.2.0 0.0.0.255 (4 match(es)) ---第 1 条--- permit 192.168.1.0 0.0.0.255 ---第 2 条--- deny host 192.168.2.2 ---第 3 条---

路由器在应用访问控制列表时,会逐一从上到下检查,如果发现匹配的就不再检查 ACL 中后

面的设置。拒绝主机 192.168.2.2 的第 3 条不会用上,因为第 1 条就已经允许了。因此需要将第 3

条的设置放到第 1 条的位置,但是路由器没有调整顺序的功能,需要删除 ACL 重新创建,操作过

程如下:

Router(config)#no access-list 10 ---删除 ACL 10 的所有设置--- Router(config)#access-list 10 deny host 192.168.2.2

Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255 Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255

(21)

1 1 C ha p te r

为了方便我们可以使用文本编辑器编辑访问列表,调整好顺序后再粘贴到路由器中。

在适当的位置放置 ACL 可以过滤掉不必要的流量,使网络更加高效。ACL 可以充当防火墙来

过滤数据包并去除不必要的流量,它的放置位置决定了是否能有效减少不必要的流量。例如,会被

远程目的地拒绝的流量不应该消耗通往该目的地的路径上的网络资源,所以每个 ACL 只有放置在

合适的位置才能很好地发挥作用。基本规则如下:

将扩展 ACL 尽可能靠近要拒绝流量的源。

将标准 ACL 尽可能靠近目的地。

11.3.7 使用访问控制列表保护路由器的安全访问

为了远程配置路由器方便,路由器一般都开启了 Telnet 功能,如何保护路由器的安全呢?例如,

我们只想让网络管理员所在网段的主机访问路由器,如果创建访问控制列表只允许特定的计算机能

够 Telnet 路由器,并且将该访问控制列表应用到路由器每个接口的入口方向上,这对一个具有多个

接口的大型路由器来说就太麻烦了。这时我们可以将 ACL 应用于 VTY 线路,来控制那些地址远

程地访问路由器,操作过程如下:

Router(config)#access-list 12 permit 192.168.1.0 0.0.0.255 ---定义 ACL--- Router(config)#line vty 0 15 ---进入 VTY 虚接口--- Router(config-line)#access-class 12 in ---将 ACL 应用于 Line---

这样路由器就只能通过 192.168.1.0/24 这一网络的主机进行访问了。

11.4 网络地址转换 NAT

Internet 上的每台主机都需要有一个唯一合法的 IP 地址,随着网络技术的发展,接入 Internet

主机的数量越来越多,而可分配的 IP 地址越来越少,日益增多的 Internet 主机和日益减少的可分配

IP 地址之间的矛盾越来越突出。

NAT 技术解决了这些矛盾,NAT 全称是 Network Address Translation,中文意思是“网络地址

转换”。它解决问题的办法是在内部网络中使用内部地址(私有地址)

,通过 NAT 把内部地址翻译

成合法的 IP 地址(公网地址)在 Internet 上使用。

本节的拓扑环境如图 11-14 所示,10.x.x.x 为企业内部私有地址,172.16.x.x 为公网地址,企业

从 ISP 申请的公网地址范围是 172.16.1.11-13/24。

▲图 11-14 本节的拓扑环境 服务器 SW Server11 Server1 内网区 SW 互联网 SW GW ISP 企业申请的公网地址: 172.16.1.11-13/24

(22)

1 1 C ha p te r

11.4.1 NAT 概述

NAT 就像办公室中的前台接待员,客户拨打你单位的总机号码给前台的接待员并告诉接待员

他找谁时,接待员会检查分机列表,该列表显示了与你的名字相对应的分机号,之后将它转接到你

的分机。当你使用分机打电话给外面的客户时,经过前台由单位的总机号码将呼叫信息传送出去,

呼叫接通后客户的电话也只显示你单位的总机号码。

启用 NAT 的设备保留一个或多个有效公网地址供网络外部访问使用。当客户端发送数据包到

网络外部时,NAT 将客户端的内部私有 IP 地址转换为外部公网 IP 地址。对于外部用户来说,所有

进出网络的流量均具有相同的 IP 地址或地址池。NAT 一般部署在企业网络边界的设备上,如路由

器或防火墙等。

NAT 有很多用途,但最主要的用途是让网络能使用私有 IP 地址以节省地址。NAT 将不可路

由的私有内部地址转换成可路由的公有地址。NAT 还能在一定程度上增加网络的私密性和安全性,

因为它对外部网络隐藏了内部地址。

11.4.2 NAT 术语

结合如图 11-15 所示的通信过程,本节在讨论 NAT 时使用下列术语:

▲图 11-15 NAT 通信过程 

内部本地地址(Inside Local):企业内部主机使用的 IP 地址,公网上不可路由,一般使

用 RFC 1918 中定义的私有地址,图中 PC21 使用的是私有地址。

内部全局地址(Inside Global):当内部主机流量流出 NAT 路由器时分配给内部主机的

公有地址。当来自 PC21 的流量发往服务器 Server1 172.16.2.1 时,路由器 GW 必须进行

地址转换,GW 的公网地址池是 172.16.1.11-13,GW 会将其源地址转换为公网地址池中

的一个地址,如 172.16.1.12,这就是内部全局地址。

外部全局地址(Outside Global):分配给 Internet 上主机的可达 IP 地址,也是内部主机

访问 Internet 设备的目的地址,如图中 Server1 从内部网络的角度来看,外部全局地址为

172.16.2.1,它收到企业内部主机发送数据包的源地址是 172.16.1.12。

外部本地地址(Outside Local):分配给外部网络上主机的本地 IP 地址。大多数情况下,

此地址与外部设备的外部全局地址相同。

注意:本节中将使用内部本地地址、内部全局地址和外部全局地址,外部本地地

址的使用超出了本书的范围。

11.4.3 NAT 的类型和设置

(23)

1 1 C ha p te r

1.静态 NAT

内部主机地址被一对一映射到外部主机地址,这种类型的 NAT 需要在 NAT 设备上一一建立内

部本地地址到内部全局地址的静态映射,这样网络中的每台主机都拥有一个真实的因特网 IP 地址,

一般用于外网对企业内部服务器的访问。

如果在规划网络时想要将 172.16.1.11 作为企业服务器 Server11(IP:10.1.0.11)对外提供服务的

公网地址,则需要在 GW 上设置静态 NAT,配置过程如下:

GW(config)#ip nat inside source static 10.1.0.11 172.16.1.11 ---建立内部本地地址与内部全局地址之间的静态映射--- GW(config)#interface fastEthernet 0/0

GW(config-if)#ip nat inside ---指定该接口为 NAT 的内网接口--- GW(config-if)#exit

GW(config)#interface serial 1/0

GW(config-if)#ip nat outside ---指定该接口为 NAT 的内网接口--- GW(config-if)#end

可以通过命令 show ip nat translations 来验证 NAT 的设置,操作过程如下:

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global --- 172.16.1.11 10.1.0.11 --- ---

也可以在 GW 上执行 debug ip nat 命令来观察 NAT 的转换过程,然后在 PC2 上 ping 172.16.1.11

(Server11 的内部全局地址),可以看到如下信息:

GW#debug ip nat IP NAT debugging is on *May 18 20:16:21.355: NAT*: s=172.16.2.2, d=172.16.1.11->10.1.0.11 [23887] ---对 ICMP 请求报文的源地址进行 NAT 转换--- *May 18 20:16:21.415: NAT*: s=10.1.0.11->172.16.1.11, d=172.16.2.2 [23887] ---对 ICMP 响应报文的目的地址进行 NAT 转换---

同样,也可以从 PC2 通过地址 172.16.1.11 访问 Server11 提供的网络服务。

2.动态 NAT

这种类型的 NAT 可以实现映射一个内部本地地址到公网地址池中的一个内部全局地址的映

射,这个映射过程是动态分配的,所以这种类型的 NAT 不像静态 NAT 需要手工地在路由器上建立

映射,可以用于企业内部主机对外部网络的访问。

假设使用地址池(172.16.1.12-13)作为内部主机(IP:10.2.0.0/24)访问外部网络的公网地址,

则需要在 GW 上设置动态的 NAT,配置过程如下:

GW(config)#access-list 2 permit 10.2.0.0 0.0.0.255 ---通过 ACL 定义哪些内部本地地址可以用于 NAT 的转换---

GW(config)#ip nat pool TEST 172.16.1.12 172.16.1.13 netmask 255.255.255.0 ---用于 NAT 的公网地址池,即内部全局地址---

GW(config)#ip nat inside source list 2 pool TEST ---用于将内部本地地址和内部全局地址关联起来--- GW(config)#interface fastEthernet 0/1

GW(config-if)#ip nat inside ---指定该接口为 NAT 的内网接口--- GW(config-if)#exit

GW(config)#interface serial 1/0

GW(config-if)#ip nat outside ---指定该接口为 NAT 的内网接口--- GW(config-if)#end

(24)

1 1 C ha p te r

我们依次从 PC21、PC22、PC23 去访问 Internet 上的服务器 Server1(IP:172.16.2.1),会发现

PC21 和 PC22 能够正常访问,PC23 访问超时,使用 show ip nat translations 来验证 NAT 的表项,

显示如下:

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global --- 172.16.1.11 10.1.0.11 --- --- --- 172.16.1.12 10.2.0.21 --- --- --- 172.16.1.13 10.2.0.22 --- ---

这是因为公网地址池只有两个地址,PC21 和 PC22 先于 PC23 访问已经占用了地址池中所有可

用的地址,PC23 访问时已经没有可用的公网地址了,所以访问超时,可见这种动态 NAT 并没有真

正地解决地址不够用的问题,如果想让内部成百上千的主机都能同时使用内部全局地址池中有限数

量的公网地址访问外面的网络,需要部署 PAT。

3.PAT

PAT 实际上是动态 NAT 的一种高级形式,它映射多个私网 IP 地址(内部本地地址)到一个公

网 IP 地址(内部全局地址),并通过记录和跟踪每个不同会话的端口来区分内网主机,也被称为端

口复用的地址转换 PAT,广泛用于企业、园区、学校的网络中,从而解决了网络地址不够用的问题。

假设使用地址池(172.16.1.12-13)作为内部主机(IP:10.2.0.0/24)访问外部网络的公网地址,

并且要实现所有的主机都可以同时使用地址池中的公网地址访问外网,则需要在 GW 上设置 PAT,

配置过程如下:

GW(config)#access-list 2 permit 10.2.0.0 0.0.0.255 ---通过 ACL 定义哪些内部本地地址可以用于 NAT 的转换---

GW(config)#ip nat pool TEST 172.16.1.12 172.16.1.13 netmask 255.255.255.0 ---用于 NAT 的公网地址池,即内部全局地址---

GW(config)#ip nat inside source list 2 pool TEST overload

---将内部本地地址和内部全局地址关联起来,并在转换时记录会话端口--- GW(config)#interface fastEthernet 0/1

GW(config-if)#ip nat inside ---指定该接口为 NAT 的内网接口--- GW(config-if)#exit

GW(config)#interface serial 1/0

GW(config-if)#ip nat outside ---指定该接口为 NAT 的内网接口--- GW(config-if)#end

我们依次从 PC21、PC22、PC23 去访问 Internet 上的服务器 Server1(IP:172.16.2.1),会发现

所有的主机都能正常访问,使用 show ip nat translations 来验证 NAT,显示如下:

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global --- 172.16.1.11 10.1.0.11 --- --- icmp 172.16.1.13:1026 10.2.0.21:54122 172.16.2.1:54122 172.16.2.1:1026 icmp 172.16.1.13:1029 10.2.0.22:54890 172.16.2.1:54890 172.16.2.1:1029 icmp 172.16.1.13:1038 10.2.0.23:56170 172.16.2.1:56170 172.16.2.1:1038

通过上面的显示可以看出,PAT 通过记录端口号来区分不同的网络会话,实现了多个内部本地

地址对一个公网地址的复用。在有些情况下 NAT 设备连接外面网络的接口是动态获取地址的,每

次获取的地址信息不一致,无法确定地址池的范围,这时可以设置让内部的主机将该接口的公网地

址作为内部全局地址来访问外网,操作过程如下:

GW(config)#access-list 2 permit 10.2.0.0 0.0.0.255

(25)

1 1 C ha p te r ---通过 ACL 定义哪些内部本地地址可以用于 NAT 的转换--- GW(config)#ip nat inside source list 2 interface serial 1/0 overload

---将内部本地地址和外部接口关联,并将该接口地址作为 PAT 时的全局地址,同时在转换时记录会话端口--- GW(config)#interface fastEthernet 0/1

GW(config-if)#ip nat inside ---指定该接口为 NAT 的内网接口--- GW(config-if)#exit

GW(config)#interface serial 1/0

GW(config-if)#ip nat outside ---指定该接口为 NAT 的内网接口--- GW(config-if)#end

我们依次从 PC21、PC22、PC23 去访问 Internet 上的服务器 Server1(IP:172.16.2.1),会发现

所有的主机都能正常访问,使用 show ip nat translations 来验证 NAT,显示如下:

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global --- 172.16.1.11 10.1.0.11 --- --- icmp 172.16.1.1:1024 10.2.0.21:1135 172.16.2.1:1135 172.16.2.1:1024 icmp 172.16.1.1:1135 10.2.0.22:1135 172.16.2.1:1135 172.16.2.1:1135 icmp 172.16.1.1:1903 10.2.0.23:1903 172.16.2.1:1903 172.16.2.1:1903 GW#

11.4.4 使用 NAT 实现网络安全

NAT 不仅可以解决 IP 地址紧缺的问题,同时也能将内部网络和外部网络隔离,为网络提供一

定的安全保障,具体体现在以下两个方面:

静态 NAT 的安全特性:可以限定只有特定的服务才能进行 NAT 的转换,从外网来看只

能访问特定的网络服务,而内网访问不受限制,效果上相当于基本的防火墙。

PAT 的安全特性:对外屏蔽了内部网络,使外部网络不能直接对内部网络进行访问,起

到了安全隔离的作用。

如果在规划网络时想要将 172.16.1.11 作为企业服务器 Server11(IP:10.1.0.11)对外提供的 Web

服务,则需要在 GW 上设置静态 NAT,配置过程如下:

GW(config)#ip nat inside source static tcp 10.1.0.11 80 172.16.1.11 80 ---建立内部本地地址与内部全局地址之间的 Web 访问的静态映射--- GW(config)#interface fastEthernet 0/0

GW(config-if)#ip nat inside ---指定该接口为 NAT 的内网接口--- GW(config-if)#exit

GW(config)#interface serial 1/0

GW(config-if)#ip nat outside ---指定该接口为 NAT 的内网接口--- GW(config-if)#end

通过上面的配置,使得从 Internet 上的主机仅能通过 172.16.1.11 访问 Server11 提供的 Web 服

务,而从内网访问 Server11 的一切服务均可自由访问,保证了从外网访问时的安全。

11.5 实训案例

11.5.1 实验环境

(26)

1 1 C ha p te r ▲图 11-16 实验拓扑

实验说明:Server11 模拟服务器对外提供 Web 服务,同时对内提供 Web 和 FTP 服务;Server12

为财务服务器,只能由 VLAN10 财务部的用户访问;Server1 模拟 Internet 公网 Web 服务器;Test_PC

为测试机,根据测试需要随时调整地址信息完成实验的测试任务。本次实验中所有的设备均已经配

置了地址信息。

实验设备:本次实验的设备如表 11-2 所示。

▲表 11-2 实验设备 设备名称 设备类型 平台版本 实现方式 ISP 路由器 C7200-JK9O3S-M,Version 12.4(25g) GNS3 1.3.9 GW 路由器 C7200-JK9O3S-M,Version 12.4(25g) GNS3 1.3.9

Core_SW 交换机 I86BI_LINUXL2-ADVENTERPRISEK9-M,V15.1 IOU

Internet_SW 交换机 普通非网管 GNS3 1.3.9 DMZ_SW 交换机 普通非网管 GNS3 1.3.9 Server1 服务器 C7200-JK9O3S-M,Version 12.4(25g) GNS3 1.3.9 Server11 服务器 C7200-JK9O3S-M,Version 12.4(25g) GNS3 1.3.9 Server12 服务器 C7200-JK9O3S-M,Version 12.4(25g) GNS3 1.3.9 Host10 PC 机 VPCS (Version 0.6.1) GNS3 1.3.9 Host20 PC 机 VPCS (Version 0.6.1) GNS3 1.3.9 Host30 PC 机 VPCS (Version 0.6.1) GNS3 1.3.9 Test_PC PC 机 物理机(通过 VMnet1 桥接) 本地主机

地址分配:本次实验的地址分配如表 11-3 所示。

(27)

1 1 C ha p te r ▲表 11-3 地址分配 设备 接口 IP 地址 子网掩码 网关 备注 f0/0 172.16.2.254 255.255.255.0 — ISP s1/0 172.16.1.2 255.255.255.0 — s1/0 172.16.1.1 255.255.255.0 — f0/0 10.1.0.254 255.255.255.0 — GW f0/1 10.2.0.1 255.255.255.0 — e0/0 10.2.0.2 255.255.255.0 — VLAN10 10.2.10.254 255.255.255.0 — VLAN20 10.2.20.254 255.255.255.0 — Core_SW VLAN30 10.2.30.254 255.255.255.0 — Server1 e0 172.16.2.1 255.255.255.0 172.16.2.254 Server11 e0 10.1.1.11 255.255.255.0 10.1.1.254 Server12 e0 10.1.1.12 255.255.255.0 10.1.1.254 由 路 由 器 模 拟 服 务器 Host10 e0 10.2.10.10 255.255.255.0 10.2.10.254 Host20 e0 10.2.20.20 255.255.255.0 10.2.20.254 Host30 e0 10.2.30.30 255.255.255.0 10.2.30.254 Test_PC VMnet1 在实验步骤中根据任务进行调整

11.5.2 实验目的

掌握使用标准 ACL 限制路由器的安全管理。

掌握使用扩展 ACL 限制网络的安全访问。

掌握使用静态 NAT 对外提供安全的网络服务。

掌握使用 PAT 实现多个内外主机对外网的同时访问。

11.5.3 实验过程

任务一:设备的基础设置(路由器的地址信息已做了预设置)

关闭 Server11 的路由功能并设置网关,使其成为一台服务器并启用 Web 服务。

Server11(config)#no ip routing ---关闭路由功能--- Server11(config)#interface fastEthernet 0/0 Server11(config-if)#ip address 10.1.1.11 255.255.255.0 ---设置接口地址--- Server11(config-if)#no shut Server11(config-if)#exit Server11(config)#ip default-gateway 10.1.1.254 ---设置默认网关---

Server11(config)#ip http server ---用 Web 功能模拟 Web 服务器---

用同样的方式将 Server12 和 Server 配置成一台 Web 服务器(操作过程略)

在 GW 上设置。

(28)

1 1 C ha p te r

GW(config)#ip route 0.0.0.0 0.0.0.0 serial 1/0

按照规划配置 Core_SW 接口所属的 VLAN 和对于 SVI 接口的地址。

Core_SW(config)#vlan 10,20,30

Core_SW(config-vlan)#exit

Core_SW(config)#interface ethernet 0/1 Core_SW(config-if)#switchport mode access Core_SW(config-if)#switchport access vlan 10 Core_SW(config-if)#exit

Core_SW(config)#interface ethernet 0/2 Core_SW(config-if)#switchport mode access Core_SW(config-if)#switchport access vlan 20 Core_SW(config-if)#exit

Core_SW(config)#interface ethernet 0/3 Core_SW(config-if)#switchport mode access Core_SW(config-if)#switchport access vlan 30 Core_SW(config-if)#exit Core_SW(config)#interface vlan 10 Core_SW(config-if)#ip address 10.2.10.254 255.255.255.0 Core_SW(config-if)#no shutdown Core_SW(config-if)#exit Core_SW(config)#interface vlan 20 Core_SW(config-if)#ip address 10.2.20.254 255.255.255.0 Core_SW(config-if)#no shutdown Core_SW(config-if)#exit Core_SW(config)#interface vlan 30 Core_SW(config-if)#ip address 10.2.30.254 255.255.255.0 Core_SW(config-if)#no shutdown Core_SW(config-if)#exit

设置 Core_SW 的 e0/0 接口地址和默认路由。

Core_SW(config)#interface ethernet 0/0 Core_SW(config-if)#no switchport Core_SW(config-if)#ip address 10.2.0.2 255.255.255.0 Core_SW(config-if)#no shutdown Core_SW(config-if)#exit

Core_SW(config)#ip route 0.0.0.0 0.0.0.0 ethernet 0/0 10.2.0.1

测试从内部主机(如 Host20)到 Server11 的连通性。

Host20> ping 10.2.20.254

84 bytes from 10.2.20.254 icmp_seq=1 ttl=255 time=0.000 ms 84 bytes from 10.2.20.254 icmp_seq=2 ttl=255 time=12.500 ms 84 bytes from 10.2.20.254 icmp_seq=3 ttl=255 time=0.000 ms 84 bytes from 10.2.20.254 icmp_seq=4 ttl=255 time=0.000 ms 84 bytes from 10.2.20.254 icmp_seq=5 ttl=255 time=0.000 ms Host20>

任务二:使用标准 ACL 限制路由器的安全管理

在 GW 的 VTY 终端上启用 Telnet 远程管理的功能,Telnet 密码为 cisco。

GW(config)#line vty 0 9

GW(config-line)#password cisco GW(config-line)#login

(29)

1 1 C ha p te r

分别从 Server11 和 Core_SW 上 Telnet 到 GW,之后在 GW 查看用户登录的情况。

Server11#telnet 10.1.1.254

Trying 10.1.1.254 ... Open User Access Verification Password:

GW>

Core_SW#telnet 10.2.0.1 Trying 10.2.0.1 ... Open User Access Verification Password:

GW>

GW#show users

Line User Host(s) Idle Location * 0 con 0 idle 00:00:00 2 vty 0 idle 00:00:49 10.1.1.11 3 vty 1 idle 00:00:05 10.2.0.2 Interface User Mode Idle Peer Address GW#

设置标准的 ACL(名称为 ACL1)

,并应用于 GW 的 line 模式中,使路由器 GW 仅能通

过技术部所在的子网进行远程管理。

GW(config)#ip access-list standard ACL1

GW(config-std-nacl)#permit 10.2.20.0 0.0.0.255 GW(config-std-nacl)#exit

GW(config)#line vty 0 9

GW(config-line)#access-class ACL1 in GW(config-line)#end

从 GW 清除所有远程登录的用户,再次分别从 Server11 和 Core_SW 上 Telnet 到 GW,观

察信息提示。

GW#clear line vty 0 [confirm]

[OK]

GW#clear line vty 1 [confirm]

[OK] GW#

Server11#telnet 10.1.1.254 Trying 10.1.1.254 ...

% Connection refused by remote host ---提示拒绝访问--- Server11#

Core_SW#telnet 10.2.0.1 Trying 10.2.0.1 ...

% Connection refused by remote host ---提示拒绝访问--- Core_SW#

(30)

1 1 C ha p te r

从 Core_SW 上使用 VLAN20 的 SVI 接口地址登录 GW(模拟技术部的主机,因为 VPCS

不支持 Telnet 命令,也可以将 Test_PC 连接到 Core_SW 的 VLAN20 中进行测试)。

Core_SW#telnet 10.2.0.1 /source-interface vlan 20

Trying 10.2.0.1 ... Open User Access Verification Password:

GW>

任务三:使用扩展 ACL 实现仅财务部的主机能访问 Server12 服务器

配置扩展 ACL(名称为 ACL2)

,并应用于 GW 的 F0/0 接口的出口方向。

GW(config)#ip access-list extended ACL2

GW(config-ext-nacl)#permit ip 10.2.10.0 0.0.0.255 host 10.1.1.12 GW(config-ext-nacl)#deny ip any host 10.1.1.12

GW(config-ext-nacl)#permit ip any any GW(config-ext-nacl)#exit

GW(config)#interface fastEthernet 0/0 GW(config-if)#ip access-group ACL2 out GW(config-if)#end

在 GW 上验证 ACL 的配置及应用情况。

GW#show access-lists

Standard IP access list ACL1

10 permit 10.2.20.0, wildcard bits 0.0.0.255 (2 matches) Extended IP access list ACL2

10 permit ip 10.2.10.0 0.0.0.255 host 10.1.1.12 20 deny ip any host 10.1.1.12

30 permit ip any any GW#show ip interface

FastEthernet0/0 is up, line protocol is up Internet address is 10.1.1.254/24 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes

Helper address is not set

Directed broadcast forwarding is disabled

Outgoing access list is ACL2 ---ACL2 在接口上的应用--- Inbound access list is not set

--More—

从 Host10 分别测试到 Server11 和 Server12 的连通性。

Host10> ping 10.1.1.11

84 bytes from 10.1.1.11 icmp_seq=1 ttl=253 time=22.500 ms 84 bytes from 10.1.1.11 icmp_seq=3 ttl=253 time=17.500 ms Host10> ping 10.1.1.12

84 bytes from 10.1.1.12 icmp_seq=1 ttl=253 time=31.200 ms 84 bytes from 10.1.1.12 icmp_seq=3 ttl=253 time=25.000 ms

从 Host20 分别测试到 Server11 和 Server12 的连通性。

Host20> ping 10.1.1.11

(31)

1 1 C ha p te r

84 bytes from 10.1.1.11 icmp_seq=2 ttl=253 time=27.500 ms Host20> ping 10.1.1.12

10.1.1.12 icmp_seq=1 timeout 10.1.1.12 icmp_seq=1 timeout

从 Host30 分别测试到 Server11 和 Server12 的连通性。

Host30> ping 10.1.1.11

84 bytes from 10.1.1.11 icmp_seq=1 ttl=253 time=18.001 ms 84 bytes from 10.1.1.11 icmp_seq=2 ttl=253 time=20.001 ms Host30> ping 10.1.1.12

10.1.1.12 icmp_seq=1 timeout 10.1.1.12 icmp_seq=1 timeout

任务四:设置静态 NAT 使外网可以访问 Server11 的 Web 服务

在 GW 上建立内部本地地址(10.1.1.11)到内部全局地址(172.16.1.11)Web 服务的映射。

GW(config)#ip nat inside source static tcp 10.1.1.11 80 172.16.1.11 80

在 GW 上设置静态 NAT 的内部接口和外部接口并验证设置。

GW(config)#interface fastEthernet 0/0

GW(config-if)#ip nat inside GW(config-if)#exit

GW(config)#interface serial 1/0 GW(config-if)#ip nat outside GW(config-if)#end

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global tcp 172.16.1.11:80 10.1.1.11:80 --- --- GW#

将 Test_PC 连接到 Internet_SW,

并设置其网络参数(IP:172.16.2.20;MASK:255.255.255.0;

GW:172.16.2.254)

,之后访问 Server11 的公网地址(172.16.1.11),如图 11-17 所示。

(32)

1 1 C ha p te r

在 Server11 上开启 Telnet 服务,不用验证,在 Core_SW 上进行测试。

Server11(config)#line vty 0 9 Server11(config-line)#no login Server11(config-line)#^Z Core_SW>telnet 10.1.1.11 Trying 10.1.1.11 ... Open Server11>

从 Test_PC 远程 Telnet 到 Server11 响应超时

(效果上相当于 Server11 对外仅提供 Web 服务)。

C:\Documents and Settings\Administrator>telnet 172.16.1.11

---正在连接到 172.16.1.11……不能打开到主机的连接,在端口 23: 连接失败---

任务五:设置 PAT 使内部主机能够访问 Internet

定义内部主机访问外网时使用的公网地址池(PATPOOL:172.16.1.12-13,即内部全局

地址)。

GW(config)#ip nat pool PATPOOL 172.16.1.12 172.16.1.13 netmask 255.255.255.0

通过 ACL(名称为 PATACL)限定可以使用公网地址的内部主机。

GW(config)#ip access-list standard PATACL

GW(config-std-nacl)#permit 10.2.10.0 0.0.0.255 GW(config-std-nacl)#permit 10.2.20.0 0.0.0.255 GW(config-std-nacl)#permit 10.2.30.0 0.0.0.255 GW(config-std-nacl)#end

将内部主机与对应的公网地址池进行关联并启用端口复用特性,之后标注接口。

GW(config)#ip nat inside source list PATACL pool PATPOOL overload

GW(config)#interface fastEthernet 0/1 GW(config-if)#ip nat inside GW(config-if)#end

分别从 Host10、Host20、Host30 使用 ping 命令测试到 Server1(172.16.2.1)的网络连通

性(PAT 的效果)。

Host10> ping 172.16.2.1

84 bytes from 172.16.2.1 icmp_seq=1 ttl=252 time=37.500 ms 84 bytes from 172.16.2.1 icmp_seq=2 ttl=252 time=50.001 ms Host20> ping 172.16.2.1

84 bytes from 172.16.2.1 icmp_seq=1 ttl=252 time=93.600 ms 84 bytes from 172.16.2.1 icmp_seq=2 ttl=252 time=37.501 ms Host30> ping 172.16.2.1

84 bytes from 172.16.2.1 icmp_seq=1 ttl=252 time=35.001 ms 84 bytes from 172.16.2.1 icmp_seq=2 ttl=252 time=37.002 ms

在 GW 上查看 NAT 的允许情况。

GW#show ip nat translations

Pro Inside Global Inside Local Outside Local Outside Global tcp 172.16.1.11:80 10.1.1.11:80 --- --- icmp 172.16.1.12:469 10.2.10.10:469 172.16.2.1:469 172.16.2.1:469 icmp 172.16.1.12:725 10.2.10.10:725 172.16.2.1:725 172.16.2.1:725 … icmp 172.16.1.12:5333 10.2.20.20:5333 172.16.2.1:5333 172.16.2.1:5333 icmp 172.16.1.12:5589 10.2.20.20:5589 172.16.2.1:5589 172.16.2.1:5589

參考文獻

相關文件

May calm and mindful practice seed of patience and equanimity deep, May we give rise to spacious hearts and humble thoughts of gratitude.

(一) 建議人姓名、住址;建議人為法人或機關、團體者,其 名稱、負責人及地址。. (二)

此位址致能包括啟動代表列與行暫存器的 位址。兩階段的使用RAS與CAS設定可以

E-mail   通訊地址 任職單位/.

[r]

職銜 地址 電話 傳真 電郵地址...

地址:香港灣仔皇后大道東 213 號 胡忠大廈 13 樓 1329 室 課程發展議會秘書處 傳真:2573 5299 或 2575 4318

实验教学中心3个(含 29个专业实验室)、广 东省联合培养研究生示 范基地1个、广东省高校 产学研结合示范基地1个、.