访问控制列表ACL可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
ACL概述
- 用于路由器接口:包过滤技术,读取第三层或第四层包头中的信息,从而达到访问控制目的。
- 用于其他控制策略的匹配列表:通过包头部信息进行数据的匹配,匹配结果被其他控制策略调用并执行相应控制操作。
ACL的作用
- 提供对网络访问流量的基本安全控制手段
- 限制或减少路由器更新的内容
- 可用于Qos,控制数据流量
应用场景
- 过滤:定义规则来允许或拒绝流量通过
- 匹配:根据需求定义过滤的条件以及匹配条件后执行动作
访问控制列表需配置一个除列表外的other,如果全都不匹配就拒绝
入方向的ACL:进入数据包之后查看接口上是否有访问控制列表,最后找路由表
出方向的ACL:外出数据包先访问路由表,再查看接口上是否有访问控制列表
ACL的分类:
- 标准ACL
- 基于源IP地址控制数据包
- 允许和拒绝完整的协议
- 编号1-99、1300-1999
- 扩展ACL(匹配精细度更高)
- 基于源IP地址、目的IP地址、端口号、协议类型
- 允许和拒绝特定的协议和端口号
- 编号100-199、2000-2699
- 命名ACL(标准和扩展的结合)
用标准ACL拒绝:
R2:access-list
access-list 1 deny 【拒绝IP】10.1.1.1 【反掩码】0.0.0.0 //反掩码用来做数据匹配,0置位的要相同,1置位的可以不同,这里 32bit都要匹配,所以只能匹配源IP为10.1.1.1的数据包
10.1.1.0 0.0.0.255 //源地址前24位位10.1.1的数据包被匹配
10.1.1.1 0.0.0.254 //匹配源地址前24位为10.1.1的所有奇数IP报文
10.1.1.0 0.0.0.254 //匹配源地址前24位为10.1.1的所有偶数IP报文
int f0/0
ip acccess-group 1 in
.为没回包ping不通;U为目标不可得包,有回包但是ping不通
no ip acccess-group 1 in (删除全表)
!可通
R1、R3创建路由
R1-R2-R3
禁止R1远程R3,但是可以pingR3(扩展).
- 如果是通过限制R1去往R3方向的流量实现那么:
- 拒绝了源IP:10.1.1.1,目的IP20.1.1.3,且协议为TCP,目的端口为23的数据流
- 允许了源IP:10.1.1.1,目的IP:20.1.1.3,且协议为ICMP,报文类型为echo-request报文
R2:access-list 100 deny tcp 10.1.1.1 0.0.0.0 【源IP】20.1.1.3 0.0.0.0 【目的IP】eq 23 【目的端口】
access-list permit icmp 10.1.1.1 0.0.0.0 【源IP】20.1.1.3 0.0.0.0 【目的IP】echo
int f0/0
ip access-group 100 in
标准:
access-list 表编号 动作【deny/permit】 源IP前缀 反掩码
扩展:
access-list 表编号 动作【deny/permit】协议 【IP/TCP/UDP/ICMP】 源IP前缀 反掩码
协议:
- IP(代表只看IP头部):后面直接跟源、目的IP,匹配报文范围广
- TCP(协议一定是TCP,可以配置源目的端口):后面跟源IP+源端口号(eq 端口号:如果不配,代表匹配所有端口)+目的IP+目的端口
- UDP:同TCP
- ICMP(要区分ICMP报文类型:echo-requst(echo)、echo-reply):源IP+目的IP+ICMP报文类型
如果说源、目的IP地址想匹配所有,那么可以用any参数
access-list 100 permit ip 10.1.1.1 0.0.0.0 any //所有源地址为10.1.1.1的报文
查看访问列表:
sh access-lists
sh ip access-lists
ACL默认有一天拒绝所有条目放在最后,如果不想让这条生效,那么需配置一条允许所有的条目
标准:access-list 1 permit any
扩展:access-list 100 permit ip any any
ACL匹配规则
- ACL匹配顺序自上而下
- 每一张ACL有一条默认隐含的Deny语句
- 标准ACL放在离目的近的地方,扩展ACL放在离源近的地方
- 标准ACL和扩展ACL删除时,不能删除单独一个条目
- ACL不能过滤路由器自己产生的数据
不能调用源数据发送设备的访问列表
ACL配置指南
- 先创建ACL,然后应用到端口上
- ACL中应把具有严格限制条件的语句放在前面
- 在ACL最后有一条默认隐含deny any语句——每一条正确的访问控制列表都至少应该有一条permit语句
- 每个端口、每个方向、每条协议只能对应一条ACL
- ACL不能过滤路由器自己产生的数据
只允许管理员电脑IP:10.1.1.1远程R3,其他人不行
access-list 100 permit tcp 10.1.1.1 0.0.0.0 20.1.13 0.0.0.0 eq 23
access-list 100 deny tcp any 20.1.13 0.0.0.0 eq 23
access-list 100 deny permit ip any any
int f0/0
ip access-list 100 in
如果是想影响远程功能的话,可以通过vty线路的控制方法实现更简单(用标准)
access-list 10 permit 10.1.1.1 0.0.0.0 //只允许了10.1.1.1的远程报文
line vty 4 0
access-class 10 in //只对远程的报文有效