ArcGIS Server 中随附用于扫描一些常见安全问题的 Python 脚本工具 serverScan.py。该工具将根据为 ArcGIS Server 配置安全环境的一些最佳做法检查问题。对多个条件或配置属性进行分析并将其划分为三个严重性级别:Critical、Important 和 Recommended。这些标准的描述如下:
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 “系统”文件夹中的任何服务。要确保只有管理员和发布者有权访问“系统”文件夹中的服务,请勿分配任何角色。 |
SS07 | Important | REST 服务目录 | 确定是否可以通过 Web 浏览器访问 REST 服务目录。除非用户正在使用该目录搜索和查找服务,否则应禁用该目录以减少在 Web 搜索中浏览、查找或者通过 HTML 表单查询到您的服务的可能性。这样做还可以加强对跨站点脚本 (XSS) 攻击的防护。 |
SS08 | Important | 跨域限制 | 确定跨域请求是否限制在特定域中。要降低未知应用程序向 Web 服务发送恶意命令的可能性,建议将服务限制为仅供只在信任域中托管的应用程序使用。 |
SS09 | Important | 动态工作空间 | 生成可通过动态工作空间访问数据库的服务列表。如果保护不当,这将导致恶意第三方通过 REST 显示数据库/工作空间进行访问。只有服务和动态图层/工作空间功能用于 Web 应用程序的主动使用时才应启用动态工作空间。在这些情况下,重要的是确保由地图服务用于连接至工作空间/数据库的数据库连接具备应用程序所需的最低权限,例如,在所需工作空间范围内仅对其他表格的只读权限。 |
SS10 | Recommended | 通过 HTTPS 注册 Web Adaptor | 确定是否通过 HTTPS 注册一个或多个 Web Adaptor。要允许 Server Manager 成功地重定向到 HTTPS,则必须通过 HTTPS 注册所有 Web Adaptor。 |
SS11 | Recommended | 禁用 PSA 帐户 | 确定是否启用主站点管理员帐户。建议您禁用该帐户以确保除了通过在标识存储中指定的组或角色之外,无法采用其他方式管理 ArcGIS Server。 |
SS12 | Recommended | 要素服务权限 | 返回启用 update 或 delete 选项并支持匿名访问的要素服务列表。此操作允许在不进行验证的情况下更改或删除要素服务数据。 |
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 | 系统服务共享 | 确定是否已将“系统”文件夹中的任何服务作为门户项目进行了共享。为确保具有适当的权限,不应通过门户共享这些服务。建议移除关联的门户项目以恢复默认服务权限。 |
serverScan.py 脚本位于 <ArcGIS Server installation location>\tools\admin 目录中。 从命令行或 shell 运行脚本。可以选择在运行脚本时指定参数。
serverScan.py 参数
参数 | 描述 |
---|---|
-n | 安装服务器的计算机的完全限定域名(即:gisserver.domain.com)。默认为运行脚本的计算机的主机名。 |
-u | 管理员帐户的用户名。 |
-p | 管理员帐户的密码。 |
-o | 将用于保存安全扫描报告的目录。默认目录与从中运行脚本的文件夹相同。 |
-t | 可以生成一个令牌并用其代替用户名和密码。如果为联合服务器生成门户令牌,则应在“Webapp URL”字段中输入正在扫描的服务器的完全 限定域名。如果为非联合服务器生成令牌,则必须通过管理员目录 (arcgis/admin/generate Token) 生成且客户端必须是“请求 IP”。提供令牌时,它会覆盖提供的任何用户名或密码。 |
--ignoressl | 禁用 SSL 证书验证。自 10.7.1 起,默认情况下,脚本将尝试验证所有 SSL 证书。如果 Python 不信任证书的发行机构,则脚本将无法完成。如果需要,可以指定此参数以忽略所有证书。 |
-h 或 -? | 输出一个列表,其中包含在运行脚本时可指定的参数。 |
示例:python serverScan.py -n gisserver.domain.com -u admin -p my.password -o C:\Temp
如果在不指定任何参数的情况下运行 serverScan.py 脚本,系统将提示您手动输入或选择默认值。如果您希望使用令牌,则在运行脚本时必须将其作为参数提供。
扫描会生成 HTML 格式的报告,该报告将列出在指定的 ArcGIS Server 站点中发现的上述任何问题。
默认情况下,该报告将保存在从中运行脚本的同一个文件夹中并命名为 serverScanReport_[hostname]_[date].html。