您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页防火墙的发展史

防火墙的发展史

来源:汇意旅游网


防火墙的发展史

第一代防火墙

第一代防火墙技术几乎与路由器同时出现,采用了包过滤(Packet filter)技术。下图表示了防火墙技术的简单发展历史。

第二、三代防火墙

19年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙——应用层防火墙(代理防火墙)的初步结构。

防火墙

1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic packet filter)技术的防火墙,后来演变为目前所说的状态监视(Stateful inspection)技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。

第五代防火墙

1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品Gauntlet Firewall for NT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。

防火墙未来的技术发展趋势

随着新的网络攻击的出现,防火墙技术也有一些新的发展趋势。这主要可以从包过滤技术、防火墙体系结构和防火墙系统管理三方面来体现。

1. 防火墙包过滤技术发展趋势

(1). 一些防火墙厂商把在AAA系统上运用的用户认证及其服务扩展到防火墙中,使其拥有可以支持基于用户角色的安全策略功能。该功能在无线网络应用中非常必要。具有用户身份验证的防火墙通常是采用应用级网关技术的,包过滤技术的防火墙不具有。用户身份验证功能越强,它的安全级别越高,但它给网络通信带来的负面影响也越大,因为用户身份验证需要时间,特别是加密型的用户身份验证。

(2). 多级过滤技术

所谓多级过滤技术,是指防火墙采用多级过滤措施,并辅以鉴别手段。在分组过滤(网络层)一级,过滤掉所有的源路由分组和假冒的IP源地址;在传输层一级,遵循过滤规则,过滤掉所有禁止出或/和入的协议和有害数据包如nuke包、圣诞树包等;在应用网关(应用层)一级,能利用FTP、SMTP等各种网关,控制和监测Internet提供的所用通用服务。这是针对以上各种已有防火墙技术的不足而产生的一种综合型过滤技术,它可以弥补以上各种单独过滤技术的不足。

这种过滤技术在分层上非常清楚,每种过滤技术对应于不同的网络层,从这个概念出发,又有很多内容可以扩展,为将来的防火墙技术发展打下基础。

(3). 使防火墙具有病毒防护功能。现在通常被称之为\"病毒防火墙\",当然目前主要还是在个人防火墙中体现,因为它是纯软件形式,更容易实现。这种防火墙技术可以有效

地防止病毒在网络中的传播,比等待攻击的发生更加积极。拥有病毒防护功能的防火墙可以大大减少公司的损失。

2. 防火墙的体系结构发展趋势

随着网络应用的增加,对网络带宽提出了更高的要求。这意味着防火墙要能够以非常高的速率处理数据。另外,在以后几年里,多媒体应用将会越来越普遍,它要求数据穿过防火墙所带来的延迟要足够小。为了满足这种需要,一些防火墙制造商开发了基于ASIC的防火墙和基于网络处理器的防火墙。从执行速度的角度看来,基于网络处理器的防火墙也是基于软件的解决方案,它需要在很大程度上依赖于软件的性能,但是由于这类防火墙中有一些专门用于处理数据层面任务的引擎,从而减轻了CPU的负担,该类防火墙的性能要比传统防火墙的性能好许多。

与基于ASIC的纯硬件防火墙相比,基于网络处理器的防火墙具有软件色彩,因而更加具有灵活性。基于ASIC的防火墙使用专门的硬件处理网络数据流,比起前两种类型的防火墙具有更好的性能。但是纯硬件的ASIC防火墙缺乏可编程性,这就使得它缺乏灵活性,从而跟不上防火墙功能的快速发展。理想的解决方案是增加ASIC芯片的可编程性,使其与软件更好地配合。这样的防火墙就可以同时满足来自灵活性和运行性能的要求。

首信CF-2000 系列EP-600和CG-600高端千兆防火墙即采用了功能强大的可编程专有ASIC芯片作为专门的安全引擎,很好地兼顾了灵活性和性能的需要。它们可以以线速处理网络流量,而且其性能不受连接数目、包大小以及采用何种策略的影响。该款防火墙支持QoS,所造成的延迟可以达到微秒量级,可以满足各种交互式多媒体应用的要求。浙大网新也在杭州正式发布三款基于ASIC芯片的网新易尚千兆系列网关防火墙,据称,其ES4000防火墙速度达到4Gbps,3DES速度可达600Mbps。易尚系列千兆防火墙还采用

了最新的安全网关概念,集成了防火墙、VPN、IDS、防病毒、内容过滤和流量控制等多项功能。

3. 防火墙的系统管理发展趋势

防火墙的系统管理也有一些发展趋势,主要体现在以下几个方面:

(1). 首先是集中式管理,分布式和分层的安全结构是将来的趋势。集中式管理可以降低管理成本,并保证在大型网络中安全策略的一致性。快速响应和快速防御也要求采用集中式管理系统。目前这种分布式防火墙早已在Cisco(思科)、3Com等大的网络设备开发商中开发成功,也就是目前所称的\"分布式防火墙\"和\"嵌入式防火墙\"。关于这一新技术在本篇下面将详细介绍。

(2). 强大的审计功能和自动日志分析功能。这两点的应用可以更早地发现潜在的威胁并预防攻击的发生。日志功能还可以管理员有效地发现系统中存的安全漏洞,及时地调整安全策略等各方面管理具有非常大的帮助。不过具有这种功能的防火墙通常是比较高级的,早期的静态包过滤防火墙是不具有的。

(3). 网络安全产品的系统化

随着网络安全技术的发展,现在有一种提法,叫做\"建立以防火墙为核心的网络安全体系\"。因为我们在现实中发现,仅现有的防火墙技术难以满足当前网络安全需求。通过建立一个以防火墙为核心的安全体系,就可以为内部网络系统部署多道安全防线,各种安全技术各司其职,从各方面防御外来入侵。

如现在的IDS设备就能很好地与防火墙一起联合。一般情况下,为了确保系统的通信性能不受安全设备的影响太大,IDS设备不能像防火墙一样置于网络入口处,只能置于旁路位置。而在实际使用中,IDS的任务往往不仅在于检测,很多时候在IDS发现入侵行为以后,也需要IDS本身对入侵及时遏止。显然,要让处于旁路侦听的IDS完成这个任务又太难为,同时主链路又不能串接太多类似设备。在这种情况下,如果防火墙能和IDS、病毒检测等相关安全产品联合起来,充分发挥各自的长处,协同配合,共同建立一个有效的安全防范体系,那么系统网络的安全性就能得以明显提升。

目前主要有两种解决办法:一种是直接把IDS、病毒检测部分直接\"做\"到防火墙中,使防火墙具有IDS和病毒检测设备的功能;另一种是各个产品分立,通过某种通讯方式形成一个整体,一旦发现安全事件,则立即通知防火墙,由防火墙完成过滤和报告。目前更看重后一种方案,因为它实现方式较前一种容易许多。

一. 防火墙的基本配置原则

默认情况下,所有的防火墙都是按以下两种情况配置的:

●拒绝所有的流量,这需要在你的网络中特殊指定能够进入和出去的流量的一些类型。

●允许所有的流量,这种情况需要你特殊指定要拒绝的流量的类型。可论证地,大多数防火墙默认都是拒绝所有的流量作为安全选项。一旦你安装防火墙后,你需要打开一些必要的端口来使防火墙内的用户在通过验证之后可以访问系统。换句话说,如果你想让你的员工们能够发送和接收Email,你必须在防火墙上设置相应的规则或开启允许POP3和SMTP的进程。

在防火墙的配置中,我们首先要遵循的原则就是安全实用,从这个角度考虑,在防火墙的配置过程中需坚持以下三个基本原则:

(1). 简单实用:对防火墙环境设计来讲,首要的就是越简单越好。其实这也是任何事物的基本原则。越简单的实现方式,越容易理解和使用。而且是设计越简单,越不容易出错,防火墙的安全功能越容易得到保证,管理也越可靠和简便。

