访问控制列表-细说ACL那些事儿(ACL应用篇)
访问控制列表-细说ACL那些事儿(ACL应用篇)
文章来源:https://forum.huawei.com/enterprise/zh/thread-336589.html
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 Policy | permit(允许发布或接收该路由) | deny(不允许发布或接收该路由) | deny(不允许发布或接收该路由) | deny(不允许发布或接收路由) | permit(允许发布或接收路由) | |
组播 | igmp-snooping ssm-policy | permit(允许加入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 ] server acl 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-number | 2000~3999 | |
SNMP | SNMPv1和SNMPv2c: 系统视图下执行命令snmp-agent acl acl-number 或snmp-agent community { read | write } { community-name | cipher community-name } [ mib-view view-name | acl acl-number ] * SNMPv3: 系统视图下执行命令snmp-agent acl acl-number、snmp-agent group v3 group-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-number | 2000~3999 | |
TFTP | 系统视图下执行命令tftp-server [ ipv6 ] acl acl-number | 2000~3999 | |
SFTP | 方式一: 系统视图下执行命令ssh [ ipv6 ] server acl acl-number 方式二: a、执行命令user-interface vty first-ui-number [ last-ui-number ],进入VTY用户界面视图 b、执行命令acl [ ipv6 ] acl-number { inbound | outbound } | 2000~3999 | |
流策略 | a、 系统视图下执行命令traffic classifier classifier-name [ operator { and | or } ] [ precedence precedence-value ],进入流分类视图。 b、执行命令if-match acl { acl-number | acl-name },配置ACL应用于流分类。 c、 系统视图下执行命令traffic behavior behavior–name,定义流行为并进入流行为视图。 d、配置流动作。报文过滤有两种流动作:deny 或permit。 e、 系统视图下执行命令traffic policy policy-name [ match-order { auto | config } ],定义流策略并进入流策略视图。 f、 执行命令classifier classifier-name behavior behavior-name,在流策略中为指定的流分类配置所需流行为,即绑定流分类和流行为。在系统视图、接口视图或VLAN视图下,执行命令traffic-policy policy-name { inbound | outbound },应用流策略。 | ACL:2000~5999 ACL6:2000~3999 | |
NAT | 方式一: a、 系统视图下执行命令nat address-group group-index start-address end-address,配置公网地址池。 b、 执行命令interface interface-type interface-number.subnumber,进入子接口视图。 c、 执行命令nat outbound acl-number address-group group-index [ no-pat ],,配置带地址池的NAT Outbound。 方式二: a、 系统视图下执行命令interface interface-type interface-number.subnumber,进入子接口视图。 b、 执行命令nat outbound acl-number,配置Easy IP。 | 2000~3999 | |
IPSEC | 方式一: a、 系统视图下执行命令ipsec policy policy-name seq-number manual,创建手工方式安全策略,并进入手工方式安全策略视图。 b、 执行命令security acl acl-number,在安全策略中引用ACL。 方式二: a、 系统视图下执行命令ipsec policy policy-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 policy policy-name seq-number isakmp template template-name,在安全策略中引用策略模板。 | 3000~3999 | |
本机防攻击策略 | 白名单 | a、 系统视图下执行命令cpu-defend policy policy-name,创建防攻击策略并进入防攻击策略视图。 b、 执行命令whitelist whitelist-id acl acl-number,创建自定义白名单。 c、 系统视图下执行命令cpu-defend-policy policy-name [ global ],或槽位视图下执行命令cpu-defend-policy policy-name,应用防攻击策略。 | 2000~4999 |
黑名单 | a、 系统视图下执行命令cpu-defend policy policy-name,创建防攻击策略并进入防攻击策略视图。 b、 执行命令blacklist blacklist-id acl acl-number,创建黑名单。 c、 系统视图下执行命令cpu-defend-policy policy-name [ global ],或槽位视图下执行命令cpu-defend-policy policy-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-policy policy-name,应用防攻击策略。 | 2000~4999 | |
路由 | Route Policy | a、 系统视图下执行命令route-policy route-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 | tag tag | 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-policy | VLAN视图下执行命令igmp-snooping ssm-policy basic-acl-number | 2000~2999 |
igmp-snooping group-policy | VLAN视图下执行命令igmp-snooping group-policy acl-number [ version version-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关键配置的配置文件如下:
案例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关键配置的配置文件如下:
结束了ACL应用案例的配置,本期ACL应用篇也要完结了。限于篇幅问题,小编只能为大家讲解两个最为典型的ACL案例。好学的你,一定觉得不过瘾吧!
想要了解更多的ACL技术原理和应用案例,你可以登录技术支持网站https://support.huawei.com/enterprise/zh/switches/s5700-pid-6691579?category=product-documentation-sets,下载并学习这里的交换机产品文档。
附ACL系列技术贴:
名称 | 简介 |
围绕一张ACL结构图,介绍ACL最基本的概念,包括ACL的定义、作用、分类、ACL规则、步长的定义和作用。 | |
围绕“匹配”二字,展开介绍ACL的匹配机制、匹配顺序和常用匹配项的使用方法。 |
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » 访问控制列表-细说ACL那些事儿(ACL应用篇)
作者: cjh
手机扫一扫,手机上查看此文章: |
一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm