访问控制列表-细说ACL那些事儿(ACL应用篇)

作者: ricksteves 分类: 华为认证 发布时间: 2017-03-24 09:44

1、ACL应用范围

通过前两期的ACL理论学习,大家知道ACL并不能单独完成控制网络访问行为或者限制网络流量的效果,而是需要应用到具体的业务模块才能实现上述功能。

那么ACL到底可以应用在哪些业务中呢?

小编总结了一下,ACL应用的业务模块非常多,但主要分为以下四类:

业务分类

应用场景

涉及业务模块

登录控制对交换机的登录权限进行控制,允许合法用户登录,拒绝非法用户登录,从而有效防止未经授权用户的非法接入,保证网络安全性。

例如,一般情况下交换机只允许管理员登录,非管理员用户不允许随意登录。这时就可以在Telnet中应用ACL,并在ACL中定义哪些主机可以登录,哪些主机不能。

Telnet、SNMP、FTP

TFTP、SFTP、HTTP

对转发的报文进行过滤对转发的报文进行过滤,从而使交换机能够进一步对过滤出的报文进行丢弃、修改优先级、重定向、IPSEC保护等处理。

例如,可以利用ACL,降低P2P下载、网络视频等消耗大量带宽的数据流的服务等级,在网络拥塞时优先丢弃这类流量,减少它们对其他重要流量的影响。

QoS流策略、NAT、IPSEC
对上送CPU处理的报文进行过滤对上送CPU的报文进行必要的限制,可以避免CPU处理过多的协议报文造成占用率过高、性能下降。

例如,发现某用户向交换机发送大量的ARP攻击报文,造成交换机CPU繁忙,引发系统中断。这时就可以在本机防攻击策略的黑名单中应用ACL,将该用户加入黑名单,使CPU丢弃该用户发送的报文。

黑名单、白名单、

用户自定义流

路由过滤ACL可以应用在各种动态路由协议中,对路由协议发布和接收的路由信息进行过滤。

例如,可以将ACL和路由策略配合使用,禁止交换机将某网段路由发给邻居路由器。

BGP、IS-IS、OSPF

OSPFv3、RIP、RIPng

组播协议

2、ACL业务模块的处理机制

各类ACL应用的业务模块对命中/未命中ACL的处理机制是各不相同的。

例如,在流策略中应用ACL时,如果ACL中存在规则但报文未匹配上,该报文仍可以正常通过;但在Telnet中应用ACL,这种情况下,该报文就无法正常通过了。

再如,在黑名单中应用ACL时,无论ACL规则配置成permit还是deny,只要报文命中了规则,该报文都会被系统丢弃,其他模块却不存在这种情况。

所以,大家在配置ACL规则并应用到业务模块中时,一定要格外小心。

为了方便大家查阅,小编特地将常用ACL业务模块的处理机制进行了整理。

业务模块

匹配上了permit规则匹配上了deny规则ACL中配置了规则,但未匹配上任何规则ACL中没有配置规则ACL未创建

Telnet

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

HTTP

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

SNMP

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

FTP

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

TFTP

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

SFTP

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

流策略

流行为是permit时:permit(允许通过)

流行为是deny时:deny(丢弃报文)

deny(丢弃报文)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)

NAT

permit(进行NAT转换)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)

IPSEC

permit(数据流经过IPSec处理后再转发)不允许出现此情况permit(功能不生效,按照原转发方式进行转发)不允许出现此情况不允许出现此情况

本机防攻击策略

   白名单permit(CPU优先处理) deny(丢弃报文)permit (功能不生效,正常上送报文)permit(功能不生效,正常上送报文)permit(功能不生效,正常上送报文)

黑名单

deny(丢弃报文)

deny(丢弃报文)

permit (功能不生效,正常上送报文)

permit (功能不生效,正常上送报文)

permit (功能不生效,正常上送报文)

用户自定义流用户自定义流的处理动作是deny时:deny(丢弃报文)