每种产品在开发前都会有其主要功能定位,比如防火墙产品的初衷就是实现网络之间的安全控制,入侵检测产品主要针对网络非法行为进行监控。但是随着技术的成熟和发展,这些产品在原来的主要功能之外或多或少地增加了一些增值功能,比如在防火墙上增加了查杀病毒、入侵检测等功能,在入侵检测上增加了病毒查杀功能。但是这些增值功能并不是所有应用环境都需要,在配置时我们也可针对具体应用环境进行配置,不必要对每一功能都详细配置,这样一则会大大增强配置难度,同时还可能因各方面配置不协调,引起新的安全漏洞,得不偿失。

(2). 全面深入:单一的防御措施是难以保障系统的安全的,只有采用全面的、多层次的深层防御战略体系才能实现系统的真正安全。在防火墙配置中,我们不要停留在几个表面的防火墙语句上,而应系统地看等整个网络的安全防护体系,尽量使各方面的配置相互加强,从深层次上防护整个系统。这方面可以体现在两个方面:一方面体现在防火墙系统的部署上,多层次的防火墙部署体系,即采用集互联网边界防火墙、部门边界防火墙和主机防火墙于一体的层次防御;另一方面将入侵检测、网络加密、病毒查杀等多种安全措施结合在一起的多层安全体系。

(3). 内外兼顾:防火墙的一个特点是防外不防内,其实在现实的网络环境中,80%以上的威胁都来自内部,所以我们要树立防内的观念,从根本上改变过去那种防外不防内

的传统观念。对内部威胁可以采取其它安全措施,比如入侵检测、主机防护、漏洞扫描、病毒查杀。这方面体现在防火墙配置方面就是要引入全面防护的观念,最好能部署与上述内部防护手段一起联动的机制。目前来说,要做到这一点比较困难。

二、防火墙的初始配置

像路由器一样,在使用之前,防火墙也需要经过基本的初始配置。但因各种防火墙的初始配置基本类似,所以在此仅以Cisco PIX防火墙为例进行介绍。

防火墙的初始配置也是通过控制端口(Console)与PC机(通常是便于移动的笔记本电脑)的串口连接,再通过Windows系统自带的超级终端(HyperTerminal)程序进行选项配置。防火墙的初始配置物理连接与前面介绍的交换机初始配置连接方法一样,参见图1所示。

图1

防火墙除了以上所说的通过控制端口(Console)进行初始配置外,也可以通过telnet和Tffp配置方式进行高级配置,但Telnet配置方式都是在命令方式中配置,难度较大,而Tffp方式需要专用的Tffp服务器软件,但配置界面比较友好。

防火墙与路由器一样也有四种用户配置模式,即:普通模式(Unprivileged mode)、特权模式(Privileged Mode)、配置模式(Configuration Mode)和端口模式(Interface Mode),进入这四种用户模式的命令也与路由器一样:

普通用户模式无需特别命令,启动后即进入;

进入特权用户模式的命令为\"enable\";进入配置模式的命令为\"config terminal\";而进入端口模式的命令为\"interface ethernet()\"。不过因为防火墙的端口没有路由器那么复杂,所以通常把端口模式归为配置模式,统称为\"全局配置模式\"。

防火墙的具体配置步骤如下:

1. 将防火墙的Console端口用一条防火墙自带的串行电缆连接到笔记本电脑的一个空余串口上,参见图1。

2. 打开PIX防火电源,让系统加电初始化,然后开启与防火墙连接的主机。??

3. 运行笔记本电脑Windows系统中的超级终端(HyperTerminal)程序(通常在\"附件\"程序组中)。对超级终端的配置与交换机或路由器的配置一样,参见本教程前面有关介绍。

4. 当PIX防火墙进入系统后即显示\"pixfirewall>\"的提示符,这就证明防火墙已启动成功,所进入的是防火墙用户模式。可以进行进一步的配置了。?

5. 输入命令:enable,进入特权用户模式,此时系统提示为:pixfirewall#。??

6. 输入命令: configure terminal,进入全局配置模式,对系统进行初始化设置。?

(1). 首先配置防火墙的网卡参数(以只有1个LAN和1个WAN接口的防火墙配置为例)?

Interface ethernet0 auto?? # 0号网卡系统自动分配为WAN网卡,\"auto\"选项为系

统自适应网卡类型

Interface ethernet1 auto?

(2). 配置防火墙内、外部网卡的IP地址?

IP address inside ip_address netmask? # Inside代表内部网卡

IP address outside ip_address netmask? # outside代表外部网卡

(3). 指定外部网卡的IP地址范围:?

global 1 ip_address-ip_address?

(4). 指定要进行转换的内部地址?

nat 1 ip_address netmask?

(5). 配置某些控制选项:?

conduit global_ip port[-port] protocol foreign_ip [netmask]

其中,global_ip:指的是要控制的地址;port:指的是所作用的端口,0代表所有端口;protocol:指的是连接协议,比如:TCP、UDP等;foreign_ip:表示可访问的global_ip外部IP地址;netmask:为可选项,代表要控制的子网掩码。?

7. 配置保存:wr mem?

8. 退出当前模式

此命令为exit,可以任何用户模式下执行,执行的方法也相当简单,只输入命令本身即可。它与Quit命令一样。下面三条语句表示了用户从配置模式退到特权模式,再退到普通模式下的操作步骤。

pixfirewall(config)# exit

pixfirewall# exit

pixfirewall>

9. 查看当前用户模式下的所有可用命令:show,在相应用户模式下键入这个命令后,即显示出当前所有可用的命令及简单功能描述。

10. 查看端口状态:show interface,这个命令需在特权用户模式下执行,执行后即显示出防火墙所有接口配置情况。

11. 查看静态地址映射:show static,这个命令也须在特权用户模式下执行,执行后显示防火墙的当前静态地址映射情况。

三、Cisco PIX防火墙的基本配置

1. 同样是用一条串行电缆从电脑的COM口连到Cisco PIX 525防火墙的console口;

2. 开启所连电脑和防火墙的电源,进入Windows系统自带的\"超级终端\",通讯参数可按系统默然。进入防火墙初始化配置,在其中主要设置有:Date(日期)、time(时间)、hostname(主机名称)、inside ip address(内部网卡IP地址)、domain(主域)等,完成后也就建立了一个初始化设置了。此时的提示符为:pix255>。

3. 输入enable命令,进入Pix 525特权用户模式,默然密码为空。

如果要修改此特权用户模式密码,则可用enable password命令,命令格式为:enable password password [encrypted],这个密码必须大于16位。Encrypted选项是确定所加密码是否需要加密。

4、 定义以太端口:先必须用enable命令进入特权用户模式,然后输入configure terminal(可简称为config t),进入全局配置模式模式。具体配置

pix525>enable

Password:

pix525#config t

pix525 (config)#interface ethernet0 auto

pix525 (config)#interface ethernet1 auto

在默然情况下ethernet0是属外部网卡outside, ethernet1是属内部网卡inside, inside在初始化配置成功的情况下已经被激活生效了,但是outside必须命令配置激活。

5. clock

配置时钟,这也非常重要,这主要是为防火墙的日志记录而资金积累的,如果日志记录时间和日期都不准确,也就无法正确分析记录中的信息。这须在全局配置模式下进行。

时钟设置命令格式有两种,主要是日期格式不同,分别为:

clock set hh:mm:ss month day month year和clock set hh:mm:ss day month year

前一种格式为:小时:分钟:秒 月 日 年;而后一种格式为:小时:分钟:秒 日 月 年,主要在日、月份的前后顺序不同。在时间上如果为0,可以为一位,如:21:0:0。

6. 指定接口的安全级别

指定接口安全级别的命令为nameif,分别为内、外部网络接口指定一个适当的安全级别。在此要注意,防火墙是用来保护内部网络的,外部网络是通过外部接口对内部网络构成威胁的,所以要从根本上保障内部网络的安全,需要对外部网络接口指定较高的安全级别,而内部网络接口的安全级别稍低,这主要是因为内部网络通信频繁、可信度高。在Cisco PIX系列防火墙中,安全级别的定义是由security()这个参数决定的,数字越小安全级别越高,所以security0是最高的,随后通常是以10的倍数递增,安全级别也相应降低。如下例:

pix525(config)#nameif ethernet0 outside security0?? # outside是指外部接口

pix525(config)#nameif ethernet1 inside security100 # inside是指内部接口

7. 配置以太网接口IP地址

所用命令为:ip address,如要配置防火墙上的内部网接口IP地址为:192.168.1.0 255.255.255.0;外部网接口IP地址为:220.1.20.0 255.255.255.0。 配置方法如下:

pix525(config)#ip address inside 192.168.1.0 255.255.255.0

pix525(config)#ip address outside 220.1.20.0 255.255.255.0

8. access-group

这个命令是把访问控制列表绑定在特定的接口上。须在配置模式下进行配置。命令格式为:access-group acl_ID in interface interface_name,其中的\"acl_ID\"是指访问控制列表名称,interface_name为网络接口名称。如:

access-group acl_out in interface outside,在外部网络接口上绑定名称为\"acl_out\"的访问控制列表。

clear access-group:清除所有绑定的访问控制绑定设置。

no access-group acl_ID in interface interface_name:清除指定的访问控制绑定设置。

show access-group acl_ID in interface interface_name:显示指定的访问控制绑定设置。

9.配置访问列表

所用配置命令为:access-list,合格格式比较复杂,如下:

标准规则的创建命令:access-list [ normal | special ] listnumber1 { permit | deny } source-addr [ source-mask ]

扩展规则的创建命令:access-list [ normal | special ] listnumber2 { permit | deny } protocol source-addr source-mask [ operator port1 [ port2 ] ] dest-addr dest-mask [ operator port1 [ port2 ] | icmp-type [ icmp-code ] ] [ log ]

它是防火墙的主要配置部分,上述格式中带\"[]\"部分是可选项,listnumber参数是规则号,标准规则号(listnumber1)是1~99之间的整数,而扩展规则号(listnumber2)是100~199之间的整数。它主要是通过访问权限\"permit\"和\"deny\"来指定的,网络协议一般有IP|TCP|UDP|ICMP等等。如只允许访问通过防火墙对主机:220.1.20.2进行www访问,则可按以下配置:

pix525(config)#access-list 100 permit 220.1.20.2 eq www

其中的100表示访问规则号,根据当前已配置的规则条数来确定,不能与原来规则的重复,也必须是正整数。关于这个命令还将在下面的高级配置命令中详细介绍。

10. 地址转换(NAT)

防火墙的NAT配置与路由器的NAT配置基本一样,首先也必须定义供NAT转换的内部IP地址组,接着定义内部网段。

定义供NAT转换的内部地址组的命令是nat,它的格式为:nat [(if_name)] nat_id local_ip [netmask [max_conns [em_limit]]],其中if_name为接口名;nat_id参数代表内部地址组号;而local_ip为本地网络地址;netmask为子网掩码;max_conns为此接口上所允许的最大TCP连接数,默认为\"0\",表示不连接;em_limit为允许从此端口发出的连接数,默认也为\"0\",即不。如:

nat (inside) 1 10.1.6.0 255.255.255.0

表示把所有网络地址为10.1.6.0,子网掩码为255.255.255.0的主机地址定义为1号NAT地址组。

随后再定义内部地址转换后可用的外部地址池,它所用的命令为global,基本命令格式为:

global? [(if_name)] nat_id global_ip [netmask [max_conns [em_limit]]] ,各参数解释同上。如:

global (outside) 1 175.1.1.3-175.1.1. netmask 255.255.255.0

将上述nat命令所定的内部IP地址组转换成175.1.1.3~175.1.1.的外部地址池中的外部IP地址,其子网掩耳盗铃码为255.255.255.0。

11. Port Redirection with Statics

这是静态端口重定向命令。在Cisco PIX版本6.0以上,增加了端口重定向的功能,允许外部用户通过一个特殊的IP地址/端口通过防火墙传输到内部指定的内部服务器。其中重定向后的地址可以是单一外部地址、共享的外部地址转换端口(PAT),或者是共享的外部端口。这种功能也就是可以发布内部WWW、FTP、Mail等服务器,这种方式并不是直接与内部服务器连接,而是通过端口重定向连接的,所以可使内部服务器很安全。

命令格式有两种,分别适用于TCP/UDP通信和非TCP/UDP通信:

(1). static[(internal_if_name, external_if_name)]local_ip[netmask mask]

max_conns [emb_limit[norandomseq]]]

