访问控制列表(1):概述(2006-10-30 13:51:13)
一、访问列表简介
通常,ACL被看作是一种过滤工具,过滤进入或离开路由器的流量。ACL支持下列所有类型的操作:
●对进入接口的流量进行过滤;
●对离开接口的流量进行过滤;
●控制道路由器VTY线路的访问;
●控制路由器向相邻路由器发布哪些路由更新或者从相邻路由器接收哪些路由更新;
●用模拟线路或者ISDN触发拨号路由选择;
●分类流量以处理拥塞,如拥塞避免、拥塞管理和队列功能;
●基于地址或者协议信息,限制debug命令的输出。
1、ACL和过滤
当ACL用作过滤流量时,通常称为过滤器(FILTER)。基于在路由器上定义的条件(规则),可以应用道这些流量的决定包括允许或者丢弃流量。条件可以在数据包的内容中查找匹配信息,包括:
★源地址或者目的地址;
★第2层协议信息,例如以太网帧类型;
★第3层协议,例如IP、IPX和AppleTalk;
★第3层协议信息,例如IP、ICMP、OSPF、TCP、UDP和其他TCP/IP协议族中的协议;
★第4层协议信息,例如TCP和UDP端口号。
通常,ACL过滤第3层和第4层信息,从上面可以看出,还可以用来过滤第2层信息。另外,ACL也可以跟踪第5层,或会话层信息以及更高层信息。
2、ACL类型
▲标准IP ACL --这种类型的ACL只能过滤第3层信息。这些ACL基于数据包头的源地址过滤数据包。
▲扩展IP ACL --这种类型的ACL可以活率第3层和第4层信息。这些ACL基于源地址和目的地址、协议以及协议信息(如ICMP消息类型、TCP或UDP端口号)来过滤数据包。
▲Turbo ACL --这是一个ACL特性,可以编译标准和扩展ACL,使得路由器可以更有效地处理它们,以便快速查找。
▲定时IP ACL -- 这是一种扩展IP ACL,可以过滤第3层和第4层信息。 不同于普通的扩展IP ACL,定时ACL可以基于每天的某时间,每周的某天被激活。可以设置它们基于一个重复的时间周期或者单个时间期来进行过滤。
▲反射IP ACL --这个类型的ACL可以过滤第3、4、5层的信息。
▲基于上下文的ACL(CBAC)--这种类型的ACL可以过滤第3层到第7层的信息。这是Cisco IOS中的有状态防火墙功能。
▲锁和密钥(Lock-and-key)ACL --这种类型的ACL过滤第3层信息,有时也可以过滤第4层信息。在通过PPP连接时,这些ACL执行双重认证,用户首先通过PAP或者CHAP进行认证,然后在路由器允许连接之前,在应用层进行认证。
(ACL主要在第3、4层执行过滤,有时在第5层:它们不可能阻止所有类型的攻击,例如应用层攻击。ACL也很容易受到欺骗攻击。因此,ACL应该和Cisco IOS的其他安全特性一起为网络提供最好的保护,防止网络威胁。)
3、处理ACL
ACL语句有两个组件:一个是条件,一个是操作。条件用于匹配数据包内容。当为条件找到匹配时,则会采取一个操作:允许或者拒绝数据包。
⑴条件
条件基本上是一组规则,定义了要在数据包内容中查找什么来确定数据包是否匹配。条件可以简单到在数据包源地址中查找匹配,或者复杂到在源地址、目的地址、协议类型和协议信息中查找匹配。
每条ACL语句中只可以列出一个条件。但是,可以将ACL语句组合在一起形成一个列表或策略。语句通过编号或者名称来分组。
⑵对条件的匹配
当ACL语句条件与比较的数据包内容相匹配时,Cisco IOS可以采取两种基本的操作:
●允许
●拒绝
当在ACL语句中找到一个匹配时,则不会再处理其他语句。而且,在每个ACL最后都有一个看不见的语句,称为“隐式的拒绝”语句。这条语句的目的是丢弃数据包,如果一个数据包和列表中的每条语句都进行比较后,也没有发现匹配,则该数据包被丢弃。因此,在ACL中应该至少有一个允许操作是常识。如果只有拒绝操作,Cisco IOS将会因为匹配一条语句而丢弃数据包,或者会使用隐式的拒绝语句来丢弃数据包。
⑶ACL流程图
当接口收到数据包时,Cisco IOS首先确定ACL是否被应用到该接口。如果没有,Cisco IOS正常地路由该数据包。如果有,则处理ACL。从第一条语句开始,将条件和数据包内容作比较。如果没有匹配,Cisco IOS处理列表中的下一条语句。如果有匹配,则执行操作:允许或拒绝。如果Cisco IOS查遍了整个ACL也没有找到匹配,则丢弃数据包。
对于输出ACL,过程是相似的。当Cisco IOS接收到数据包时,首先将数据包路由到输出接口。然后Cisco IOS检查在接口上是否有ACL输出,如果没有,Cisco IOS将数据包排在队列中,发送出接口。否则,数据包通过与ACL条目进行比较被处理。
⑷ACL中的语句顺序
默认地,当将ACL语句添加到列表中时,被添加到列表的最后。ACL语句的顺序很重要,因为Cisco IOS自上而下地处理列表。
在设置过滤规则时,从约束性最强地到约束性最弱地顺序列出它们。另外,如果想允许每个人都能够访问大多数服务器,只拒绝少数特定的人,则在设置ACL时,首先拒绝特定的连接,然后允许所有其他的连接。如果只想允许少数的访问,而拒绝所有其他的访问,则首先指定允许语句,而隐式拒绝丢弃所有其他的访问。
⑸ACL规则和限制
★ACL语句按名称或者编号分组;
★每条ACL语句都只有一组条件和操作(允许或者拒绝)。如果需要多个条件或者多个行动,则必须生成多个ACL语句;
★如果一条语句的条件中没有找到匹配,则处理列表中的下一条ACL语句;
★如果在ACL组的一条语句中找到匹配,则不再处理后面的语句;
★如果处理了列表中的所有语句而没有指定匹配,不可见的隐式拒绝语句拒绝该数据包;
★由于在ACL语句组的最后有隐式拒绝,所有至少要有一个允许操作;否则,所有数据包都会被拒绝;
★在过滤时,如果Cisco IOS丢弃数据包,它会生成ICMP管理性禁止消息;
★语句的顺序很重要,约束性最强的语句应该放在列表的顶部,约束性最弱的语句应该放在列表的底部;
★一个空的ACL组允许所有数据包,空的ACL组已经在路由器上被激活,但是不包括任何语句的ACL。要使隐式拒绝语句起作用,则在ACL中至少要有一条允许或者拒绝语句。
★只能在每个接口、每个协议、每个方向上应用一个ACL。
★在数据包被路由到其他接口之前,处理输入ACL;
★在数据包被路由到接口之后,而在数据包离开接口之前,处理输出ACL;
★当ACL应用到一个接口时,这会影响通过接口的流量,但ACL不会过滤路由器本身产生的流量。
⑹ACL定位
◆只过滤数据包源地址的ACL应该放在离目的地(正在过滤的)尽可能近的地方;
◆过滤数据包的源地址和目的地址以及其他信息的ACL,则应该放在离源地址尽可能近的地方。
二、基本ACL的配置
配置ACL需要两个步骤:
●建立ACL规则;
●激活ACL规则。
1、建立ACL
对想要过滤的每个协议,需要建立单独的ACL。每个ACL基本上是一组定义过滤规则的语句的组合,使用编号或者名称用来分组这些语句。如果使用编号,不可以任意选择随机的数字分配给ACL语句组。
标准IP--1~99,1300~1999
扩展IP--100~199,2000~2699
使用以下的命令来建立使用编号的ACL语句组,不同组用不同的编号来区分:
Router(config)#access-list ACL_# permit|deny conditions
2、激活ACL
可以使用下面的命令,在一个接口上激活ACL来实现过滤:
Router(config-if)#ip access-group ACL_#_or_name in|out
访问控制列表(1):概述(2006-10-30 13:51:13)
一、访问列表简介
通常,ACL被看作是一种过滤工具,过滤进入或离开路由器的流量。ACL支持下列所有类型的操作:
●对进入接口的流量进行过滤;
●对离开接口的流量进行过滤;
●控制道路由器VTY线路的访问;
●控制路由器向相邻路由器发布哪些路由更新或者从相邻路由器接收哪些路由更新;
●用模拟线路或者ISDN触发拨号路由选择;
●分类流量以处理拥塞,如拥塞避免、拥塞管理和队列功能;
●基于地址或者协议信息,限制debug命令的输出。
1、ACL和过滤
当ACL用作过滤流量时,通常称为过滤器(FILTER)。基于在路由器上定义的条件(规则),可以应用道这些流量的决定包括允许或者丢弃流量。条件可以在数据包的内容中查找匹配信息,包括:
★源地址或者目的地址;
★第2层协议信息,例如以太网帧类型;
★第3层协议,例如IP、IPX和AppleTalk;
★第3层协议信息,例如IP、ICMP、OSPF、TCP、UDP和其他TCP/IP协议族中的协议;
★第4层协议信息,例如TCP和UDP端口号。
通常,ACL过滤第3层和第4层信息,从上面可以看出,还可以用来过滤第2层信息。另外,ACL也可以跟踪第5层,或会话层信息以及更高层信息。
2、ACL类型
▲标准IP ACL --这种类型的ACL只能过滤第3层信息。这些ACL基于数据包头的源地址过滤数据包。
▲扩展IP ACL --这种类型的ACL可以活率第3层和第4层信息。这些ACL基于源地址和目的地址、协议以及协议信息(如ICMP消息类型、TCP或UDP端口号)来过滤数据包。
▲Turbo ACL --这是一个ACL特性,可以编译标准和扩展ACL,使得路由器可以更有效地处理它们,以便快速查找。
▲定时IP ACL -- 这是一种扩展IP ACL,可以过滤第3层和第4层信息。 不同于普通的扩展IP ACL,定时ACL可以基于每天的某时间,每周的某天被激活。可以设置它们基于一个重复的时间周期或者单个时间期来进行过滤。
▲反射IP ACL --这个类型的ACL可以过滤第3、4、5层的信息。
▲基于上下文的ACL(CBAC)--这种类型的ACL可以过滤第3层到第7层的信息。这是Cisco IOS中的有状态防火墙功能。
▲锁和密钥(Lock-and-key)ACL --这种类型的ACL过滤第3层信息,有时也可以过滤第4层信息。在通过PPP连接时,这些ACL执行双重认证,用户首先通过PAP或者CHAP进行认证,然后在路由器允许连接之前,在应用层进行认证。
(ACL主要在第3、4层执行过滤,有时在第5层:它们不可能阻止所有类型的攻击,例如应用层攻击。ACL也很容易受到欺骗攻击。因此,ACL应该和Cisco IOS的其他安全特性一起为网络提供最好的保护,防止网络威胁。)
3、处理ACL
ACL语句有两个组件:一个是条件,一个是操作。条件用于匹配数据包内容。当为条件找到匹配时,则会采取一个操作:允许或者拒绝数据包。
⑴条件
条件基本上是一组规则,定义了要在数据包内容中查找什么来确定数据包是否匹配。条件可以简单到在数据包源地址中查找匹配,或者复杂到在源地址、目的地址、协议类型和协议信息中查找匹配。
每条ACL语句中只可以列出一个条件。但是,可以将ACL语句组合在一起形成一个列表或策略。语句通过编号或者名称来分组。
⑵对条件的匹配
当ACL语句条件与比较的数据包内容相匹配时,Cisco IOS可以采取两种基本的操作:
●允许
●拒绝
当在ACL语句中找到一个匹配时,则不会再处理其他语句。而且,在每个ACL最后都有一个看不见的语句,称为“隐式的拒绝”语句。这条语句的目的是丢弃数据包,如果一个数据包和列表中的每条语句都进行比较后,也没有发现匹配,则该数据包被丢弃。因此,在ACL中应该至少有一个允许操作是常识。如果只有拒绝操作,Cisco IOS将会因为匹配一条语句而丢弃数据包,或者会使用隐式的拒绝语句来丢弃数据包。
⑶ACL流程图
当接口收到数据包时,Cisco IOS首先确定ACL是否被应用到该接口。如果没有,Cisco IOS正常地路由该数据包。如果有,则处理ACL。从第一条语句开始,将条件和数据包内容作比较。如果没有匹配,Cisco IOS处理列表中的下一条语句。如果有匹配,则执行操作:允许或拒绝。如果Cisco IOS查遍了整个ACL也没有找到匹配,则丢弃数据包。
对于输出ACL,过程是相似的。当Cisco IOS接收到数据包时,首先将数据包路由到输出接口。然后Cisco IOS检查在接口上是否有ACL输出,如果没有,Cisco IOS将数据包排在队列中,发送出接口。否则,数据包通过与ACL条目进行比较被处理。
⑷ACL中的语句顺序
默认地,当将ACL语句添加到列表中时,被添加到列表的最后。ACL语句的顺序很重要,因为Cisco IOS自上而下地处理列表。
在设置过滤规则时,从约束性最强地到约束性最弱地顺序列出它们。另外,如果想允许每个人都能够访问大多数服务器,只拒绝少数特定的人,则在设置ACL时,首先拒绝特定的连接,然后允许所有其他的连接。如果只想允许少数的访问,而拒绝所有其他的访问,则首先指定允许语句,而隐式拒绝丢弃所有其他的访问。
⑸ACL规则和限制
★ACL语句按名称或者编号分组;
★每条ACL语句都只有一组条件和操作(允许或者拒绝)。如果需要多个条件或者多个行动,则必须生成多个ACL语句;
★如果一条语句的条件中没有找到匹配,则处理列表中的下一条ACL语句;
★如果在ACL组的一条语句中找到匹配,则不再处理后面的语句;
★如果处理了列表中的所有语句而没有指定匹配,不可见的隐式拒绝语句拒绝该数据包;
★由于在ACL语句组的最后有隐式拒绝,所有至少要有一个允许操作;否则,所有数据包都会被拒绝;
★在过滤时,如果Cisco IOS丢弃数据包,它会生成ICMP管理性禁止消息;
★语句的顺序很重要,约束性最强的语句应该放在列表的顶部,约束性最弱的语句应该放在列表的底部;
★一个空的ACL组允许所有数据包,空的ACL组已经在路由器上被激活,但是不包括任何语句的ACL。要使隐式拒绝语句起作用,则在ACL中至少要有一条允许或者拒绝语句。
★只能在每个接口、每个协议、每个方向上应用一个ACL。
★在数据包被路由到其他接口之前,处理输入ACL;
★在数据包被路由到接口之后,而在数据包离开接口之前,处理输出ACL;
★当ACL应用到一个接口时,这会影响通过接口的流量,但ACL不会过滤路由器本身产生的流量。
⑹ACL定位
◆只过滤数据包源地址的ACL应该放在离目的地(正在过滤的)尽可能近的地方;
◆过滤数据包的源地址和目的地址以及其他信息的ACL,则应该放在离源地址尽可能近的地方。
二、基本ACL的配置
配置ACL需要两个步骤:
●建立ACL规则;
●激活ACL规则。
1、建立ACL
对想要过滤的每个协议,需要建立单独的ACL。每个ACL基本上是一组定义过滤规则的语句的组合,使用编号或者名称用来分组这些语句。如果使用编号,不可以任意选择随机的数字分配给ACL语句组。
标准IP--1~99,1300~1999
扩展IP--100~199,2000~2699
使用以下的命令来建立使用编号的ACL语句组,不同组用不同的编号来区分:
Router(config)#access-list ACL_# permit|deny conditions
2、激活ACL
可以使用下面的命令,在一个接口上激活ACL来实现过滤:
Router(config-if)#ip access-group ACL_#_or_name in|out