网络安全之ACL访问控制列表.docx
《网络安全之ACL访问控制列表.docx》由会员分享,可在线阅读,更多相关《网络安全之ACL访问控制列表.docx(17页珍藏版)》请在冰点文库上搜索。
网络安全之ACL访问控制列表
网络安全之——ACL(访问控制列表)
【实验目的】
1、掌握基本ACL的原理及配置方法。
2、熟悉高级ACL的应用场合并灵活运用。
【实验环境】
H3C三层交换机1台,PC3台,标准网线3根。
【引入案例1】
某公司建设了Intranet,划分为经理办公室、档案室、网络中心、财务部、研发部、市场部等多个部门,各部门之间通过三层交换机(或路由器)互联,并接入互联网。
自从网络建成后麻烦不断,一会儿有人试图偷看档案室的文件或者登录网络中心的设备捣乱,一会儿财务部抱怨研发部的人看了不该看的数据,一会儿领导抱怨员工上班时候整天偷偷泡网,等等。
有什么办法能够解决这些问题呢?
【案例分析】
网络应用与互联网的普及在大幅提高企业的生产经营效率的同时也带来了许多负面影响,例如,数据的安全性、员工经常利用互联网做些与工作不相干的事等等。
一方面,为了业务的发展,必须允许合法访问网络,另一方面,又必须确保企业数据和资源尽可能安全,控制非法访问,尽可能的降低网络所带来的负面影响,这就成了摆在网络管理员面前的一个重要课题。
网络安全采用的技术很多,通过ACL(AccessControlList,访问控制列表)对数据包进行过滤,实现访问控制,是实现基本网络安全的手段之一。
【基本原理】
ACL是依据数据特征实施通过或阻止决定的过程控制方法,是包过滤防火墙的一种重要实现方式。
ACL是在网络设备中定义的一个列表,由一系列的匹配规则(rule)组成,这些规则包含了数据包的一些特征,比如源地址、目的地址、协议类型以及端口号等信息,并预先设定了相应的策略——允许(permint)或禁止(Deny)数据包通过。
基于ACL的包过滤防火墙通常配置在路由器的端口上,并且具有方向性。
每个端口的出站方向(Outbound)和入站方向(Inbound)均可配置独立的ACL进行包过滤。
基于ACL的包过滤
当路由器收到一个数据包时,如果进入端口处没有启动ACL包过滤,则数据包直接提交路由器转发进程处理,如果进入端口处启动了ACL包过滤,则数据交给入站防火墙进行过滤,其工作流程如图所示。
入站包过滤工作流程
一个ACL可以包含多条规则,每条规则都定义了一个匹配条件及其相应的动作。
ACL规则的动作即允许或拒绝。
(1)系统用ACL的第一条规则的条件来尝试匹配数据包的信息。
(2)如果数据包的特征与规则的条件相符(称数据包命中此规则),则执行规则所设定的动作,如果是peimit,则允许数据包穿过防火墙,交由路由转发进程处理,如果是deny,则系统丢弃数据包。
(3)如果数据包特征与规则的条件不符,则转下一条规则继续尝试匹配。
(4)如果数据包没有命中任何一条规则的条件,则执行防火墙的默认动作。
需要注意的是,流程图中最后的默认规则用来定义对ACL以外的数据包的处理方式,即在没有规则去判定数据包是否可以通过的时候,防火墙所采取的策略是允许还是拒绝。
同样地,当路由器准备从某端口上发出一个数据包时,如果该端口处没有ACL启动包过滤,则数据包直接发出,如果该端口处启动了ACL包过滤,则数据将交给出站防火墙进行过滤,其工作流程如图所示。
出站包过滤工作流程
在配置ACL的时候,需要定义一个数字序号,并利用这个序号来唯一标识一个ACL。
根据应用目的,ACL可以分为以下几种类型:
●基本ACL(序号为2000~2999):
也称为标准访问控制列表,只根据报文的源IP地址信息制定匹配规则。
●高级ACL(序号为3000~3999):
也称为扩展访问控制列表,根据报文的源IP地址信息、目的IP地址信息、IP承载的协议类型、协议的特性等三、四层信息制定匹配规则。
其中3998与3999是系统为集群管理预留的编号,用户无法配置。
●二层ACL(序号为4000~4999):
根据报文的源MAC地址、目的MAC地址、VLAN优先级、二层协议类型等二层信息制定匹配规则。
●用户自定义ACL(序号为5000~5999):
可以以报文的报文头、IP头等为基准,指定从第几个字节开始与掩码进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。
【命令介绍】
1.定义基本ACL,并进入相应的ACL视图
aclnumberacl-number
删除指定的ACL,或者删除全部ACL的命令:
undoacl{all|numberacl-number}
〖视图〗
系统视图
〖参数〗
●numberacl-number:
ACL序号,基本IPv4ACL的序号取值范围为2000~2999,高级IPv4ACL的序号取值范围为3000~3999。
2.定义基本ACL规则
(1)指定要匹配的源IP地址范围。
(2)指定动作是permit或deny。
rule[rule-id]{deny|permit}[rule-string]
删除ACL规则或者规则中的某些属性信息的命令:
undorulerule-id[fragment|source|time-range]*
〖视图〗
基本ACL视图
〖参数〗
●rule-id:
ACL规则编号,取值范围为0~65534。
●deny:
表示丢弃符合条件的数据包。
●permit:
表示允许符合条件的数据包通过。
●rule-string:
ACL规则信息,包括:
(1)fragment:
分片信息。
定义规则仅对非首片分片报文有效,而对非分片报文和首片分片报文无效。
(2)source{sour-addrsour-wildcard|any}:
指定基本ACL规则的源地址信息。
sour-addr表示报文的源IP地址,采用点分十进制表示;sour-wildcard表示目标子网的反掩码,采用点分十进制表示,sour-wildcard可以为0,代表主机地址;any表示任意源IP地址。
(3)time-rangetime-name:
指定规则生效的时间。
time-name:
指定规则生效的时间段名称,为1~32个字符的字符串,不区分大小写,必须以英文字母a~z或A~Z开头,为避免混淆,时间段的名字不可以使用英文单词all。
通配符掩码,也称反掩码,和子网掩码相似,也是由0和1组成的32位bit,以点分十进制形式表示。
反掩码的作用是通过与IP地址执行比较操作来标识网络,和子网掩码不同的是,反掩码的比特序列中,1表示“相应的地址位不需要检查”,0表示“相应的地址位必须被检查”。
通配符掩码应用示例
IP地址
通配符掩码
表示的地址范围
192.168.0.1
0.0.0.255
192.168.0.0/24
192.168.0.1
0.0.3.255
192.168.0.0/22
192.168.0.1
0.255.255.255
192.0.0.0/8
192.168.0.1
0.0.0.0
192.168.0.1
〖例〗创建基本ACL2000,定义规则1,禁止源IP地址为192.168.0.1的报文通过。
system-view
SystemView:
returntoUserViewwithCtrl+Z.
[H3C]aclnumber2000
[H3C-acl-basic-2000]rule1denysource192.168.0.10
[H3C-acl-basic-2000]quit
3.在端口上应用ACL
将ACL应用到端口上,配置的ACL包过滤才能生效,并且需要指明在接口上应用的方向是Outbound还是Inbound
packet-filter{inbound|outbound}acl-rule
取消ACL在端口上的应用的命令:
undopacket-filter{inbound|outbound}acl-rule
〖视图〗
以太网端口视图
〖参数〗
●inbound:
表示对端口接收的数据包进行过滤。
●outbound:
表示对端口发送的数据包进行过滤。
●acl-rule:
应用的ACL规则,可以是多种ACL的组合。
例如,
(1)单独应用一个IP型ACL(基本ACL或高级ACL)中的所有规则:
ip-groupacl-number
(2)单独应用一个IP型ACL中的一条规则:
ip-groupacl-numberrulerule-id
〖例〗端口Ethernet1/0/1上应用基本ACL2000中的所有规则,对端口接收的数据包进行过滤。
假设基本ACL2000已经创建并且相关规则已经存在。
system-view
SystemView:
returntoUserViewwithCtrl+Z.
[H3C]interfaceEthernet1/0/1
[H3C-Ethernet1/0/1]packet-filterinboundip-group2000
[H3C-Ethernet1/0/1]quit
4.ACL包过滤信息显示
(1)显示ACL的配置信息。
displayacl{all|acl-number}
〖视图〗
任意视图
需要注意的是,如果用户在配置ACL的时候指定了match-order参数,则在使用displayacl命令时,显示的是交换机按照auto(深度优先)或config(配置顺序)对ACL中的规则进行排序后的结果。
〖例〗显示基本ACL2000的配置信息。
displayacl2000
BasicACL 2000,3rules,match-orderisauto
Thisaclisusedineth1/0/1
Acl'sstepis1
rule3permitsource3.3.3.00.0.0.255
rule2permitsource2.2.0.00.0.255.255
rule1permitsource1.0.0.00.255.255.255
displayacl命令显示信息描述表
字段
描述
BasicACL 2000
该ACL属于基本ACL,序号为2000
3rules
该基本ACL包含3条规则
Match-orderisauto
该基本ACL的匹配顺序为“深度优先”,如果不显示此字段,则表示匹配顺序为config(配置顺序)
Thisaclisusedineth1/0/1
该基本ACL的描述信息
Acl'sstepis1
该基本ACL的规则序号的步长值为1
Rule3permitsource3.3.3.00.0.0.255
该基本ACL包含的规则的详细信息
5、显示包过滤的应用信息
displaypacket-filter{interface interface-typeinterface-number}
〖视图〗
任意视图
〖参数〗
●interfaceinterface-typeinterface-number:
端口类型和端口编号。
●unitidunit-id:
交换机的UnitID。
如果交换机没有形成Fabric(交换机互连,构成一个“联合设备”),则unit-id参数的取值只能为1,表示显示当前交换机上所有端口的包过滤的应用信息;如果交换机已经形成Fabric,则unit-id参数的取值范围为1~8,表示显示指定Unit上所有端口的包过滤的应用信息。
〖例〗交换机没有形成Fabric,显示当前交换机所有端口上包过滤的应用信息。
displaypacket-filterunitid1
Ethernet1/0/1
Inbound:
Acl2000rule0 running
Ethernet1/0/2
Outbound:
Acl2001rule0 notrunning
displaypacket-filter命令显示信息描述表
字段
描述
Ethernet1/0/1
应用包过滤的端口
Inbound
应用包过滤的方向,包含以下两种:
Inbound:
表示入方向;Outbound:
表示出方向
Acl2000rule0
过滤规则为基本ACL2000的0号规则
Running
规则的下发状态,包含以下两种:
running:
表示激活;notrunning:
表示没有激活,通常是由于此规则引用的时间段不生效所致
6、进入单一用户界面视图或多个用户界面视图
user-interface[type]first-number[last-number]
〖视图〗系统视图
〖参数〗
●type:
指用户界面的类型,包括AUX用户界面和VTY用户界面。
指定type参数时还应该给该类型中的用户界面编号,当用户界面类型为AUX时,取值为0;当用户界面类型为VTY时,取值范围为0~4。
如果不指定type参数,则表示绝对用户界面编号,取值范围为0~5。
●first-number:
需要配置的第一个用户界面。
●last-number:
需要配置的最后一个用户界面,取值必须大于first-number。
〖例1〗从系统视图进入VTY0用户界面进行配置。
[H3C]user-interfacevty0
[H3C-ui-vty0]
〖例2〗从系统视图同时进入VTY0~VTY3用户界面进行配置。
[H3C]user-interfacevty03
[H3C-ui-vty0-3]
7、设置登录用户的认证方式。
authentication-mode{none|password|scheme}
【视图】用户界面视图
【参数】
none:
不需要认证。
password:
进行口令认证。
scheme:
进行本地或远端用户名和口令认证。
【例】在VTY用户界面视图下,设置通过VTY0登录交换机的Telnet用户不需要进行认证。
[H3C-ui-vty0]authentication-modenone
8、设置从用户界面登录后可以访问的命令级别。
userprivilegelevellevel
undouserprivilegelevel
【视图】用户界面视图
【参数】
level:
从用户界面登录后可以访问的命令级别,取值范围为0~3。
缺省情况下,从AUX用户界面登录后可以访问的命令级别为3级,从VTY用户界面登录后可以访问的命令级别为0级。
命令级别共分为访问、监控、系统、管理4个级别,分别对应标识0、1、2、3,说明如下:
访问级(0级):
用于网络诊断等功能的命令。
包括ping、tracert、telnet等命令,执行该级别命令的结果不能被保存到配置文件中。
监控级(1级):
用于系统维护、业务故障诊断等功能的命令。
包括debugging、terminal等命令,执行该级别命令的结果不能被保存到配置文件中。
系统级(2级):
用于业务配置的命令。
包括路由等网络层次的命令,用于向用户提供网络服务。
管理级(3级):
关系到系统的基本运行、系统支撑模块功能的命令,这些命令对业务提供支撑作用。
包括文件系统、、XModem下载、用户管理命令、级别设置命令等。
【例】在VTY用户界面视图下,设置从VTY0用户界面登录后可以访问的命令级别为1。
[H3C-ui-vty0]userprivilegelevel1
9、配置用户界面支持的协议。
protocolinbound{all|telnet}
【视图】VTY用户界面视图
【参数】
all:
支持所有的协议。
telnet:
支持Telnet协议。
【例】配置VTY0用户界面只支持Telnet协议.
[H3C-ui-vty0]protocolinboundtelnet
10、设置本地认证的口令。
setauthenticationpassword{cipher|simple}password
undosetauthenticationpassword
【视图】用户界面视图
【参数】cipher:
设置本地认证口令以密文方式存储。
simple:
设置本地认证口令以明文方式存储
password:
口令字符串。
如果验证方式是simple,则password必须是明文口令。
如果验证方式是cipher,则用户在设置password时有两种方式:
(1)一种是输入小于等于16字符的明文口令,系统会自动转化为24位的密文形式;
(2)另一种是直接输入24字符的密文口令,这种方式要求用户必须知道其对应的明文形式。
如:
明文“123456”对应的密文是“OUM!
K%F<+$[Q=^Q`MAF4<1!
!
”。
【实验内容】
实验1基本ACL实现
一、实验需求
以三层交换机连接档案室、经理办公室以及网络中心的设备为例,在交换机上划分VLAN3、VLAN4、VLAN5三个VLAN,分别把Ethernet1/0/1,Ethernet1/0/2,Ethernet1/0/3分配给3个VLAN,连接档案室、经理办公室以及网络中心三个部门的PC。
公司内部网络地址是10.1.0.0/16,档案室获得的网络地址是10.1.3.0/24,经理办公室的网络地址是10.1.4.0/24,网络中心的网络地址是10.1.5.0/24,实验拓扑如图5.9所示。
配置基本ACL,实现档案室的PC1只允许经理办公室的PC2访问,而不允许网络中心的PC3访问。
二、拓扑图
三、实验步骤
1、按拓扑图连接好设备,IP地址规划如下表:
设备名称
端口
IP地址
网关
PC1(档案室)
Ethernet1/0/1
10.1.3.16/24
10.1.3.254/24
PC2(经理办公室)
Ethernet1/0/2
10.1.4.16/24
10.1.4.254/24
PC3(网络中心)
Ethernet1/0/3
10.1.5.16/24
10.1.5.254/24
交换机SWA
VLAN3
10.1.3.254/24
VLAN4
10.1.4.254/24
VLAN5
10.1.5.254/24
2、完成三个VLAN之间的互通:
创建VLAN3,将端口Ethernet1/0/1加入到VLAN3,并按IP地址规划表配置VLAN3接口IP地址;创建VLAN4,将端口Ethernet1/0/2加入到VLAN4,并按IP地址规划表配置VLAN4接口IP地址;创建VLAN5,将端口Ethernet1/0/3加入到VLAN5,并按IP地址规划表配置VLAN5接口IP地址。
3、在交换机上定义基本ACL2000,定义规则1禁止网络中心访问档案室,定义规则2允许经理办公室访问档案室。
4、将ACL2000应用于连接档案室的Ethernet1/0/1出方向的包过滤。
5、验证ACL作用。
①在交换机上通过display来查看ACL包过滤信息。
②在PC2上使用Ping命令来测试从PC2到PC1的可达性。
③在PC3上使用Ping命令来测试从PC3到PC1的可达性。
实验2高级ACL实现
一、实验需求
除了网络管理员,不允许普通用户能telnet到网络设备。
基本ACL只能过滤特定源IP地址的数据包,如果要针对IP承载的协议特征进行访问控制,则需要使用高级ACL。
因此,定义的高级ACL应包含两条规则:
检查访问网络设备(交换机或路由器)的数据包,一条规则匹配网络管理员PC的IP地址,他能够进行telnet操作,动作是permit;另一条规则匹配其他部门IP地址,动作是deny。
二、高级ACL的命令介绍
1.定义规则
(1)指定要匹配的源IP地址、目的IP地址、IP承载的协议类型、协议端口号等信息。
(2)指定动作是permit或deny。
rule[rule-id]{deny|permit}protocol[rule-string]
删除ACL规则或者规则中的某些属性信息的命令:
undorulerule-id [destination|destination-port|dscp|fragment|icmp-type|precedence|source|source-port|time-range|tos]*
〖视图〗
高级ACL视图
〖参数〗
●rule-id:
ACL规则编号,取值范围为0~65534。
●deny:
表示丢弃符合条件的数据包。
●permit:
表示允许符合条件的数据包通过。
●protocol:
IP承载的协议类型。
用数字表示时,取值范围为1~255;用名字表示时,可以选取gre(47)、icmp
(1)、igmp
(2)、ip、ipinip(4)、ospf(89)、tcp(6)、udp(17)。
●rule-string:
ACL规则信息,主要有:
(1)source{sour-addrsour-wildcard|any}:
sour-addrsour-wildcard用来确定数据包的源地址,点分十进制表示;any代表任意源地址。
(2)destination{dest-addrsour-wildcard|any}:
dest-addrsour-wildcard指定规则的目的IP地址,点分十进制表示;any代表任意源地址。
(3)precedenceprecedence:
报文IP的优先级,用数字表示时,取值范围为0~7。
(4)dscpdscp:
报文DSCP优先级,用数字表示时,取值范围为0~63。
(5)tostos:
报文ToS优先级,用数字表示时,取值范围为0~15。
(6)time-rangetime-name:
指定规则生效的时间。
当protocol协议类型选择为TCP或者UDP时,用户还可以定义:
●source-portoperatorport1[port2]:
定义UDP/TCP报文的源端口信息。
●destination-portoperatorport1[port2]:
定义UDP/TCP报文的目的端口信息。
operator为操作符,取值可以为lt(小于)、gt(大于)、eq(等于)、neq(不等于)或者range(在指定范围内)。
port1、port2:
TCP或UDP的端口号,用名字或数字表示,数字的取值范围为0~65535。
established:
表示此条规则仅对TCP建立连接的第一个SYN报文有效。
〖例〗创建高级ACL3001,定义规则1,允许从129.9.0.0/16网段的主机向202.38.160.0/24网段的主机发送的目的端口号为80的TCP报文通过。
[H3C]aclnumber3001
[H3C-acl-adv-3001]rule1permittcpsource129.9.0.00.0.255.255destination202.38.160.0