(2). static [(internal_if_name, external_if_name)] global_port local_ip local_port [netmask mask] [max_conns [emb_limit [norandomseq]]]

此命令中的以上各参数解释如下:

internal_if_name:内部接口名称;external_if_name:外部接口名称;:选择通信协议类型;:重定向后的外部IP地址或共享端口;local_ip:本地IP地址;[netmask mask]:本地子网掩码;max_conns:允许的最大TCP连接数,默认为\"0\",即不;emb_limit:允许从此端口发起的连接数,默认也为\"0\",即不;norandomseq:不对数据包排序,此参数通常不用选。

现在我们举一个实例,实例要求如下

●外部用户向172.18.124.99的主机发出Telnet请求时,重定向到10.1.1.6。

●外部用户向172.18.124.99的主机发出FTP请求时,重定向到10.1.1.3。

●外部用户向172.18.124.208的端口发出Telnet请求时,重定向到10.1.1.4。

●外部用户向防火墙的外部地址172.18.124.216发出Telnet请求时,重定向到10.1.1.5。

●外部用户向防火墙的外部地址172.18.124.216发出HTTP请求时,重定向到10.1.1.5。

●外部用户向防火墙的外部地址172.18.124.208的8080端口发出HTTP请求时,重定向到10.1.1.7的80号端口。

以上重写向过程要求如图2所示,防火墙的内部端口IP地址为10.1.1.2,外部端口地址为172.18.124.216。

图2

以上各项重定向要求对应的配置语句如下:

static (inside,outside) tcp 172.18.124.99 telnet 10.1.1.6 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.99 ftp 10.1.1.3 ftp netmask 255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.208 telnet 10.1.1.4 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp interface telnet 10.1.1.5 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp interface www 10.1.1.5? www netmask 255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.208 8080 10.1.1.7 www netmask 255.255.255.255 0 0

12. 显示与保存结果

显示结果所用命令为:show config;保存结果所用命令为:write memory。??

四、包过滤型防火墙的访问控制表(ACL)配置

除了以上介绍的基本配置外,在防火墙的安全策略中最重要还是对访问控制列表(ACL)进行配有关置。下面介绍一些用于此方面配置的基本命令。

1. access-list:用于创建访问规则

这一访问规则配置命令要在防火墙的全局配置模式中进行。同一个序号的规则可以看作一类规则,同一个序号之间的规则按照一定的原则进行排列和选择,这个顺序可以通过 show access-list 命令看到。在这个命令中,又有几种命令格式,分别执行不同的命令。

(1)创建标准访问列表

命令格式:access-list [ normal | special ] listnumber1 { permit | deny } source-addr [ source-mask ]

(2)创建扩展访问列表

命令格式:access-list [ normal | special ] listnumber2 { permit | deny } protocol source-addr source-mask [ operator port1 [ port2 ] ] dest-addr dest-mask [ operator port1 [ port2 ] | icmp-type [ icmp-code ] ] [ log ]

(3)删除访问列表

命令格式:no access-list { normal | special } { all | listnumber [ subitem ] }

上述命令参数说明如下:

●normal:指定规则加入普通时间段。

●special:指定规则加入特殊时间段。

●listnumber1:是1到99之间的一个数值,表示规则是标准访问列表规则。

●listnumber2:是100到199之间的一个数值,表示规则是扩展访问列表规则。

●permit:表明允许满足条件的报文通过。

●deny:表明禁止满足条件的报文通过。

●protocol:为协议类型,支持ICMP、TCP、UDP等,其它的协议也支持,此时没有端口比较的概念;为IP时有特殊含义,代表所有的IP协议。

●source-addr:为源IP地址。

●source-mask:为源IP地址的子网掩码,在标准访问列表中是可选项,不输入则代表通配位为0.0.0.0。

●dest-addr:为目的IP地址。

●dest-mask:为目的地址的子网掩码。

