Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件。一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件。今天,我们就来了解一些常用的安全防护插件。

关于安全防护插件

我们在实际应用往往会有一些场景需要限制IP访问和CORS配置,来提高应用访问的安全性。

在Kong中就提供了一些内置的安全防护的插件:

  • IP限制

  • 机器人检测

  • CORS

IP限制

此插件主要用于限制非白名单中的IP来源对服务进行访问,或者禁止黑名单中的IP来源进行访问。它支持通过CIDR的方式设置IP范围。

我们可以根据下面的步骤开启IP限制插件:

首先,找到需要开启插件的service,并进入到plugins页面点击ADD PLUGIN按钮。

其次,找到Security类别,然后找到Ip Restriction插件,点击ADD PLUGIN按钮。

然后,配置允许的白名单的IP地址,这里配置的是一个范围地址,即192.168.10.1~192.168.10.255的这个网段内的所有主机。

此外,我们还可以设置黑名单,但需要注意的是:白名单和黑名单是互斥的,不能同时使用这两个配置。

最后,我们通过PostMan来验证一下,当客户端主机不在白名单范围列表时,会直接返回403状态码和配置的message信息。

而当客户端IP地址符合条件时,则会正常转发到上游服务。

机器人检测

此插件主要用于防御一些常见的机器人攻击,比如 爬虫、Web测试工具、漏洞扫描工具等,具体实现就是通过将自定义客户端请求标识加入白名单和黑名单即可。

我们可以根据下面的步骤开启机器人检测插件:

首先,找到需要开启插件的service,并进入到plugins页面点击ADD PLUGIN按钮。

其次,找到Security类别,选择Bot Detection插件。

然后,在弹出配置对话框中配置黑名单如下:

这里的黑名单会根据User-Agent头部检查,我们配置了一些常见的扫描工具的头部在里边,例如IBM的Security AppScan和SQL注入工具sqlmap等。

最后,我们可以通过安装一个扫描工具如IBM Security AppScan对指定域名URL来进行一次Full Scan扫描来验证,我们会发现全部返回了403 Forbidden的状态码响应。这里,我们就不再演示了。

CORS

CORS即Cross-Origin Resource Sharing,跨站资源共享,对于做Web系统的开发的我们应该很熟悉了,它是应对浏览器同源策略的一个解决方案。

我们可以根据下面的步骤开启机器人检测插件:

首先,找到需要开启插件的service,并进入到plugins页面点击ADD PLUGIN按钮。

其次,找到Security类别,选择Cors插件。

在弹出的配置对话框中进行配置:

其中,我们需要关注以下几个配置选项:

(1)origins:指定允许的域名列表,即Access-Control-Allow-Origin。如果允许所有的来源,可以设置为“*"。这里设置为".",表示集成该Service指定的域名,这里Service配置的域名是api.edisontalk.cn。

(2)headers:指定允许的header头列表,即Access-Control-Allow-Headers,用于预检请求时让插件知道哪些http头在实际请求时将被允许使用。

(3)methods:指定允许的请求方法列表,即Access-Control-Allow-Methods,实际场景中可以配置为具体的GET或POST。

如果没有通过指定的域名访问则会CORS错误信息,Kong会直接返回错误信息"... has been blocked by CORS policy”表示无法正常访问。

参考资料

