思科的filter过滤可以分为内容过滤和URL地址过滤两个大的方面。
内容过滤包括ActiveX和JavaApplet的过滤,功能是阻止用户浏览器获取到HTML标准的网页中的ActiveX控件或JavaApplet小程序,因为这些控件可能会在浏览器客户端运行而带来不可预知的风险。
先来了解一下HTMl中包含ActiveX和JavaApplet等对象的标准,只有知道他的标准格式,才能对其进行完美的过滤。
http://www.w3.org/TR/WD-object-970218
http://htmlhelp.com/reference/html40/special/object.html
W3C的标准文档http://www.w3.org/TR/WD-object-970218介绍了如何在HTML文档中插入多媒体对象(Multimedia object. 包括Java applet、微软的组件对象模型COM-例如一些Activex控件、或其他一些媒体插件)的标准方式。该标准定义了一个新的元素”<OBJECT>”,这个元素为嵌入各种多媒体对象提供了通用的解决方案。
插入JavaApplet例子
??? <OBJECT
?????? CODETYPE=”application/java-vm”
?????? CODEBASE=”http://host/somepath/”
?????? CLASSID=”java:program.start”
?????? HEIGHT=100
?????? WIDTH=100
??? >
??? <PARAM NAME=”options” VALUE=”xqz”>
??????? Your browser does not know how to execute Java applications.
??? </OBJECT>
ActiveX例子
??? <OBJECT
?????? id=clock1
?????? classid=”clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502″
?????? data=”http://www.acme.com/ole/clock.stm”
??? >
??? fall back …
??? </OBJECT>
所以,防火墙对ActiveX或JavaApplet对象的过滤,实际就是检查HTTP协议流中的HTML字符串,解析其中的<Object> 、classid、codebase、codetype等字段,一旦发现嵌入ActiveX和JavaApplet的语句,就将其用<!–? –>符号注释掉。
下面介绍思科ASA防火墙的ActiveX和JavaApplet过滤的配置命令:
- filter activex
使能(或去使能)activex过滤功能,并指定检视的端口范围和源地址网段及目的地址网段。
配置命令
[no] filter activex <port> [-<port>] | except <local_ip> <mask> <foreign_ip> <foreign_mask>
参数说明
port:0-65535 - filter java
使能(或去使能)java applet过滤功能,并指定检视的端口范围和源地址网段及目的地址网段。
配置命令
[no] filter java <port> [-<port>] | except <local_ip> <mask> <foreign_ip> <foreign_mask>
参数说明
port:0-65535
?
?
URL过滤是指检查用户的网络客户端访问外网时指定的外网URL地址,例如,用户浏览网页时,浏览器地址栏中输入的URL就是防火墙检查的对象,FTP工具访问FTP服务器时,用户指定的服务器地址(域名或IP)就是防火墙检查的URL。思科ASA防火墙并不在防火墙本地进程检查URL,而是将检视请求发送给第三方的外部服务器来检视,第三方服务器检视完毕后再将结果返回给ASA防火墙,然后防火墙再根据检视结果处理网络数据报文。ASA支持的第三方服务器包括Websense和securecomputing(即原来的N2H2)这两家厂商提供的服务器,securecomputing现在属于McAfee公司。
- 指定HTTP过滤使用的WEBSNS提供的URL过滤服务器并配置相关参数
配置命令:
[no] url-server [<(if_name)>] [vendor websense] host <local_ip> [timeout <seconds>] [protocol TCP|UDP [version 1|4]] [connections num_conns] ]
参数说明:
ifname:接口名(默认inside).
vendor: 可以不指定,默认为websense.
Local_ip:也可以为主机名域名.
Protocal:默认TCP,指定为TCP时可以指定connections,即与服务器的最大连接数(1-100),默认5。
Version:1或4.默认1,UDP时只能用4.
timeoute(秒,10-120)? 默认30可以同时最多存在16个同类(要么websns要么n2h2,不可同时存在)服务器. - 指定HTTP过滤使用的N2H2提供的URL过滤服务器并配置相关参数
配置命令:
[no] url-server [<(if_name)>] vendor {smartfilter | n2h2} host <local_ip> [port <number>] [timeout <seconds>] [protocol {TCP [connections <number>]} | UDP
参数说明:
ifname:接口名(默认inside).
vendor: 指定为smartfilter即原来的N2H2或secure-computing.
Local_ip:也可以为主机名域名.
Port number:1-65535 默认4005.
Protocal:默认TCP,指定为TCP时可以指定connections,即与服务器的最大连接数(1-100),默认5。
Version:1或4.默认1,UDP时只能用4.
timeoute(秒,10-120)? 默认30可以同时最多存在16个同类(要么websns要么n2h2,不可同时存在)服务器. - 检视结果Cache功能。将检视结果缓存下来,供后续检视使用,可减少检视请求的发送次数。
配置命令
[no] url-cache { dst |?? src_dst } kbytes [ kb ]
参数说明
dst: 指定仅针对目的地址缓存
src_dst: 针对<源、目的地址>二元组来缓存
kb: (1-128) 指定cache的大小 单位KB。 - 缓存待检视报文(HTTP/FTP)。当检视未完成时,将web服务器或FTP服务器响应的HTTP/FTP数据报文缓存下来,等待得到检视结果后再处理。用户可以设置缓存的大小或关闭缓存功能。
配置命令
[no] url-block block block_buffer
[no] url-block mempool-size memory_pool_size - 缓存报文的最大URL长度。只有URL长度在指定长度之下的报文才可以缓存
配置命令
[no] url-block url-size long_url_size
参数说明
long_url_size: 报文的URL最大长度,单位KB,范围2-4(websns), 2-3(N2H2) , 默认值2. - 使能HTTP检视并指定检视范围。指定哪些内网主机访问哪些web服务器时需要检视并设置相关选项参数
配置命令
[no] filter url <port> [-<port>] | except <local_ip> <mask> <foreign_ip> <foreign_mask> [allow]
[cgi-truncate] [longurl-truncate | longurl-deny] [proxy-block]
参数说明
port:0-65535
except:指定except范围,在该范围内即跳过filter过程。
allow: 检视服务器无法连接时允许跳过检视步骤。默认为不允许。
Cgi-truncate: 移除CGI语句(即将问号之后的内容忽略) 默认关闭。
longurl-truncate: 当URL长度超过最大值(由url-block url-size long_url_size命令指定)时,仅使用主机名或IP地址作为URL。
longurl-deny: 当URL长度超过最大值(由url-block url-size long_url_size命令指定)时,禁止该URL地址的流量。
proxy-block: 阻断代理方式的流量。默认不阻断。常见的代理请求的特征即在http的URL中嵌套URL。 - 使能HTTPS检视并指定检视范围。指定哪些内网主机访问哪些web服务器时需要检视。HTTPS将HTTP协议封装在加密的SSL通道中传输,所以防火墙无法监视http协议和数据,只能检视目的web服务器的域名或IP。
配置命令:
no filter https <port> [-<port>] | except <local_ip> <mask> <foreign_ip> <foreign_mask> [allow]
参数说明:
port:0-65535
except:指定except范围,在该范围内即跳过filter过程。
allow: 检视服务器无法连接时允许跳过检视步骤。默认为不允许。 - 使能FTP检视并指定检视范围。指定哪些内网主机访问哪些FTP服务器时需要检视。
配置命令:
no filter ftp <port> [-<port>] | except <local_ip> <mask> <foreign_ip> <foreign_mask> [allow]
[interact-block]
参数说明:
port:0-65536
except:指定except范围,在该范围内即跳过filter过程。
allow: 检视服务器无法连接时允许跳过检视步骤。默认为不允许。
Interact-block: 禁止交互式客户端的ftp(交互式客户端使用当前相对目录而不是绝对目录作为目录字段)
参数说明
block_buffer: (1-128) 指定可以缓存多少个包(每个包1550字节)
memory_pool_size: (2-10240)指定缓存大小,单位KB。
防火墙的过滤功能建立在对标准协议的透彻解析之上,类似于“中间人”攻击方式,只要防火墙获得了“中间人”的地位,所有的标准协议都是可以解析和修改的,同样一把手枪,在罪犯和警察的手中,功能相同,性质不同。