通过一次安全处理暴露的问题

对于企业而言,信息化系统建设不仅仅只是建设一套系统,满足具体业务场景那么简单,企业的信息化往往是一项系统工程,包括设施、硬件、软件、网络、安全等一系列工作,而在整个规划建设过程中,安全建设又是重中之重,特别是对于一些敏感数据或核心数据,做好安全管控是保证信息化建设成果的重要手段。

由于最近在对一个集成底座项目进行安全扫描时,发现了部分中高危漏洞,在进行漏洞修复的过程中,对集成底座各个产品的安全机制进行梳理,以便在后续项目中进行优化调整,降低安全风险。

总体说明

集成底座主要包括三个产品:IDM统一认证平台、MDM基础数据平台、ESB企业服务总线,三个产品中IDM作为5A管控平台,尤其强调安全层面的控制,包括密码、认证、数据等层面;而MDM作为主数据平台更多的是强调数据管理的安全以及上下游同步分发的安全性;ESB作为集成通道提供服务开发、编排、API管理等功能,而ESB的安全更多是对API、服务的安全、报警等措施。

1.集成架构

集成底座方案的集成架构中由业务系统作为数据源头,提供基础数据并通过ESB同步至MDM平台进行统一管理;MDM将组织、人员等基础数据分发至IDM生成对应认证账号信息,用于支持统一认证,同时也可以将各类主数据分发到不通的系统中,实现主数据的统一,保证主数据的准确性、唯一性、完整性。通过IDM、MDM、ESB三者结合,实现主数据治理、5A安全管控、统一API管理等业务场景,从而实现IDM、MDM以及上下游系统的打通于集成。

2.部署架构

集成底座采用云平台的部署方案,内部部署K8S集群和相关产品,通过内网Nginx对外提供统一的访问入口,并在Nginx中配置不同的端口从而实现开发、测试、生产环境的隔离访问;再通过外网Nginx代理内网Nginx,从而提供外网的访问入口。

访问时内网通过VPN接入(或者在本地局域网访问),通过内网IP和端口直接访问内网Nginx,从而访问各个产品;外网访问时通过外网IP和端口先访问到外网Nginx,再指向内网Nginx进行内部集群和产品的访问。

3.安全问题

在对项目中的集成底座服务器进行安全扫描的过程中,发现了部分中高危漏洞,主要以Nginx和MySQL为主,所以对这些漏洞进行了处理,主要漏洞包括:

1.由于前期部署的版本为1.14版本的Ngixn,扫描的过程中发现Nginx存在远程攻击漏洞:

2.MySQL部署的版本为5.7.30版本,扫描发现存在安全漏洞,容易被攻击:

3.由于前期部署环境时,为了部署和访问需要,开通了22、3006等相关端口,为了提升系统的安全性,对这些非必要端口进行了处理,关闭这些端口:

漏洞修复

针对在系统扫描过程中暴露的相关安全问题,首先对服务器进行了安全修复,将相关的端口、产品等进行了处理,包括产品升级、端口关闭、防火墙调整的措施。

1.MySQL

由于MySQL采用的是5.7版本,而MySQL和产品紧密相关,如果对MySQL进行升级,一是无法保证在升级过程中系统访问的稳定性,二是升级后的MySQL产品未必能有效适配,可能导致访问异常,所以综合考虑采用端口处理的方式,将MySQL对外暴露的3306端口封闭,从而使外部地址无法通过3306端口攻击MySQL。而对于系统内部而言,由于K8S部署过程中,各个服务器之间已经在防火墙中进行了打通,所以不需要单独进行端口处理,只需要在防火墙中关闭3306端口即可。

2.Nginx

由于前期部署的是1.14版本的Nginx,在扫描过程中存在安全漏洞,而Nginx又是采用的高可用部署,所以直接对Nginx进行升级,升级成1.20版本,而在升级过程中主要需要考虑两点:

