惹8起de女子 发表于 2009-6-2 21:39:52

PIX防火墙(一)



4.1. 入门
PIX防火墙CLI提供4种访问模式,分别是非特权模式、特权模式、配置模式和监控模式。前三种模式我们应该很熟悉了,和Cisco交换机和路由器一样。监控模式用于更新系统映像。
当没有配置的PIX防火墙启动时,它会提示你通过交互的方式进行预先配置。按向导一步步完成后,就可以通过PDM这个GUI工具登录防火墙进行进一步的配置。
一般在内部网络我们多数都是通过telnet命令登录我们PIX防火墙来进行配置管理的,所以我们要配置PIX允许我们使用telnet登录PIX,默认是不允许的。按下面的步骤操作打开PIX的telnet功能。第一次登录时的默认密码是cisco。
debian:~/c# telnet 192.168.10.1Trying 192.168.10.1...Connected to 192.168.10.1.Escape character is ^].User Access VerificationPassword:                                                 Type help or ? for a list of available commands.fw> enable                                                #进入特权模式,默认不需要密码,直接回车即可fw# configure terminla                                    #进入配置模式fw(config)# telnet 192.168.0.246 255.255.255.255 inside   #允许192.168.0.246从内接口登录fw(config)# telnet timeout 30                           #设置telnet的空闲中断时间为30分钟fw(config)# passwd 12345                                  #设置新的telnet密码
这里我们使用telnet工具登录PIX是不用提供用户名的。也就是说只能有一个用户可以登录PIX。我们也可以创创建本地用户数据库,利用数据库中用户进行登录。使用以下命令启用通过本地用户数据库进行授权和添加本地用户。
fw(config)# aaa authentication telnet console LOCAL    #启用本地用户数据库授权fw(config)# username jims password 12345 privilege 15#创建拥有最高安全级别的管理员jims
启用本地用户数据库授权后,重新登录PIX时就要求输入用户名了。
进入特权模式要用enable命令,默认不需要密码,直接按回车就可以进入。接着要为我们的特权模式设置一个安全的密码。设置进入特权模式密码的命令是enable password。命令格式:
Usage:enable password [<pw>]       #设置密码      no enable password level <level>                        #取消密码      show enable                                             #显示密码password设置密码串,level设置的是特权级别,最高15最低0,encrypted关健字说明密码串为加密后的值。
在PIX中,可在任意地方使用show命令来显示系统状态。下面几个show命令可以帮助我们了解防火墙的系统信息。分别是:show memory、show version、show interface、show ip address和show cpu usage。
用show run和write terminal命令可以显示当前的配置信息。该信息保存在内存中,重启会丢失。用write memory命令可把当前配置信息保存在闪存中。
语法:Usage:write erase|floppy|mem|terminal|standby      示例:fw(config)# wr memBuilding configuration...Cryptochecksum: 2014cbd3 b91eb007 f759bc58 36b62288
如果我们在使用中CLI时对有些命令不熟悉,可以用help命令显示帮助信息。
fw(config)# help writeUSAGE:      write erase|floppy|mem|terminal|standby      write net [<tftp_ip>]:<filename>DESCRIPTION:write         Write config to net, flash, floppy, or terminal, or erase flashSYNTAX:erase         Clears the flash memory configurationterminal      Display the current active configuration, not necessarily                the saved configurationmem             Save the active configuration to the flash, so that it will                be the active configuration after a PIX Firewall reloadfloppy          Save the active configuration to a floppy disk. This is                highly recommended between PIX Firewall upgradessee also:       configure<tftp_ip>       IP address of the tftp server.<filename>      Name of the configuration file.
使用show startup-config和show configure命令可以显示闪存中配置信息。
使用show history命令可以显示命令历史。
使用write erase可清除闪存中的配置信息。
PIX防火墙可以和tftp服务器通信,把配置信息保存在tftp服务器上或从tftp服务器重新读取配置信息。用tftp-server启用tftp服务器。命令格式如下:
fw(config)# tftp-server ?Usage:tftp-server [<if_name>] <ip> <directory>   #指定tftp服务器地址和路径       tftp-server示例:fw(config)# tftp-server 192.168.0.3 firewall/config/506e
使用write net和configure net命令读写tftp上的备份配置。运行configure net命令会用tftp服务器上的配置文件重建配置,所以如果我们在没有清空现有配置的情况下运行该命令,会显示有重复项目的出错信息。
fw(config)# write netBuilding configuration...TFTP write /srv/tftp/pix506e at 192.168.0.3 on interface 1fw(config)# configure net192.168.3.0 is already mapped to anet!192.168.4.0 is already mapped to bnet!Adding obj (port-object range 26 finger) to grp (port) failed; object already exists...
reload命令重启PIX防火墙,并从闪存中重新加载配置信息。重启前,如果当前配置信息没有写到闪中,则重启后,原先所做的修改信息会丢失。
在防火墙中,准确的时间设置是很重要的。用clock set命令设置时间,用clear clock删除时间设置。clock set命令格式:
clock set hh:mm:ss month day year示例: clock set 09:59:00 sep 14 2007
4.2. ASA安全级别
ASA是一种基于状态的安全防护方式。每个进来的数据包(从低安全级别主机到高安全级别主机)都要根据ASA和PIX防火墙内存中的连接状态信息进行检查。ASA执行以下任务:
对经过PIX防火墙的连接执行状态连接控制。
对内部应用,在没有明确配置情况下,允许单向(出站)连接。出站的连接指从高安全级别接口向低安全级别接口的连接。
监视返回的数据包,确认其有效性。
对TCP顺序号进行随机处理,减少被攻击的可能性。
安全级别表明一个接口相对于另一个接口是可信还是不可信。如果一个接口的安全级别高于另一个接口的安全级别,则这个接口是可信的,如果一个接口的安全级别低于另一个接口的安全级别,则这个接口是不可信的。
安全级别的基本访问规则是:具有较高安全级别的接口可以访问较低安全级别的接口。反之,较低安全级别的接口默认不能访问较高安全级别的接口,除非设置了ACL或conduit(管道)。安全级别的范围是0--100。下面分别介绍这些安全级别的规则。
安全级别100。这是PIX防火墙内部接口的最高级别,是默认设置,且不能改变。企业内部网络应该连接在该接口上。外部的网络不能访问该接口,而该接口可以任意访问其它接口。
安全级别0。这是PIX防火墙外部接口的最低级别,是默认设置,且不能改变。一般用以连接Internet。
安全级别1--99。与PIX连接的边界接口的安全级别,可根据每台设备的访问情况来给它们分配相应的安全级别。
安全级别100访问安全级别0时,所有IP数据流都可以通行,除非设置了ACL、认证或授权的限制。虽然允许IP数据流通行,但还是要通行nat转换才能到达外网口。
安全级别0要访问安全级别100时,默认禁止所有IP数据流通行,除非设置了ACL以允许数据流通过。认证和授权机制可进一步限制数据流的通行。
4.3. 基本配置
使用CLI对PIX进行基本需要使用以下几个命令:
nameif,设置接口名称和指定接口安全级别。
语法:fw(config)# nameif ?Usage:nameif <hardware_id> <if_name> <security_lvl>      nameif <vlan_id> <if_name> <security_lvl>      no nameif示例:fw(config)# nameif ethernet0 outside security0fw(config)# nameif ethernet1 inside security100
PIX的内网接口名(inside)和外网接口名(outside)都是默认的,不能更改。clear nameif可清除配置,show nameif可显示nameif配置。
interface,设置接口的硬件参数和启动接口。默认PIX所有接口都是关闭的。要用没带shutdown参数的interface命令来启用接口。
语法:fw(config)# interface ?Usage:interface <hardware_id> [<hw_speed> ]       interface <hardware_id> <vlan_id>       interface <hardware_id> change-vlan <old_vlan_id> <new_vlan_id>      show interface示例:fw(config)# interface ethernet0 autofw(config)# interface ethernet1 auto
ip address,给接口分配固定IP地址。
语法:fw(config)# ip address ?Usage: ip address <if_name> <ip_address> [<mask>]       ip address <if_name> <ip_address> <mask> pppoe        ip address <if_name> dhcp        ip address <if_name> pppoe 示例:fw(config)# ip address outside 61.28.60.10 255.255.255.248fw(config)# ip address inside 192.168.0.1 255.255.255.0
我们也可用ip address outside dhcp命令启动dhcp client功能来自动获取IP地址。使用show ip address dhcp命令可以查看dhcp租用的相关信息。重新输入ip address outside dhcp命令会释放并重新获取outside接口的dhcp租用,也可用clear ip命令刷新所有接口的dhcp租用信息。clear ip address outside dhcp可清除outside接口的dhcp租用信息。
nat,配置内网接口到外网接口的地址转换功能,把内网的私有IP转换为公有IP地址,隐藏内网IP信息。
语法:fw(config)# nat ?Usage: nat [(<if_name>)] <nat_id> <local_ip> [<mask>                                [<max_conns> ]]] nat [(if_name)] 0 ]示例:fw(config)# nat (inside) 1 0.0.0.0 0.0.0.0
上面的示例表示对内网所有主机的出站通信进行地址转换。1表示转换后的公网IP地址池,通过global命令指定。使用nat 0命令可以指定某些内部主机禁用地址转换功能。
fw(config)# nat (inside) 0 192.168.0.0 255.255.255.0
192.168.0.0网段所有主机都禁用nat功能。
global,指定公网IP地址池。
语法:fw(config)# global ?Usage: global [(<ext_if_name>)] <nat_id> {<global_ip>[-<global_ip>] } | interface示例:fw(config)# global (outside) 1 192.168.0.20-192.168.0.100
如果使用了interface参数表示使用PAT方式的NAT。PAT的具体介绍请参考下面的内容。
route,为接口设置路由信息。
语法:fw(config)# route ?Usage: route <if_name> <foreign_ip> <mask> <gateway> [<metric>]示例:fw(config)# route outside 0.0.0.0 0.0.0.0 61.28.60.10 1
上例设置了外网口的默认路由。所有出站信息都会路由到61.28.60.10。
logging,记录目录信息。
fw(config)# logging ?Usage: logging on       logging timestamp       logging standby       logging host [<in_if>] <l_ip>        logging console <level>       logging buffered <level>       logging monitor <level>       logging history <level>       logging trap <level>       logging message <syslog_id> level <level>       logging facility <fac>       logging device-id hostname | ipaddress <if_name>                | string <text>      logging queue <queue_size>      show logging [{message [<syslog_id>|all]} | level | disabled]
4.4. PPPoE拔号配置
从软件版本6.2开始,可以把PIX防火墙配置成一个PPPoE客户端。配置方法如下:
fw(config)# vpdn group test request dialout pppoe      #设置一个名为test的pppoe拔号连接fw(config)# vpdn group test ppp authentication PAP       #为test拔号连接指定一种用户验证协议fw(config)# vpdn group test localname gzDSL1234          #把拔号帐号gzDSL1234和拔号连接test关联起来fw(config)# vpdn username gzDSL1234 passowrd xxx         #设置ISP提供的ADSL线路的用户名和密码fw(config)# ip address outside pppoe setroute            #把pppoe连接接口设置为默认路由
用ip address pppoe命令启动PPPoE会话。如果PIX不存在默认路由,则可用ip address pppoe命令的setroute选项把pppoe接入服务器的IP地址设置为默认路由。如果PIX存在默认路由,则不能使用setroute命令。否则会不能建立pppoe会话。这是因为pppoe提供的默认网关不能够覆盖已存在的默认网关。如果想使用pppoe服务器提供的默认网关,则要清除已存在默认网关。
ip address pppoe语法:
ip address <if_name> pppoe
用show vpdn命令可以查看PPPoE隧道和会话信息。
4.5. NAT
NAT即网络地址转换,把数据包中的私有IP地址转换成公有IP地址用于访问公网或连接另一网络。在PIX中内网都是要通过NAT转换才能访问外网的。PIX使用nat命令和global命令来完成NAT的配置。global命令用来定义转换后的IP地址池,一般是一个或一组公网IP地址。nat命令使用该地址池进行地址转换。
global命令格式:
Usage: global [(<ext_if_name>)] <nat_id> {<global_ip>[-<global_ip>] } | interface
示例
global (outsite) 1 192.168.0.2-192.168.0.10 netmask 255.255.255.0定义了地址池1,也就是说nat_id的值为1,地址池的IP范围是192.168.0.2到192.168.0.10
如果地址池使用interface接口参数,则定义了一个PAT(端口地址转换),PAT也是NAT的一种。PAT把多个内网IP转换成一个固定的外网IP,转换后,通过分配不同的端口号来区分每个数据包。在中国,由于IP资源的紧缺,每个企业所获得的公网IP地址都不多。不可能定义一个大的IP地址池来进行IP地址转换。多数企业都是利用一个外网IP地址,通过配置PAT来使所有内网用户都能连接互联网。
nat命令格式:
fw(config)# nat ?Usage: nat [(<if_name>)] <nat_id> <local_ip> [<mask>                                [<max_conns> ]]] nat [(if_name)] 0 ]
动态内部NAT,把内网私有IP地址动态地转换成一组外部公网IP地址。
fw(config)# nat (inside) 1 0.0.0.0 0.0.0.0 0 0fw(config)# global (outside) 1 192.168.0.2-192.168.0.10 netmask 255.255.255.0
0.0.0.0可以写成0。global定义了外网IP地址池1,nat使用标识1将内部网络和外网IP地址池联系起来,实现地址转换。当内网IP要访问外网时,通过NAT机制从global定义的外网地址池中申请1个外网IP,通过该外网IP与Internet上的主机进行通信。
静态内部NAT,把一个内网私有IP地址静态地转换成一个公网IP地址。设置静态NAT要使用static命令。
fw(config)# static ?Usage: static [(internal_if_name, external_if_name)]                {<global_ip>|interface} <local_ip>                 [<max_conns> [<emb_limit> [<norandomseq>]]]       static [(internal_if_name, external_if_name)] {tcp|udp}                {<global_ip>|interface} <global_port>                <local_ip> <local_port>                 [<max_conns> [<emb_limit> [<norandomseq>]]]
下面示例把内网的IP地址192.168.0.2转换成外网的IP地址61.28.20.11。
fw(config)# static (inside,outside) 192.168.0.2 61.28.20.11
使用static命令设置的静态转换的优先级高于用nat和global命令设置的动态转换。如果一个IP地址已经被PAT使用了,则不能在静态转换中再使用该IP地址。静态转换的作用是把内网服务器开放出来,允许外网用户通过外网IP地址访问。
使用static命令可以设置端口重定向,把内部主机的特定端口转换成外网主机的特定端口。该命令还需配置ACL来允许流量通过。下面的例子就把内网主机的8000端口转成外网主机的80端口。
fw(config)# access-list outside_access_in permit tcp any host 61.28.61.10 eq www fw(config)# static (inside,outside) tcp 61.28.61.10 www 192.168.0.6 8000 netmask 255.255.255.255 0 0
PIX防火墙软件版本6.2或更高版本中,还支持外部动态NAT和外部静态NAT。可以把一个外部不太安全的接口上的IP地址转换成内部安全接口上的IP地址。
用nat 0命令控制某些内部IP地址不使用NAT功能。如果这些IP地址是私有IP地址则不能与外网联接。
fw(config)# nat (inside) 0 x.x.x.x
用ACL策略对nat进行控制。下面对匹配inside_outbound_nat0_acl策略的信息流禁止使用nat。
fw(config)# access-list inside_outbound_nat0_acl permit ip any 192.168.4.0 255.255.255.224 fw(config)# nat (inside) 0 access-list inside_outbound_nat0_acl
如果内网主机要通过位于PIX外的DNS主机进行域名解析来访问内部WEB主机,则要用到NAT的DNS记录转换功能。
fw(config)# nat (inside) 1 10.0.0.0 255.255.255.0 dnsfw(config)# global (outside) 1 192.168.0.20-192.168.0.254 netmask 255.255.255.0fw(config)# static (inside,outside) 192.168.0.17 10.0.0.10 dns
10.0.0.10是Web clien IP,192.168.0.17是内部Web Server IP。
使用show xlate命令显示转换槽内容,clear xlate命令清除转换槽内容。
fw# show xlate984 in use, 1750 most usedPAT Global 66.29.61.11(45903) Local 192.168.12.36(2998)PAT Global 66.29.61.11(46863) Local 192.168.12.36(3847)PAT Global 66.29.61.11(47887) Local 192.168.6.79(2678)PAT Global 66.29.61.11(47823) Local 192.168.12.16(2054)PAT Global 66.29.61.11(47759) Local 192.168.6.147(1632)...
使用show conn命令显示处于活跃的连接。
fw# show conn670 in use, 997 most usedTCP out 220.179.251.106:80 in 192.168.6.79:1514 idle 0:03:04 Bytes 1704 flags UfOTCP out 58.251.62.35:80 in 192.168.12.8:1046 idle 0:00:23 Bytes 29662 flags UIOTCP out 222.163.35.99:80 in 192.168.12.36:2513 idle 0:00:25 Bytes 0 flags saATCP out 58.251.62.31:80 in 192.168.6.227:1203 idle 0:00:30 Bytes 9570 flags UIOTCP out 209.85.143.99:80 in 192.168.13.12:1685 idle 0:00:17 Bytes 1258 flags UIOUDP out 61.144.56.100:53 in 192.168.3.6:8621 idle 0:01:03 flags D...
通过PIX的流量有两种,一种是出站流量,一种是入站流量。出站流量是从一个较高安全级别的接口到一个较低安全级别的接口的流量。入站流量则相反,是由较低安全级别接口到较高安全级别接口的流量。
4.6. 访问控制列表--ACL
PIX中的ACL用来控制通过内网接口和外网接口的流量,使用access-list和access-group两个命令实现。access-list用来创建ACL,access-group用来把ACL绑定到PIX的特定接口上。使用access-group在一个接口上只能绑定一个ACL,且只能绑定在接口的入站(in)流量上,在PIX中没有出站ACL。PIX的ACL条目的编辑比路由器或交换机的灵活,可以随意把新的ACL条目插入到列表的中间位置。在路由器或交换机上的ACL条目是不支持中间插入的。要在中间插入一条新的ACL条目,就要把整个ACL删除重建。
show access-list命令可以列出已设置的ACL条目和匹配命中情况。
clear access-list命令删除所有的ACL配置。如果指定acl_id则只删除指定的ACL条目。
PIX中的ACL和Cisco IOS中的ACL的子网掩码设置方式是完全相反的。在PIX中255.255.255.0表示一个标准C类网络的子网掩码,与Linux操作系统的网络子网掩码设置方式一样。而在Cisco IOS是用0.0.0.255来表示的。
在ACL中可以使用lt(小于)、gt(大于)、eq(等于)、neq(除外)和range(范围)操作符。
示例1,创建一个允许外网访问60.20.60.22主机的www端口的ACL。把该ACL绑定在outsite接口过滤入站的数据包。outside_access_in是使用access-group定义的外部接口别名。
fw(config)# access-list outside_access_in permit tcp any host 60.20.60.22 eq www fw(config)# access-group outside_access_in in interface outside
nat access-list命令结合nat和access-list实现策略nat。它可以只对与ACL中的条目匹配的流量进行nat转换。使用nat 0 access-list还可以对与ACL条目匹配的流量不进行nat操作。下面是一个示例:
fw(config)# access-list nonat permit ip host 192.168.0.2 host 10.2.3.2fw(config)# nat (inside) 0 access-list nonat
示例2,允许内网主机Ping通外网主机。ping程序使用了icmp协议,出站流量默认是通行的。入站流量默认是禁止的,我们要允许icmp协议回复的echo-reply入站流量通过outside接口。
fw(config)# access-list outside_access_in permit icmp any any echo-reply
4.6.1. Turbo ACL
一般我们的ACL都有多个条目,当PIX处理数据包时会一条条地在ACL列表中搜索以找到匹配的条目。当ACL列表中的条目较多时,搜索的效率问题就会影响处理速度。根据测算,当ACL中多于19个条目时,查询时间就会越来越长。这时我们就要启用Trubo ACL。常规ACL和Turbo ACL处理过程的特点如下:
常规ACL处理过程:
ACL条目在内部被有序地组织起来形成一个链表。
线性地查找相匹配的条目,过滤匹配的数据包。
当ACL条目增大时会相应增大查找时间,导致PIX性能下降。
Turbo ACL处理过程:
ACL被编译成一个数据表。
对于大量的ACL来说,会减少查找时间。
最少需要2.1M的内存。
由于Turbo ACL对内存的要求较高,在启用该特性时要注意。每增加2000条ACL则需增加1M内存。启用Turbo ACL的命令是access-list compiled,使用no access-list compiled命令关闭该特性。
4.6.2. icmp ACL
icmp命令用来允许或禁止ping程序访问PIX上的接口,icmp命令的格式如下:
fw(config)# icmp ?Usage: icmp permit|deny <ip-address> <net-mask> [<icmp-type>] <if-name>       icmp
PIX默认内网主机是不允许ping外网口而允许ping内网口的。禁止内网主机ping防火墙的inside接口的命令如下:
fw(config)# icmp deny any echo inside
用show icmp可以显示我们设置的icmp acl,删除icmp acl使用clear icmp命令。
注意:Cisco建议允许ICMP unreachable信息。因为如果我们拒绝了ICMP unreachable信息,将不能自动发现ICMP路径最大传输单元(MTU),造成IPSec和PPTP流量中断。
fw(config)# icmp permit any unreachable outside
4.7. PDM
PDM是个基于Web的GUI管理工具,使用SSL加密传输来保证数据传输的安全。使用PDM可完成大部份的PIX配置。
默认是没有开放HTTPS服务的,不能登录PDM来管理PIX防火墙。用下面的命令打开http服务并允许访问。
http server enablehttp 192.168.1.0 255.255.255.0 inside
上面配置可以打开PDM服务并允许192.168.1.0网段上主机访问https服务。
页: [1]
查看完整版本: PIX防火墙(一)