互联网企业安全之端口监控

外网端口监控系统是整个安全体系中非常重要的一环,它就像眼睛一样,时刻监控外网端口开放情况,并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。

对安全人员来说,互联网公司在快速发展壮大的过程中,外网边界的管控容易出现照顾不全的现象。最初我们用Python+Nmap开发的外网端口监控系统,在公司边界扩大的过程中已经无法满足要求了,所以出现过一例因为运维人员误操作将高危端口曝露至外网导致的入侵事件,为了避免再次出现类似由高危端口开放而不知情导致的入侵问题,我们开始重做外网端口监控系统。

要理解端口监控的意义,首先需要知道什么是 端口扫描 ,根据Wikipedia的定义:

端口扫描的定义是客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。

对于攻击者来说,端口扫描往往是他们从外网发起攻击的第一步。而对于企业安全人员来说,端口监控则是我们预防攻击者从外部直接入侵的一条重要防线,它可以帮助我们:

  • 以攻击者视角了解企业外网端口的开放情况,看我们是否存在容易被利用导致入侵的点
  • 赶在攻击者发现外网新开放的高危端口之前发现并修补漏洞,降低系统被从外部直接入侵的概率

对企业的外网开放端口进行监控不外乎两种方法,一种是类似于黑盒审计的外网端口扫描,另一种是类似于白盒审计的流量分析。从原理上来说流量分析的方式肯定是最准确的,但这对软硬件都有一定要求,一般的公司不一定有能力做好;外网端口扫描的方式比较直接,虽然也有一些环境上的依赖,比如网络带宽,但总体上来说要比流量分析的要求小得多,大部分公司都能满足。这里我们主要介绍一下外网端口扫描的方法,另一种流量分析的方法,以后请具体负责同学给大家分享。

方法1:外网端口扫描

在这里我们先简单介绍一下端口扫描的原理,以帮助各位对这块不太了解的同学有个基本的认识。

端口状态

下面以最知名的端口扫描器Nmap对端口状态的划分进行一个说明:

状态说明
open有一个应用程序在监听这个端口,可以被访问
closed没有应用程序在监听这个端口,但它是可达的
filtered在扫描器和端口之间有网络障碍,扫描器无法到达该端口,所以无法判断端口是开放还是关闭的
unfiltered端口可达,但是扫描器无法准确判断
open或filtered扫描器无法准确判断端口到底是open还是filtered
closed或filtered扫描器无法准确判断端口到底是closed还是filtered

但一般情况下我们不用分的这么细,这里为了方便起见,将一个端口的状态粗略分为3种:开放、限制性开放、关闭。其中「限制性开放」指的就是做了访问控制,只有指定白名单列表中的主机才能访问,其它的都无法访问,可以简单认为是上面的filtered状态。

扫描方式

TCP SYN扫描

我们选择TCP SYN扫描的理由:

  • 执行得很快,在一个没有防火墙限制的快速网络中,每秒钟可以扫描几千个端口;
  • 相对来说比较隐蔽,不易被注意到,因为它从来不完成TCP连接;
  • 兼容性好,不像Fin/Null/Xmas/Maimon和Idle扫描依赖于特定平台,而可以应对任何兼容的TCP协议栈;
  • 明确可靠地区分open(开放的),closed(关闭的)和filtered(被过滤的)状态。

扫描原理

对于学过计算机网络的同学来说,TCP/IP建立连接的3次握手过程想必应该不算陌生,大体流程如下:

我们这里使用的TCP SYN扫描就是通过先主动发送一个SYN报文给指定端口(之后并不回复任何报文,不完成TCP连接),然后根据端口的返回信息做出判断,判断结论分为以下3种:

结论原因
open返回 SYN/ACK
closed返回 RST
filtered数次重发后仍没响应;或者收到ICMP不可到达错误

图例如下:

方法2:流量分析

源码面前,了无秘密。

技术同学估计对侯捷老师的这句话不会陌生,这里我想将这一句话改一改以适应我们这里的情景:

流量面前,了无秘密。

通过流量分析,我们可以及时知道有哪些端口对外开放了,然后通过解包分析的方式获取它使用的协议以及提供的服务,对于无法准确判断的,我们可以再用外网扫描的方式进行补充判断。

Nmap

