访问控制列表     ——实现安全控制的方法

一、访问控制列表概述

1、访问控制列表(ACL)

  • 读取第三层、第四层包头信息
  • 根据预先定义好的规则对包进行过滤

2、访问控制列表的处理过程   

  • 如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
  • 如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配。
  • 如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。

3、访问控制列表的类型:

  • 标准访问控制列表

基于源IP地址过滤数据包(只检查从哪里来)

列表号是1-99

应用于离目标IP最近的路由器端口的出方向

原因:标准ACL只能限制源IP地址。

  • 扩展访问控制列表

基于源IP地址、目的IP地址、指定协议、端口等来过滤数据包——更精确的控制

列表号是100-199

最好应用到离源IP最近的路由器端口的入方向

原因:扩展ACL可放置在通信路径中的任一位置,但如果放到离目标近的地方,每台路由器都要对数据进行处理,会更多消耗路由器和带宽资源。放到离源最近的路由器端口入方向直接将拒绝数据丢弃,可以减少其他路由器的资源占用及带宽占用。

  • 命名访问控制列表

命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号

因为使用名称,也就不存在表号,也就没有了ACL语句数量上的限制了。

二、标准访问控制列表

1、标准访问控制列表的创建

全局:access-list 1 permit 192.168.1.0 0.0.0.255(允许)

全局:access-list 1 deny 192.168.1.1 0.0.0.0(拒绝)

通配符掩码:也叫做反码。用二进制数0和1表示,如果某位为1,表明这一位不需要进行匹配操作,如果为0表明需要严格匹配。

例:192.168.1.0/24 子网掩码是255.255.255.0,其反码可以通过 255.255.255.255减去255.255.255.0得到0.0.0.255

隐含拒绝语句:Access-list 1 deny 0.0.0.0 255.255.255.255

2、将ACL应用于接口

    接口模式:ip access-group 列表号 in 或out

注:

access-list 1 deny 192.168.1.1 0.0.0.0或写为access-list 1 deny host 192.168.1.1
access-list 1 deny 0.0.0.0 255.255.255.255或写为access-list 1 deny any

3、删除已建立的访问控制列表

全局:no access-list列表号

4、接口上取消ACL

接口模式:no ip access-group 列表号in (入口)或out(出口)

5、查看访问控制列表

特权:show access-lists

例:拒绝192.168.1.0/24访问x.x.x.x

R3(config)#access-list 1 deny 192.168.1.0 0.0.0.255
R3(config)#access-list 1 permit any
R3(config)#int f0/1
R3(config-if)#ip access-group 1 out

ACL的匹配规则中,最后一条隐含拒绝全部。如果语句中有deny时,那么肯定要有premit语句存在,否则所有数据通信都将被拒绝。

一个端口上只能有一个访问控制列表,新创建时会覆盖上一操作的列表语句。

 

三、扩展访问控制列表

1、作用

可以根据源IP地址,目的IP地址,指定协议,端口等过滤数据包。

2、扩展访问控制列表号:100-199

3、eq等于、lt小于、gt大于、neq不等于

4、扩展访问控制列表案例:

例1 全局:access-list 101 permit ip 192.168.1.0 0.0.0.255  192.168.2.0 0.0.0.255

  (允许192.168.1.0网络访问192.168.2.0 网络的所有服务)

全局:access-list 101 deny ip any any (拒绝所有)

例2  全局:access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21   

     (拒绝192.168.1.0网段访问192.168.2.2的TCP的21端口)

例3  全局:access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo    

       (拒绝192.168.1.0 ping 192.168.2.2)

5、删除扩展ACL

全局: no access-list 列表号

注:扩展与标准ACL不能删除单条ACL语句,只能删除整个ACL。

6、扩展ACL应该应用在离源地址最近的路由器上。

例:通过扩展ACL只允许192.168.1.0/24网络中的192.168.1.100访问192.168.4.0/24网络

不允许192.168.1.0/24网络中的其他地址访问192.168.4.0/24网络

除此以外的通信不受限制

R1(config)#access-list 100 permit ip host 192.168.1.100 192.168.4.0 0.0.0.255
R1(config)#access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.4.0 0.0.0.255
R1(config)#access-list 100 permit ip any any
R1(config)#int f0/0
R1(config-if)#ip access-group 100 in

拒绝192.168.1.10访问192.168.4.0的web服务,其他不受限

R1(config)#access-list 101 deny tcp host 192.168.1.10 192.168.4.0 0.0.0.255 eq 80
R1(config)#access-list 101 permit ip any any
R1(config)#int f0/0
R1(config-if)#ip access-group 101 in

不允许192.168.1.100 ping 192.168.4.0/24,其他全部允许

echo表示发送的ping请求,接收方回应的是echo-reply

R1(config)#access-list 102 deny icmp host 192.168.1.100 192.168.4.0 0.0.0.255 echo
R1(config)#access-list 102 permit ip any any
R1(config-if)#ip access-group 102 in

 

四、命名访问控制列表

1、命名访问控制列表可以配置标准命名也可配置扩展命名。

2、命名访问控列表的ACL语句默第一条为10,第二条为20,依此类推。

3、命名ACL可以删除单条ACL语句,而不必删除整个ACL。并且命名ACL语句可以有选择的插入到列表中的某个位置,使得ACL配置更加方便灵活。

4、标准命名ACL的配置

全局:ip access-list standard 名字

              Permit host 192.168.1.1

              Deny any

命名ACL应用于接口

接口模式:ip access-group 名字in或out

5、扩展命名ACL的配置

全局:ip access-list extended

  Deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 80 (拒绝1.0网段访问2.2的web服务)

      Permit ip any any

例:

拒绝192.168.1.10访问192.168.4.0网络,其他的全允许
R3(config)#ip access-list standard deny_1.10  //创建新命名,需要再进入编辑时也要输入此命令
R3(config-std-nacl)#deny host 192.168.1.10
R3(config-std-nacl)#permit any
R3(config)#int f0/1
R3(config-if)#ip access-group deny_1.10 out
向ACL中加入拒绝192.168.1.100
R3#show access-lists 
Standard IP access list deny_1.10
    10 deny host 192.168.1.10 (4 match(es))
    20 permit any (4 match(es))
R3(config)#ip access-list stand deny_1.10
R3(config-std-nacl)#15 deny host 192.168.1.100
R3#show access-lists 
Standard IP access list deny_1.10
    10 deny host 192.168.1.10 (4 match(es))
    15 deny host 192.168.1.100
    20 permit any (4 match(es))
R3(config)#ip access-list standard deny_1.10
R3(config-std-nacl)#no deny host 192.168.1.100

使用命名ACL代替之前的100号ACL

R1(config)#ip access-list extended ristrict_net1
R1(config-ext-nacl)#permit ip host 192.168.1.100 192.168.4.0 0.0.0.255
R1(config-ext-nacl)#deny ip 192.168.1.0 0.0.0.255 192.168.4.0 0.0.0.255
R1(config-ext-nacl)#permit ip any any
R1(config-ext-nacl)#int f0/0
R1(config-if)#ip access-group ristrict_net1 in

在一个已经存在的命名ACL中新添加ACL语句,如果不指定序列号,则新添加的ACL被添加到列表的末尾