当前位置: 首页 > news >正文

学习日志8.14--ALC(Access Control List)访问控制列表

ACL访问控制列表是一条或者多条流量规则的集合,作用主要用于流量的匹配,还可以匹配路由。通过ACL对流量加以控制,通过配合使用过滤工具,对流量进行拦截。需要注意的是ACL只是一个个匹配工具,负责匹配源IP地址、目的IP地址、端口和协议号,但是实现对流量的拦截还需要使用到流量的过滤工具来过滤流量。

建立ACL实验拓扑结构,用AR2220当路由器网关,两台服务器都可以提供http和ftp服务配置好主机和客户端服务器的IP地址,配置好路由器接口的IP地址,在两台交换机上关闭stp生成树功能,防止时间阻塞,影响实验现象。
命令:[SW1]undo stp enable,关闭stp生成树功能
命令:[SW2]stp edged-port default,配置交换设备所有接口为边缘接口,default默认为边缘接口

配置好后,尝试看能不能ping通主机pingServer1成功主机pingServer2成功用客户端ping服务器Server1成功用客户端ping服务器Server2成功

开启服务器的http和ftp服务,用客户端获取访问客户端访问服务器Server1成功客户端访问服务器Server2成功

实验的网络配置结构没有问题,服务器服务没有问题,都能互相访问,都能取得连接。

开始实验,实验目的就是拒绝PC1访问Server1。只要是192.168.1.1的流量访问Server1 192.168.1.101的流量都拒绝。这样拦截就需要有规则去匹配数据包的源IP地址和目的IP地址,过滤工具拦截工具根据匹配的情况去拦截流量。

给路由器配置ACL,实现拒绝PC1访问Server1
命令:[R1]acl 2000,创建acl列表,列表编号是2000
命令:[R1-acl-basic-2000]rule 10 deny source 192.168.1.1 0.0.0.0,给2000列表配置规则,规则编号是10,拒绝源IP地址为192.168.1.1 ,匹配的主机是0.0.0.0。
命令:[R1-GigabitEthernet0/0/1]traffic-filter inbound  acl 2000,调用过滤工具traffic-filter,流量方向是inbound,匹配列表是acl2000
配置好ACL列表,配置好过滤工具后,用主机PC1访问服务器,看能不能成功。主机PC1访问Server1失败,配置成功。注意在配置的时候,不仅要配置ACL列表,还需要配置过滤工具。只配置ACL列表是不能实现流量的过滤拦截。

ALC配置原理
列表编号ACL列表有2000-2999的基础控制列表;有3000-3999的高级控制列表;还有4000-4999的二层控制列表,负责匹配二层MAC地址。列表编号是2000-2999的列表是基础访问控制列表,只能匹配到数据的源IP地址;列表编号是3000-3999的是高级访问控制列表,能够匹配到数据包中的源IP地址、目的IP地址、源端口、目的端口、协议号。当流量进入的时候,会匹配ACL列表中的信息,符合匹配规则的再经过滤器过滤就允许通过。对于ACL2000的列表只能匹配到数据包的源IP地址,ACL3000的列表可以匹配到数据包的源IP地址、目的IP地址、源端口、目的端口、协议号。