动作是car时:permit(进行CAR限速)

 deny(丢弃报文)permit (功能不生效,按照原转发方式进行转发)permit (功能不生效,正常上送报文)permit (功能不生效,正常上送报文)

路由

Route Policy匹配模式是permit时:permit(允许执行路由策略)

匹配模式是deny时:

deny(不允许执行路由策略)

deny(功能不生效,不允许执行路由策略)deny(功能不生效,不允许执行路由策略)permit(对经过的所有路由生效)deny(功能不生效,不允许执行路由策略)
Filter Policypermit(允许发布或接收该路由)deny(不允许发布或接收该路由)deny(不允许发布或接收该路由)deny(不允许发布或接收路由)permit(允许发布或接收路由)

组播

igmp-snooping ssm-policypermit(允许加入SSM组播组范围)deny(禁止加入SSM组地址范围)deny(禁止加入SSM组地址范围)deny(禁止加入SSM组地址范围,所有组都不在SSM组地址范围内)deny(禁止加入SSM组地址范围,只有临时组地址范围232.0.0.0~232.255.255.255在SSM组地址范围内)
igmp-snooping group-policy配置了default-permit时:permit(允许加入组播组)

未配置default-permit: permit(允许加入组播组)

配置了default-permit时:deny(禁止加入组播组)

未配置default-permit:deny (禁止加入组播组)

配置了default-permit时:permit(允许加入组播组)

未配置default-permit:deny(禁止加入组播组)

配置了default-permit时:permit(允许加入组播组)

未配置default-permit:deny(禁止加入组播组)

配置了default-permit时:permit(允许加入组播组)

未配置default-permit:deny(禁止加入组播组)

3、ACL应用方式

每个业务模块的ACL应用方式,风格也是各不相同。为此,小编同样进行了一番整理,供大家参考查阅。

业务模块

ACL应用方式可使用的ACL编号范围

Telnet

方式一:

系统视图下执行命令telnet [ ipv6 ] serveracl acl-number

方式二:

a、执行命令user-interface vty first-ui-number [ last-ui-number ],进入VTY用户界面视图

b、执行命令acl [ ipv6 ] acl-number {inbound | outbound }

2000~3999

HTTP

系统视图下执行命令http acl acl-number2000~3999

SNMP

SNMPv1和SNMPv2c:

系统视图下执行命令snmp-agent acl acl-number

snmp-agent community { read |write } { community-name | ciphercommunity-name } [ mib-view view-name | acl acl-number ] *

SNMPv3:

系统视图下执行命令snmp-agent acl acl-numbersnmp-agent group v3group-name { authentication | privacy| noauthentication } [ read-view read-view | write-view write-view | notify-view notify-view ]* [ acl acl-number ]或snmp-agent usm-user v3 user-name[ group group-name | acl acl- number ]*

2000~2999

FTP

系统视图下执行命令ftp [ ipv6 ] acl acl-number2000~3999

TFTP

系统视图下执行命令tftp-server [ ipv6 ]acl acl-number2000~3999

SFTP

方式一:

系统视图下执行命令ssh [ ipv6 ] serveracl acl-number

方式二:

a、执行命令user-interface vty first-ui-number [ last-ui-number ],进入VTY用户界面视图

b、执行命令acl [ ipv6 ] acl-number {inbound | outbound }

2000~3999

流策略

a、  系统视图下执行命令traffic classifierclassifier-name [ operator { and | or} ] [ precedence precedence-value],进入流分类视图。

b、执行命令if-match acl { acl-number |acl-name },配置ACL应用于流分类。

c、 系统视图下执行命令traffic behaviorbehavior–name,定义流行为并进入流行为视图。

d、配置流动作。报文过滤有两种流动作:deny 或permit。

e、 系统视图下执行命令traffic policypolicy-name [ match-order { auto |config } ],定义流策略并进入流策略视图。

