开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情
数据包过滤
数据包过滤(packet filtering)是一种用软件或硬件设备对向网络上传或从网络下载的数据流进行有选择的控制过程。
数据包过滤器能够基于如下标准对数据包进行过滤:
该数据包所属的协议(TCP、UDP等);
源地址;
目的地址;
目的设备的端口号(请求类型);
数据包的传输方向,向外传到Internet或向内传给局域网;
数据库中既定数据包的署名。
访问控制列表(Access Control List,ACL)最直接的功能是包过滤——对经过网络设备的数据包根据一定的规则进行数据包的过滤。
ACL的类型
基于编号的ACL ;
基于编号的扩展ACL ;
基于命名的标准ACL ;基于命名的扩展ACL
基于编号的ACL
基于编号的ACL格式
access-list listnumber {permit|deny} source-addr [source-mask]
列表号范围:1-99
规则:permit|deny
过滤内容:源地址;反掩码source-mask ACL规则语句处理顺序自上而下
基于编号的扩展ACL格式
access-list listnumber {permit|deny} protocol source -addr source -mask [source -port] dest-addr dest-mask [dest-port]
listnumber:100-199
协议表项protocol的用法 :关键字可以是TCP、UDP、IP、ICMP等
protocol过滤协议,在TCP/IP协议栈中,协议之间有相应关系
先TCP后IP,则有顺序关系,如果反过来,则后面的TCP控制没有意义
源端口号和目的端口号对应表要记忆
应用协议——承载协议——端口号
eq:equivalent
gt:great then
基于命名的ACL原则上只用在三层交换机上
基于命名的标准ACL格式
ip access-list standard {name} !用名字来定义一条标准ACL并进入 access-list配置模式
deny { SourceAddress source-wildcard-mask |host-source|any}
或
permit { SourceAddress source-wildcard-mask|host-source|any}
基于命名的扩展ACL格式
Switch(config)#ip access-list extended {name}
Switch(config-std-nacl)#{deny|permit} protocol {SourceAddress source-wildcard-mask|
host- source|any} [operator port]
Switch(config-std-nacl)#{DestinationAddress destination-wildcard-mask |host-destination |
any} [operator port]
基于时间的ACL
在全局配置模式下,通过以下步骤来设置一个time-range。
(1)time-range time-range-name
time-range-name:时钟控制名,一般1-32字符,中间不能有空格
(2)absolute {start time date [end time date] | end time date }
absolute 设置绝对时间的区间,只能设置一个区间,应用表示只在区间中有效
(3)periodic day-of-the-week hh:mm to [day-of-the-week] hh:mm
periodic {weekdays | weekend | daily}hh:mm to hh:mm
periodic表示设置周期时间,可以设置一个或多个周期时间段,如果已经设置则会周期性生效
weekdays:工作日;weekend :周六和周日;daily:每天
IP ACL的基本准则
一切未被允许的就是禁止的。
路由器或三层交换机缺省允许所有的信息流通过; 而防火墙缺省封锁所有的信息流,然后对希望提供的服务逐项开放。
按规则链来进行匹配:使用源地址、目的地址、源端口、目的端口、协议、时间段进行匹配
从头到尾,至顶向下的匹配方式
匹配成功马上停止
立刻使用该规则的“允许、拒绝……”
访问列表
访问列表的组成
定义访问列表的步骤
第一步,定义规则(哪些数据允许通过,哪些数据不允许通过)
第二步,将规则应用在路由器(或交换机)的接口上
访问控制列表的分类
1、标准访问控制列表
2、扩展访问控制列表
访问控制列表规则元素:源IP、目的IP、源端口、目的端口、协议
访问列表规则的应用
路由器应用访问列表对流经接口的数据包进行控制
1.入栈应用(in)
2.出栈应用(out)
IP标准访问列表的配置
1.定义标准ACL
编号的标准访问列表
Router(config)#access-list <1-99> {permit|deny} 源地址 [反掩码]
命名的标准访问列表
ip access-list standard { name}
deny {source source-wildcard|host source|any} or permit {source source-wildcard|host source|any}
2.应用ACL到接口
Router(config-if)#ip access-group <1-99>|{name} { in | out }
撤销过滤数据包
若要撤销ACL的数据包过滤功能,应采取以下两个措施。
(1)在指定接口停止应用访问列表
no ip access-group listnumber
(2)删除访问列表
no access-list listnumber
IP扩展访问列表的配置
1.定义扩展的ACL
编号的扩展ACL
Router(config)#access-list <100-199>
{ permit /deny } 协议 源地址 反掩码 [源端口] 目的地址 反掩码 [ 目的端口 ]
命名的扩展ACL
ip access-list extended { name}
{deny|permit} protocol {source source-wildcard |host source| any}[operator port]
{destination destination-wildcard |host destination |any}[operator port]
2.应用ACL到接口
Router(config-if)#ip access-group <100-199> |{name} { in | out }
访问列表的验证
显示全部的访问列表
Router#show access-lists
显示指定的访问列表
Router#show access-lists <1-199>
显示接口的访问列表应用
Router#show ip interface <接口名称> <接口编号>
正确放置ACL:
ACL可以放置在出站接口也可以放在入站接口。ACL应用在入站接口,路由器必需检查从该接口进站的每一个包,然后对照访问控制列表的匹配情况,然后作出相应的处理;ACL应用在出站接口,则对从该接口出站的包进行过滤。
把标准ACL尽量放在离目的地最近的地方,由于标准访问表只使用源地址,故将其靠近源会阻止报文流向其他接口。
把扩展ACL尽量放在离要被拒绝的数据包的来源最近的地方,这样创建的过滤器就不会反过来影响其他接口上的数据流,并且可以减少传输无效的包而无谓地占用线路带宽。
正确放置ACL可减少网络中不必要的数据流量。由于IP协议包含ICMP、TCP和UDP,所以应将更为具体的表项放在不太具体的表项前面,以保证位于另一个语句前面的语句不会否定表中后面语句的作用效果。