●operator:端口操作符,在协议类型为TCP或UDP时支持端口比较,支持的比较操作有:等于(eq)、大于(gt)、小于(lt)、不等于(neq)或介于(range);如果操作符为range,则后面需要跟两个端口。

port1 在协议类型为TCP或UDP时出现,可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。port2 在协议类型为TCP或UDP且操作类型为range时出现;可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。

●icmp-type:在协议为ICMP时出现,代表ICMP报文类型;可以是关键字所设定的预设值(如echo-reply)或者是0~255之间的一个数值。

●icmp-code:在协议为ICMP,且没有选择所设定的预设值时出现;代表ICMP码,

是0~255之间的一个数值。

●log:表示如果报文符合条件,需要做日志。

●listnumber:为删除的规则序号,是1~199之间的一个数值。

●subitem:指定删除序号为listnumber的访问列表中规则的序号。例如,现要在华为的一款防火墙上配置一个\"允许源地址为10.20.10.0 网络、目的地址为10.20.30.0网络的WWW访问,但不允许使用FTP\"的访问规则。相应配置语句只需两行即可,如下:

Quidway (config)#access-list 100 permit tcp 10.20.10.0? 255.0.0.0? 10.20.30.0? 255.0.0.0? eq www

Quidway (config)#access-list 100 deny tcp 10.20.10.0? 255.0.0.0? 10.20.30.0? 255.0.0.0? eq ftp

2. clear access-list counters:清除访问列表规则的统计信息

命令格式:clear access-list counters [ listnumber ]

这一命令必须在特权用户模式下进行配置。listnumber 参数是用指定要清除统计信息的规则号,如不指定,则清除所有的规则的统计信息。

如要在华为的一款包过滤路由器上清除当前所使用的规则号为100的访问规则统计信息。访问配置语句为:

clear access-list counters 100

如有清除当前所使用的所有规则的统计信息,则以上语句需改为:Quidway#clear access-list counters

3. ip access-group

使用此命令将访问规则应用到相应接口上。使用此命令的no形式来删除相应的设置,对应格式为:

ip access-group listnumber { in | out }

此命令须在端口用户模式下配置,进入端口用户模式的命令为:interface ethernet(),括号中为相应的端口号,通常0为外部接口,而1为内部接口。进入后再用ip access-group 命令来配置访问规则。listnumber参数为访问规则号,是1~199之间的一个数值(包括标准访问规则和扩展访问规则两类);in 表示规则应用于过滤从接口接收到的报文;而out表示规则用于过滤从接口转发出去的报文。一个接口的一个方向上最多可以应用20类不同的规则;这些规则之间按照规则序号的大小进行排列,序号大的排在前面,也就是优先级高。对报文进行过滤时,将采用发现符合的规则即得出过滤结果的方法来加快过滤速度。所以,建议在配置规则时,尽量将对同一个网络配置的规则放在同一个序号的访问列表中;在同一个序号的访问列表中,规则之间的排列和选择顺序可以用show access-list命令来查看。例如将规则100应用于过滤从外部网络接口上接收到的报文,配置语句为(同样为在倾为包过滤路由器上):

ip access-group 100 in

如果要删除某个访问控制表列绑定设置,则可用no ip access-group listnumber { in | out } 命令。

4. show access-list

此配置命令用于显示包过滤规则在接口上的应用情况。命令格式为:show access-list [ all | listnumber | interface interface-name ]

这一命令须在特权用户模式下进行配置,其中all参数表示显示所有规则的应用情况,包括普通时间段内及特殊时间段内的规则;如果选择listnumber参数,则仅需显示指定规则号的过滤规则;interface 表示要显示在指定接口上应用的所有规则序号;interface-name参数为接口的名称。

使用此命令来显示所指定的规则,同时查看规则过滤报文的情况。每个规则都有一个相应的计数器,如果用此规则过滤了一个报文,则计数器加1;通过对计数器的观察可以看出所配置的规则中,哪些规则是比较有效,而哪些基本无效。例如,现在要显示当前所使用序号为100的规则的使用情况,可执行Quidway#show access-list 100语句即可,随即系统即显示这条规则的使用情况,格式如下:

Using normal packet-filtering access rules now.

100 deny icmp 10.1.0.0 0.0.255.255 any host-redirect (3 matches,252 bytes -- rule 1)

100 permit icmp 10.1.0.0 0.0.255.255 any echo (no matches -- rule 2)

100 deny udp any any eq rip (no matches -- rule 3)

5. show firewall

此命令须在特权用户模式下执行,它显示当前防火墙状态。命令格式非常简单,也为:show firewall。这里所说的防火墙状态,包括防火墙是否被启用,启用防火墙时是否采用了时间段包过滤及防火墙的一些统计信息。

6. Telnet

这是用于定义能过防火配置控制端口进行远程登录的有关参数选项,也须在全局配置用户模式下进行配置。

命令格式为:telnet ip_address [netmask] [if_name]

其中的ip_address参数是用来指定用于Telnet登录的IP地址,netmask为子网掩码,if_name用于指定用于Telnet登录的接口,通常不用指定,则表示此IP地址适用于所有端口。如:

telnet 192.168.1.1

如果要清除防火墙上某个端口的Telnet参数配置,则须用clear telnet命令,其格式为:clear telnet [ip_address [netmask] [if_name]],其中各选项说明同上。它与另一个命令no telnet功能基本一样,不过它是用来删除某接口上的Telnet配置,命令格式为:no telnet [ip_address [netmask] [if_name]]。

如果要显示当前所有的Telnet配置,则可用show telnet命令。

返回

防火墙新技术:状态检测技术

传统的包过滤防火墙通过检测IP包头的相关信息来决定数据流的通过还是拒绝,而近几年才应用的防火墙新技术--状态检测技术,采用的是一种基于连接的状态检测机制,将属于同一连接的所有包作为一个整体的数据流看待,构成连接状态表,通过规则表与状态表的共同配合,对表中的各个连接状态因素加以识别。这里动态连接状态表中的记录可以是以前的通信信息,也可以是其他相关应用程序的信息,因此,与传统包过滤防火墙的静态过滤规则表相比,它具有更好的灵活性和安全性。

先进的状态检测防火墙读取、分析和利用了全面的网络通信信息和状态,包括:

应用状态:即其他相关应用的信息。状态检测模块能够理解并学习各种协议和应用,以支持各种最新的应用,它比代理服务器支持的协议和应用要多得多;并且,它能从应用程序中收集状态信息存入状态表中,以供其他应用或协议做检测策略。例如,已经通过防火墙认证的用户可以通过防火墙访问其他授权的服务。

通信信息:即所有7层协议的当前信息。防火墙的检测模块位于操作系统的内核,在网络层之下,能在数据包到达网关操作系统之前对它们进行分析。防火墙先在低协议层上检查数据包是否满足企业的安全策略,对于满足的数据包,再从更高协议层上进行分析。它验证数据的源地址、目的地址和端口号、协议类型、应用信息等多层的标志,因此具有更全面的安全性。

操作信息:即在数据包中能执行逻辑或数算的信息。状态监测技术,采用强大的面向对象的方法,基于通信信息、通信状态、应用状态等多方面因素,利用灵活的表达式形式,结合安全规则、应用识别知识、状态关联信息以及通信数据,构造更复杂的、更灵活的、满足用户特定安全要求的策略规则。

通信状态:即以前的通信信息。对于简单的包过滤防火墙,如果要允许FTP通过,就必须作出让步而打开许多端口,这样就降低了安全性。状态检测防火墙在状态表中保存以前的通信信息,记录从受保护网络发出的数据包的状态信息,例如FTP请求的服务器地址和端口、客户端地址和为满足此次FTP临时打开的端口,然后,防火墙根据该表内容对返回受保护网络的数据包进行分析判断,这样,只有响应受保护网络请求的数据包才被放行。这里,对于UDP或者RPC等无连接的协议,检测模块可创建虚会话信息用来进行跟踪。

配置iptables静态防火墙

1、初始化防火墙

在shell提示符#下键入:

iptables -F

iptables -X

iptables -Z

利用iptables设置你自己的防火墙之前,首先要清除所有以前设置的规则。

2、设置规则:

2.1、设置默认策略

iptables -P INPUT DROP

