一、审查规则
首先,先说明一点,审查规则与ACL不是一个事。虽然,通常是一起用,但是他俩顶多算是邻居,不是一家的。例如审查规则的命令是:ip inspect name RuleName tcp;ACL则是 access-list 101 permit ip any any 。审查规则比较简单,直接写上协议名就行 ACL 就比较复杂了...
二、ACL
当收到一个packet时,路由器会将其与access-list进行比较,并遵循以下规则:
1、当你创建了ACL之后,它本身并不会起作用,你需要将其应用到路由器的端口才能起效。而且,你必须定义ACL应用于哪个方向,进方向(inbound)还是出方向(outbound)。每个interface、协议、方向只能用一个ACL,对于一个端口来说,最多只能同时有两个ACL,一个是inbound,一个是outbound。
2、总是会按照acl的顺序进行比较,即第1条、第2条......... 一旦packet与acl中的一个规则匹配,它就不会继续与其他规则进行比较,所以应将更明细的比较规则放在ACL的最上方。注意,每次你添加一项规则,它都会添加到ACL的最下方,所以你在设置ACL的时候一定要注意先后顺序。而且你不能单独删除ACL中的某项规则,要删就只能删除整个ACL(named ACL除外,它可以只删除某项规则)。
3、每个ACL应该至少有一条permit语句,否则它会拒绝所有流量。每个ACL的最后都有一条隐含的deny规则,如果packet不与ALC中的任何一条规则匹配,那么packet将被丢弃。
4、ACL是用来过滤流经路由器的流量的,它不能过滤路由器自身产生的流量,例如从路由器的去ping某台主机。
三、配置举例
现要将路由器配置为一个介于内部和外部网络的防火墙,以下是安全策略:
1、需求
对于产生的内部流量(输出):
——允许来自内部网络10.0.0.0的所有普通的TCP和UDP的流量访问Internet;
——允许来自网络10.0.0.0的ICMP流量;
——拒绝别的没有定义过的内部网络。
对于产生于外部的流量(输入):
——允许任何人访问主机10.0.0.0.3的ICMP和HTTP;
——拒绝别人的任何流量。
2、输入流量
编写内部接口:
1、写一个规则审查TCP和UDP流量
Router(config)#ip inspect name OUTBOUND tcp
Router(config)#ip inspect name OUTBOUND udp2、写一个ACL允许来自网络10.0.0.0的IP流量可以访问任何目的地址:
Router(config)#access-list 101 permit ip 10.0.0.0 0.0.0.255 any
Router(config)#access-list 101 deny ip any any3、在内的方向上,将审查规则和ACL应用到内部接口
Router(config)#interface FastEthernet0/0
Router(config-if)#ip inspect OUTBOUND in
Router(config-if)#ip access-group 101 in3、输入流量
编写外部接口:
1、写一个ACL仅允许来自Internet到10.0.0.3主机的ICMP和HTTP流量:
Router(config)#access-list 102 permit icmp any host 10.0.0.3
Router(config)#access-list 102 permit tcp any host 10.0.0.3 eq www
Router(config)#access-list 102 deny ip any any2、在向内的方向上,将审查规则和ACL应用到外部接口:
Router(config)#interface FastEthernet0/1
Router(config-if)#ip inspect OUTBOUND in
Router(config-if)#ip access-group 102 in