ACL入门指南:如何使用它轻松保护网络安全

数据来源

1、ACL的过滤条件:

ACL基于IP包头的IP地址、四层TCP/UDP头部的端口号、以及其他数据进行过滤,可以基于三层和四层做过滤。

2、配置位置:

ACL可以在路由器上配置,也可以在防火墙上配置(一般称为策略)。 

3、ACL主要分为两大类:标准ACL和扩展ACL。

1)标准ACL:
  • 表号范围为1-99。
  • 只能基于源IP地址对数据包进行过滤。
  • 可以使用命令进行配置,例如:access-list 表号 permit/deny 源IP或源网段 反子网掩码
  • 反子网掩码用于匹配条件,与0对应的需要严格匹配,与1(255)对应的忽略。

示例:

en        # 进入特权模式
conf t    # 进入全局配置模式

access-list 1 deny 10.0.0.0 0.0.255.255  # 拒绝匹配10.0.0.0/16范围的IP地址
access-list 1 deny 10.1.1.1 0.255.255.255  # 拒绝源IP为10开头的所有地址
access-list 1 deny host 10.1.1.1  # 拒绝源IP为10.1.1.1的主机(host 可以代替反子网掩码:0.0.0.0)
access-list 1 deny any  # 拒绝所有流量
access-list 1 permit any  # 允许所有流量通过

完整的案例:(拒绝源ip为10.1.1.1和20.1.1.0网段的所有包通过,其他放行)
conf t
access-list 1 deny host 10.1.1.1
access-list 1 deny 20.1.1.0 0.0.0.255
access-list 1 permit any
2)扩展ACL:
  • 表号范围为100-199。
  • 可以基于源IP、目标IP、端口号、协议等对数据包进行过滤。
  • 可以使用命令进行配置,例如:access-list 表号 permit/deny 协议 源IP或源网段 反子网掩码 目标IP或目标网段 反子网掩码 [eq 端口号]
  • 常用协议有tcp、udp、icmp和ip(只有TCP/UDP协议才有端口号)。

示例:

acc 100 permit tcp host 10.1.1.1 host 20.1.1.3 eq 80  # 允许源IP为10.1.1.1访问目标IP为20.1.1.3的主机的TCP协议的80端口
acc 100 permit icmp host 10.1.1.1 host 20.1.1.3  # 允许源IP为10.1.1.1 ping目标IP为20.1.1.3的主机
acc 100 deny ip host 10.1.1.1 20.1.1.0 0.0.0.255  # 禁止源IP为10.1.1.1的主机访问20.1.1.0/24网段
acc 100 permit ip any any  # 允许所有流量通过

# 查看ACL表:
show ip access-list 表号  # 可以查看指定表号的ACL表,不写则查看所有表

# 将ACL表应用到接口:
int f0/x
ip access-group 表号 in/out  # 将ACL表应用于接口的入方向或出方向 (in表示进入接口的流量,out表示离开接口的流量)
no ip access-group 表号 in/out  # 从接口上移除ACL表,注意表仍然存在并可以应用于其他接口

# 例如,如果要将ACL表编号为100应用到接口的进方向,可以使用以下命令:
ip access-group 100 in

如何查看ACL表和将ACL表应用到接口的方法:

  • 查看ACL表:使用命令show ip access-list 表号,可以查看指定表号的ACL表。
  • 将ACL表应用到接口:使用命令int f0/x进入接口配置模式,然后使用命令ip access-group 表号 in/out将ACL表应用到接口的入方向或出方向。取消应用则使用命令no ip access-group 表号 in/out

4、ACL原理

  1. ACL表必须应用到接口的进或出方向才能生效。

  2. 一个接口的一个方向只能应用一张ACL表。

  3. 进还是出方向的应用取决于流量控制总方向。

  4. ACL表严格自上而下检查每一条规则,因此要注意规则的书写顺序。

  5. 每一条ACL规则由条件和动作组成,如果某个数据包不满足某个条件,则继续检查下一条规则,只有满足条件的数据包才会执行相应的动作。

  6. 标准ACL应尽量靠近目标位置进行配置。

  7. wencoll小原理:

    • 首先确定ACL配置的位置(哪个路由器?哪个接口的哪个方向?)
    • 其次考虑如何编写ACL规则
    • 如何编写ACL规则:
      • 首先确定是否允许所有流量或拒绝所有流量
      • 然后按照严格控制的顺序编写规则
  8. 一般情况下,标准ACL或扩展ACL一旦创建,无法修改或删除某一条规则,只能添加新的规则。如果想要修改或删除某一条规则,需要删除整张ACL表并重新编写。

    • 删除ACL表的命令:conf t --> no access-list 表号
  9. 命名ACL:

    • 作用:可以对标准ACL或扩展ACL进行自定义命名
    • 优点:自定义命名更易于辨认和记忆,可以任意修改、删除或插入规则
    • 命令示例:
      en                             # 进入特权模式
      conf t                         # 进入全局配置模式
      ip access-list extended 表名   # 创建自定义的ACL表,表名为"表名"(例如:kz-80-oa)。如果表已存在,则进入该表。
      permit/deny 协议 源IP或源网段 反子网掩码 目标IP或目标网段 反子网掩码 [eq 端口号]
                                     # 设置一条扩展ACL过滤条目。协议指定要过滤的协议类型,源IP或源网段与反子网掩码指定源地址范围,目标IP或目标网段与反子网掩码指定目标地址范围,[eq 端口号](可选)指定端口号。
      exit                           # 退回上一级配置模式
      do show ip access-list 表IP     # 查看ACL表的信息,表IP是可选参数,如果不指定则显示所有ACL表的信息。
      IP或目标网段 反子网掩码 [eq 端口号] exit do show ip access-list 表IP(可选)