这一条命令将阻止所有从网络进入计算机的数据包丢弃(drop)。此时,如果你ping 127.0.0.1,你就会发现屏幕一直停在那里,因为ping收不到任何应答数据包。

2.2、创建用户自定义的链

iptables -N MYINPUT

iptables -N MYDROPLOG

2.3 、添加规则

iptables -A INPUT -j MYINPUT

这条规则将所有进入计算机的包转发到自定义的链进行过滤。

iptables -A MYINPUT -p icmp -j ACCEPT

此时再输入命令 ping 127.0.0.1,结果还会和刚才一样吗?

如果要访问www服务

iptables -A MYINPUT -p tcp --sport 80 -j ACCEPT

这条规则允许来自网络并且源端口是80的数据进入计算机。80端口正是www服务所使用的端口。现在可以看网页了。但是,如果你在浏览器的地址中输入www.baidu.com,能看到网页吗?你得到的结果一定是:找不到主机www.baidu.com。如果你再输入211.94.144.100,你仍然能够访问baidu的网页。为什么?因为如果访问www.baidu.com,计算机需要先进行域名解析获取www.baidu.com对应的ip地址211.94.144.100才能正常访问。我们还需要打开DNS。

iptables -A MYINPUT -p udp --sport 53 -j ACCEPT

这条规则接受所有UDP协议53端口的数据。53正是DNS服务所用的端口。此时测试一下,你能通过域名访问www吗?你能通过ip访问www吗?当然,都可以!

丢弃其他的所有网络数据包

iptables -A MYINPUT -j MYDROPLOG

iptables -A MYDROPLOG -j DROP

2.4、记录日志

iptables -I MYDROPLOG 1 -j LOG --log-prefix '[IPTABLES DROP LOGS]:' --log-level debug

这样所有被丢弃的网络数据包都被记录下来了,访问网络的详细信息可以查看日志。

至此,一个安全的个人静态防火墙已经构建,可以根据访问网络的具体需求再次配置防火墙,满足各种需求。

3、查看防火墙

此时可以查看防火墙了

iptables -L --line-number

可以将上面的实验内容总结一下,写成一个脚本。

#!/bin/bash

# This is a script of

# a personal static firewall

iptables -F

iptables -X

iptables -Z

iptables -P INPUT DROP

iptables -N MYINPUT

iptables -N MYDROPLOG

iptables -A INPUT -j MYINPUT

iptables -A MYINPUT -p icmp -j ACCEPT

iptables -A MYINPUT -p tcp --sport 80 -j ACCEPT

iptables -A MYINPUT -p udp --sport 53 -j ACCEPT

iptables -A MYINPUT -j MYDROPLOG

iptables -A MYDROPLOG -j DROP

iptables -I MYDROPLOG 1 -j LOG --log-prefix '[IPTABLES DROP LOGS]:' --log-level debug

iptables -L --line-number

运行脚本快速实现自己的防火墙。

iptables入门教程--配置静态防火墙( step by step)

1、iptables介绍

iptables是复杂的,他集成到linux内核中。用户通过iptables,能够对进出您的电

脑的数据包进行过滤。通过iptables命令配置

您的规则,来把守您的电脑网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。接下来,我将告诉您如何配置自己的规则,从现在

就开始吧。

2、初始化工作

在shell提示符 # 下打入

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

以上每一个命令都有他确切的含义。一般配置您的iptables之前,首先要清除任何以前配置的规则,我们就把他叫做初始化好了。虽然很多情况下他什么也不做,但是保险起见,不妨小心一点吧! 假如您用的是redhat 或fedora,那么您有更简单的办法

service iptables stop

3、开始配置规则:

接下下开始配置您的规则了

iptables -P INPUT DROP

这一条命令将会为您构建一个很“安全”的防火墙,我很难想象有哪个hacker能攻破这样的机器,因为他将任何从网络进入您机器的数据丢弃(drop)

了。这当然是安全过头了,此时您的机器将相当于没有网络。假如您ping

localhost,您就会发现屏幕一直停在那里,因为ping收不到任何回应。

4 、添加规则

接着上文继续输入命令:

iptables -A INPUT -i ! ppp0 -j ACCEPT

这条规则的意思是:接受任何的,来源不是网络接口ppp0的数据。

我们假设您有两个网络接口,eth0连接局域网,loop是回环网(localhost)。ppp0是一般的adsl上网的internet网络接口,假如您不是这种上网方式,那则有可能是eth1。在此我假设您是adsl上网,您的internet接口是ppp0

此时您即允许了局域网的访问,您也能够访问localhost

此时再输入命令 ping localhost,结果还会和刚才相同吗?

到此我们还不能访问www,也不能mail,接着看吧。

5、我想访问www

iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT

允许来自网络接口ppp0(internet接口),并且来源端口是80的数据进入您的电脑。

80端口正是www服务所使用的端口。

好了,现在能够看网页了。但是,您能看到吗?

假如您在浏览器的地址中输入

www.baidu.com

,能看到网页吗?

您得到的结果一定是:很难找到主机

www.baidu.com

但是,假如您再输入220.181.27.5,您仍然能够访问baidu的网页。

为什么?假如您了解dns的话就一定知道原因了。

因为假如您打入www.baidu.com,您的电脑无法取得www.baidu.com这个名称所能应的ip地址220.181.27.5。假如您确实

记得这个ip,那么您仍然能够访问www,您当然能够只用ip来访问www,假如您想挑战您的记忆的话^ _ ^,当然,我们要打开DNS。

6、打开dns端口

打开您的dns端口,输入如下命令:

iptables -A INPUT -i ppp0 -p udp -sport 53 -j ACCEPT

这条命令的含义是,接受任何来自网络接口ppp0,upd协议的53端口的数据。53也就是著名的dns端口。

此时测试一下,您能通过主机名称访问www吗?您能通过ip访问www吗?

当然,都能够!

7、查看防火墙

此时能够查看您的防火墙了

iptables -L

假如您只想访问www,那么就能够到此为止,您将只能访问www了。 但是先别急,

将上面讲的内容总结一下,写成一个脚本。

#!/bin/bash

# This is a script

# Edit by liwei

# establish static firewall

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -P INPUT DROP

iptables -A INPUT -i ! ppp0 -j ACCEPT

iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -i ppp0 -p udp --sport 53 -j ACCEPT

8、复杂吗?到此iptables能够按您的需要进行包过滤了。您能够再设定一些端口,允许您的机器访问这些端口。这样有可能,您不能访问QQ,也可能不

能打网络游戏,是好是坏,还是要看您自己而定了。顺便说一下,QQ这个东西还真是不好控制,用户和服务器连接使用的似乎是8888端口,而QQ上好友互发

消息使用的又是udp的4444端口(具体是不是4444还不太清楚)。而且QQ还能够使用www的80端口进行登录并发消息,看来学无止境,您真的想把

这个家伙控制住还不容易呢?还是进入我们的正题吧。

假如您的机器是服务器,怎么办?

9、假如不巧您的机器是服务器,并且要提供www服务。显然,以上的脚本就不能符合我们的需要了。但只要您撑握了规则,稍作修改同样也能很好的工作。在最后面加上一句

iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT

这一句也就是将自己机器上的80端口对外开放了,这样internet上的其他人就能访问您的www了。当然,您的www服务器得工作才行。假如您的机器

同时是smtp和pop3服务器,同样的再加上两条语句,将--dport后面的80改成25和110就行了。假如您更有一个ftp服务器,呵呵,假如您

要打开100个端口呢……

我们的工作似乎是重复性的打入类似的语句,您可能自己也想到了,我能够用一个循环语句来完成,对,此处能够有效的利用shell脚本的功能,也让您体验到了shell脚本语言的威力。看下文:

10、用脚本简化您的工作,阅读下面的脚本

#!/bin/bash

# This is a script

# Edit by liwei

# establish a static firewall

# define const here

Open_ports=\"80 25 110 10\" # 自己机器对外开放的端口

Allow_ports=\"53 80 20 21\" # internet的数据能够进入自己机器的端口

#init

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -P INPUT DROP #we can use another method to instead it

iptables -A INPUT -i ! ppp0 -j ACCEPT