f、 执行命令classifier classifier-namebehavior behavior-name,在流策略中为指定的流分类配置所需流行为,即绑定流分类和流行为。在系统视图、接口视图或VLAN视图下,执行命令traffic-policy policy-name { inbound| outbound },应用流策略。

ACL:2000~5999

ACL6:2000~3999

NAT

方式一:

a、   系统视图下执行命令nat address-group group-index start-addressend-address,配置公网地址池。

b、   执行命令interface interface-typeinterface-number.subnumber,进入子接口视图。

c、   执行命令nat outbound acl-numberaddress-group group-index [ no-pat ],,配置带地址池的NAT Outbound。

方式二:

a、   系统视图下执行命令interfaceinterface-type interface-number.subnumber,进入子接口视图。

b、   执行命令nat outbound acl-number,配置Easy IP。

2000~3999

IPSEC

方式一:

a、   系统视图下执行命令ipsec policypolicy-name seq-number manual,创建手工方式安全策略,并进入手工方式安全策略视图。

b、   执行命令security acl acl-number,在安全策略中引用ACL。

方式二:

a、   系统视图下执行命令ipsec policypolicy-name seq-number isakmp,创建IKE动态协商方式安全策略,并进入IKE动态协商方式安全策略视图。

b、   执行命令security acl acl-number,在安全策略中引用ACL。

方式三:

a、   系统视图下执行命令ipsec policy-template template-name seq-number,创建策略模板,并进入策略模板视图。

b、   执行命令security acl acl-number,在安全策略中引用ACL。

c、   系统视图下执行命令ipsec policypolicy-name seq-number isakmptemplate template-name,在安全策略中引用策略模板。

3000~3999

本机防攻击策略

白名单a、   系统视图下执行命令cpu-defend policy policy-name,创建防攻击策略并进入防攻击策略视图。

b、   执行命令whitelist whitelist-id aclacl-number,创建自定义白名单。

c、   系统视图下执行命令cpu-defend-policy policy-name [ global ],或槽位视图下执行命令cpu-defend-policypolicy-name,应用防攻击策略。

2000~4999
黑名单a、   系统视图下执行命令cpu-defend policy policy-name,创建防攻击策略并进入防攻击策略视图。

b、   执行命令blacklist blacklist-id aclacl-number,创建黑名单。

c、   系统视图下执行命令cpu-defend-policy policy-name [ global ],或槽位视图下执行命令cpu-defend-policypolicy-name,应用防攻击策略。

2000~4999
用户自定义流a、   系统视图下执行命令cpu-defend policy policy-name,创建防攻击策略并进入防攻击策略视图。

b、   执行命令user-defined-flow flow-id acl acl-number,配置用户自定义流。

c、   系统视图下执行命令cpu-defend-policy policy-name [ global ],或槽位视图下执行命令cpu-defend-policypolicy-name,应用防攻击策略。

2000~4999

路由

Route Policya、   系统视图下执行命令route-policyroute-policy-name { permit | deny }node node,创建Route-Policy,并进入Route-Policy视图。

b、   执行命令if-match acl { acl-number| acl-name },配置基于ACL的匹配规则;或者配置apply子句为路由策略指定动作,如执行命令apply cost [ + | ] cost,设置路由的开销值等。

c、   应用路由策略。路由协议不同,命令行不同。例如针对OSPF协议,可以在OSPF视图下,执行命令import-route { limit limit-number | { bgp [permit-ibgp ] | direct | unr | rip [process-id-rip ] | static | isis [process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tagtag | route-policy route-policy-name ]* },引入其他路由协议学习到的路由信息;针对RIP协议,可以在RIP视图下,执行命令import-route { {static | direct | unr } | { { rip | ospf |isis } [ process-id ] } } [ cost cost |route-policy route-policy-name ]*

2000~2999
Filter Policy路由协议不同,过滤方向不同,命令行不同。例如针对RIP协议,对引入的路由进行过滤,可以在RIP视图下执行命令filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] }import [ interface-type interface-number ];对发布的路由进行过滤,可以在RIP视图下执行命令filter-policy {acl-number | acl-name acl-name | ip-prefix ip-prefix-name } export [ protocol [ process-id ] | interface-type interface-number ] 。2000~2999

