ACL(access control list)
为什么要使用访问控制列表:
1、管理网络中逐步增长的IP数据
2、当数据经过路由器时进行过滤
限制网络流量,提高网络性能
提供数据流量控制
为网络访问提供基本的安全层
决定转发或者阻止哪些类型的数据流
通配符掩码位设成0则表示精确匹配。
通配符掩码位设成1则表示任意匹配。
标准ACL:
1、检查源地址
2、通常允许、拒绝的是完整的协议
3、可以使用列表号:1-99、1300-1999
4、标准的访问控制列表只对源地址进行控制
5、列表放置的位置:
R1 (fa0/0) -------------(fa0/0)R2(fa0/1)------(fa0/0)R3 (由于此处的图没办法贴过来,大家可以看这个标记想象)
从源到目标的方向是:R1的fa0/0-----out---------->在此接口调用将不起作用,原因是访问控制列表仅对穿越路由器的数据包进行过滤,
对本路由器起源的数据包不作过滤。
R2的fa0/0-----in------------>结果起作用,但是R1在不能访问R3的同时也不能访问R2了
fa0/1-----out---------->结果正确
R3的fa0/0------in----------->结果正确
结论:标准访问控制列表要尽量应用在靠近目标端
扩展ACL:
1、检查源地址和目的地址
2、通常允许、拒绝的是某个特定的协议
3、可以使用列表号:100-199、2000-2699
4、扩展访问列表既可以控制源地址,又可以控制目标地址
5、列表放置的位置:
R1 (fa0/0) -------------(fa0/0)R2(fa0/1)------(fa0/0)R3
从源到目标的方向是:R1的fa0/0-----out---------->在此接口调用将不起作用,原因是访问控制列表仅对穿越路由器的数据包进行过滤,
对本路由器起源的数据包不作过滤。
R2的fa0/0-----in------------>结果正确,且无其他影响
fa0/1-----out---------->结果正确,且无其他影响
R3的fa0/0------in----------->结果正确,且无其他影响
结论:扩展访问控制列表要尽量应用在靠近源端,这样可以使一些非法的流量被尽早丢弃,节省中间设备的贷款和CPU资源
访问列表的比较规则:
1、如果一个访问列表有多行语句,通常按顺序从第一条开始比较,然后再往下一条条比较。
2、一个数据包如果与访问列表的一行匹配,则按规定进行操作,不再进行后续的比较。
3、在每个访问列表的最后一行是隐含的deny any语句--意味着如果数据包与所有行都不配的话,将被丢弃。
标准ACL配置:
1、创建ACL
access-list access-list-number {deny|permit} {source[source-wildcard] | any} [log]
例:R3(config)#access-list 1 deny 12.1.1.1
R3(config)#access-list 1 permit any ------这一行不能省略,因为访问控制 最后隐含了一条deny any的规则。
注意:这两行顺序不能颠倒
2、应用ACL
R3(config)#int s1/0
R3(config-if)#ip access-group 1 in -------在接口下调用访问控制列表1 ,针对的是R3的s1/0口的in方向
扩展ACL配置:
1、创建ACL
例:R3(config)#access-list 100 deny tcp host 12.1.1.1 host 23.1.1.3 eq telnet
协议 源地址 目标地址 telnet使用的是tcp协议,此处也可写telnet的端口号23
R3(config)#access-list 100 permit ip any any ------隐含的是拒绝所有,这一行的作用是允许其他所有的IP流量
注意:这两行顺序不能颠倒
2、应用ACL
R3(config)#int s1/0
R3(config-if)#ip access-group 100 in -------在接口下调用访问控制列表1 ,针对的是R3的s1/0口的in方向
查看命令:
show ip access-list
show ip interface
在VTY下使用:在vty下调用是过滤telnet流量
R1(config)#access-list 10 permit 192.168.1.1
R1(config)#line vty 0 4
R1(config-line)#access-class 10 in
在VTY只能调用标准列表,扩展列表不起作用