pix访问控制列表和内容过滤(1) 以配置pix防火墙使之有选择地允许某些流量通过其接口,这些配置方式有:基于源地址或目的地址;基于服务类型;基于验证、授权和计费(aaa)需求;基于内容或目的url。 www.2cto.com acl是由路由器和pix防火墙维护的用来控制
pix访问控制列表和内容过滤(1)
以配置pix防火墙使之有选择地允许某些流量通过其接口,这些配置方式有:基于源地址或目的地址;基于服务类型;基于验证、授权和计费(aaa)需求;基于内容或目的url。
www.2cto.com
acl是由路由器和pix防火墙维护的用来控制流量的一个列表。内容过滤可以阻止特定类型的内容(比如java applets,activex控件等)进入你的网络,还可以用来控制和阻止网络内部主机对受限的web站点的访问。
一、访问控制列表
使用access-list和access-group这两条命令可以实现acl。
access-list命令用来创建acl,access-group命令用来把acl绑定到路由器或pix防火墙的特定接口上。使用access-group命令在一个接口上只能绑定一个acl。
与使用cisco ios的路由器不同的是,在pix防火墙上使用access-group命令只能将acl绑定到任意接口的入站流量上。不过,在pix防火墙上仍然能控制出站流量(例如,从inside接口到outside接口),但是必须使用access-group acl_id in interface inside命令将acl绑定到inside接口上,从而控制从内部主机到inside接口的流量。
access-list和access-group命令可以代替outbound或者conduit命令,且access-list和access-group命令具有较高的优先级。
当用来允许或拒绝流量时,access-list命令与conduit命令遵循同样的原理和规则。以下是设计和实现acl时遵循的规则:
●从较高到较低的安全性: www.2cto.com
-用acl来限制出站流量;
-acl命令中的源地址是主机或网络的实际地址。
●从较低到较高的安全性:
-用acl来限制入站流量;
-acl命令中的目的地址是经过转换的全局地址。
access-list命令使你可以指明允许或拒绝某ip地址访问某端口或协议。缺省情况下,访问列表中的所有访问都是被拒绝。因此,需要允许访问时必须明确指出。
在pix防火墙6.3中加入了对acl编辑及注释的支持。该版本中可以为特定的acl条目指定行编号,并把它放到acl中的任意位置。
当把主机的ip地址作为源或目的地址时,可以使用关键字host来代替网络掩码255.255.255.255。例如,下列acl允许到主机192.168.1.1的ftp流量:
access-list sampleacl permit tcp any host 192.168.1.1 eq ftp
show access-list命令可以列出配置中的access-list命令语句,还可以列出access-list命令搜索过程中各元素的匹配命中统计。在6.3版本中,还可以显示出所有添加到acl中的注释和每个条目的行编号。
clear access-list命令将从配置中删除所有的access-list命令语句。如果指定了clear access-list命令中的acl_id参数,那么仅仅删除与该参数对应的acl。如果指定counters选项,那么将清除指定acl的匹配命中统计。
使用clear access-list命令的同时会阻止与被影响的access-list命令语句相关的所有流量通过pix防火墙。
使用no access-list命令时,如果所提供的参数与已有的特定命令相匹配,那么将从配置中删掉该命令。
当使用no access-list命令且仅指定相关acl的名称时,整个acl将被删除。如:no access-list out_in
如果一个acl组中所有的access-list命令语句都已被删除,那么no access-list命令相当于从配置中删除相应的access-group命令。
处理子网掩码的顺序相反之外,access-list命令在pix防火墙中与cisco ios软件中的语法是一样的。如,在cisco ios中access-list命令指定的子网掩码为0.0.0.255,那么在pix防火墙中access-list命令将指定该子网掩码为255.255.255.0。
以下列出了access-list命令的语法:
access-list acl_id [line line_num] deny | permit protocol source_addr source_mask [operator port [port]] destination_addr destination_mask operator [port [port]]
access-list acl_id [line line_num] deny | permit icmp source_addr source_mask destination_addr destination_mask [icmp_type]
access-list acl_id [line line_num] remark text
show access-list
clear access-list [acl_id] [acl_id counters]
对于入站连接来说,destination_addr指经过nat转换后的地址;对于出站连接来说,source_addr指未经nat转换的地址。
access-group命令用来绑定一个acl到一个接口。acl用来控制一个接口的入站流量(这点与路由器上的acl不同,在pix上没有出站acl)。使用access-group命令在一个接口上只能绑定一个acl。
no access-group命令可以解除绑定在接口interface_name上的以参数acl_id表示的acl。
show access-group命令用来列出当前绑定在接口上的acl。
clear access-group命令将删除以参数acl_id表示的acl中的所有条目。如果未指明参数acl_id,那么配置中所有access-list命令语句都会被删除。
以下列出了access-group命令的语法:
access-group acl_id in interface interface_name
no access-group acl_id in interface interface_name
show access-group acl_id in interface interface_name
clear access-group
●acl_id--与给定的acl相关联的名称
●in interface--在给定的接口上过滤入站的数据包
●interface_name--网络接口的名称
nat命令可以为主机或网络启用nat地址转换。nat access-list将在nat命令的基础上实现策略nat,可以只对与访问控制列表acl中的条目相匹配的流量进行nat转换。还可以使用nat 0 access-list命令对与acl的条目相匹配的流量不进行地址转换。
以下列出了nat access-list命令的语法:
nat [(if_name)] nat_id access-list acl_name [outside]
●if_name--内部网络接口名称。如果该接口绑定了一个acl,那么if_name参数就是拥有较高安全级别接口的名称
●nat_id--在0和65535之间的一个整数。如果nat_id取值为0,则表示匹配acl的流量将不进行nat转换。如果nat_id在1和65535之间取值,则表示启用策略nat
●access-list--该参数使nat 0命令与access-list命令相关联
●acl_name--用于标识access-list命令语句的名称
●outside--用于指定将nat命令应用到outside接口地址上。
下面例子说明使用nat 0 access-list命令可以使内部主机10.0.0.11在连接到外部主机10.2.1.3时不经过nat地址转换。
pixfirewall(config)#access-list nonat permit ip host 10.0.0.11 host 10.2.1.3
pixfirewall(config)#nat (inside) 0 access-list nonat
turbo acl
一个典型的acl是由多个acl条目组成,这些条目在pix防火墙内被有序地组织起来形成一个链表。当使用访问控制列表来处理数据包时,pix防火墙顺序地查找该链表以发现匹配地条目。被匹配的条目用来决定转发或丢弃该数据包。在线性的查找过程中,平均查找时间与acl的大小成正比。
turbo acl通过让pix防火墙重新编辑acl表格,在acl包含大量条目时可以提高平均查找时间。可以先对所有acl启用该特性,然后再针对特定的acl禁用该特性;也可以为某个特定的acl启用该特性。对于较短的acl来说,turbo acl特性不会提高性能。一个turbo acl查询一个任意长度的acl所需要的时间,与在一个大约由12到18个条目构成的acl中进行常规的查询所需的时间大致是相同的。因此,turbo acl特性既是被启用,也仅仅被用到包含19个甚至更多条目的acl上。
turbo acl最少需要2.1mb的内存而且每2000条acl条目大约需要1mb的内存。实际所需的那促不仅与acl中所拥有的条目数量有关,而且还和条目的复杂程度有关。因此比较适合在高端pix防火墙上使用,例如pix防火墙525或535。当在启用trubo acl特性的acl中添加或删除某个条目时,与该acl相关联的内部数据表格将重新生成,这对pix防火墙的cpu所增加的负担是不可忽略的。
501型号的pix防火墙不支持turbo acl。
turbo acl特性可以统一配置,也可以针对每个acl逐个配置。用access-list compiled命令可以为所有包含19个或更多条目的acl启用turbo acl特性。该命令将使turbo acl处理过程扫描所有现有的acl。在扫描期间,将给每个acl添加turbo配置标记,并为包含19个以上条目的且尚未被编辑的acl进行编辑。
可以使用access-list acl_id compiled命令为单独的acl启用turbo acl特性,还可以在统一配置turbo acl后使用该命令的no形式为特定的acl关闭该特性。
no access-list compiled命令缺省地会使pix防火墙的turbo acl处理过程扫描所有编辑过的acl,并且将每个acl标记为non-turbo,还会删除所有存在的turbo acl结构。
使用show access-list命令可以查看turbo acl配置情况。在配置了turbo acl的情况下,该命令会输出每个经过turbo编辑的acl的内存使用情况和所有这些acl共享的内存使用情况,当没有acl被turbo编辑过,那么不会输出turbo统计。