# define ruler so that some data can come in.

for Port in \"$Allow_ports\" ; do

iptables -A INPUT -i ppp0 -p tcp -sport $Port -j ACCEPT

iptables -A INPUT -i ppp0 -p udp -sport $Port -j ACCEPT

done

for Port in \"$Open_ports\" ; do

iptables -A INPUT -i ppp0 -p tcp -dport $Port -j ACCEPT

iptables -A INPUT -i ppp0 -p udp -dport $Port -j ACCEPT

done

这个脚本有三个部分(最前面的一段是注释,不算在这三部分中)

第一部分是定义一些端口:访问您的机器\"Open_ports\"端口的数据,允许进入;来源是\"Allow_ports\"端口的数据,也能够进入。

第二部分是iptables的初始化,第三部分是对定义的端口具体的操作。

假如以后我们的需要发生了一些变化,比如,您给自己的机器加上了一个ftp服务器,那么只要在第一部分\"Open_ports\"的定义中,将ftp对应的20和21端口加上去就行了。呵呵,到此您也一定体会到了脚本功能的强大的伸缩性,但脚本的能力还远不止这些呢!

11、使您的防火墙更加完善

看上面的脚本init部分的倒数第二句

iptables -P INPUT DROP

这是给防火墙配置默认规则。当进入我们电脑的数据,不匹配我们的任何一个条件时,那么就由默认规则来处理这个数据----drop掉,不给发送方任何应答。

也就是说,假如您从internet另外的一台电脑上ping您的主机的话,ping会一直停在那里,没有回应。

假如黑客用namp工具对您的电脑进行端口扫描,那么他会提示黑客,您的电脑处于防火墙的保护之中。我可不想让黑客对我的电脑了解太多,怎么办,假如我们把drop改成其他的动作,或许能够骗过这位刚出道的黑客呢。

怎么改呢?将刚才的那一句( iptables -P INPUT DROP )去掉,在脚本的最后面加上

iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset

iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with

icmp-port-unreachable

这样就好多了,黑客虽然能扫描出我们所开放的端口,但是他却很难知道,我们的机器处在防火墙的保护之中。假如您只运行了ftp并且仅仅对局域网内部访问,

他很难知道您是否运行了ftp。在此我们给不应该进入我们机器的数据,一个欺骗性的回答,而不是丢弃(drop)后就不再理会。这一个功能,在我们设计有

状态的防火墙中(我这里讲的是静态的防火墙)特别有用。

您能够亲自操作一下,看一看修改前后用namp扫描得到的结果会有什么不同?

12、这个教程我想到此就结束了,其中有很多东西在这里没有提到,如ip伪装,端口转发,对数据包的记录功能。更有一个很重要的东西就是:

iptables处理数据包的流程.在这里我想告诉您,您配置的过滤规则的顺序很重要,在此不宜周详介绍,因为这样一来,这个教程就会拘泥于细节。

iptables是复杂的,我在linuxsir上看过很多教程,他们往往多而全,反而让人望而生畏,希望我的这个教程,能够指导您入门。加油!

最后,我把完整的脚本写出来如下,您只要修改常量定义部分,就能表现出较大的伸缩性^_^

#!/bin/bash

# This is a script

# Edit by liwei

# establish a static firewall

# define const here

Open_ports=\"80 25 110 10\" # 自己机器对外开放的端口

Allow_ports=\"53 80 20 21\" # internet的数据能够进入自己机器的端口

#init

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

# The follow is comment , for make it better

# iptables -P INPUT DROP

iptables -A INPUT -i ! ppp0 -j ACCEPT

# define ruler so that some data can come in.

for Port in \"$Allow_ports\" ; do

ptables -A INPUT -i ppp0 -p tcp -sport $Port -j ACCEPT

iptables -A INPUT -i ppp0 -p udp -sport $Port -j ACCEPT

done

for Port in \"$Open_ports\" ; do

iptables -A INPUT -i ppp0 -p tcp -dport $Port -j ACCEPT

iptables -A INPUT -i ppp0 -p udp -dport $Port -j ACCEPT

done

# This is the last ruler , it can make you firewall better

iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset

iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with

icmp-port-unreachable

防火墙的初始配置

像路由器一样,在使用之前,防火墙也需要经过基本的初始配置。但因各种防火墙的初始配置基本类似,所以在此仅以Cisco PIX防火墙为例进行介绍。

防火墙的初始配置也是通过控制端口(Console)与PC机(通常是便于移动的笔记本电脑)的串口连接,再通过Windows系统自带的超级终端(HyperTerminal)程序进行选项配置。防火墙的初始配置物理连接与前面介绍的交换机初始配置连接方法一样,参见图1所示。

图1

防火墙除了以上所说的通过控制端口(Console)进行初始配置外,也可以通过telnet和Tffp配置方式进行高级配置,但Telnet配置方式都是在命令方式中配置,难度较大,而Tffp方式需要专用的Tffp服务器软件,但配置界面比较友好。

防火墙与路由器一样也有四种用户配置模式,即:普通模式(Unprivileged mode)、特权模式(Privileged Mode)、配置模式(Configuration Mode)和端口模式(Interface Mode),进入这四种用户模式的命令也与路由器一样:

普通用户模式无需特别命令,启动后即进入;

进入特权用户模式的命令为\"enable\";进入配置模式的命令为\"config terminal\";而进入端口模式的命令为\"interface ethernet()\"。不过因为防火墙的端口没有路由器那么复杂,所以通常把端口模式归为配置模式,统称为\"全局配置模式\"。

防火墙的具体配置步骤如下:

1. 将防火墙的Console端口用一条防火墙自带的串行电缆连接到笔记本电脑的一个空余串口上,参见图1。

2. 打开PIX防火电源,让系统加电初始化,然后开启与防火墙连接的主机。??

