ACL 访问控制列表

一、ACL 的基本原理

1.访问控制列表(ACL)是应用在路由器接口的指令列表(即规则)。这些指令列表用来告诉路由器,那些数据包可以接受,那些数据包需要拒绝。

2.ACL使用包过滤技术,在路由器上读取OSI七层模型的第3层和第4层包头中的信息。如源地址,目标地址,源端口,目标端口等,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。

3.ACL是一组规则的集合,它应用在路由器的某个接口上。对路由器接口而言,访问控制列表有两个方向。
out:已经过路由器的处理,正离开路由器的数据包。
in :已到达路由器接口的数据包。将被路由器处理。

4.如果对路由器的某接口应用了ACL,那么路由器对数据包应用该组规则进行顺序匹配,使用匹配即停止的,不匹配则使用默认规则的方式来过滤数据包。
引用自https://www.cnblogs.com/andy123/p/10933700.html

二、标准ACL

1.特点

  • 只能根据源地址做过滤
  • 针对整个协议采取相关动作(允许或禁止)

2.基本语法
Router(config)#
access-list access-list-number {permit|deny} source [souce-wildcard]
如:access-list 1 deny 192.168.1.1 0.0.0.0

参数含义
access-list-number编号(1-99或1300-1999)
permit,deny动作(拒绝或允许)
source源地址
souce-wildcard通配符
操作命令
删除ACLno access-list 编号,如:no access-list 10
应用在接口(默认out)ip access-group 编号 {in or out } ,如:ip access-list 1 out
解除在接口上的应用no ip access-group 编号 {in or out } , 如:no ip access-list 1 out

3.通配符

0表示需要一致
1表示随便

比如,access-list 1 deny 192.168.1.1 0.0.0.0 表示这全都要一致

  • 要禁止192.168.1.0网段的全部主机,那就是前三位相同,后一位变动,0.0.0.255
    要禁止172.16.0.0网段的全部主机,那就是前两位相同,后一位变动,0.0.255.255

禁止192.168.1.0网段中192.168.1.1-192.168.1.7的主机,通配符要怎么表示呢?
首先我们看到192.168.1.1-192.168.1.7,前三位是保持不变的, 所以可以先写出前三位通配符:0.0.0.?
现在求第四位,把第四位ip地址转换为2进制

192.168.1.1.00000001
192.168.1.2.00000010
192.168.1.3.00000011
192.168.1.4.00000100
192.168.1.5.00000101
192.168.1.6.00000110
192.168.1.7.00000111
通配符00000111

我们看到一个规律,前5个位是不变的,后3位在变,所以按照通配符的规律:0表示不变,1表示变动,可以这样写00000111,转换为十进制是7,通配符是0.0.0.7

这个ACL可以写成为:

access-list 1 deny 192.168.1.0 0.0.0.7
access-list 1 permit any

当然不嫌累也可以这样写

access-list 1 deny 192.168.1.1 0.0.0.0
access-list 1 deny 192.168.1.2 0.0.0.0
access-list 1 deny 192.168.1.3 0.0.0.0
access-list 1 deny 192.168.1.4 0.0.0.0
access-list 1 deny 192.168.1.5 0.0.0.0
access-list 1 deny 192.168.1.6 0.0.0.0
access-list 1 deny 192.168.1.7 0.0.0.0
access-list 1 permit any

note:默认ACL结尾有一句deny any ,拒绝所有,所以在ACL中至少要有一句permit语句
access-list 1 deny 192.168.1.0 0.0.0.7
access-list 1 permit any
在这个ACL中如果没有写access-list 1 permit any,运用这个ACL后整个192.168.1.0整个网段就全部被拒绝了

通配符简写

access-list 1 deny 192.168.1.1 0.0.0.0access-list 1 deny host 192.168.1.1
0.0.0.0 255.255.255.255any

如,access-list 1 deny any 表示拒绝所有

三、扩展ACL

1.特点

  • 能根据源、目的的地址、端口号等进行过滤
  • 能允许或拒绝特定的协议

2.基本语法
Router(config)#
access-list access-list-number {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
如:

  • 拒绝所有的主机telnet连接192.168.1.1
    access-list 1 deny tcp any host 192.168.1.1 eq 23
  • 允许主机192.168.1.2通过http方式访问172.16.1.1
    access-list 110 permit tcp host 192.168.1.2 host 172.16.1.1 eq 80
参数含义
access-list-number编号(100-199或2000-2699)
permit,deny动作(拒绝或允许)
protocol指定协议,如IP,TCP,UDP,ICMP等
source souce-wildcard源地址 通配符
destination destination-wildcard目标地址 通配符
operatorlt(小于)、gt(大于)、eq(等于)、neq(不等于)
operan端口号

四、命名ACL

1.特点

  • 通过对ACL的命名,利于以后的管理
  • 可以删除其中的某一条ACL语句,而不用删除整个ACL
  • 可以将ACL语句插入到列表中的某个位置

2.基本语法
(1)创建ACL
Router(config)#
ip access-list {standard|extended} access-list-name

参数含义
standard,extendedstandard:创建标准的命名访问控制列表。extended:创建扩展的命名访问控制列表。
access-list-nameACL的名字,任意字母和数字

(2)添加语句

  • 标准命名ACL语法如下:
    Router(config-std-nacl)#
    [Sequence-Number] {permit|deny} source [souce-wildcard]

  • 扩展命名ACL语法如下:
    Router(config-ext-nacl)#
    [Sequence-Number] {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]

无论是配置标准命名ACL语句还是配置扩展命名ACL语句,都有一个可选参数Sequence-Number。Sequence-Number参数表明了配置的ACL语句在命令ACL中所处的位置,默认情况下,第一条为10,第二条为20,以此类推。Sequence-Number可以很方便地将新添加的ACL语句插于到原有的ACL列表的指定位置,如果不选择Sequence-Number,默认添加到ACL列表末尾并且序列号加10。
引用自https://blog.csdn.net/ningmeng_bumeng/article/details/78614362

(3)删除

  • 删除整个ACL
    Router(config)#
    no ip access-list {standard|extended} access-list-name
  • 删除某一条语句
    no Sequence-Number

例如:将一条新添加的ACL加入到原有标准命名ACL的序列15的位置。内容为允许主机192.168.1.1/24访问Internet。
Router(config)#ip access-list standard test1
Router(config-std-nacl)#15 permit host 192.168.1.1

列如:创建扩展命名ACL,内容为拒绝192.168.1.0/24访问FTP服务器192.168.2.200/24,允许其他主机。
Router(config)#ip access-list extended test2
Router(config-ext-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.200 eq 21
Router(config-ext-nacl)#permit ip any any

将命名ACL应用于接口语法如下:
Router(config-if)#ip access-group aaccess-list-name {in|out}
取消命名ACL的应用语法如下:
Router(config-if)#no ip access-group aaccess-list-name {in|out}

总结

  • 每个接口,每个方向,每种协议,你只能设置1 个ACL
  • 组织好你的ACL 的顺序,比如测试性的最好放在ACL 的最顶部 你不可能从ACL
    从除去1 行,除去1 行意味你将除去整个ACL,命名访问列表(named access lists)例外
  • 默认ACL 结尾语句是deny
    any,所以你要记住的是在ACL 里至少要有1 条permit 语句
  • 记得创建了ACL 后要把它应用在需要过滤的接口上 ACL
    是用于过滤经过router 的数据包,它并不会过滤router 本身所产生的数据包
  • 尽可能的把IP 标准ACL放置在离目标地址近的地方;尽可能的把IP 扩展ACL 放置在离 源地址近的地方
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值