文章目录
0x01 ACL概述
-
什么是ACL?
ACL,即访问控制列表,ACL可以读取第三层、第四层的包头信息,并根据预先定义好的规则对包进行过滤。
-
应用ACL时需要注意什么?
- ACL必须应用到接口上才能生效;
- 一个接口最多应用两个ACL,出方向和入方向。
- outside:已经过路由器的处理,当从此接口离开时才生效的ACL;
- inside:到达路由器并从此接口进入路由器时才生效的ACL。
-
ACL的处理过程?
- 首先会匹配第一条ACL,若匹配成功且为拒绝则直接丢弃该数据包;若匹配成功且为允许则将数据包转到目的接口;若匹配不成功,则继续匹配下一条ACL;后续的匹配过程亦是如此。
- 若所有规则都不匹配则丢弃该数据包,因为ACL规则默认为拒绝。
0x02 ACL分类
- 标准ACL
- 基于源IP地址过滤数据包
- 标准ACL的访问控制列表号是1-99
- 扩展ACL
- 基于协议、源IP地址、目的IP地址、端口和标志来过滤数据包
- 扩展ACL的访问控制列表号是100-199
- 命令ACL
- 命名ACL允许在标准和扩展访问控制列表中使用名称代替表号
0x03 ACL应用
-
标准ACL
# 拒绝主机192.168.1.1的流量通过 R(config)#access-list 1 deny 192.168.1.1 0.0.0.0 R(config)#access-list 1 deny host 192.168.1.1 # 允许192.168.1.0/24的流量通过 R(config)#access-list 1 permit 192.168.1.0 0.0.0.255 # 隐含的拒绝语句(拒绝所有主机) R(config)#access-list 1 deny 0.0.0.0 255.255.255.255 R(config)#access-list 1 deny any R(config)#int f0/1 # 将ACL应用到f0/1的入方向(出方向为out) R(config-if)#ip access-group 1 in
-
扩展ACL
# 允许192.168.1.0/24中的主机访问192.168.2.0/24中的主机 R(config)#access-list 101 permit ip 192.168.1.0 0.0.0.255 12.168.2.0 0.0.0.255 # 允许192.168.1.0/24中的主机访问192.168.2.0/24中主机的21号端口 R(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 12.168.2.0 0.0.0.255 eq 21 R(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 12.168.2.0 0.0.0.255 eq ftp # 允许所有访问 R(config)#access-list 101 permit ip any any # 拒绝192.168.1.0/24中的主机ping192.168.2.2主机 R(config)#access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo R(config)#int f0/1 # 将ACL应用到f0/1的出方向(入方向为in) R(config-if)#ip access-group 101 out
-
命名ACL
# 标准命名ACL R(config)#ip access-list standard Out-to-ISP R(config-std-nacl)#deny 192.168.1.0 0.0.0.255 R(config-std-nacl)#permit any # 扩展命名ACL R(config)#ip access-list extended In-to-ISP R(config-ext-nacl)#deny ip host 192.168.2.2 192.168.1.0 0.0.0.255 R(config-ext-nacl)#permit ip any any R(config)#int f0/1 R(config-if)#ip access-group Out-to-ISP in
0x04ACL查看
# 查看所有ACL
R#show access-lists
# 查看编号为1的ACL
R#show access-lists 1