组播

igmp-snooping ssm-policyVLAN视图下执行命令igmp-snooping ssm-policy basic-acl-number2000~2999
igmp-snooping group-policyVLAN视图下执行命令igmp-snooping group-policy acl-number [ versionversion-number ] [ default-permit ]2000~3999

好啦,有了小编整理的这两张表做参考,配置ACL应用案例就可以轻松搞定啦!下面就跟随小编一起,动手试试吧~

4、ACL应用案例

案例1:使用ACL限制Telnet访问权限

为了保障远程维护网络设备的安全性,现要求只有管理员(源地址是10.1.1.1/32)才能telnet登录交换机,其他人不允许登录。

要实现这个需求,一定是在Telnet模块中应用ACL。那么该如何配置ACL规则呢?大家是不是认为应该先配置一条permit规则允许10.1.1.1/32登录,然后再配置多条deny规则拒绝其他地址登录呢?其实大可不必。

查阅Telnet模块的报文处理机制参照表,当ACL中存在规则的情况下,如果报文匹配上permit规则,则该地址允许登录设备;如果未匹配上规则,该地址被拒绝登录设备。

业务模块

匹配上了permit规则匹配上了deny规则ACL中配置了规则,但未匹配上任何规则ACL中没有配置规则ACL未创建

Telnet

permit(允许登录)deny(拒绝登录)deny(拒绝登录)permit(允许登录)permit(允许登录)

因此,我们仅需配置一条允许10.1.1.1/32地址通过的permit规则即可,10.1.1.1/32以外的地址的报文因匹配不上任何规则会被拒绝登录。

案例1关键配置的配置文件如下:

#

telnet server port 1025

#

acl number 2001    //创建基本ACL,编号为2001

rule 5 permit source 10.1.1.1 0   //仅允许10.1.1.1/32登录

#

aaa

local-user admin1234 password irreversible-cipher ******  //登录密码用******代替,请根据实际情况配置

local-user admin1234 privilege level 3

local-user admin1234 service-type telnet

#

user-interface maximum-vty 8

user-interface vty 0 7

acl 2001 inbound    //对通过用户界面的登录进行限制

案例2:使用基于时间的ACL限制用户访问服务器权限

某企业禁止市场部门和研发部门在上班时间(8:00至17:30)访问工资查询服务器(IP地址为10.10.4.9/32),而总裁办公室不受限制,可以随时访问。

分析上述需求,实际上就是要对源IP=10.10.1.0/24访问目的IP=10.10.4.9/32的转发流量、以及源IP=10.10.2.0/24访问目的IP=10.10.4.9/32的转发流量,在特定时间内进行限制,其他访问流量则不受限制,所以我们可以通过在流策略中应用ACL来解决。

1)     首先,查阅流策略模块的ACL处理机制参照表,为需要过滤的报文配置ACL规则。

当ACL中存在规则的情况下,如果报文匹配上deny规则,则被拒绝通过;如果未匹配上,则会被正常转发。因此,根据上述需求,我们只需要针对两类需限制的流量,分别配置deny规则即可。其他地址访问服务器的报文因匹配不上任何规则而被正常转发,不受限制。

业务模块

匹配上了permit规则匹配上了deny规则ACL中配置了规则,但未匹配上任何规则ACL中没有配置规则ACL未创建

流策略

流行为是permit时:

permit(允许通过)

流行为是deny时:

deny(丢弃报文)

deny(丢弃报文)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)permit(功能不生效,按照原转发方式进行转发)