早期我们就是通过Python调用Nmap进行的扫描,但随着公司规模的不断扩大,网段的不断增加,Nmap扫描的弊端就逐渐凸现且无法弥补了——大网段全端口扫描周期太长,无法及时出结果(一个扫描周期可能长达2周),也就根本达不到外网端口监控的目的了。直到后来出现了Masscan。

Masscan

大体架构如下:

Masscan是大网段全端口扫描神器!!! 就扫描速度来说应该是现有端口扫描器中最快的,同时准确性也比较高。在确定使用Masscan之前我们拿它和Zmap、Nmap一起做了对比测试,限于篇幅,具体的测试过程就不发出来了,这里只说测试结论:用TCP SYN扫描方式,对一个小型IP段进行全端口扫描,Masscan速度最快,准确性较高,可以满足需要。

经验分享

  1. 扫描服务器的带宽是关键;
  2. 扫描最好避开业务高峰期;
  3. 扫描选项需要根据具体带宽、机器配置、扫描范围、扫描速度要求进行调优;
  4. 只要是远程检测的方法,就存在一定的不确定性,检测结果的准确性只能接近100%,无法达到100%,所以不要完全依赖外网扫描的结果;
  5. 实际情况中单IP的开放端口数是有限的,如果你发现扫描结果中有单个IP开放了大量端口,你就要注意该IP对应的设备是不是在「欺骗」你了;
  6. 前期对扫描结果做一个完整的梳理,后期只需要处理新增的高危端口就行。

Masscan+Nmap

在Masscan版本上线了之后,全端口扫描的速度得到了大幅提升,外网端口的开放情况也了解的比较清楚了,但是对于Banner的获取以及具体服务的识别还达不到要求,而这也不是Masscan的强项,所以这时候我们就需要借助Nmap丰富的服务指纹库来提高我们监控数据的准确性了。 和之前相比,就是在Masscan全量扫描环节之后增加了一个只针对判断为开放的端口用Nmap进行增量扫描的环节,然后将结果更新至数据库方便展示、分析。大体架构如下:

Masscan+Nmap & DPDK+Storm+Nmap

外网的扫描有它的优势——以攻击者视角获取当前外网安全状态,但是因为Masscan全端口扫描再快他也是需要时间的,特别是在网段较大、带宽有限的情况下。所以单独的周期性外网扫描就存在一个天然的真空期,如果在这段真空期内,内部员工因为大意将测试端口对外,且忘了关闭的情况下,就可能会被攻击者进行利用,为了应对这种情况(即便可能性比较小),我们决定从实时流量中进行分析,实时找出对外开放的新增/异常端口,然后调用Nmap进行扫描,以解决单独外网扫描存在的真空期问题。大体架构如下:

经验分享

  1. 联合相关兄弟团队全面梳理IP、设备资产信息,同时资产变更系统化(避免手工操作)势在必行;
  2. 扫描范围最好(一定)通过API拉取,避免出现因为资产变动而导致漏扫的情况;
  3. 这种情况下安全监控信息的时效性要高于准确性,但准确性也很重要(所以要先拿Masscan缩小范围,再拿Nmap获取细节);
  4. 发现典型高危案例要记得抄送双方老板,在有可能的情况下看能不能升级至更高层面,因为制度或政策的确立由高往低会比较好推动。

端口监控系统除了可以起到监控外网开放的新增高危端口的作用之外,还可以考虑从以下几个方面扩展一下它的功能和效果,以实现效用的最大化:

1. 系统漏洞扫描器联动

对于非安全的同学来说,他们会很难理解一个外网开放端口能造成多大的危害,所以经常会出现当安全人员找到他们的时候,他们不认为这是一个安全问题,因此沟通起来会有点麻烦。 虽然问题最终都会得到解决,但如果能有一个直观的演示给到他们的话,他们也会更愿意配合我们去修复以及避免这类问题。所以和系统漏洞扫描器的联动对于推动问题的处理和漏洞的修复是有帮助的。 注意事项:避免高风险性扫描操作需要人工确认后主动触发

2. Web漏洞扫描器联动

通常情况下我们会认为,新增Web端口对外是可以接受的,但这是建立在对应的Web系统通过了完整的内部安全测试的前提下。当碰到类似于为了方便起见将Zabbix的Web系统对外,且为弱口令时,情况就不那么乐观了,这时就可以通过调用Web漏洞扫描器自动对暴露在外的Web系统进行扫描,并将结果及时通报,以减少这类问题带来的危害。

