ACL

ACL(Access Control List):访问控制列表(多用于路由、三层交换中建立包过滤防火墙)
ACL主要基于三层和四层过滤,三层IP包头的IP地址、四层TCP/UDP头部的端口号、[五层防火墙过滤数据-组策略]不推荐使用,效率太低,可以使用IDS、IPS。ACL在路由器上配置,也可以在防火墙上配置(一般称为策略)

ACL的作用

ACL根据人为定义好的规则对数据包进行过滤

ACL分类

标准型访问控制列表

只能基于源IP 地址过滤

该种列表的访问控制列表号为1~99

命令

conf  t
access-list  表号  permit/deny   源IP或源网段  反子网掩码

注释:反子网掩码:将正子网掩码0和1倒置
255.0.0.0 — 0.255.255.255
255.255.0.0 — 0.0.255.255
255.255.255.0 — 0.0.0.255
反子网掩码作用:用来匹配条件,与0对应的需要严格匹配,与1对应的忽略!

例如:

access-list   1   deny   10.0.0.0   0.255.255.255      //该条目用来拒绝所有源IP为10开头的!
access-list   1   deny   10.1.1.1  0.0.0.0            //该条目用来拒绝所有源IP为10.1.1.1的主机
access-list   1   deny   host  10.1.1.1                  //该条目用来拒绝所有源IP为10.1.1.1的主机-简写
access-list   1   deny   0.0.0.0  255.255.255.255      //该条目用来拒绝所有所有人
access-list   1   deny   any                              //该条目用来拒绝所有所有人-简写

完整的案例:

conf t
acc 1 deny host 10.1.1.1
acc 1 deny 20.1.1.0 0.0.0.255
acc 1 permit any

查看ACL表

show  ip  access-list  [表ID]

将ACL应用到接口

int  f0/x
ip  access-group  表号  in/out
exit
sh run

扩展访问控制列表

基于源IP、目的IP、指定协议、端口、标志过滤数据

该种列表的访问控制列表号为100~199

命令

acc 100 permit/deny  协议  源IP或源网段  反子网掩码  目标IP或源网段  反子网掩码  [eq 端口号]      //协议:tcp/udp/icmp/ip

案例
acc 100 permit tcp host 10.1.1.1 host 20.1.1.3 eq 80
acc 100 permit icmp host 10.1.1.1 20.1.1.0 0.0.0.255
acc 100 deny ip host 10.1.1.1 20.1.1.0 0.0.0.255
acc 100 permit ip any any

命名ACL

可以对标准或扩展ACL进行自定义命名,自定义命名更容易辨认,也便于记忆
可以任意修改某一条,或删除某一条,也可以往中间插入某一条

conf t
ip  access-list  standard/extended   自定义表名      //添加表
      开始从deny或permit编写ACL条目
      exit
ip  access-list  standard/extended   自定义表名      //删除某一条
      no  条目ID
      exit
ip  access-list  standard/extended   自定义表名      //插入某一条
      条目ID   动作   条件
      exit

过滤参数

常用端口以及协议如下图
ACL-包过滤技术-冯金伟博客园

访问控制列表在接口应用的方向
出:已经过路由器的处理,正离开路由器接口的数据包
入:已达到路由器接口的数据包,将被路由器处理

ACL原理

匹配流程图

ACL-包过滤技术-冯金伟博客园

匹配规则:自上而下所有,逐条匹配,默认隐含拒绝所有

ACL表必须应用到接口的进或出方向才生效!
一个接口的一个方向只能应用一张表!
进还是出方向应用?取决于流量控制总方向
ACL表是严格自上而下检查每一条,所以要主要书写顺序
每一条是由条件和动作组成,当流量完全满足条件当某流量没有满足某条件,则继续检查下一条
标准ACL尽量写在靠近目标的地方
实际处理应用:

做流量控制,首先要先判断ACL写的位置(那个路由器?那个接口的哪个方向?)
再考虑怎么写ACL。
如何写?

首先要判断最终要允许所有还是拒绝所有
然后写的时候要注意:将严格的控制写在前面

一般情况下,标准或扩展acl一旦编写号,无法修改某一条,也无法删除某一条,也无法修改顺序,也无法往中间插入新的条目,只能一直在最后添加新的条目
如想修改或插入或删除,只能删除整张表,重新写!

conf t
no  access-list  表号