1.升级过程中需要保证配置文件的一致性,对于nginx.conf配置要进行迁移,同时注意调整配置文件中相关路径;

2.由于IDM产品中在Nginx配置了静态资源,要注意对静态资源进行迁移,同时对应调整配置文件中静态资源路径。

3.暴露端口

前期部署并未考虑端口暴露的问题,所以3306、22等端口均暴露在外,出于安全考虑,对端口进行了关闭。

网络安全

在对服务器进行安全修复的过程中,对服务器的安全处理方式进行了整理,从网络层面而言,主要的处理方案就是从防火墙和服务器的访问限制进行处理,通过控制外网IP的访问权限进行安全控制。

1.网络防火墙

网络防火墙是服务器的第一层安全控制,服务器最外层的防火墙,通过外网防火墙可以直接限制互联网对局域网的访问,以及局域网服务器是否能访问互联网等策略。在企业服务器网络建设中,一般会建设内外网访问区:

1.内网数据区采用纯内网访问,不能接入外网,也不允许外网访问,一般用于存放关键数据以及内部业务系统,如核心数据库、财务系统等;

2.DMZ隔离区主要用于和外网交互,可以访问外网,也能访问内网,主要用于部署非重要数据以及需要频繁外部交互的系统,如门户系统、OA系统等;

3.如果内网应用需要和外网系统进行交互,可以通过Nginx代理的方式经由DMZ区连接到外网,从而保证数据和系统访问的安全性。

2.服务器防火墙

服务器自身的防火墙配置,主要是用于保证服务器本身对外的访问和交互,一般根据需要放开对应的IP和端口,注意在K8S集群部署的过程中,可能会临时关闭防火墙,但是部署完成后,一定要开启防火墙,通过开放IP和端口的方式支撑服务器之间的交互。一般情况下,K8S集群服务需要开放对应内容:

1.开放K8S集群的各个服务器之间的互通;

2.部署对外访问的vip服务器,需要开发外部访问端口(如80、81、82对应的生产、测试、开发环境);

3.开发22端口用于ssh进行服务器连接访问(只开放一台服务器,或者不开放)。

3.搭建跳板机

为了保证服务器访问的安全性,避免被恶意访问,最好是通过跳板机的方式进行服务器的访问,即单独搭建一台跳板机服务器,先访问跳板机服务器,再通过跳板机以ssh方式跳转的K8S相关的服务器。如果现场环境不具备提供跳板机的调整,可以考虑在K8S服务器中选择一台服务器作为跳板机,根据大多数情况下K8S的部署方案,尽量不要选择数据库、Nginx、数据所在服务器,一般会选择master3所在服务器。

使用安全

通过对服务器的安全进行修复,以及调整相关的配置,对产品、部署、代码等相关安全措施进行了梳理,包括产品的配置、引擎的处理、数据的控制等相关内容。

1.三权分立

产品三权分立主要是将产品的使用权、配置权、监控权分开:

1.使用权只能使用功能和数据,如MDM的主数据管理、分发,IDM的组织、岗位、人员维护、分发、启停用等;

2.配置权限主要是针对相关的模型、流程等的权限控制,如MDM的数据建模、功能建模、流程建模等,IDM的流程建模、扩展配置等,ESB的API管理、应用集成;

3.监控权主要是对各个产品的数据监控、流程监控、日志监控等进行查看和监控。

通过分级授权控制产品的安全性是各个产品最基础的安全控制措施,而实现这种安全控制主要是通过平台功能管理实现的,通过组织、人员、标准角色、实际角色等多种授权机制保证访问安全。

2.密码强化

主要是针对产品部署、使用、配置过程中的密码进行强化,包括密码长度、密码复杂度等,注意一定要避免admin、root、123、等容易被破解的密码,主要涉及的密码有:

1.环境部署:

1)Redis集群的密码;

2)数据库的密码;

3)容器Redis密码;

2.产品配置:

1)MDM、IDM、ESB应用管理的系统密码;