3. 内部漏洞管理系统联动

可以获得的好处有: - 自动录入,由漏洞管理系统流程进行自动跟进,效率提升; - 结果在漏洞管理系统中进行展示,风格统一。

UDP 高危端口监控

上面介绍了常规服务器的TCP端口监控,意在提醒大家注意一下服务器的安全;但还有一类UDP端口安全的问题上面没有介绍,也容易被忽略——防火墙、交换机等网络设备的安全。在2016年8月份的时候The Shadow Brokers公布了一款针对思科Adaptive Security Appliance(ASA,实际涵盖了防火墙和路由器设备,PIX也在其列)产品的漏洞利用工具ExtraBacon,虽然漏洞利用有一定条件限制,但是一旦漏洞利用成功,攻击者就可在无需输入身份凭证的情况下建立起SSH或telnet连接。就是不需要输入有效用户名或密码,就能闯进ASA,危害巨大。

针对这方面的问题,有以下几点建议: - 快速监控部分高危UDP端口的状态; - 如无必要,关闭服务/对外访问; - 如有需要,尽早升级且限制访问IP来源。

本文主要介绍美团点评安全团队对外网端口监控系统的开发演进过程,整理总结了其中的一些实践经验以及前景展望。欢迎大家批评指正,有好的建议也希望能提出来帮助我们改进。我们后续将不断优化,也将继续与大家保持讨论。耐心看到这里的读者,表示十二万分的感谢!

光宗,2015年加入美团点评安全团队,先后从事过生产网主机、软件安全防护的工作,目前主要负责美团点评集团内部安全审计系统相关的开发工作。

最后打个小广告,美团点评集团安全部正在招Web&二进制攻防、后台&系统开发、机器学习&算法等各路小伙伴,我们想做的事情:构建一套基于海量 IDC 环境下的,横跨网络层、虚拟化层、Server 软件层(内核态/用户态)、语言执行虚拟机层(JVM/Zend/JavaScript V8)、Web应用层、数据访问层(DAL)的基于大数据+机器学习的全自动安全事件感知系统,规模上对应美团点评全线业务的服务器,技术栈覆盖了几乎大多数云环境下的互联网应用,数据规模也将是很大的挑战。此外我们还关注 Google Facebook Amazon 这类公司在企业安全建设方面的实践,努力构建类似于Google的内置式安全架构和纵深防御体系,对在安全和工程技术领域有所追求的同学来说应该是一个很好的机会。如果您想加入我们,欢迎简历请发至邮箱zhaoyan17#meituan.com。

详情请点击:美团点评集团安全部招聘安全人才。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知乎热榜:程序员达到什么水平能拿到20k月薪

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力?其中一个最热门的回答是:“其实,无论你是前端还是后端、想进大厂还是拿高薪,算法都一定很重要。”为什么,算法会如此重要?不…

研究综述 | 知识图谱划分算法研究综述

作者 | 王鑫,天津大学智能与计算学部来源 | 计算机学报知识图谱划分是大规模知识图谱分布式处理的首要工作,是知识图谱的分布式存储、查询、推理和挖掘的基础支撑。从知识图谱和图划分的定义出发,系统性地介绍当前可用于知识图谱数据划分的各…

深度学习中不得不学的Graph Embedding方法

原文链接:https://zhuanlan.zhihu.com/p/64200072 深度学习中不得不学的Graph Embedding方法王喆​数据挖掘等 3 个话题下的优秀答主​关注他1,290 人赞同了该文章这里是「王喆的机器学习笔记」的第十四篇文章,之前已经有无数同学让我介绍一下Graph Embe…

写给新手炼丹师:2021版调参上分手册

文 | 山竹小果在日常调参的摸爬滚打中,参考了不少他人的调参经验,也积累了自己的一些有效调参方法,慢慢总结整理如下。希望对新晋算法工程师有所助力呀~寻找合适的学习率(learning rate)学习率是一个非常非常重要的超参数&#xf…

函数式编程在Redux/React中的应用

本文简述了软件复杂度问题及应对策略:抽象和组合;展示了抽象和组合在函数式编程中的应用;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践。这其中包括了一段有趣的Redux推导。 软件复杂度 软件的首要技术使命是管理复杂…

