资产管理是IT治理永恒的主题之一,就像阳光、空气和水,不起眼却不可缺。当一切安好时,资产管理不容易体现它存在的价值;当出现问题时,被忽视的“影子”资产管理往往能给运营团队带来严重攻击。例如,被网安监管部门通告,却发现根本不知道子公司的谁什么时候上线了这个网站;检测出了高危漏洞,问了一圈却不知道是跑什么业务的,能不能加固,谁来加固;运维团队不知什么时候又在互联网侧开放了SSH端口。
对于攻击方,侦察是第一步,攻击者需要找到脆弱的目标才能够下手;同样,对于政企作为防守方,也要了解自己的情况,不仅包括全面了解所有IT资产,还需要对每种资产的漏洞、脆弱点有全面的了解,掌握哪些严重的漏洞会导致被攻破等。只有摸清家底,才能对症下药。通常,攻击链如图2-2所示。
图2-2 攻击链
如果政企已经构建信息技术基础架构库(Information Technology Infrastructure Library,ITIL)并建有配置管理数据库(Configuration Management Database,CMDB),那么很多信息都可以从CMDB中直接获得,不必再通过外部安全扫描手段来获得。在实践中,CMDB是一个重要的资产信息来源,但从安全视角来看还是不够的,能被攻击利用的都需要包含在内。政企还需要集成IP库、DNS信息以及统一身份认证系统,才能够更全面地了解自身情况,并制定更有效的安全防御措施。最终可以输出的结果是,将业务资产以服务器和应用为中心,形成“域名—VIP—应用名称—服务器—IP—应用中间件—数据库”等关系链的大图,全面覆盖传统IDC机房内部以及政企上云的生产服务器。
这里重点关注的是服务器资源(详见第5章基础计算环境安全),但我们同时还需要关注开发运维终端(详见第7章办公安全中的终端部分)。
网络安全资产盘点是指对政企网络系统中的硬件、软件和数据进行识别、分类、关联、统计和管理,从而提供从业务到应用,再到IT资产的全链路智能化大图,以提升发现、定界、处理问题的效率,提高业务的安全性和稳定性。资产盘点主要的技术手段有被动采集模式、主动采集模式。被动采集模式适用于操作系统信息采集,不过需要考虑Agent对服务器的影响。主动采集模式适用于网络设备、防火墙等IT资产信息采集,可以不依赖Agent,部署成本较低。相对被动采集模式,主动采集模式获取的信息没那么丰富,同时要尽量降低网络扫描对环境的影响。
资产梳理主要是为了全面了解公司的资产现状,可以从风险和业务两个角度进行评估。
2.3.1.1 资产盘点
通过网络扫描和绘制网络拓扑图,我们可以进行资产盘点,识别设备位置、类型、IP地址和连接方式等信息,从而了解整个网络结构。我们还可以通过手动或自动的方式记录设备和应用程序的详细信息,如设备名称、IP地址、MAC地址、服务、补丁、端口等,方便资产统计和管理。
除了政企对自有资产的盘点,现在很多大型安全平台都会做网络空间测绘,主动采通过“IP+端口”来识别Web资产,大规模扫描互联网上的服务器,识别这些服务器的类型、端口及对应的服务。Shodan可以说是一款“黑暗”谷歌,一刻不停地在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等。通过网站域名,我们就可以看出Shodan的作用,这些网站都是由哪些组件组成的,如哪种操作系统、哪种Web容器等。
如果在输入框输入city:beijing webcam,则可搜索北京的摄像头,如图2-3所示。
图2-3 Shodan的使用示例
Shodan强大的搜索功能可以帮助安全从业者对自己负责的互联网平台进行安全审计,但另一方面,你的资产也赤裸裸地暴露在攻击者的面前。如果被不怀好意者利用,你可能成为他们收集信息伺机攻击的“帮凶”。
其他的网络空间搜索引擎还有常用的钟馗之眼等。这是国内互联网安全厂商知道创宇提供的,主要是针对网站的检索。
2.3.1.2 各类资产
在混合云环境中,政企拥有的资产可以分为云上和云下两部分。云上资产是指部署在公共云上的资源,例如基于云的应用程序、云存储、云数据库、虚拟机、容器和网络服务等。政企可以将应用程序和数据存储在云上,从而获得高可用性、可扩展性和弹性等优势。云下资产是指政企拥有和控制的本地资产,例如物理服务器、网络设备、存储设备和数据库等。政企可以将关键业务应用程序和数据存储在本地,以确保数据安全性、合规性和隐私性等。对于混合云,政企关键在于如何管理和整合这两个环境中的资产。通过使用云服务提供商的管理工具和技术,政企可以实现云上和云下资产的统一管理和监控,这有助于提高资源利用率,提高安全性。
1.传统资产
传统的数据中心资产以各种各样的物理盒子为主,可以使用网络扫描工具如Nmap、Zmap、Masscan等来探测网络中的主机和端口。传统的数据中心的安全产品及厂商,如表2-1所示。
表2-1 传统的数据中心的安全产品及厂商
(续)
安全厂商的产品各种各样,日志格式、标准各不相同,集成很有挑战,开发一个日志系统或身份认证系统就要适配很多其他安全产品。
2.私有云资产
私有云可以在企业数据中心的防火墙内部署,或在安全的主机托管场所中部署。它的核心特点是拥有专属资源。私有云资产通常由虚拟化平台OpenStack等管理,包括计算、存储和网络资源,可以使用专门针对虚拟化环境的扫描工具如Nessus进行扫描。
可以看出,一个配置完整的OpenStack私有云还是有很多组件的,例如Neutron组件负责提供网络服务,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理;Keystone组件通过身份验证和权限管理来避免各个组件对外暴露,以便其他程序调用;Ceilometer组件跟踪用户资源消耗并计费。私有云产品如图2-4所示。
图2-4 私有云产品
相对而言,尽管基于模块化架构设计的OpenStack在国内市场表现出色,但基于微服务的ZStack在中国市场的渗透率较高,得到了许多政企的青睐。
3.专有云资产
对于专有云资产,我们可以利用云服务提供商的管理工具或API来获取资产信息。虽然私有云和专有云都可以在客户机房内部署,但是大型企业也追求与公共云相同的使用体验,并且希望能够实现与公有云的无缝对接。作为托管在云服务商的私有云,专有云通常要求支持30种以上不同类型的产品,包括计算、存储、容器、中间件以及有安全相关功能的防病毒、防火墙、SOC等产品。高级专有云还支持DevOps、大数据、数据智能、物联网和数据库等开发测试相关的产品。图2-5是专有云产品的分类总结,供大家参考。
一个配置完整的专有云产品也是有很多组件的。比如对于阿里云专有云(Apsara Stack)来说,客户只需要用最小的体量来自建最小规模的专有云,其他部分与公共云计算结合,通过“私有云+公共云”的混合云服务来满足自身需求,以及解决成本与效率问题。针对轻量级的场景,阿里云和ZStack合作,形成较彻底的私有云场景。
图2-5 专有云产品
4.公有云资产
公有云通常指第三方提供商为用户提供的能够使用的云。对于公有云资产,我们可以利用云服务提供商的API和管理工具进行资产发现。不同于传统的网络层手段,政企可以通过接口直接获取IaaS或PaaS层的公有云资产信息。公有云组件非常丰富,给部署业务系统带来很多便捷。我们再也不需要繁杂的配置,甚至不需要控制台,直接通过资源编排服务(ROS)就能构建一套完整的系统。例如,一个购物网站在购买了SSL证书和DNS服务后,我们可以通过ECS服务器集群,访问数据库和文件存储,并且能通过弹性伸缩服务(Elastic Scaling Service,ESS)预判资源水位实现动态扩缩容。在安全方面,安骑士(主机安全)、云安全中心(态势感知)用WAF、DDoS代理保护应用;在VPC内部,IAM对云资源进行分配管理,实现起来很容易。如果有一些短信告知的服务,我们可以通过各大云短信服务配置内容发验证码到手机,再也不用直接去找运营商买服务了。
以公有云接口获取资产的方式更加直接、准确、高效,随时都可以执行,不需要等到下一个扫描周期。同样,一般返回的资产关系是扁平的,而我们更需要的是,资产之间的依存关系。实际上,公有云环境中的一台主机可能和另外一台属于不同的区域、VPC和安全组,彼此之间连接可能是树状路径,并不是扁平关系。
除了使用接口调用的方式,我们还可以采用存算分离的方法。通过Agent分别对SaaS、PaaS和IaaS三层进行数据采集,然后按照不同的层次进行核心数据解析。采集到的数据会经过清洗、换算和计算处理。根据不同数据的特点,选择相应的实体模型或关系模型进行存储。同时,针对业务需求,通过流程管理来完善CMDB中的实体属性,并通过关系图进行可视化展示。此外,这些信息可以对其他应用场景开放。
5.互联网资产
互联网资产是指组织在公共互联网上可访问的资源,它们往往托管在第三方平台上。这些资产可以通过多种方式(包括网络扫描、搜索引擎和互联网基础数据引擎等工具)进行发现。例如,利用攻击面管理(ASM)工具,通过对集团或子公司的域名、联系人和工商登记等信息进行搜索,对资产进行识别和记录,并建立一个明确的外部资产清单,及时发现各业务应用系统中未知的互联网资产,如图2-6所示。
图2-6 互联网资产扫描
“影子”资产是指未经手组织的IT部门,是由各个部门或个人自行采购或使用的技术、应用程序、设备或服务等。这些资产存在着未知和不可预见的威胁,可能给组织带来危险。例如,人力部门可能会订阅一个招聘筛选简历公司的SaaS服务,但这个服务往往暴露在互联网上,并且没有得到足够的关注和监控。再比如产品代码在GitHub上泄露、敏感文档和文件在百度网盘和CSDN文库中泄露等都可能给组织带来安全风险。
我们可以在第10章安全运营中找到攻击面管理(ASM)、入侵和攻击模拟(BAS)的例子。
2.3.1.3 风险视角梳理
风险视角梳理主要是通过风险评估来全面了解公司资产的安全状况,为最终解决问题和政企安全建设做准备。同金融风险类似,我们需要了解安全保护对象才能有的放矢。
资产梳理的目的是尽可能多地获取公司的相关信息,并整理相关风险,使安全团队对资产有整体的了解,减少影子资产,为下一步开展工作奠定基础。表2-2展示了一个资产梳理示例。
表2-2 资产梳理示例
随着云计算技术的普及,传统的物理设备和数据中心逐渐被虚拟化,公有云则实现了资源池化,这种趋势明显。这里介绍一个简单的IDC、私有云、公有云(以阿里云为例)的资产对比示例,如表2-3所示。
对资产进行分类是为了更好地使用和联动。产品服务功能设计采用了模块化和组件化方式,遵循先对基础和局部进行态势分析和可视化原则,然后再扩展到整体和全局。
2.3.1.4 业务视角梳理
现今多数政企的运维都是按操作系统、数据库、应用等进行分工,工程师(尤其是外包)只关心分工的底层资源,不太关心整体的业务层,导致不好排查问题。这个问题的一个解法是,按业务应用逻辑对资产进行分类分级,建立IP资产、域名资产、去重的URL资产与对应的产品线、安全联系人等,如图2-7所示。
图2-7 资产的业务视角分类
· 主机开放端口资产:指的是主机上运行服务的直接访问接口。通过发现、识别和分析主机开放端口,可以获取具体服务信息,包括服务类型和版本等。
· 中间件资产:是最常见的资产类型之一,在几乎所有系统中都存在。由于应用广泛,中间件漏洞通常会带来重大安全隐患。因此,在安全资产管理方面,我们需要特别注重中间件资产的发现与识别。
表2-3 IDC、私有云和公有云资产对比
· 数据库资产:是最常见的资产类型之一,在几乎所有系统中都存在。由于应用广泛,数据库漏洞通常会带来重大安全隐患。因此,在安全资产管理方面,我们需要特别注重数据库资产的发现与识别。
· 操作系统资产:作为业务系统的底层资产非常重要。Linux、Windows等操作系统内含多种服务和组件,在为业务系统提供支持的同时也可能带来各种漏洞和风险(例如OpenSSL Heartbleed)。在进行安全运营时,我们必须对操作系统进行重点关注并积极应对。
· 其他应用资产:组织自己开发的业务应用和其他第三方的业务应用资产,也是安全资产管理中应该关注的一环。
例如,一个对顾客提供预约服务的移动App可能使用了十几台Linux服务器,用Tomcat作为中间件,用MySQL数据库,对外开放的是443 HTTPS端口,采购的第三方供应商开发的移动APP。通过使用图数据库,可以更加方便地对网络拓扑进行建模和管理,在CMDB基础上形成类似Wiz公司描绘的攻击链图,厘清上下文和优先级,进而更好、更快地进行网络流量分析、故障排查等操作,如图2-8所示。
图2-8 图数据库中的资产
根据图2-8所示的路径来看,MySQL数据库服务器的SSH服务(22端口)的漏洞其实并不那么紧急,因为它并不处于主要的访问链路上下文中。我们完全可以通过设置主机或网络的IP策略来降低其被攻击的风险。而MySQL的3306端口的漏洞必须优先修补,因为它时刻被使用,修复级别更高。将漏洞按业务逻辑区别对待,可以将风险降至最低。
资产管理面临的一个很大的问题是资产之间无关联。各个维度的资产之间都是孤立的竖井,不知道节点和系统之间有着怎样的对应关系和依赖关系。如域名与应用之间、应用与数据库之间未建立关联,发生安全事件时,我们无法准确判断对业务系统的影响范围。
资产不是无序的。这里所说的安全视角下的资产管理与传统配置管理数据库(CMDB)中的资产管理想要达到的目的是不太一样的,这里更倾向于从业务安全视角对资产进行关联管理,试图更好地理解进攻的路径和防守的卡点。但如果政企已经部署了CMDB,二者的数据可以进行必要的整合或验证,例如资产扫描可以基于CMDB中的数据进行操作,或者资产扫描后的数据可以同步到CMDB中。
网络层主动扫描是政企了解IT资产最简单、最直接的技术手段,也是大多数安全厂商采用的方式。主动扫描是指使用网络探测技术(如Nmap),对IT资产进行识别。这种扫描方式能够最大限度地模拟攻击者的攻击路径,一旦发现活跃的IP地址,可以通过向目标主机发送TCP SYN/ACK/FIN等报文数据,然后根据返回的数据包中的Banner信息判断正在运行的服务。扫描时一定要打开告警,避免被攻击者利用。
此外,资产发现还可以结合现有的网络性能管理(NPM)技术实现,通过对网络全流量、NetFlow信息分析,获得每个设备的IP地址、MAC地址、设备类型、连接端口等相关信息,较全面地检测正在使用的设备、服务和应用程序。NPM旁路工作,不会对业务造成影响。
还有一些手段是利用应用程序性能管理(APM)技术,通过操作系统有插件或无插件的方式来发现资产。安全人员还可以通过登录服务器,并运行一些命令来获取开放端口和正在运行的服务。如果要求更高,我们还可以在服务器上安装性能或安全代理(Agent)软件来识别资产,例如利用性能分析客户端获取JVM服务器当前运行时依赖包等。这两种方法对业务有一定影响,资产发现效果也受安装范围影响。
在实际的资产管理中,政企可以根据自身的资产管理要求来决定采用哪一种或多种资产发现手段,最终通过获取“网络地址+开放端口+运行服务+依赖设备”组合信息,对IT资产进行盘点。
2.3.2.1 映射关联机制
如果能和运维平台结合,我们可以利用netstat命令来获得操作系统上开放的端口的方法、参数,具体如下。
-r:--route,显示路由表信息。
-g:--groups,显示多重广播功能群组组员名单。
-s:--statistics,按照每个协议分类进行统计。默认显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的统计信息。
-M:--masquerade,显示内存的集群池统计信息。
-v:--verbose,显示每个运行中的基于公共数据链路接口的设备驱动程序的统计信息。
-W:--wide,不截断IP地址。
-n:禁止使用域名解析功能。链接(IP地址)以数字形式展示,而不是通过主机名或域名形式展示。
-N:--symbolic,解析硬件名称。
-e:--extend,显示额外信息。
-p:--programs,显示与链接相关程序名和进程的PID。
-t:显示所有支持TCP的端口。
-x:显示所有支持Unix域协议的端口。
-u:显示所有支持UDP的端口。
-o:--timers,显示计时器。
-c:--continuous,每隔一个固定时间,执行netstat命令。
-l:--listening,显示所有监听的端口。
-a:--all,显示所有链接和监听端口。
-F:--fib,显示转发信息库(默认)。
-C:--cache,显示路由缓存而不是FIB。
-Z:--context,显示套接字的SELinux安全上下文。
输入命令:
输出:
输出可以帮助我们看到,某台虚拟机上运行了多个服务,包括80端口的网站服务、22端口的SSH服务、389端口的LDAP服务、27017端口的MongoDB服务、3306端口的MySQL服务等。
我们可以运用脚本语言,如Python字典,通过自行开发来存储上述访问关系。调用netstat来收集会话信息,效率会比较低。我们可以直接解析/proc/net/tcp文件,梳理客户端和服务端的访问关系,示例如下:
程序使用了Python集合对重复目标IP去重,只保留新出现的目标IP。我们关注目标IP的变化,长时间监控网络会话,尤其是主动外联,可以发现可能的入侵主机。
2.3.2.2 资产扫描工具
针对传统的IDC、私有云、公有云环境中互联网资产的不同属性,我们可以选择不同的资产扫描工具(如Nmap、Zmap、Masscan、OpenVAS、Nessus、Qualys等)进行扫描。下面从开源、商业化两个维度去看资产扫描工具。
在开源领域,许多漏洞扫描工具自身也提供了资产扫描功能。Nmap不仅能够发现资产,还能补全关键的资产信息,包括开放端口、正在运行的服务以及操作系统类型等。这样,我们可以分析路由器、交换机和网关等设备的IP地址和位置,以推断资产之间的网络拓扑结构。
Nmap在黑客工具Kali中就可以找到,命令如下。
这样,我们就可以找到哪个IP是上线的。如果你对哪个IP感兴趣,你可以进一步查找相关信息:
另外一个更为高效的工具是Zmap,它采用了无状态扫描方式,只需指定一个扫描网段和扫描端口就可以开始扫描。Zmap号称可以在44min内扫遍全网;而Masscan更快,号称可以在6min内扫遍全网,最快可以从单台服务器每秒发出1000万个数据包。
当业务规模达到一定程度时,扫描器的扫描性能会成为整个系统的瓶颈。分布式扫描器就成为必然产物,通常是结合任务队列扫描器Celery和Docker技术完成分布式部署,为了提高Redis的性能和容量,会使用集群模式。目前,很多政企为了抵御攻击,安全设备会拦截或告警这种扫描,因此攻击者很少使用上述这些全网扫描工具,转而使用半社工的方式,例如直接猜测生产系统是erp.xxx.com,以更精准地发现内网的资产和攻击路径。
在ITIL体系里,CMDB是支撑业务流程的基石,自上而下梳理业务是政企IT管理体系关注的核心,这样我们就有必要梳理资产的模型实例的对应逻辑以映射业务间的关系,保证可观测的准确性和一致性。
为什么说可视化(例如拓扑图)展示非常重要?因为它能帮助网络安全分析师更有效地检测和修复威胁。不同的阶段有不同的安全优先级问题需要解决。而在目前,最优先、最重要的安全问题就是看见能力的缺失。看得见才能意识到威胁,看得见才能知道威胁正在发生,看得见才能防御。通过将内置的端到端工作流链路套用在不同的网络安全用例上,我们能快速发现异常行为。看见发生了什么,个人和企业才会有安全感。
2.3.3.1 传统的拓扑图
在计算机网络中,不同的运维团队往往按分工对负责区域的网络或服务器更为关注,这种南北的横向分块连接会形成一个传统意义上的拓扑结构,即使是最新的公有云架构也不例外。图2-9将整个公有云系统分为云端VPC(核心业务需要)、管理与监控以及安全防护等几个逻辑区域。这些区域可以在同一个VPC中,也可以在4个VPC中,具体要看安全要求的高低。
图2-9 公有云拓扑示意图
实际上,为了支持业务的运行,按访问顺序从南到北梳理纵向关联的服务组件更有意义,包括梳理客户机、网络设备、网络负载、应用服务器、数据库服务器等。例如当用户从客户机发起请求时,互联网流量会先经过DNS解析,然后通过DDoS高防服务、WAF和云防火墙三道安全防线,接着通过负载均衡,经过NAT网关后才能访问到ECS服务器,最终触达数据库中的数据。
2.3.3.2 安全视角下的网络拓扑
安全视角下的网络拓扑更加关注纵深防御,那怎样算是一个所见即所得的防御体系?
网络安全产品之间的联动和协同可以实现类似蜈蚣行走的效果。蜈蚣有多条腿,每条腿都能够独立行动,但它们能够协同工作,从而以极快的速度移动。类似地,不同的网络安全产品可以通过协同工作实现更强大的安全保护。例如,防火墙可以检测和阻止入侵尝试,而入侵检测系统可以检测和报告已经发生的入侵行为。当这两个系统协同工作时,入侵尝试可以更加准确地被检测和阻止,同时已经发生的入侵行为也可以更快地被发现和处理。这种协同工作可以扩展到其他安全产品,例如反病毒软件、网络监控工具和身份验证系统等。为了实现协同工作,网络安全产品需要能够共享信息,并能够根据其他系统提供的信息进行决策。一些标准化的安全协议和接口已经被开发出来,以实现不同的安全产品进行集成和协同工作。例如,开放式Web应用程序安全项目(Open Web Application Security Project,OWASP)开发了许多标准化的安全协议和接口,以帮助开发者更好地集成不同的安全产品。
对于图2-9,在安全视角下,从用户到数据层层设防,就变成了图2-10这样的一个访问过程控制。
图2-10 安全鱼骨图
在全面理解资产管理的前提下,实施完整的鱼骨图视角的资产管理能够帮助公司降低额外的维护成本,清晰地呈现资产之间的依赖关系,减少未使用的资产数量和降低潜在的安全风险,为审计工作做好充分准备,提高其他ITIL流程效率,对故障恢复非常有帮助。尤其在网络变更和断网演练等情况下,我们需要快速准确评估影响的范围,明确受影响的应用和负责人。
从IT资产视角来看,政企需要跨越一些管理鸿沟——从“应用”到“应用+一号位(负责人,Owner)”。资产负责人可以根据职责不同分为业务负责人、系统负责人、主机负责人等,又可以根据组件不同分为中间件负责人、数据库负责人、操作系统负责人、网络系统负责人等。根据明确的资产与负责人之间的对应关系,我们可以在资产风险管理过程中建立完整的业务到负责人的关系链条,以便安全运营团队构建闭环的风险管理模式,如图2-11所示。
图2-11 资产负责人
传统的资产管理作为一项基础性运营工作,由政企IT运维团队负责,落实到具体的人员角色上,一般由系统工程师统计并记录服务器、存储、操作系统等基础设施资产信息,由网络工程师记录网络交换设备、公网IP地址等基础设施资产信息,由应用工程师和数据库工程师在业务逻辑层面记录系统的节点配置、关联配置等业务资产信息,由安全运营工程师记录安全防护设备资产及其配置项信息。
安全运营团队应利用成熟的自动化资产管理技术或产品,构建高效、智能的自动化资产发现、识别和管理能力,降低资产管理对团队的工作压力。借鉴云计算的经验,在消除了共享账户的前提下,资产的诞生走审批流,自动在名称上打标,记录在案,并定期复核,是一种更高效的方式。
资产管理意味着建立和维护对资产持续的认知。随着时间的推移,系统数量通常会不断增加,我们很难保持对环境中所有资产的了解。如前所述,安全事件的发生很可能是由于没有完全了解环境,尤其是公有云上的,无论未打补丁的服务、暴露的云存储账户还是错误分类的文档。
Snipe-IT是一种开源的IT资产管理系统,可用于跟踪硬件、软件、许可证等资产。它可以通过提供AWS IAM用户的访问密钥和密钥ID来实现AWS公有云资产的发现。
安全厂商绿盟、安恒、奇安信等无一例外地提供了资产的管理产品,例如暴露面管理、漏洞管理以及日志记录等,尤其是针对自身资产的管理展示,有些还是非常直观的。