2)IDM建议开启密码策略,通过策略控制登录用户不能使用弱密码;

3.产品使用:

1)MDM、IDM、ESB、UMC系统管理员admin的密码;

2)登录用户的密码,包括各分级普通管理员、普通用户等。

3.数据加密

数据加密主要是针对数据管理和传输过程中的加密,为了避免数据传输过程中被拦截和破解,相关数据需要进行加密处理,结合AES、DES、MD5、非对称加密等措施保证数据安全。主要加密措施:

1.ESB开发服务、流程进行数据传输时,可以通过加密组件对数据进行加密,实现密文传输;

2.IDM、MDM、ESB、UMC等平台存储密码等敏感信息时先进行密码再进行存储,保证数据库存储密文数据,如果在产品使用过程中需要解密,采用AES、DES、非对称加密等可解密的方式,否则MD5加密;

3.在平台前后端交互过程中,进行数据加密,前端加密后端解密,后端加密前端解密,或者完成采用密文等方式。

代码安全

除了产品使用层面做了安全控制,在产品的底层代码中,也从安全层面进行了考虑和优化,从引擎机制上实现安全控制,避免产品漏洞被恶意攻击,其中主要的防护措施主要有XSS、SQL注入、接口认证等。

1.XSS攻击

XSS攻击的处理,主要是在产品底层引擎中完成的控制,通过在平台配置XSS过滤参数,在底层代码中通过添加XSS过滤机制,消除XSS漏洞,防止产品被从外部进行攻击。

2.SQL注入

防SQL注入主要是通过产品底层的数据库操作优化实现的,采用预处理的方式对SQL进行参数化处理,避免直接动态拼接SQL,在配置文件中通过添加“_like”的方式处理动态拼接的SQL,避免SQL注入。

3.接口安全

对于IDM、MDM平台预置的相关数据接口,均添加token机制,调用接口时需要传入token,并且token的获取也是基于平台配置的业务系统编码和密码动态生成,并且会有时间限制,防止CSRF漏洞等安全攻击。

总结说明

集成底座项目是基于IDM、ESB、MDM产品完成企业的基础性的信息化框架建设,为后续的系统升级、扩展,以及深度的数据治理、数据分析奠定基础,所以前期的集成底座建设一定要做到稳定、安全、可复用、可扩展等特性,而IDM平台又是基于5A安全管控体系的,所以安全一定不能被忽略。

1.标准规程

集成底座项目由于相对比较统一、规范,而建设的内容又是基础信息化框架,所以在实际项目中比较容易做成标准化,所以在实施这类项目时要有标准的实施规程,按照规程进行实施交付,达到快速、准确交付的目的,同时在项目部署、实施、交付、运维过程中,要注意产品、环境的安全稳定,通过调优、安全等措施保证平台的稳定性。

2.安全意识

对于项目经理或技术经理而言,在项目实施交付的过程中,除了注意实施交付的流程,推送项目交付外,一定要有比较强的风险意识,不单单是项目实施过程中的风险,对于安全风险也要充分考虑,从项目前期的调研蓝图开始,就要考虑到后续的产品、环境、数据等相关的安全措施,避免实施过程中出现问题。

3.个人总结

在以前的项目中,虽然也处理过对于服务器安全、优化等相关的内容,但是无论是意识还是处理措施都是有所欠缺的,通过这次进行的安全修复,对产品、环境、服务器的安全措施又进行了一次梳理,无论是对集成底座方案的理解,还是对于后续项目的实施都是非常有帮助的。

对于集成底座项目而言,在实施过程中主要包括一下内容:基于IDM的5A体系建设,基于MDM的主数据治理,基于ESB的服务、API治理,而在实际项目过程中可以根据客户的实际需求进行分步建设,但是作为基础框架,无论是从安全性、稳定性、复用性、扩展性、集成性等方面都要做到位,才能有效支撑起企业的信息化建设,支持后续更深度的数据治理于分析。

本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~