闫观涛,《Kong入门与实践-基于Nginx和OpenRestry的云原生微服务网关》

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Kong入门学习实践(9)安全防护插件的更多相关文章

  1. Nacos入门学习&实践

    文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试. 地址:https://github.com/stronglxp/springcloud-test 1 ...

  2. 万字长文:SpringCloud gateway入门学习&实践

    官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/# ...

  3. 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题

    在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...

  4. 入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习

    入门python推荐学习久负盛名的python入门书籍<Python编程从入门到实践>. 书中涵盖的内容是比较精简的,没有艰深晦涩的概念,最重要的是每个小结都附带有"动手试一试& ...

  5. 《Python编程:从入门到实践》基础知识部分学习笔记整理

    简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...

  6. 学习资源 Docker从入门到实践 pdf ,docker基础总结导图

    学习资源 Docker从入门到实践 pdf ,docker基础总结导图 Docker从入门到实践 pdf 云盘地址:https://pan.baidu.com/s/1vYyxlW8SSFSsMuKaI ...

  7. 《Terraform 101 从入门到实践》 第二章 Providers插件管理

    <Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 不怕出身低,行行出状元. 插 ...

  8. 初探Electron,从入门到实践

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.   在开始之前,我想您一定会有这样的困惑:标题里的Electron ...

  9. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第一天】

    本人做过一年的MATLAB编程和简单维护过VB和C++的项目.是跟着网上获得的黑马的Java双元视频课来自学入门Java知识和常用框架的使用. 淘淘商城(SpringMVC+Spring+Mybati ...

  10. 《Terraform 101 从入门到实践》 Terraform在公有云GCP上的应用

    <Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. Terraform支持的公有 ...

随机推荐

  1. 轻松的工作(deepseek)

    组长:"这里有一百多个地震波形文件,把每一个地震建立一个文件夹,并把地震波形放到对应日期的地震中." 我想:一个一个整好麻烦想摸会鱼 让我们来deepseek吧~ 首先,生成文件夹 ...

  2. S7.Net与西门子PLC通讯——纯新手必看

     前言 本文档适合从未接触过PLC的.NET开发程序员入门查看.(其实看完了之后,PLC开发也就那样) PLC通讯入门比较难,需要关注的细节比较多.一边学习一边举一反三多思考,一定要自己创建Demo跟 ...

  3. 麒麟V10部署ROCEv2网卡配置步骤

    以下是为麒麟服务器版V10配置RoCEv2的步骤: 第一步:确认硬件和驱动支持 在开始配置之前,首先要确保你的服务器硬件满足要求.通常需要Mellanox ConnectX系列网卡(例如mlx5系列) ...

  4. 【解决方法】edge浏览器不小心删除收藏夹怎么办?

    C:\Users\用户名\AppData\Local\Microsoft\Edge\User Data\Default 进入该目录,找到名为Bookmarks或Bookmarks.bak或Bookma ...

  5. nndeploy开源推理框架教程来袭,模型推理全流程,轻松上手,一键精通!

    大家好,我们是 nndeploy 开源团队.我们专注于打造一款端到端的模型推理和部署框架 -- nndeploy,旨在为用户提供高效.便捷.灵活且兼容主流框架的模型推理和部署体验. 此次,我们开发了 ...

  6. 基础 DP 做题记录

    Luogu P1192 台阶问题 Link 简要题意: 给定台阶数 \(n\le10^5\) 和一步至多跨越台阶数 \(k\le10^2\) ,初始在 \(0\) 级,求方案数 \(\pmod {10 ...

  7. 【深度学习基础】:VGG实战篇(图像风格迁移)

    目录 前言 style transfer原理 原理解析 损失函数 style transfer代码 效果图 fast style transfer 代码 效果图 前言 本篇来带大家看看VGG的实战篇, ...

  8. Java 集合删除重复元素、删除指定元素

    目录 List删除指定元素 List删除指定元素 ArrayList的删除元素方法public boolean remove(Object o)只能删除第一次出现的情况,如果想要删除集合中全部位置出现 ...

  9. 【漏洞扫描】Nuclei v3.4.1 下载方法(附快速下载链接)

    简介 Nuclei v3.4.1是一款强大的漏洞扫描器,并且拥有社区维护的海量漏洞POC,工具质量十分的高.Nuclei 用于基于模板跨目标发送请求,从而实现零误报并提供对大量主机的快速扫描.Nucl ...

  10. 如何搭建基于surging的分布式直播流媒体

    前言 这几天一直在优化测试dotnetty,代码是基于https://github.com/cuteant/SpanNetty,基础上修改优化的,然后发布搭建了分布式rtmp直播服务,内存一直稳定在7 ...