电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

北京Security SegmentFault2016开发者大会服务端安全专场

34页
  • 卖家[上传人]:1591****685
  • 文档编号:61909788
  • 上传时间:2018-12-14
  • 文档格式:DOC
  • 文档大小:101KB
  • / 34 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、会议时间:2016年11月19日会议地点:新云南皇冠假日酒店会议主题:服务安全专场主持人:大家下午好。我们是做安全的,这次是安全和开发这样一个结合,因为在开发端,安全如果做好的话,那么就不会出现几年,十几年长老级的,很弱智的那些漏洞。今天天气不错,说到了,那么今天来的大牛也非常牛,首先我们请理财范儿资深研发周为,他带来的是NginxLua技术在网络安全方面的应用,大家欢迎。周为:今天人不少,先跟大家自我介绍一下,我是研发工程师,一直负责安全这方面,我们公司是做金融的,特别重视安全。在今年年初的时候,我把我们公司开发了一套NginxLua这么一套技术发布了,结果受到很多的好评,很惭愧,做了一点微不足道的工作,结果获得了很多赞赏。这次来跟大家分享一下这方面的应用和心得,因为Nginx大家用的会比较多一点,基本上各个公司都有在用,然后大家也会拿Nginx去做一些简单的安全配置,比如防止目录被访问之类的。但是普遍的应用都不深。所以今天我就来给大家讲一下,主要是为大家开拓眼界。首先不管做什么东西,我们都有套路,我先来给大家介绍一下,Nginx它进行防御的一个基本的套路是什么。然后大家看这里,上面

      2、是基础的套路,下面是高级一点的套路,像基础一点的套路,比如我们会拿Nginx来对访问者的IP进行这么一个匹配,比如我们会限制某一些IP不让它访问。然后再高级一点,比如我想来限制某一个爬虫,或者是某一个扫描器,这种情况下他们一般会有自己的UserAgent。用Nginx它很容易就把目录泄漏出去,这个时候我们会设置一下这个UPI不能被泄漏出去。接着有一些客户端不知道为什么访问得很快,然后这种情况下它有可能是善意的,也有可能是恶意的,但是一般情况下会说是一个限制,就是一个频率限制,就是上面的这四个Nginx自己都能做,基本上把上面的四个做了之后,它就能解决一大部分问题,但是没办法做得太好,因为它总是有办法绕过去,比如说我如果用现成的扫描工具扫描一个网站,现在有很多这种扫描工具,可能它会有自己的一个UserAgent,它也可以改,它的IP也可以通过各种代理服务器,把IP的限制绕过去。然后频率限制也可以放慢这个速度,也解决不了太多问题。但是有了扩展,我们可以做剩下的三个,比如我们可以根据它很复杂的特征来做匹配,就是一些组合的特征。因为这个理论基础是什么?浏览器的话它是一个很复杂的实现,它会有自己

      3、的一些特征在里面,比如说用扫描工具,或者是用某一个脚本来试图攻击你的时候,实际上它是在模仿这个浏览器的行为,但是它毕竟不是一个浏览器,所以它就没有办法百分之百做到跟它一样,中间这个细节实际上就会泄漏出来它的身份,它不是个浏览器,然后如果你能够观察出来,就能把它拦在外面。主动行为与探测就是说,比如你目前拿到了这个信息,比如来了一个访问请求实际上你从这个请求,你怎么看你都觉得它是正常的,或者你看不出来任何问题,然后这个时候,但是你觉得它可能有所问题,比如你从日志或者访问的频率,当你发现有问题的时候你可以进行一个主动的探测,比如你发给它一些回应,再观察它回来的反映,其实攻击者的软件,基本上没有办法做到跟人家浏览器组合一模一样,所以你对它进行探测的时候它也会泄漏出来一部分信息,这个时候你就可以把它拦住。如果这两个做好了,实际上它就能解决很多问题。接着就是后面这一个,如果这些行为它看起来都还是正常的,包括你对它进行探测,它也是正常的情况下,你可能会需要继续观察,我先放行请求,我先观察,收集它访问的这么一个规律,然后来再进行一个判断,然后最后当它暴露出来它恶意意图的时候,那你就可以把它拦住了,基本

      4、套路就是这个样子。但是一般来说,上面三个你拿Nginx自己的配置你是很容易去做的,再往下三个,就是Nginx它自己的一些限制导致没有办法去做,我们就会需要另外的一些工具来帮我们达到这个目的。比如说我们现在嵌的是Lua在里面,会有人问为什么要嵌Lua,而不嵌GS。为什么呢?Nginx它有官方嵌入Lua的实现,但是现在功能还不是很好用,基本上没办法做这个事情。但是嵌其他语言的话,实际上它可能会对性能损耗比较大,Lua它在这个地方是比较好的一个选择。因为Lua很小,Lua的功能虽然不是特别强,但是它本身很强,它很适合嵌入这种应用。我们接着往下。我们先看一下Nginx的这个工作模型,可以看到首先Nginx是一个多进程的一个工作模型,然后它有一个主要的进程用来控制其他的worker,最右边是我们需要注意的一点,其实它是有共享内存,是可以挂在一个共享的区域,这样的话各个Worker可以访问共享内存,这种情况下有一些信息我们是可以存在共享内存里面,包括Nginx自己访问频率限制,它也是这么做的。就说这个理论上,实际上Nginx它是可以把一些中间的信息存在那个地方,这样子它就可以做一个延迟的角色。比如

      5、像Nginx的频率访问限制,实际上它就是把一个计数器放在右边那个地方,当人家访问频率超过它允许的范围之后,它就会拦截,这个性能非常好。我们接着再往下。这是Nginx的一个配置模型。Nginx它的配置我们先要说它是一块一块的,一般情况下,我们会在HTTP里面支持多个站点。为什么给大家看这个呢?实际上是大家可以看到,中间那个Location,它就是一层一层下来,实际上Nginx它很神奇,它本身不是个,它的配置不是个编程语言,但是它能通过这样的组合,能实现很多玩法,就是可以做很多的事情。但是我们还是要知道,就是毕竟它不是一个编程语言,然后有时候它会有一些局限性,没办法做到很高级的一些应用,实际上Nginx所有的这个请求过来,它都会映射到一个Location里面,它就会加载Location自己的配置,这个配置是在Nginx启动的时候已经生成好的,它并不是,比如说Nginx里面写了Events,并不是说当我一个请求过来的时候,我再来判断这个Events怎么样再执行,并不是,它一开始就把Location配置好,直接走里面的配置。大家知道这一点就好,它能够Events,不是你想象的Events,这个

      6、时候如果用它的Events可能就会出现一些问题。我在这里先调查一下,就是在座的,比如说你们有用Nginx去配置过那种复合条件的判断吗?就比如说我同时要匹配它的IP地址或UserAgent,有吗?如果我们要在Nginx里面做一些复合条件的判断,要怎么做呢?那就得这个样子,因为Nginx有一些限制,首先它没有办法嵌套,第二个它不能用把条件并列起来,我就只能这么写,比如我要判断一个IP和U,我要定一个变量,把IP判断一下,接着在这个变量里面写一个标记,最后再来判断这个标记,看到没有就很别扭,这个东西不是很好用,这还只是两个,如果说要有更多的复杂判断,实际上就,反正不好搞。接着再看一个例子,基本上很多人都会IF,但是他们搞不清楚这东西到底是怎么回事,比如说这个例子,看到没有,这是一个Test路径,然后接着我Set一个变量,往下的时候我两次判断这个变量,然后在里面用了Location,实际上它是在IF里面响应,但是如果你测的话你会发现只有第二个有,第一个就丢了,这是很违反直觉的,这个地方是为什么呢?就回到刚开始的那个图,就是Nginx所有的操作它都是把这个配置,就是它是根据配置生成这个Locat

      7、ion,然后把你的请求发到Location里面来执行,所以它并不是解释性执行,比如从上面IF,再IF,看到这个地方就两次加上去的标记都是1,大家可以想一想为什么。然后这个地方就是因为这样子,它会出一些问题,所以我想给大家说明的就是,拿Nginx自己的配置来做这这方面的拦截,确实不是一个好主意,比如有人来攻击你,你试图在Nginx里面写配置把它拦住,最后很有可能就是没有把别人拦住,反而把自己拦在外面,或者让业务崩掉了,因为一般人搞不懂这个东西。我的建议就是大家尽量少用这种复杂的判断,除非你知道它到底为什么。接着往下来,教给大家更靠谱的一些方法,我们现在有Lua,可以把它嵌入到Nginx里面做这个事情。它是高并发的,低内存消耗的,高可靠性的,热部署的,占用资源少的,高性能,易于开发的,无需编译的。它性能会比较好,但是实际上很不灵活,Nginx的性能一般都是过剩的状态,所以我们可以牺牲它的一些性能,去换取其他方面的一些,就是更好的,更灵活的这么一种优势。接着往下,NginxLua它的优点就是我们结合了Nginx的高性能和Lua的可编程能力,从数据结构还有各方面来说,实际上Lua都不是很强大的

      8、存在,这是为什么呢?因为Lua设计思想来说,就说这个东西要尽可能的小,尽可能小的情况下,它的解释器也可以很小,它就可以嵌入到其他程序里面做一个扩展,所以实际上它实现是很好的,而且我们还可以拥有Nginx的异步非阻塞的能力。比如说我一个核不够的话,我可以多起几个Nginx,然后这都完全不是问题。接着往下,接着我们来看一下我们是怎么样把Lua嵌入到Nginx里面去得。大家看这个图。Nginx大概分成这几个阶段,这个图有所减化,但是基本上就是这个样子,Nginx首先起来就是Init,接着每个请求过来都会循环下面的三个阶段,那就是init,rewrite和access。就是把这个请求给记录下来,然后这个蓝色的小方块,实际上它是一些外来点,就说我们可以通过这些挂在点,把Lua代码点挂在这里面去执行,相当于一些钩子嘛。我们可以挂在一些代码在这个,比如说在access by Lua上面的,这样子的话我们就能对所有的请求来进行这么一个过滤,因为我们可以获取到这个请求所有的信息。然后Lua它是一个完备的语言,我们就能在这里面进行一些复杂的判断。然后content by Lua可以直接回复给客户端,就说这

      9、是完整的一个框架,但是我们如果用它来做安全方面,实际上会比较合适,因为它的优势还是很明显的,它的速度很快,占用资源很少,而且很灵活。然后我们来看一下hello world,这是最简化的一个配置文件,它的重点在这个地方,这就是一个hello world,我在这个地方写了一句Lua的代码,当你访问这个的时候,它就会给你说Hello World,就是很简单,就是跟Nginx的配置文件很像。但是我在这个地方只是写了一行,实际上你还可以把它写在文件里面,或者其他的方法。你们可能想知道开始我演示了一下,拿Nginx自己的文件做这么一个复合条件的判断是怎么做,那现在来看Lua的版本,就是这个样子,首先我取了它的UA,又取了IP,我把这两个东西取到之后进行了一个匹配,然后如果命中了,那我就返回403,这个逻辑就很清楚,就不用像,这个就像,它就是一个编程语言,它不用像之前的我们在Nginx里面做它这种操作一样,就是想很多其他的一些办法来间接达到这个目的,这是用正当的手段来做这个事情,我们再比较一下开始的那一个。回到开始哪里,这个地方要这个样子,其实这两个一比较就很清楚,其实后面还是很有优势的。那我们接着再往下,其实在这个地方它就是演示一个最演示的,就是我们要把这一个IP端里面,把这样的请求拦住,实际上你可以在这里面写更复杂的逻辑,比如你可以到数据库里面动态的取一些规则,这样的话你的Nginx可以在不用重启的情况下,可以去达到规则更新的这么一个目的。这里给大家补充一些基础知识,我现在想在Nginx里面写Lua的代码,我到底需要什么东西,就是我讲了这么久,大家可能还不知道,然后我来给介绍一下。首先在这个地方,它是Nginx,它是最原版的这一个方块,它提供了一个HTTP的处理能力,还有可插拔的模块,然后接着是Nginx Lua Modele,其实有这两个我们就可以跑上面的Hello World,实际上你还需要其他库,你会需要一些锁,还有其他一些东西的实现,但是这个里面是没有的,然后你就需要其他的第三方的东西,因为Nginx它本身是一个很精简的东西,很多东西都是靠扩展来实现的,这个时候你就需要把扩展装起来,这样比较麻烦,所以你可以直接用OpenResty。然后有了这些东西,有了这个大方块里面的所有东西,那你就能愉快的写这个

      《北京Security SegmentFault2016开发者大会服务端安全专场》由会员1591****685分享,可在线阅读,更多相关《北京Security SegmentFault2016开发者大会服务端安全专场》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.