Shubham_Mishra职位:员工公司:F5
技术进步的同时也对安全防护提出了种种挑战,因此需要企业制定相应策略,通过控制或限制资源共享来防范安全漏洞。
放行列表和阻断列表就是这样两种安全策略,可阻止未经授权的访问,并有助于维护系统的机密性。
什么是阻断列表?
阻断列表是一种安全策略,它通过定义一组规则来拒绝被确定为系统潜在威胁的可疑实体访问应用/网络。
通常来说,在默认允许的情况下,管理员会采用此类策略,这意味着除了阻断列表中标明的内容以外,允许访问所有信息。
举例来说,当今的电子商务网站希望吸引更多受众,在这种情况下,可将阻断列表用作一种搭配解决方案,快速识别和阻止可疑的恶意来源,同时允许其他来源访问。
缺点:尽管阻断列表策略易于部署,并能够有效防范已知威胁,但在应对未知威胁方面有时收效甚微。
什么是放行列表?
放行列表与阻断列表有着异曲同工之妙。相比拦截威胁访问的请求,该策略只允许可信/有效的实体用户进行访问,其他所有用户均将被阻止。
放行列表与阻断列表有着异曲同工之妙。相比拦截威胁访问的请求,该策略只允许可信/有效的实体用户进行访问,其他所有用户均将被阻止。
此类策略与阻断列表相比更为严格,并是在默认拒绝的情况下使用,这意味着只允许已知的可信来源进行访问,而阻止其他所有来源。
例如,公司特定的应用/网络/设备应仅可由其员工进行访问,任何外部人员均不得访问,在这种情况下,放行列表策略可作为一种可行解决方案。
缺点:这种策略更为严格,因此安全性更高,但部署起来非常错综复杂,尤其是在复杂的环境中。
演示
在开展测试活动时,我们参考了《API Discovery and Auto Generation of Swagger Schema(API 发现和 Swagger 方案自动生成)》一文进行基础架构创建和应用部署。
*如您对此文章感兴趣,可访问网址:https://sourl.cn/q99RLK
以下是测试阻断列表和放行列表特性的几个示例场景:
(注:测试在“软件版本:crt-20220217-1449”上进行)
场景 1
在该场景中,我们将允许客户端使用我们的服务策略根据其地理位置访问应用。
预期结果:只有来自允许地理位置的客户端方可访问应用。
在创建基础架构并部署应用后,需要遵循以下步骤:
1
第一步
打开 Home(主页)-> Web App & API Protection(Web 应用和 API 防护),然后选择您的namespace。
2
第二步
打开 Home(主页)-> Web App & API Protection(Web 应用和 API 防护) -> Manage(管理)-> Service Policies(服务策略)-> Service Policies(服务策略),然后点击 Add service policy(添加服务策略)。
3
第三步
输入新服务策略的名称,在“Server Selection(服务器选择)”字段中,按需选择任一选项,我们选择了默认选项“Any Sever(任意服务器)”。
4
第四步
创建 Service Policy Rule(服务策略规则),因为此处使用地理位置测试放行列表特性,所以我们的配置如下方图 1 所示,然后 Save & Exit(保存并退出)。
5
第五步
打开 Home(主页)-> Web App & API Protection(Web 应用和 API 防护)-> Manage(管理)-> Load Balancers(负载均衡器)-> HTTP Load Balancers(HTTP 负载平衡器),然后转至您的负载均衡器,在 Manage Configuration(管理配置)下选择 Action(动作)。
6
第六步
点击 Edit Configuration(编辑配置),在“Security Configuration(安全配置)”部分,选择“Service Policies(服务策略)”字段的“Apply Specified Service Policies(应用指定的服务策略)”选项,点击 Configure(配置)。
7
第七步
将新创建的服务策略应用到负载均衡器(如图 2 所示),保存并退出。
图 1 — 服务策略创建
图 2 — 将服务策略应用到负载均衡器实际结果:如图 3 和图 4 所示,只有来自允许地理位置的客户端的流量才可访问应用。结果表明,我们能够成功实现放行列表行为。
图 3 — 从允许的地理位置访问应用
图 4 — 从不同的地理位置访问应用
场景 2
在该场景中,我们将使用我们的服务策略根据 BGP ASN(自治系统编号)拒绝客户端访问应用。
预期结果:阻止列表中ASN的客户端无法访问应用。
需要遵循以下步骤:
1
第一步
重复场景 1 中的第 1 步至第 3 步。
2
第二步
创建服务策略规则,因为此处使用 ASN 测试阻断列表特性,所以我们的配置如图 5 和图 6 所示。
3
第三步
重复场景 1 中的第 5 步和第 6 步。
4
第四步
将新创建的服务策略应用到负载均衡器(如图 7 所示),保存并退出。
图 5 — 添加 ASN
图 6 — 使用 ASN 阻止客户端的服务策略规则
图 7 — 将服务策略应用到负载均衡器实际结果:如图 8 和图 9 所示,来自 ASN 被阻止的客户端的流量不允许访问应用,因此结果表明,我们能够成功实现阻断列表行为。
图 8 — 通过 ASN 被阻止的客户端访问应用
图 9 — — 请求的 JSON 日志
场景 3
在该场景中,我们将采用一种混合方法(即结合使用放行列表和阻断列表策略)。首先,我们将允许客户端根据地理位置访问应用,然后在这些允许的客户端中,我们将根据 IPv4 前缀阻止某个客户端访问应用。
预期结果:被阻止的客户端不能访问应用。
需要遵循以下步骤:
1
第一步
遵循场景 1 中的步骤,实现放行列表行为。
2
第二步
打开 Home(主页)-> Web App & API Protection(Web 应用和 API 防护)-> Manage(管理)-> Load Balancers(负载均衡器)-> HTTP Load Balancers(HTTP 负载平衡器),然后转至您的负载均衡器,在 Manage Configuration(管理配置)下选择 Action(动作)。
3
第三步
点击 Edit Configuration(编辑配置),在“Security Configuration(安全配置)”部分,开启“Show Advanced Fields(显示高级字段)”按钮。
4
第四步
在“Client Blocking Rules(客户端阻止规则)”中,点击 Configure(配置)。
5
第五步
点击 Add Item(添加项目),并填写条目,如图 10 所示。
实际结果:如图 11 和图 12 所示,被阻止的客户端不允许访问应用,即使处于同一允许的地理位置也无法访问。因此,结果表明,我们能够实现阻断列表和放行列表安全策略的双重优势。
图 11 — 从被阻止的客户端访问应用
从未被阻止的客户端访问应用
场景 4
在该场景中,我们将基于“TLS 指纹值”来限制客户端访问应用。
预期结果:被阻止TLS指纹的客户端不能访问应用。
需要遵循以下步骤:
1
第一步
重复场景 1 中的第 1 步至第 3 步。
2
第二步
创建服务策略规则,因为此处使用“TLS 指纹值”测试阻断列表特性,所以我们的配置如图 13 所示。
3
第三步
重复场景 1 中的第 5 步和第 6 步。
4
第四步
将新创建的服务策略应用到负载均衡器(如图 14 所示),保存并退出。
图 13 — 使用 TLS 指纹值阻止客户端的服务策略规则
图 14 — 将服务策略应用到负载均衡器
实际结果:如图 15 所示,TLS 指纹值被阻止的客户端已被拒绝访问,响应代码为 403。结果表明,我们能够成功实现预期动作。
图 15 — 安全事件 JSON 日志
结语
随着攻击者及其攻击方法不断升级,单纯地依赖一种安全策略来保护整个应用是行不通的。我们需要部署具有安全特性的混合环境来保护应用。
请谨记,在理想情况下,结合应用“阻断列表和放行列表”策略能够更好地保护最终应用。
因此,为了实现所列行为,“F5 分布式云控制台”提供了以下选项,以便您由此对客户端进行拒绝/放行列表设置:
IPv4子网前缀
ASN
地理位置
TLS 指纹值