3. 运行笔记本电脑Windows系统中的超级终端(HyperTerminal)程序(通常在\"附件\"程序组中)。对超级终端的配置与交换机或路由器的配置一样,参见本教程前面有关介绍。

4. 当PIX防火墙进入系统后即显示\"pixfirewall>\"的提示符,这就证明防火墙已启动成功,所进入的是防火墙用户模式。可以进行进一步的配置了。?

5. 输入命令:enable,进入特权用户模式,此时系统提示为:pixfirewall#。??

6. 输入命令: configure terminal,进入全局配置模式,对系统进行初始化设置。?

(1). 首先配置防火墙的网卡参数(以只有1个LAN和1个WAN接口的防火墙配置为例)?

Interface ethernet0 auto?? # 0号网卡系统自动分配为WAN网卡,\"auto\"选项为系统自适应网卡类型

Interface ethernet1 auto?

(2). 配置防火墙内、外部网卡的IP地址?

IP address inside ip_address netmask? # Inside代表内部网卡

IP address outside ip_address netmask? # outside代表外部网卡

(3). 指定外部网卡的IP地址范围:?

global 1 ip_address-ip_address?

(4). 指定要进行转换的内部地址?

nat 1 ip_address netmask?

(5). 配置某些控制选项:?

conduit global_ip port[-port] protocol foreign_ip [netmask]

其中,global_ip:指的是要控制的地址;port:指的是所作用的端口,0代表所有端口;protocol:指的是连接协议,比如:TCP、UDP等;foreign_ip:表示可访问的global_ip外部IP地址;netmask:为可选项,代表要控制的子网掩码。?

7. 配置保存:wr mem?

8. 退出当前模式

此命令为exit,可以任何用户模式下执行,执行的方法也相当简单,只输入命令本身即可。它与Quit命令一样。下面三条语句表示了用户从配置模式退到特权模式,再退到普通模式下的操作步骤。

pixfirewall(config)# exit

pixfirewall# exit

pixfirewall>

9. 查看当前用户模式下的所有可用命令:show,在相应用户模式下键入这个命令后,即显示出当前所有可用的命令及简单功能描述。

10. 查看端口状态:show interface,这个命令需在特权用户模式下执行,执行后即显示出防火墙所有接口配置情况。

11. 查看静态地址映射:show static,这个命令也须在特权用户模式下执行,执行后显示防火墙的当前静态地址映射情况。

三、Cisco PIX防火墙的基本配置

1. 同样是用一条串行电缆从电脑的COM口连到Cisco PIX 525防火墙的console口;

2. 开启所连电脑和防火墙的电源,进入Windows系统自带的\"超级终端\",通讯参数可按系统默然。进入防火墙初始化配置,在其中主要设置有:Date(日期)、time(时间)、hostname(主机名称)、inside ip address(内部网卡IP地址)、domain(主域)等,完成后也就建立了一个初始化设置了。此时的提示符为:pix255>。

3. 输入enable命令,进入Pix 525特权用户模式,默然密码为空。

如果要修改此特权用户模式密码,则可用enable password命令,命令格式为:enable password password [encrypted],这个密码必须大于16位。Encrypted选项是确定所加密码是否需要加密。

4、 定义以太端口:先必须用enable命令进入特权用户模式,然后输入configure terminal(可简称为config t),进入全局配置模式模式。具体配置

pix525>enable

Password:

pix525#config t

pix525 (config)#interface ethernet0 auto

pix525 (config)#interface ethernet1 auto

在默然情况下ethernet0是属外部网卡outside, ethernet1是属内部网卡inside, inside在初始化配置成功的情况下已经被激活生效了,但是outside必须命令配置激活。

5. clock

配置时钟,这也非常重要,这主要是为防火墙的日志记录而资金积累的,如果日志记录时间和日期都不准确,也就无法正确分析记录中的信息。这须在全局配置模式下进行。

时钟设置命令格式有两种,主要是日期格式不同,分别为:

clock set hh:mm:ss month day month year和clock set hh:mm:ss day month year

前一种格式为:小时:分钟:秒 月 日 年;而后一种格式为:小时:分钟:秒 日 月 年,主要在日、月份的前后顺序不同。在时间上如果为0,可以为一位,如:21:0:0。

6. 指定接口的安全级别

指定接口安全级别的命令为nameif,分别为内、外部网络接口指定一个适当的安全级别。在此要注意,防火墙是用来保护内部网络的,外部网络是通过外部接口对内部网络构成威胁的,所以要从根本上保障内部网络的安全,需要对外部网络接口指定较高的安全级别,而内部网络接口的安全级别稍低,这主要是因为内部网络通信频繁、可信度高。在Cisco PIX系列防火墙中,安全级别的定义是由security()这个参数决定的,数字越小安全级别越高,所以security0是最高的,随后通常是以10的倍数递增,安全级别也相应降低。如下例:

pix525(config)#nameif ethernet0 outside security0?? # outside是指外部接口

pix525(config)#nameif ethernet1 inside security100 # inside是指内部接口

7. 配置以太网接口IP地址

所用命令为:ip address,如要配置防火墙上的内部网接口IP地址为:192.168.1.0 255.255.255.0;外部网接口IP地址为:220.1.20.0 255.255.255.0。 配置方法如下:

pix525(config)#ip address inside 192.168.1.0 255.255.255.0

pix525(config)#ip address outside 220.1.20.0 255.255.255.0

8. access-group

这个命令是把访问控制列表绑定在特定的接口上。须在配置模式下进行配置。命令格式为:access-group acl_ID in interface interface_name,其中的\"acl_ID\"是指访问控制列表名称,interface_name为网络接口名称。如:

access-group acl_out in interface outside,在外部网络接口上绑定名称为\"acl_out\"的访问控制列表。

clear access-group:清除所有绑定的访问控制绑定设置。

no access-group acl_ID in interface interface_name:清除指定的访问控制绑定设置。

show access-group acl_ID in interface interface_name:显示指定的访问控制绑定设置。

9.配置访问列表

所用配置命令为:access-list,合格格式比较复杂,如下:

标准规则的创建命令:access-list [ normal | special ] listnumber1 { permit | deny } source-addr [ source-mask ]

扩展规则的创建命令:access-list [ normal | special ] listnumber2 { permit | deny } protocol source-addr source-mask [ operator port1 [ port2 ] ] dest-addr dest-mask [ operator port1 [ port2 ] | icmp-type [ icmp-code ] ] [ log ]

它是防火墙的主要配置部分,上述格式中带\"[]\"部分是可选项,listnumber参数是规则号,标准规则号(listnumber1)是1~99之间的整数,而扩展规则号(listnumber2)是100~199之间的整数。它主要是通过访问权限\"permit\"和\"deny\"来指定的,网络协议一般有IP|TCP|UDP|ICMP等等。如只允许访问通过防火墙对主机:220.1.20.2进行www访问,则可按以下配置:

pix525(config)#access-list 100 permit 220.1.20.2 eq www

其中的100表示访问规则号,根据当前已配置的规则条数来确定,不能与原来规则的重复,也必须是正整数。关于这个命令还将在下面的高级配置命令中详细介绍。

10. 地址转换(NAT)

防火墙的NAT配置与路由器的NAT配置基本一样,首先也必须定义供NAT转换的内部IP地址组,接着定义内部网段。

定义供NAT转换的内部地址组的命令是nat,它的格式为:nat [(if_name)] nat_id local_ip [netmask [max_conns [em_limit]]],其中if_name为接口名;nat_id参数代表内部地址组号;而local_ip为本地网络地址;netmask为子网掩码;max_conns为此接口上所允许的最大TCP连接数,默认为\"0\",表示不连接;em_limit为允许从此端口发出的连接数,默认也为\"0\",即不。如:

nat (inside) 1 10.1.6.0 255.255.255.0

表示把所有网络地址为10.1.6.0,子网掩码为255.255.255.0的主机地址定义为1号NAT地址组。

随后再定义内部地址转换后可用的外部地址池,它所用的命令为global,基本命令格式为:

global? [(if_name)] nat_id global_ip [netmask [max_conns [em_limit]]] ,各参数解释同上。如:

global (outside) 1 175.1.1.3-175.1.1. netmask 255.255.255.0

将上述nat命令所定的内部IP地址组转换成175.1.1.3~175.1.1.的外部地址池中的外部IP地址,其子网掩耳盗铃码为255.255.255.0。

11. Port Redirection with Statics

这是静态端口重定向命令。在Cisco PIX版本6.0以上,增加了端口重定向的功能,允许外部用户通过一个特殊的IP地址/端口通过防火墙传输到内部指定的内部服务器。其中重定向后的地址可以是单一外部地址、共享的外部地址转换端口(PAT),或者是共享的外部端口。这种功能也就是可以发布内部WWW、FTP、Mail等服务器,这种方式并不是直接与内部服务器连接,而是通过端口重定向连接的,所以可使内部服务器很安全。

命令格式有两种,分别适用于TCP/UDP通信和非TCP/UDP通信:

(1). static[(internal_if_name, external_if_name)]local_ip[netmask mask]

max_conns [emb_limit[norandomseq]]]

(2). static [(internal_if_name, external_if_name)] global_port local_ip local_port [netmask mask] [max_conns [emb_limit [norandomseq]]]

此命令中的以上各参数解释如下:

internal_if_name:内部接口名称;external_if_name:外部接口名称;:选择通信协议类型;:重定向后的外部IP地址或共享端口;local_ip:本地IP地址;[netmask mask]:本地子网掩码;max_conns:允许的最大TCP连接数,默认为\"0\",即不;emb_limit:允许从此端口发起的连接数,默认也为\"0\",即不;norandomseq:不对数据包排序,此参数通常不用选。

现在我们举一个实例,实例要求如下

●外部用户向172.18.124.99的主机发出Telnet请求时,重定向到10.1.1.6。

●外部用户向172.18.124.99的主机发出FTP请求时,重定向到10.1.1.3。

●外部用户向172.18.124.208的端口发出Telnet请求时,重定向到10.1.1.4。

●外部用户向防火墙的外部地址172.18.124.216发出Telnet请求时,重定向到10.1.1.5。

●外部用户向防火墙的外部地址172.18.124.216发出HTTP请求时,重定向到10.1.1.5。

●外部用户向防火墙的外部地址172.18.124.208的8080端口发出HTTP请求时,重定向到10.1.1.7的80号端口。

以上重写向过程要求如图2所示,防火墙的内部端口IP地址为10.1.1.2,外部端口地址为172.18.124.216。

图2

以上各项重定向要求对应的配置语句如下:

static (inside,outside) tcp 172.18.124.99 telnet 10.1.1.6 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.99 ftp 10.1.1.3 ftp netmask

255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.208 telnet 10.1.1.4 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp interface telnet 10.1.1.5 telnet netmask 255.255.255.255 0 0

static (inside,outside) tcp interface www 10.1.1.5? www netmask 255.255.255.255 0 0

static (inside,outside) tcp 172.18.124.208 8080 10.1.1.7 www netmask 255.255.255.255 0 0

12. 显示与保存结果

显示结果所用命令为:show config;保存结果所用命令为:write memory。??

四、包过滤型防火墙的访问控制表(ACL)配置

除了以上介绍的基本配置外,在防火墙的安全策略中最重要还是对访问控制列表(ACL)进行配有关置。下面介绍一些用于此方面配置的基本命令。

1. access-list:用于创建访问规则

这一访问规则配置命令要在防火墙的全局配置模式中进行。同一个序号的规则可以看

作一类规则,同一个序号之间的规则按照一定的原则进行排列和选择,这个顺序可以通过 show access-list 命令看到。在这个命令中,又有几种命令格式,分别执行不同的命令。

(1)创建标准访问列表

命令格式:access-list [ normal | special ] listnumber1 { permit | deny } source-addr [ source-mask ]

(2)创建扩展访问列表

命令格式:access-list [ normal | special ] listnumber2 { permit | deny } protocol source-addr source-mask [ operator port1 [ port2 ] ] dest-addr dest-mask [ operator port1 [ port2 ] | icmp-type [ icmp-code ] ] [ log ]

(3)删除访问列表

命令格式:no access-list { normal | special } { all | listnumber [ subitem ] }

上述命令参数说明如下:

●normal:指定规则加入普通时间段。

●special:指定规则加入特殊时间段。

●listnumber1:是1到99之间的一个数值,表示规则是标准访问列表规则。

●listnumber2:是100到199之间的一个数值,表示规则是扩展访问列表规则。

●permit:表明允许满足条件的报文通过。

●deny:表明禁止满足条件的报文通过。

●protocol:为协议类型,支持ICMP、TCP、UDP等,其它的协议也支持,此时没有端口比较的概念;为IP时有特殊含义,代表所有的IP协议。

●source-addr:为源IP地址。

●source-mask:为源IP地址的子网掩码,在标准访问列表中是可选项,不输入则代表通配位为0.0.0.0。

●dest-addr:为目的IP地址。

●dest-mask:为目的地址的子网掩码。

●operator:端口操作符,在协议类型为TCP或UDP时支持端口比较,支持的比较操作有:等于(eq)、大于(gt)、小于(lt)、不等于(neq)或介于(range);如果操作符为range,则后面需要跟两个端口。

port1 在协议类型为TCP或UDP时出现,可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。port2 在协议类型为TCP或UDP且操作类型为range时出现;可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。

●icmp-type:在协议为ICMP时出现,代表ICMP报文类型;可以是关键字所设定的预设值(如echo-reply)或者是0~255之间的一个数值。

●icmp-code:在协议为ICMP,且没有选择所设定的预设值时出现;代表ICMP码,是0~255之间的一个数值。

●log:表示如果报文符合条件,需要做日志。

●listnumber:为删除的规则序号,是1~199之间的一个数值。

●subitem:指定删除序号为listnumber的访问列表中规则的序号。例如,现要在华为的一款防火墙上配置一个\"允许源地址为10.20.10.0 网络、目的地址为10.20.30.0网络的WWW访问,但不允许使用FTP\"的访问规则。相应配置语句只需两行即可,如下:

Quidway (config)#access-list 100 permit tcp 10.20.10.0? 255.0.0.0? 10.20.30.0? 255.0.0.0? eq www

Quidway (config)#access-list 100 deny tcp 10.20.10.0? 255.0.0.0? 10.20.30.0? 255.0.0.0? eq ftp

2. clear access-list counters:清除访问列表规则的统计信息

命令格式:clear access-list counters [ listnumber ]

这一命令必须在特权用户模式下进行配置。listnumber 参数是用指定要清除统计信息的规则号,如不指定,则清除所有的规则的统计信息。

如要在华为的一款包过滤路由器上清除当前所使用的规则号为100的访问规则统计信息。访问配置语句为:

clear access-list counters 100

如有清除当前所使用的所有规则的统计信息,则以上语句需改为:Quidway#clear access-list counters

3. ip access-group

使用此命令将访问规则应用到相应接口上。使用此命令的no形式来删除相应的设置,对应格式为:

ip access-group listnumber { in | out }

此命令须在端口用户模式下配置,进入端口用户模式的命令为:interface ethernet(),括号中为相应的端口号,通常0为外部接口,而1为内部接口。进入后再用ip access-group 命令来配置访问规则。listnumber参数为访问规则号,是1~199之间的一个数值(包括标准访问规则和扩展访问规则两类);in 表示规则应用于过滤从接口接收到的报文;而out表示规则用于过滤从接口转发出去的报文。一个接口的一个方向上最多可以应用20类不同的规则;这些规则之间按照规则序号的大小进行排列,序号大的排在前面,也就是优先级高。对报文进行过滤时,将采用发现符合的规则即得出过滤结果的方法来加快过滤速度。所以,建议在配置规则时,尽量将对同一个网络配置的规则放在同一个序号的访问列表中;在同一个序号的访问列表中,规则之间的排列和选择顺序可以用show access-list命令来查看。例如将规则100应用于过滤从外部网络接口上接收到的报

文,配置语句为(同样为在倾为包过滤路由器上):

ip access-group 100 in

如果要删除某个访问控制表列绑定设置,则可用no ip access-group listnumber { in | out } 命令。

4. show access-list

此配置命令用于显示包过滤规则在接口上的应用情况。命令格式为:show access-list [ all | listnumber | interface interface-name ]

这一命令须在特权用户模式下进行配置,其中all参数表示显示所有规则的应用情况,包括普通时间段内及特殊时间段内的规则;如果选择listnumber参数,则仅需显示指定规则号的过滤规则;interface 表示要显示在指定接口上应用的所有规则序号;interface-name参数为接口的名称。

使用此命令来显示所指定的规则,同时查看规则过滤报文的情况。每个规则都有一个相应的计数器,如果用此规则过滤了一个报文,则计数器加1;通过对计数器的观察可以看出所配置的规则中,哪些规则是比较有效,而哪些基本无效。例如,现在要显示当前所使用序号为100的规则的使用情况,可执行Quidway#show access-list 100语句即可,随即系统即显示这条规则的使用情况,格式如下:

Using normal packet-filtering access rules now.

100 deny icmp 10.1.0.0 0.0.255.255 any host-redirect (3 matches,252 bytes --

rule 1)

100 permit icmp 10.1.0.0 0.0.255.255 any echo (no matches -- rule 2)

100 deny udp any any eq rip (no matches -- rule 3)

5. show firewall

此命令须在特权用户模式下执行,它显示当前防火墙状态。命令格式非常简单,也为:show firewall。这里所说的防火墙状态,包括防火墙是否被启用,启用防火墙时是否采用了时间段包过滤及防火墙的一些统计信息。

6. Telnet

这是用于定义能过防火配置控制端口进行远程登录的有关参数选项,也须在全局配置用户模式下进行配置。

命令格式为:telnet ip_address [netmask] [if_name]

其中的ip_address参数是用来指定用于Telnet登录的IP地址,netmask为子网掩码,if_name用于指定用于Telnet登录的接口,通常不用指定,则表示此IP地址适用于所有端口。如:

telnet 192.168.1.1

如果要清除防火墙上某个端口的Telnet参数配置,则须用clear telnet命令,其格式

为:clear telnet [ip_address [netmask] [if_name]],其中各选项说明同上。它与另一个命令no telnet功能基本一样,不过它是用来删除某接口上的Telnet配置,命令格式为:no telnet [ip_address [netmask] [if_name]]。

如果要显示当前所有的Telnet配置,则可用show telnet命令。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务