例子:

        如果要删除某一条目 

              ip access-list extended kz-80-oa   # 进入要删除的表kz-80-oa

              no  20   # 删除ID为20的条目

              exit    # 退到上一级

              do show  ip access-list   表IP   #   表IP 是可选的,不写就查看所有表

         向ACL表插入条目

            ip access-list extended kz-80-oa   # 进入要修改的表kz-80-oa

            15 permit tcp 192.16.0.0 0.0.255.255 host 10.1.1.1 eq 80  # 在ID为15的位置插入条目

 

5、实验

实验要求:(使用标准ACL实现) 

  1. 要求10网段禁止访问整个50网段,访问其他不受影响
  2. 要求40.1.1.1PC禁止访问50网段,其他访问不受影响
  3. 要求10.1.1.1禁止访问40网段,其他不受影响

步骤:
1)让设备能够互通(配置IP和路由) 

配置路由器端口IP命令

         en                                                       # 进入特权模式

        conf t                                                   # 进入全局配置模式

        int  Fa0/x​​                                             # 进入需要配置的端口

        ip add IP 子网掩码                              # 配置IP,如:  ip add 30.1.1.254 255.255.255.0

        no shut                                                # 开启端口

配置路由表 

        en                                                       # 进入特权模式

        conf t                                                  # 进入全局配置模式

        ip route IP 子网掩码   下一跳IP         # 配置路由,这里的下一跳IP就是下一个路由器接口的IP

        最后测试网络连通性,命令:ping 目标ip

 2)实现10网段禁止访问整个50网段,访问其他不受影响

配置ACL表思路,因为是使用标准的ACL只能根据源ip进行过滤,无法根据目标IP之类的过滤,又不能影响访问其他的,所以这里的ACL表最后要应用在里50网段最近路由器的出接口。

        创建ACL表1 

                en                                                       # 进入特权模式

                conf t                                                   # 进入全局配置模式

                acc 1 deny 10.0.0.0  0.255.255.255  # 过滤10网段的包,只检查ip的第一位数字

                acc 1 permit  any                             # 其他放行,注意这一句放行所有如果不加,其他网段的包也会被拦截

                show  ip access-list   1                   #  查看表1,非特权模式命令最前面要加 do

        将ACL表应用到接口: 

                int fa1/0

                ip access-group 1  out                    #  out 接口出方向

 测试

  路由器回馈的错误信息是哪个接口出去的就是哪个接口回包,所以这下图中显示的是20.1.1.1回馈的错误包:“目标主机不可达” 

 3)实现40.1.1.1PC禁止访问50网段,其他访问不受影响

        注意:一个接口的一个方向只能应用一张表, 所以按照现在的网络规划图最好的方法是往ACL表1的过滤10网段后面加过滤40.1.1.1的条件。

        但是一般情况下,标准或扩展acl一旦编写号,无法修改/删除某一条,只能不断的往后添加新的条目,如想修改或删除,只能删除整张表,重新写,所以先删除表1

                en                                                       # 进入特权模式

                conf t                                                  # 进入全局配置模式

                no access-list  1                                # 删除除指定的表

                acc 1 deny 10.0.0.0  0.255.255.255  # 过滤10网段的包,只检查ip的第一位数字

                acc 1 deny 40.1.1.1 0.0.0.0              # 过滤40.1.1.1的包,检查全部ip

                简写:access-list   1   deny    host   40.1.1.1

                acc 1 permit  any                              # 其他放行

                show  ip access-list                     #  查看表1,非特权模式命令最前面要加 do

        将ACL表应用到接口: 

                int fa1/0

                ip access-group 1  out    #  out 接口出方向

 测试

4)实现10.1.1.1禁止访问40网段,其他不受影响

        创建ACL表2

                en                                                 # 进入特权模式

                conf t                                          # 进入全局配置模式

                acc  2  deny 10.1.1.1  0.0.0.0     # 过滤10.1.1.1的包,检查全部IP

                acc  2  permit  any                      # 其他放行,注意这一句放行所有如果不加,其他网段的包也会被拦截

                show  ip access-list   2            #  查看表1,非特权模式命令最前面要加 do

        将ACL表应用到接口: 

                int fa0/0

                ip access-group 2  in    #  in 接口入方向,直接在第3个路由器的fa0/0接口的入方向实现拦截因为后面都是40网段的,没必要让10.1.1.1的数据数据包进入路由器

 测试

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值