Rule规则,规则默认情况下规则是按顺序匹配的(从小到大)。规则一旦匹配之后,就不继续往下再匹配了,所以建议规则的配置是按规则的范围小的在前,规则范围大的在后面。
命令:[R1-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255,配置一条规则,编号是5,允许192.168.1.0的网段通过,而这个范围就包含192.168.1.1,范围比rule 10 的范围大。
现在用主机PC1去尝试pingServer1发现可以ping通
命令:[R1-acl-basic-2000]dis acl all,查看所有的规则,可以查看规则的配置情况看规则的配置,是范围大的在前,然后范围小的在后面,当192.168.1.1的流量进来的时候,先匹配第一条规则,第一条规则允许192.168.1.0网段的通过。通过后就不匹配第二条规则,第二条规则拒绝192.168.1.1的流量通过就不起作用了。
下面将允许192.168.1.0网段流量通过的规则编号改为20
命令:[R1-acl-basic-2000]undo rule 5,删除掉刚才配置的规则5再次尝试用PC1去pingServer1这次PC1就不能成功ping通Server1
然后用客户端192.168.1.2pingServer1成功。所以配置的规则拒绝192.168.1.1的流量通过,允许在192.168.1.0网段的除192.168.1.1的IP的流量通过。所以在配置规则的时候建议将规则范围大的配置在后面,规则范围小的配置在前面。

关于IP掩码的配置,在正常情况下IP掩码的配置都是看IP地址的类型,A类10.0.0.0掩码是255.0.0.0、B类172.16.0.0掩码是255.255.0.0、C类192.168.1.0掩码是255.255.255.0、确定到某一主机192.168.1.1掩码是255.255.255.255。

在ACL匹配的时候是用Wildcard通配符来确定的,这个时候,匹配A类地址10.0.0.0通配符是0.255.255.255、匹配B类地址172.16.0.0通配符是0.0.255.255、匹配C类地址192.168.1.0通配符是0.0.0.255、匹配一个主机192.168.1.1通配符是0.0.0.0.0(直接写0)。在配置规则的时候需要写上IP地址,配置通配符。

配置好规则之后,还要在接口上调用过滤器去拦截流量,需要配置好流量方向,配置好规则
命令:[R1-GigabitEthernet0/0/1]traffic-filter inbound acl 2000,在接口0/0/1的视图下调用过滤器,过滤inbound方向的流量,ACL控制列表是2000。

Traffic-filter(流量过滤)工具。流量过滤工具是和接口关联的而且还分inbound方向和outbound方向。在外面的流量进入到路由器里面就是inbound反向需要管控,在路由器的流量出道外面是outbound反向也需要管控。但是相反的流量是管控不了的。
命令:[R1-GigabitEthernet0/0/1]traffic-filter outbound acl 2000,配置一个outbound方向的流量过滤器,然后用PC1去尝试pingServer1能ping成功,说明过滤器是管控不了相反方向的流量,inbound方向的流量只能被inbound方向的过滤器管控,outbound方向的流量只能被outbound方向的过滤器管控。
命令:[R1-GigabitEthernet0/0/1]undo traffic-filter outbound ,删除outbound方向的过滤器
命令:[R1-GigabitEthernet0/0/1]traffic-filter inbound acl 2000,配置inbound方向的过滤器。
再用PC1去pingServer1这次就不能ping通。

注意一个接口的过滤器只能绑定一个ACL控制列表

继续实验
在成功拒绝PC1 192.168.1.1访问服务器Server1后,尝试访问Server2发现,PC1pingServer2也不通了,但是我只希望拒绝访问Server1。

是因为用ACL2000基础控制列表,只能控制源IP地址,现在配置等于,将所有的192.168.1.1的流量都拒绝了,既不到Server1 192.168.2.101,也不到Server2 192.168.2.102。那要实现PC1只拒绝访问Server1,就既需要匹配源IP地址,又需要匹配目的IP地址,如果要控制访问功能的话,就需要匹配协议号。就要用到ACL3000系列的高级访问控制列表。

配置ACL3000
命令:[R1-acl-adv-3000]rule 10 deny ip source 192.168.1.1 0 destination 192.168.2.101 0,规则编号10拒绝IP流量源IP是192.168.1.1通配符是0,目的IP是192.168.2.101通配符是0。
命令:[R1-GigabitEthernet0/0/1]traffic-filter inbound acl 3000,调用inbound方向的过滤器
配置好后用PC1尝试ping测试pingServer1失败pingServer2成功
这样的配置就完成了实验要求只拒绝PC1访问Server1。

现在希望拒绝客户端访问Server1的http,但是可以访问Server1的ftp服务,拒绝客户端访问Server2的ftp,但是可以访问Server2的http服务。

命令:[R1-acl-adv-3000]rule 20 deny tcp source 192.168.1.2 0 destination 192.168.2.101
 0 destination-port eq 80,规则编号20,拒绝tcp流量,源IP是192.168.1.2目的IP192.168.2.101,目的端口是eq(等于80)。
命令:[R1-acl-adv-3000]rule 20 deny tcp source 192.168.1.2 0 destination 192.168.2.101
 0 destination-port eq ?,通过这样的方式来查看端口的信息。
在配置端口的时候有eq(等于)、gt(超过)、lt(低于)和range(范围),通过这个来设置端口。

为什么要拒绝tcp的流量,需要知道TCP(传输控制协议)常用于Web服务(HTTP协议默认使用TCP的80端口)、文件传输(FTP)、电子邮件(SMTP、POP3等)等互联网应用,所以拒绝http服务要拒绝tcp的流量。

用客户端访问试一下连接服务器失败客户端被拒绝访问Server1的http服务,但是允许访问Server1的ftp服务。

命令:[R1-acl-adv-3000]rule 30 deny tcp source 192.168.1.2 0 destination 192.168.2.102
 0 destination-port range 20 21,配置20 21的端口拒绝访问ftp服务,ftp控制端口是21,ftp数据端口是20。查看配置的规则,然后调用过滤器。
配置好后用客户端访问Server2的ftp服务连接失败。客户端被拒绝访问Server2的ftp服务,但是不影响客户端访问Server2的http服务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一分钟学会Linux交换分区
  • 【Python深度学习】图像分割经典网络:U-Net
  • 官方招募 | 仓颉语言三方库社区建设全速启航,全球开发者、技术大神只等您!
  • 掌握CSS的时间之旅::past和:future伪类的探索与应用
  • AI工作流:低代码时代的革新者,重塑手机问答类应用生态
  • 【微信小程序】自定义组件 - 数据监听器
  • Qt Creator安装配置指南
  • 【运维项目经历|041】上云项目-物理机迁移到阿里云
  • 【秋招笔试】8.18大疆秋招(第三套)-三语言题解
  • Zotero 常用插件介绍
  • USRP:Link 22 战术数据链
  • Linux随记(十一)(部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2)
  • 怎样把经典CAD工具栏调出来
  • 地平线—征程2(Journey 2-J2)芯片详解(11)—CPU+CoreSight
  • windows下的redis7.0.11的下载
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Apache Spark Streaming 使用实例
  • canvas 高仿 Apple Watch 表盘
  • Hexo+码云+git快速搭建免费的静态Blog
  • JS变量作用域
  • MySQL-事务管理(基础)
  • Spark RDD学习: aggregate函数
  • Yeoman_Bower_Grunt
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端技术周刊 2019-02-11 Serverless
  • 使用common-codec进行md5加密
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 由插件封装引出的一丢丢思考
  • 【云吞铺子】性能抖动剖析(二)
  • ionic异常记录
  • 数据库巡检项
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # Apache SeaTunnel 究竟是什么?
  • # 计算机视觉入门
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C++17) optional的使用
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (NSDate) 时间 (time )比较
  • (SERIES12)DM性能优化
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (九)c52学习之旅-定时器
  • (七)理解angular中的module和injector,即依赖注入
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)大型网站架构演变和知识体系
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET_WebForm_layui控件使用及与webform联合使用
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /etc/motd and /etc/issue
  • @Autowired标签与 @Resource标签 的区别
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @NestedConfigurationProperty 注解用法
  • @RequestMapping 的作用是什么?