论文浅尝 - EMNLP2020 | ConceptBert:视觉问题回答的概念感知表示

笔记整理 | 陈卓,浙江大学计算机科学与技术系,博士研究生研究方向 | 知识图谱/图神经网络/多模态论文链接:https://www.aclweb.org/anthology/2020.findings-emnlp.44.pdf代码:https://github.com/ZiaMaryam/ConceptBERT发表会议&…

LeetCode 215. 数组中的第K个最大元素(快速排序)

1. 题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4说明: 你可以假设 k…

论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

笔记整理 | 吴林娟,天津大学硕士来源:EMNLP2020链接:https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf动机依赖解析研究快速发展,然而依赖解析的性能在很大程度上依赖于语料库的大小。获取足够的训练数据成本大且困…

Knowledge Review:超越知识蒸馏,Student上分新玩法!

文 | 陀飞轮知乎今天介绍一篇我司的文章Distilling Knowledge via Knowledge Review(缩写为KR),提出知识蒸馏的新解法。之前在知乎回答过一个知识蒸馏的问题,为何感觉“知识蒸馏”这几年没有什么成果?https://www.zhihu.com/question/3098084…

美团App 插件化实践

背景 在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配。进入2017年,Atlas、Replugin、VirtualAPK相继开源,标志着插件化技术进入了成熟阶段。但纵观各大插件框架,都是基于自身App的…

评测征集 | 2021全国知识图谱与语义计算大会

CCKS 2021将组织知识图谱相关评测竞赛,旨在为研究者们提供一个测试技术、算法、及系统的平台。与CCKS 2020 一样,CCKS 2021 的评测任务仍然采用 Biendata 在线平台发布和评测。CCKS 2020评测竞赛环节共设立8个任务,吸引了2300多支参赛队伍。大…

论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!

文 | Sheryc_王苏从5月初开始,CV圈似乎开始了一阵MLP“文艺复兴”的热潮:在短短4天时间里,来自谷歌、清华、牛津、Facebook四个顶级研究机构的研究者分别独立发布了4篇关于MLP结构在图像任务上取得不错效果的论文。虽然研究本身令人兴奋&…

即时配送的订单分配策略:从建模和优化

最近两年,外卖的市场规模持续以超常速度发展。近期美团外卖订单量峰值达到1600万,是全球规模最大的外卖平台。目前各外卖平台正在优质供给、配送体验、软件体验等各维度展开全方位的竞争,其中,配送时效、准时率作为履约环节的重要…

LeetCode677. 键值映射(Trie树)

1. 题目 实现一个 MapSum 类里的两个方法,insert 和 sum。 对于方法 insert,你将得到一对(字符串,整数)的键值对。字符串表示键,整数表示值。如果键已经存在,那么原来的键值对将被替代成新的键…

技术实践 | ICDE2021-大规模知识图谱预训练及电商应用

本文作者 | 张文(浙江大学)、黄志文(阿里巴巴)、叶橄强(浙江大学)、文博(浙江大学)、张伟(阿里巴巴),陈华钧*(浙江大学)接…

吊打BERT、GPT、DALL·E,跨模态榜单新霸主诞生!

文 | 赵一静最近,三个重量级榜单,视觉推理VCR、文本推理ANLI、视觉问答VQA同时被统一模态模型UNIMO霸榜。一个模型统一了视觉和文本两大主阵地,重塑了小编的认知和期望。如此全能,堪称是AI领域的外(一)星&a…

Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现

前言 2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL(Spring Expression Language)。对于开发者而言,引入新的工具显然是令人兴奋的,但是对于运维人员,也许是噩耗的开始。类比Struts 2框架,…

体验paddle2.0rc版本API-Model--实现Mnist数据集模型训练

原文链接:体验paddle2.0rc版本API-Model–实现Mnist数据集模型训练:https://blog.csdn.net/weixin_44604887/article/details/109566281 尝试Mnist训练 导入需要的包导入Mnist数据集组网搭建网络查看模型参数查看模型网络(自动命名&#xff0…

LeetCode 648. 单词替换(Trie树)

1. 题目 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现…

99%算法工程师不知道的if/else优化技巧

文 | IT技术控知乎、灵剑知乎观点一(IT技术控)前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有…