2)    其次,我们需要注意,需求中强调了是在一定时间范围内进行流量限制,所以仅仅进行流量控制是不可行的,还必须在规则中引入生效时间段。

我们定义一个时间段名称为control-time,并配置该时间段为8:00至17:30,然后在规则中指定time- name参数为control-time,即把生效时间段与ACL关联起来了。

3)    最后,我们再查阅流策略ACL应用方式参照表,将ACL应用到流策略中。

根据上述需求,我们为市场部和研发部分别配置两个流分类c_market、c_rd,然后将配置的两条deny规则对应的ACL应用到两个流分类中,并配置两个流行为动作为deny。同时为市场部和研发部分别创建流策略p_market和p_ rd,并将流分类和流行为与流策略绑定,最后再在接口上应用流策略。

在选择流策略的应用方向时,一定要注意,需求中是要对源自市场部和研发部的报文进行过滤,即对从接口GE1/0/0和接口GE1/0/1进入交换机的报文进行过滤,所以流策略的应用方向必须指定为入方向(inbound)。如果应用方向配置成了出方向(outbound),那就达不到过滤的效果了。

小编提醒,上述案例我们还可以通过这样的配置来实现需求:在一条ACL中配置两条规则,在一个流分类中应用这条ACL,配置一个流行为动作为deny,最后创建并应用一个流策略。这样配置起来更加简洁和方便,但同时又带来了新的问题:若后续企业增加了市场部对其他服务器的访问限制,这时该如何处理呢?

如果之前市场部和研发部使用的是同一个ACL、流分类、流行为和流策略(这整套ACL的相关配置小编统称为“ACL策略配置”),那么这时只能重新再为市场部配置一条新的ACL策略;如果之前两个部门使用的是不同的ACL策略,那么现在只需在市场部的ACL策略中,增加一条ACL规则即可解决。所以,为各个部门部署独立的ACL策略,可以让您在后续需求扩充或发生改变时,更加方便的维护网络配置。小编建议大家能把眼光放的更加长远一些,不要只顾眼前配置的简单噢~

案例2关键配置的配置文件如下:

time-range control-time 08:00 to 17:30 working-day  //配置生效时间段,工作日8:00至17:30

#

acl number 3002

rule 5 deny ip source 10.10.1.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time     //限制市场部人员在上班时间不能访问工资服务器

#

acl number 3003

rule 5 deny ip source 10.10.2.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time    //限制研发部人员在上班时间不能访问工资服务器

#

traffic classifier c_market operator or precedence 5  //为市场部配置基于ACL的流分类

if-match acl 3002  //对匹配ACL 3002的报文(即源地址是市场部IP的报文)进行分类

traffic classifier c_rd operator or precedence 10  //为研发部配置基于ACL的流分类

if-match acl 3003  //对匹配ACL 3003的报文(即源地址是研发部IP的报文)进行分类

#

traffic behavior b_market

deny  //配置流行为,拒绝匹配上规则的报文通过

traffic behavior b_rd

deny  //配置流行为,拒绝匹配上规则的报文通过

#

traffic policy p_market match-order config   //为市场部配置流策略

classifier c_market behavior b_market    //在流策略中绑定流分类和流行为

traffic policy p_rd match-order config    //为研发部配置流策略

classifier c_rd behavior b_rd  //在流策略中绑定流分类和流行为

#

interface GigabitEthernet1/0/0

port link-type access

port default vlan 10

traffic-policy p_market inbound   //接口下应用流策略(市场部从接口GE1/0/0接入)

#

interface GigabitEthernet1/0/1

port link-type access

port default vlan 20

traffic-policy p_rd inbound  //接口下应用流策略(研发部从接口GE1/0/1接入)

结束了ACL应用案例的配置,本期ACL应用篇也要完结了。限于篇幅问题,小编只能为大家讲解两个最为典型的ACL案例。好学的你,一定觉得不过瘾吧!

发表评论

电子邮件地址不会被公开。 必填项已用*标注