SuperMap产品安全技术
SuperMap 产品安全白皮书
随着信息技术的发展,信息安全问题变得愈加重要和严峻,而GIS 的广泛应用使得 GIS安全问题得到了更多的关注。目前,GIS 应用从单机转向网络,而 GIS 功能实现由客户端转向了服务器端,由二维 GIS 向二三维一体化的 GIS转变,GIS 软件产品的安全性、三维服务中数据的安全性已经越来越重要。如何保护 GIS 服务器的安全、保护 GIS 服务内容安全、保证 GIS 服务正常运行,成为服务式 GIS 必然要解决的问题。
此外,GIS系统一般由从服务端到客户端的多个部分组成,其安全问题并不是控制某一个软件的安全。考虑GIS系统的安全,应该从全局的角度出发,保证 GIS 系统的各个部分共用一套统一的、互相兼容的安全方案。
SuperMap GIS产品,特别是GIS服务器产品,已内置一些安全防护手段来保障系统安全。但是,GIS系统安全与业务环境、机房环境、操作系统环境、安全意识等息息相关,用户在使用SuperMap GIS平台产品时,不仅需要注重产品本身的安全,也应该考虑软硬件环境的安全。
软硬件环境安全
GIS系统的安全,首先需要有一个安全的软硬件系统环境。保护 GIS 所在的软硬件环境安全,可以采取常规的系统保护措施,对系统予以保护,以使其免遭物理攻击和恶意网络的破坏。在此基础上,通过已有的安全架构保护软件及硬件,如通过防火墙来阻止恶意的 Internet 用户访问局域网络。此外,还需要保证服务系统对外的通信安全,如通过 HTTPS 进行加密通信,即通过 SSL 可对通信数据进行加密,从而防止用户名和密码被恶意截取。
常规系统保护措施
保护GIS系统的软硬件安全的常规措施有物理安全、软件升级、病毒防护和定期备份等,对服务所在系统予以保护,以使其免遭物理攻击和恶意网络的破坏。
常规系统保护措施需要用户根据自身需求选择并设置相应的安全策略。 SuperMap仅提供参考意见。
物理安全
物理安全是保护计算机网络设备、设施以及其他介质免遭地震、水灾、火灾等环境事故以及人为操作失误或错误导致的破坏。
物理安全主要包括三个方面:
- 场地安全:是指系统所在环境的安全,主要是场地与机房;
- 设备安全:主要指设备的防盗、防毁、防电磁信息辐射、泄露、防止线路截获、抗电磁干扰及电源保护等;
- 介质安全:包括介质的数据安全及介质本身的安全。
病毒防护,安装杀毒软件
不论是虚拟机还是物理机,不论是内网环境还是公网环境,部署GIS数据库、GIS服务器的操作系统都应该安装杀毒软件,并定期更新病毒库。
保持系统和软件的升级
服务器不论是Windows系统,还是Linux系统,都提供有升级机制。可通过打开操作系统的自动更新功能,或手动下载补丁包、软件包来进行升级。 定期更新操作系统,可修复操作系统的潜在漏洞。
日志记录
日志包括操作日志、系统日志、安全日志:操作日志记录用户进行的操作;系统日志对系统中发生的重要事件情况进行记录,以利于分析系统运行状态,排除故障;安全日志记录对系统安全有影响的事件。进行GIS系统日志记录,对系统中的操作、重大事件进行记录,方便风险分析定位,及时解决安全问题。
防火墙保护
防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间构建的保护屏障,可以保护内部网免受非法外部用户的侵入。防火墙通过限制其外部网络与内部网路通信时所使用的端口,实现内外网的隔离。同时,通过防火墙可以监视这些通信端口,拦截恶意的访问,从而防止外部攻击。
使用防火墙技术将内外网络分隔,可以较好地保护 GIS系统免受外部网络的恶意攻击。 防火墙安全保护措施需要用户根据自身需求选择并设置相应的安全策略。 SuperMap 提供了防火墙方面的配置说明文档。
单防火墙
GIS系统(包括数据、Web 应用等)设置在内网中,使用一道防火墙将内网和外网分隔,内外网之间仅通过固定端口进行通信,如下图。不管是Windows还是Linux系统,都应该开启系统防火墙,只允许必要的端口通过。常用的必要端口有:
- GIS服务器端口
- GIS数据库端口
- Web应用端口(一般为80)
- Linux SSH登录端口(一般为22)
- Windows远程登录端口 (一般为3389)
多防火墙(使用反向代理)
对GIS系统的保护还可以通过设置多道防火墙来实现,多道防火墙之间会形成隔离区(相对于内网,可以称为外围网络),在此区域可以设置反向代理服务器,从而使 GIS 服务器更加安全,如下图。
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
端口安全
计算机端口(port)是计算机与外界通讯交流的出口。在启动服务时,需要保证端口不被占用,且可以通过防火墙,否则可能导致一些功能不可用。
端口安全保护措施需要用户根据自身需求选择并设置相应的安全策略。 SuperMap 提供了一些端口方面的安全措施:
- 支持端口修改。GIS服务器和GIS数据库启动时都有默认端口号,为防止被攻击,应该不使用默认端口。SuperMap iServer 默认使用了一些HTTP端口,同时支持修改。 表 SuperMap iServer 默认使用的端口
端口 | 用途 | 是否可修改 |
---|---|---|
8090 | 启用Tomcat服务 | 是 |
8015 | 停止Tomcat服务 | 是 |
8100 | 启用多进程时,进程间通信 | 是 |
8900-9000 | 启用多进程时,启用进程节点 | 是 |
HTTPS加密通信
HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)是超文本传输协议和 SSL/TLS 的组合,用以提供加密通讯及对网络服务器身份的鉴定。与 HTTP 相比,HTTPS 更加安全。使用 HTTP 协议,在网络中流通的信息都为明文,非常容易泄密。为保证传输信息不被中间服务器或者其它探测软件捕获,可使用 SSL/TLS 对通信内容加密。HTTPS 报文中的任何东西都被加密,包括所有报头和荷载从而避免通讯内容被截获。
HTTPS加密通信安全保护措施需要用户根据自身需求进行相关配置。
SuperMap提供配置 HTTPS 连接的帮助文档。 SuperMap iServer 和SuperMap iEdge 均支持将经过 https 加密后的第三方 Web 服务,发布为 WMS 、WMTS 、 REST 以及 WFS 等服务类型。基于SuperMap iClient SDK开发的Web应用,如果部署在Tomcat中,也可以通过如上方式来配置HTTPS加密通信,对外发布HTTPS地址,使系统更安全。
定期GIS系统备份
定期对GIS系统进行备份,增强系统抗风险能力,保证系统恢复能力。 GIS系统备份安全保护措施需要用户根据自身需求进行相关配置。 SuperMap提供GIS服务器配置的定期备份能力,主要通过可视化界面实现,简单方便易操作,如下图。
GIS系统日志
系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。 GIS系统日志安全保护措施用户不需要进行相关设置。 SuperMap产品自带日志功能,自动记录用户登录、注销和操作等信息。
数据安全
GIS 数据获取和制作过程中会耗费大量人力物理,其中,三维数据尤为昂贵,甚至还有很多大比例尺数据可能涉及国家安全。因此,如果对数据不能很好地加以保护,对于用户来说,将会产生十分重大的损失。
GIS系统数据安全保护措施需要用户根据自身需求进行相关设置。 SuperMap提供多种数据加密方式,主要通过可视化界面实现,方便用户操作。
工作空间加密
GIS工作空间存储了一个工程项目(同一个事务过程)中所有的数据源、地图的组织关系,使用SuperMap iDesktop制作的地图,均保存在工作空间中。GIS工作空间保存时,可设置密码,以保障数据安全。如果是数据库型工作空间,则可通过数据库账户(用户名称、用户密码)来确保数据安全,如下图。
基础GIS数据库加密
基础GIS数据库加密分为两种类型:一种为文件型,一种为数据库型。
- 文件型
若基础GIS数据存在文件型数据源(*.udb)中。可在工作空间中,输入密码,对数据源进行加密。
- 数据库型
如果基础GIS数据存在数据库型数据源中,使用的是数据库本身的安全策略和安全机制,需要为存储GIS数据创建专用账户,并严格限定权限,提升信息安全。
缓存数据加密
SuperMap 的地图缓存和场景缓存均支持加密存储,其中地图缓存需要已紧凑格式存储才可以进行加密。使用加密方式生成的缓存数据,在重用时需要输入密码才可以加载或打开,从而保证数据的安全。
三维数据加密
在SuperMap iServer 中启动三维服务后,会自动生成一个随机的加密密码。SuperMap iClient 客户端浏览三维服务时会缓存三维数据并使用服务端生成的密码自动对下载的三维数据进行加密。 服务器端管理员可以修改这个默认的加密密码,并可设置三维缓存数据是否允许拷贝,如下图。
定期备份数据
定期对GIS系统的数据进行备份,保障数据安全。备份目录尽量放在不同区域。如SuperMap提供工作空间的定时备份,空间数据的恢复机制,缓存数据可更新、可续传,对原数据可能造成破坏的操作进行自动备份的机制,例如对数据进行投影转换操作时,自动备份原始数据。 定期备份数据属于数据级灾备方式之一。数据级灾备侧重的是数据的备份和恢复,包括数据的复制、备份、恢复等。数据级灾备是所有灾备工作的基础,在灾备恢复的过程中,数据恢复是最基础的。
服务安全
GIS系统服务安全保护措施需要用户根据自身需求进行相关设置。 SuperMap提供多种服务安全策略,同时提供配置帮助文档。
基于角色的访问控制
在服务安全方面,SuperMap iServer 支持基于角色的访问控制,且支持用户组,支持 Token (令牌)机制。在服务管理器中提供安全模块,通过基于用户身份识别的认证和授权,实现对服务的访问控制,如下图。
用户管理
SuperMap通过基于角色的访问控制保护 GIS 服务安全,其中“用户管理”用于查看和管理当前 GIS 系统中的所有用户,包括第一次访问 SuperMap 服务器时创建的管理员账户。对于SuperMap GIS 系统内存储的所有用户,管理员用户可以添加、修改和删除用户。
角色管理
“角色管理”用于查看和管理当前 GIS 系统中的所有角色。SuperMap GIS 服务器内置存储所有角色,管理员可以添加、修改和删除角色,点击角色名后进入角色编辑页面,可以查看和修改角色的基本信息、服务授权信息及管理功能授权信息。 SuperMap GIS 服务器默认提供了以下内置角色:
- ADMIN,内置的系统管理员,此角色默认拥有整个 SuperMap GIS 服务器的管理权限,可以登录服务管理器执行对服务、安全、系统集群等配置,拥有对整个服务器的管理权限。
- PUBLISHER,内置的服务发布者,此角色默认拥有服务发布和服务实例管理的权限,如发布服务、启用/禁用服务实例,以及添加、修改、或删除服务提供者、服务组件、服务接口等。
- NOPASSWORD:第三方登录用户对应的角色,包括 QQ,微博、CAS 账户等不通过 SuperMap GIS 服务器存储的用户,这些用户无法通过 GIS 服务器修改密码。
- DATA_CENTER:内置的 SuperMap iPortal 数据上传者角色,具有上传数据并发布服务的权限。
- PORTAL_USER,内置的 SuperMap iPortal 普通用户角色,拥有使用 SuperMap iPortal 门户的权限,包括使用、创建和共享门户资源。
- PORTAL_VIEWER,内置的 SuperMap iPortal 查看者角色(关联此角色不占用 iPortal 的用户数许可),具有查看 iPortal 门户中与其共享的资源的权限,例如:查看地图、服务、场景、应用、数据资源等。关联了查看者角色的用户无法自行创建资源和管理资源,例如:无法注册服务、创建地图、创建群组、上传数据等。
服务授权
SuperMap iServer 提供了服务级别的权限控制,可以对每一个服务实例分别进行角色授权,也可以对多个服务实例进行批量授权,服务实例与角色之间是多对多关系。如果系统管理员对某一角色授予了服务访问的权限,则与该角色关联的所有用户和用户组(主要指隶属于该用户组的用户)就同时拥有了该服务的访问权限。
角色授权
SuperMap iServer支持对指定角色进行权限编辑,包括服务访问的授权/禁止和服务管理功能的授权/禁止。
基于 HTTP Form 的认证
基于 HTTP Form 的用户验证方式是一种简单易用且最常用的认证方式,最容易为访问服务的用户所接受,但同时这种方式也存在用户名和密码泄露的风险。 SuperMap iServer提供了基于 HTTP Form 的用户验证方式。如果服务实例开启了访问控制,即禁止匿名用户访问,那么访问该服务的时候就需要在 HTTP Form 页面登录。用户访问受保护的服务实例时,服务页面会自动跳转到登录界面(http://localhost:8090/iserver/services/security/login),输入正确的用户名和密码后就可以访问服务。用户成功登录后,浏览器会记录 Cookie 信息,继续访问服务中的资源时请求会自动携带 Cookie 信息,而不需要再重新登录。
基于Token的认证
SuperMap iServer 提供了一种基于 Token(令牌)的用户身份验证机制,使用户在访问受保护的服务资源时仅需提供 Token,而不需要提供用户名和密码。Token 是包含用户名、有效期和某些专有信息并通过共享密钥加密的信息字符串。用户向 SuperMap iServer 申请 Token 时需要提供用户名和密码,服务端验证通过后会将相应的 Token 返回给用户。
用户访问受保护的服务时,如通过 REST、Web Application 等方式,只需要提供正确的 Token 就可以访问相关服务资源。对于通过 Web Application 访问 GIS 服务的用户来说,这种认证方式可以有效避免服务器的用户账户泄露。目前,SuperMap iServer 服务列表(http://localhost:8090/iserver/services)中的所有服务类型均支持基于 Token 的认证,包括各个 REST 服务模块、OGC 服务等。
目前,配置 Token 主要是指配置用于生成 Token 的共享密钥。
防跨站点脚本漏洞
跨站点脚本漏洞是很常见的安全漏洞,是黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器。这一漏洞的存在将会导致用户的 Cookie 丢失,或者会话被劫持,最终导致用户的安全和隐私受到威胁。 SuperMap GIS服务器产品开启XSS跨站点脚本编译检测,解决跨站点脚本漏洞问题。
集成安全
GIS 系统不仅仅是一个 GIS 服务器,而是由多台服务器构成的整个分布式系统,因此 GIS 系统的安全应将整个系统作为一个整体来考虑,也就是系统集成安全。实现 GIS 系统的集成安全的方法有很多。
GIS系统集成安全保护措施需要用户根据自身需求进行相关设置。 SuperMap提供多种集成安全策略,同时提供配置帮助文档。
密码安全
一般来说,为保证安全,应使用强口令,即密码应该设置8位以上,且由字母、数字、特殊字符混合组成。在SuperMap产品中,用户密码保存在数据库中是经过加密的,不是明文。
- 密码防暴力破解设置
SuperMap支持设置一段周期内允许的密码连续错误次数,以防暴力破解, 并可自定义修改锁定周期、允许失败次数等参数。具体包括:
- 锁定周期(分钟):检测连续失败次数的时间周期,默认为10分钟 。
- 允许连续失败次数:连续失败的最大次数,超过则账户立即被锁定,默认为5次。
- 自动解锁时间(分钟):账户锁定后,自动解锁所需的时间,默认为20分钟,如果安全级别要求较高,管理员可以将该数字设置大一些。
- 前N次密码不重复设置
修改密码时,SuperMap支持设置新密码不能与前面几次的密码中的任何一个重复,且支持管理员自定义设置不可重复次数。
安全信息存储
SuperMap GIS服务器默认将用户信息存储在SQLite数据库中,同时支持将用户信息存储在MySQL数据库中,以及其他自定义存储位置。
会话信息管理
SuperMap GIS 服务器支持配置集中式会话。集中式会话是指将会话信息保存至第三方数据库,当需要再次建立相同的会话时,可直接从数据库中获取。
对于GIS服务器来说,开启集中式会话则意味着:用户使用同一浏览器,只需登录一次即可直接访问多个不同地址的 GIS 服务器,无需重复登录。相对来说,不开启集中式会话,即使用单一会话模式则意味着,用户每访问一台 GIS 服务器都需要登录一次,即使是同一用户也需登录,增加重复工作。
CAS 单点登录
CAS(Central Authentication Service)是 Yale 大学发起的构建 Web SSO 的 Java 开源项目。用户配置单点登录时,需设置 CAS 认证服务器,CAS 认证服务器负责完成对用户信息的认定,可单独部署于网络环境中。CAS 单点登录,实现了在系统中登录一次便可访问系统中的多个GIS 产品、多台服务器节点。
SuperMap iServer 支持基于 CAS 的单点登录。在单点登录的情况下,用户访问系统中的任何一个 GIS 服务器时,GIS 服务器都会将请求转发给认证服务器,由认证服务器进行用户身份的验证。同一个用户再去访问另一个 GIS 服务器时,该 GIS 服务器也会将请求转发给认证服务器,认证服务器确认该用户已经验证通过时,就会告知 GIS 应用服务器,用户就可以成功访问该服务器。在这一系列的访问过程中,用户只进行了一次登录,就可以访问系统中的所有 GIS 服务器,而认证服务器也只进行了一次用户身份验证,访问了一次用户数据库。
如果不使用单点登录,则用户访问不同的 GIS 服务器时,都需要登录才能访问。每一个 GIS 服务器都有自己的用户数据库,每次进行用户验证时都要各自读取用户数据库的信息。
配置使用LDAP目录
LDAP(Lightweight Directory Access Protocol)是轻量目录访问协议,主要用来存储用户账户。SuperMap iPortal、 iServer和iEdge支持使用已有的 LDAP 服务器中的用户账户,而不需要再重复创建用户。这样,GIS 系统就可以与组织单位内的其他应用系统共用一套用户体系,既可以减少建设用户体系的重复投入,又可以避免组织内的用户系统冗余。
配置使用 Keycloak 进行认证授权
Keycloak 是为现代应用系统和服务提供开源的鉴权和授权访问控制管理。Keycloak 实现了OpenID、OAuth2.0、SAML单点登录协议,同时提供 LDAP 和 Active Directory 以及 OpenID Connect、SAML2.0 IdPs、Github、Google 等第三方登录适配功能,能够做到非常简单的开箱即用。
SuperMap GIS 服务器支持使用 Keycloak 进行认证授权。将 SuperMap iServer、iPortal、iEdge 对接 Keycloak 后可以进行统一的账户管理,实现单点登录。
配置使用 OAuth2协议的账户
OAuth 2.0 是一个行业的标准授权协议,允许用户让第三方应用访问该用户存储的私密的资源(如联系人列表),而无需将用户名和密码提供给第三方应用。
SuperMap iPortal、SuperMap iServer 和 SuperMap iEdge 不仅支持使用基于 OAuth2.0 协议的第三方账户登录如Weibo,QQ等,也支持通过扩展的方式使用其他遵循 OAuth2.0协议的第三方账户登录如Facebook、Twitter等。这些第三方账户可以直接登录 GIS 服务器,也可以与 GIS 服务器中已有的账户绑定。
扩展使用自定义账户存储
SuperMap iPortal、iServer和iEdge支持通过扩展的方式使用其他方式存储的用户账户系统,如文件存储、关系数据库存储的用户。
兼容第三方安全方案
SuperMap iPortal、SuperMap iServer和SuperMap iEdge支持集成第三方的安全框架和解决方案,比如 Java 中间件内置的安全方案、常见的 Java 安全框架等。
- SuperMap iServer 可直接部署于 Jakarta EE 服务中间件容器中,因此可直接集成各种 Jakarta EE 服务中间件的内置安全方案,如 WildFly、WebLogic、GlassFish、WAS 等内置的用户/角色管理机制。
- SuperMap iServer 支持对接各种 Jakarta EE 安全框架与解决方案,如 Spring Security、Shiro 等。
APPScan扫描
为全面了解超图产品的安全现状,及早发现潜在的安全问题,使用了 Web 服务器安全扫描工具(IBM Security Appscan Standard)对 SuperMap iServer 、SuperMap iPortal等进行安全漏洞扫描。扫描出并解决/解释的问题包括:
- 高严重性问题
主要包括SQL注入,跨站点脚本编制,传输层保护不足等。其中跨站点脚本编制是十分常见的安全漏洞。SuperMap iServer 使非法的注入不能在页面进行存储或者执行,进而防范此类安全风险。
- 中严重性问题
主要包括会话标识未更新、加密会话(SSL)Cookie 中缺少 Secure 属性、跨站点请求伪造等。
- 低严重性问题
包括HTML 注释敏感信息泄露、JavaScript 劫持、SSL 请求中的查询参数、发现 Web 应用程序源代码泄露模式、发现可高速缓存的 SSL 页面、发现内部 IP 泄露模式、发现潜在注册信息、发现数据库错误模式、检测到文件替代版本等。
源码漏洞扫描
一个 GIS 系统的安全问题,大多数集中在编码阶段。为了从代码层了解安全现状,SuperMap使用了Sonar、FxStyle和Find Security Bugs 等对源码进行漏洞扫描。扫描出并解决了潜在的命令注入、未经验证的重定向等问题。
Web应用开发安全
SuperMap提供有客户端 GIS 程序开发工具包——SuperMap iClient,你可以基于iClient开发二维/三维行业Web应用。
在Web应用开发、部署的过程中,也应注意一些安全事项,超图建议采用以下简单的安全防护手段:
HTML标签过滤
用户输入的东西是不可信任的,例如注册信息、评论等,有可能被利用做HTML注入、JS注入。HTML注入可能导致页面错乱、出现非法链接等;JS注入可能导致页面运行非法脚本,出现非法交互、信息。 防范HTML注入、JS注入的办法,是在页面输入的地方,对HTML标签及一些特殊字符做过滤,将其转化为不被浏览器解释执行的字符,如“< > &”等。
前后台加密
为防止Web应用与后台的通信被恶意拦截,应该对发送的信息使用MD5、DES等方式加密。 Web应用开发完成后,部署上线前,要进行代码混淆。
JavaScript工程(*.js),常见的混淆工具有:pack.wsf、Jasob等,可使用混淆工具混淆后,再部署JavaScript应用。
Flash工程(*.swf),常见的混淆工具有:DoSWF、SWF Encrypt等,可使用混淆工具混淆后,再部署Flash应用。
更多资源
本白皮书为您详细介绍了SuperMap产品安全体系。关于这些产品的更多详细资源,您可以访问SuperMap技术资源中心:
http://support.supermap.com.cn
本白皮书由超图研究院编著,如发现任何错误,请随时反馈我们。同时欢迎您针对白皮书内容提出宝贵意见和建议。