Skip to main content

扫描 ArcGIS Server 以检查安全性最佳做法

ArcGIS Server 附带了一个 Python 脚本工具 serverScan.py,用于扫描一些常见的安全问题。 该工具根据为 ArcGIS Server 配置安全环境中的一些最佳做法来检查问题。 对多个条件或配置属性进行分析并将其划分为三个严重性级别:CriticalImportantRecommended。 这些标准的描述如下:

ID

严重性

属性

描述

SS01

Critical

Web 通信

确定是否为 ArcGIS Server 启用了 HTTPS。 要防止任意通信被截取,建议您配置 ArcGIS Server 和 ArcGIS Web Adaptor(如已安装)来强制使用 SSL 加密。

SS02

Critical

标准化查询

确定是否强制执行标准化查询。 为了防范 SQL 注入攻击,必须启用此选项。

SS03

Critical

令牌请求

确定是否支持通过 GET 请求生成令牌。 通过 GET 请求生成令牌时,用户的凭据将作为 URL 的一部分发送,可能会通过浏览器历史记录或网络日志被捕获和泄露。 如果其他应用程序没有要求,应禁用此操作。

SS04

Critical

令牌请求

确定是否支持通过 POST 并且在查询参数中包含凭据的生成令牌请求。 生成令牌时,用户的凭据可作为 URL 的一部分提供,并通过浏览器历史记录或网络日志显示。 如果其他应用程序没有要求,应禁用此操作。

SS05

Critical

Filter web content 已启用

生成禁用 filter web content 属性的要素服务列表。 禁用此属性将允许用户向输入字段中输入任何文本,这样会使服务暴露于跨站点脚本 (XSS) 的潜在攻击之中。 默认情况下启用该属性,除非需要不受支持的 HTML 实体或属性,否则不应禁用此属性。

SS06

Critical

系统服务权限

确定是否在 Server Manager 的 System 文件夹中对任何服务应用了非默认权限。 为确保只有管理员和发布者能够访问 System 文件夹中的服务,不应分配任何角色。

SS07

Important

REST 服务目录

确定是否可通过 web 浏览器访问 REST 服务目录。 除非用户正在使用该目录搜索和查找服务,否则应禁用该目录以减少在 Web 搜索中浏览、查找或者通过 HTML 表单查询到您的服务的可能性。 这样做还可以加强对跨站点脚本 (XSS) 攻击的防护。

SS08

Important

跨域限制

确定跨域请求是否被限制在特定域。 为了减少未知应用程序向您的 Web 服务发送恶意命令的可能性,建议将服务的使用限制在仅托管在您信任的域中的应用程序上。

SS09

Important

动态工作空间

生成可通过动态工作空间访问数据库的服务列表。 如果保护不当,这可能使数据库/工作空间暴露,从而遭到恶意第三方通过 REST 访问。 只有服务和动态图层/工作空间功能用于 Web 应用程序的主动使用时才应启用动态工作空间。 在这些情况下,重要的是确保由地图服务用于连接至工作空间/数据库的数据库连接具备应用程序所需的最低权限,例如,在所需工作空间范围内仅对其他表格的只读权限。

SS10

Recommended

通过 HTTPS 的 Web Adaptor

确定是否有一个或多个 Web Adaptor 是通过 HTTPS 注册的。 为了让 Server Manager 成功重定向到 HTTPS,所有 Web Adaptor 都应该通过 HTTPS 注册。

SS11

Recommended

禁用 PSA 账户

确定主站点管理员账户是否已启用。 建议您禁用此账户,以确保除了身份存储中指定的组或角色外,没有其他方式可以管理 ArcGIS Server。

SS12

Recommended

要素服务权限

返回已启用 updatedelete 操作并支持匿名访问的要素服务列表。 此操作允许在不进行验证的情况下更改或删除要素服务数据。

SS13

Recommended

LDAP 标识存储

如果 ArcGIS Server 配置了 LDAP 身份存储,则确定是否使用加密通信。 为了确保 ArcGIS Server 与 LDAP 身份提供者之间的通信加密,建议在为 LDAP 用户存储和 LDAP 角色存储配置(如果使用)定义的连接 URL 中使用 ldaps://

SS14

Recommended

服务器 SSL 证书

确定 ArcGIS Server 是否使用自签名证书。 为了帮助减少与 ArcGIS Server 通信的客户端的 Web 浏览器警告或其他意外行为,建议导入并使用已绑定到端口 6443 的 CA 签名 SSL 证书

SS15

Critical

系统服务共享

确定 System 文件夹中的任何服务是否已共享为门户项目。 为了确保正确的权限,这些服务不打算通过门户共享。 建议移除关联的门户项目以恢复默认的服务权限。

serverscan 脚本位于 <ArcGIS Server installation location>/tools/admin 目录中。 从命令行或 shell 运行脚本。 运行脚本时可以选择指定参数。

serverScan.py 脚本位于 <ArcGIS Server installation location>\tools\admin 目录中。 从命令行或 shell 运行脚本。 运行脚本时可以选择指定参数。

serverScan.py 参数

参数

描述

-n

安装服务器的计算机的完全限定域名(例如:gisserver.example.com)。 默认为运行脚本的计算机的主机名。

-u

管理员账户的用户名。

-p

管理员账户的密码。

-o

将用于保存安全扫描报告的目录。 默认目录与从中运行脚本的文件夹相同。

-t

可以生成一个令牌并用其代替用户名和密码。 如果为联合服务器生成门户令牌,则应在“Webapp URL”字段中输入正在扫描的服务器的完全限定域名。 如果为非联合服务器生成令牌,则必须通过管理员目录 (arcgis/admin/generateToken) 生成令牌,且客户端必须为“Request IP”。 提供令牌时,它会覆盖提供的任何用户名或密码。

--ignoressl

禁用 SSL 证书验证。 自 10.7.1 起,默认情况下,脚本将尝试验证所有 SSL 证书。 如果 Python 不信任证书的发行机构,则脚本将无法完成。 如果需要,可以指定此参数以忽略所有证书。

-h 或 -?

输出一个列表,其中包含在运行脚本时可指定的参数。

示例:python serverScan.py -n gisserver.example.com -u admin -p my.password -o C:\Temp

如果在不指定任何参数的情况下运行 serverScan.py 脚本,则系统将提示您手动输入或选择默认值。 如果您想要使用令牌,则在运行脚本时必须将其作为参数提供。

扫描会生成 HTML 格式的报告,该报告将列出在指定的 ArcGIS Server 站点中发现的上述任何问题。

默认情况下,该报告将保存在从中运行脚本的同一个文件夹中并命名为 serverScanReport_[hostname]_[date].html