一、概述
访问控制列表(Access Control Lists,ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机,借助于访问控制列表,可以有效地控制用户对网络的访问,从而最大程度地保障网络安全。
ACL基于IP包头的IP地址、四层TCP/UDP头部的端口号、[5层数据]
ACL在路由器上配置,也可以在防火墙上配置(一般称为策略)
二、分类
1、标准ACL
1)表号:1-99;
2)特点:只能基于源IP对包进行过滤;
3)命令
### 创建ACL
conf t
access-list 表号 permit/deny 源IP或源网段 反子网掩码(将正子网掩码0和1倒置,255.0.0.0 --> 0.255.255.255)
### 查看ACL表
show ip access-list [表ID]
### 将ACL应用到接口:
ini f0/x
ip access-group 表号 in/out(进/出方向)
exit
反子网掩码作用:用来匹配条件,与0对应需要严格匹配,与1对应忽略;
例1:
access-list 1 deny 10.1.1.1 0.0.255.255
数据包中源IP只要是10.1开头的都不允许通过
例2:
access-list 1 deny 10.0.0.0 0.255.255.255
拒绝所有源IP为10开头的
例3:
access-list 1 deny 10.1.1.1 0.0.0.0
简写:access-list 1 deny host 10.1.1.1
拒绝源IP为10.1.1.1的主机
例4:
access-list 1 deny 0.0.0.0 255.255.255.255
简写:access-list 1 deny any
拒绝所有
案例:
cont f
acc 1 deny host 10.1.1.1
acc 1 deny 20.1.1.0 0.255.255.255
acc 1 permit any
拒绝10.1.1.1这台主机和20.1.1.0网段的所有主机,其他任何人都允许通过。
实验:
2、扩展ACL
1)表号:100-199;
2)特点:可以基于源IP、目标IP、端口号、协议等对包进行过滤;
3)命令
conf t
acc 100 permit/deny 协议 源IP或源网段 反子网掩码 目标IP或目标网段 反子网掩码 [eq 端口]
案例:
协议:tcp/udp/icmp/ip
acc 100 deny tcp host 10.1.1.1 host 20.1.1.3 eq 80
acc 100 deny ip host 10.1.1.1 20.1.1.0 0.0.0.255
acc 100 permit ip any any
拒绝10.1.1.1访问20.1.1.0网段,除了访问20.1.1.3主机上的TCP服务一个80端口
其他任何流量全部放行
3、原理
1)ACL表必须应用到接口的进或出方向才生效;
2)一个接口的一个方向只能应用一张表;
3)进还是出方向应用?取决于流量控制总方向;
4)ACL表是严格自上而下检查每一条,所以要注意书写顺序;
5)每一条是由条件和动作组成,当某流量没有满足条件,则继续检查下一条;
6)标准ACL尽量写在靠近目标的地方;
7)扩展ACL尽量写在靠近源目标的地方;
8)一般情况下,标准或扩展ACL一旦编写好,无法修改某一条,也无法删除某一条,也无法往中间插入条目,也无法修改顺序,只能一直在最后添加条目;如想修改,插入或删除,只能删除整张表,重新写!!!no access-list 表号
1)做流量控制,首先要判断ACL写的位置,哪个路由器?哪个接口的哪个方向?
2)判断最终要允许所有还是拒绝所有
3)将严格写在前面
查看ACL表命令:show ip access-list [表ID]
4、命名ACL
作用:可以对标准或扩展ACL进行自定义命名。
优点:自定义命名更容易辨认,也便于记忆!也可以任意修改某一条,或删除某一条,也可以往中间插入某一条。
## 创建
conf t
ip access-list standard/extended 自定义表命
开始从deny/permit编写CL条目
exit
## 删除
ip access-list standard/extended 自定义表命
no 条目ID
exit
## 插入
ip access-list standard/extended 自定义表命
条目ID 动作 条件
exit
#### 创建
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#ip access-list ?
extended Extended Access List
standard Standard Access List
Router(config)#ip access-list extended kongzhi-80-oa 以命名方式创建扩展ACL
Router(config-ext-nacl)#permit tcp 192.168.0.0 0.0.255.255 host 10.1.1.1 eq 80
Router(config-ext-nacl)#permit tcp 172.16.0.0 0.0.255.255 host 10.1.1.1 eq 80
Router(config-ext-nacl)#deny ip 192.168.0.0 0.0.255.255 host 10.1.1.0
Router(config-ext-nacl)#exit
Router(config)#do show ip access-list
Extended IP access list kongzhi-80-oa
10 permit tcp 192.168.0.0 0.0.255.255 host 10.1.1.1 eq www
20 permit tcp 172.16.0.0 0.0.255.255 host 10.1.1.1 eq www
30 deny ip 192.168.0.0 0.0.255.255 host 10.1.1.0
#### 删除
Router(config)# ip access-list extended kongzhi-80-oa
Router(config-ext-nacl)#no 20 删除条目
Router(config-ext-nacl)#exit
Router(config)#do show ip access-list
Extended IP access list kongzhi-80-oa
10 permit tcp 192.168.0.0 0.0.255.255 host 10.1.1.1 eq www
30 deny ip 192.168.0.0 0.0.255.255 host 10.1.1.0
#### 插入
Router(config)# ip access-list extended kongzhi-80-oa
Router(config-ext-nacl)#15 permit tcp 172.16.0.0 0.0.255.255 host 10.1.1.1 eq 80 插入条目
Router(config-ext-nacl)#exit
Router(config)#do show ip access-list
Extended IP access list kongzhi-80-oa
10 permit tcp 192.168.0.0 0.0.255.255 host 10.1.1.1 eq www
15 permit tcp 172.16.0.0 0.0.255.255 host 10.1.1.1 eq www
30 deny ip 192.168.0.0 0.0.255.255 host 10.1.1.0
Router(config)#ip access-list extended kongzhi-80-hr
Router(config-ext-nacl)#1000 per
Router(config-ext-nacl)#1000 permit ip any any
Router(config-ext-nacl)#exit
Router(config)#do show ip access-list
Extended IP access list kongzhi-80-oa
10 permit tcp 192.168.0.0 0.0.255.255 host 10.1.1.1 eq www
15 permit tcp 172.16.0.0 0.0.255.255 host 10.1.1.1 eq www
30 deny ip 192.168.0.0 0.0.255.255 host 10.1.1.0
Extended IP access list kongzhi-80-hr
1000 permit ip any any
Router(config)#