保护 Windchill 解决方案的最佳做法
下表提供了一些有助于保护 Windchill 解决方案的基本操作。其中一些操作包括自定义文件。有关自定义最佳做法的详细信息,请参阅 《Windchill 自定义指南》
* 
提供此信息只是为了帮助您完成 Windchill 的安全配置。PTC 不对此处提及的任何第三方产品提供支持,也不对您的安全体系结构负责。
1. 请务必将 Windchill 部署在仅可供受信任用户访问的受控制、受保护且受信任的网络中,其中包括所有已部署的 Windchill 群集。
2. 将 Web 服务器配置为使用 HTTPS。
当 web 应用程序数据在浏览器 (客户端) 和 web 服务器之间传输时,HTTPS 使用安全套接字层/传输层安全性 (SSL/TLS) 防止这些数据在未授权的情况下被泄漏和修改。
有关针对 HTTPS 设置 Web 服务器的详细信息,请参阅为 Apache 和 Windchill 配置 HTTPS
* 
作为安全部署指南,PTC 强烈建议您在安装 Windchill 时配置 HTTP 严格传输安全 (HSTS)。
3. 将用于保护敏感信息的加密密钥长度由 128 位 (默认) 修改为 256 位。有关详细信息,请参阅修改加密密钥长度
4. 通过开启 Oracle 透明数据加密 (TDE) 保护静态数据。加密 Windchill 数据库中的数据可避免通过未授权的访问查看数据。这为您的 IP 提供了额外的一层保护,并减小了 Windchill 解决方案的整体攻击面。
5. 在生产服务器的 Windchill web 可访问目录中移除以下内容:
实施示例
示例代码
API 文档
这些示例包括但不限于:
<Windchill>/codebase/infoengine/docs/apidocs
<Windchill>/codebase/netmarkets/jsp/apiDocs
<Windchill>/codebase/netmarkets/jsp/carambola
<Windchill>/codebase/wt/clients/library
<Windchill>/codebase/wt/clients/filevault/*.doc
<Windchill>/codebase/CustomizerDoc
<Windchill>/codebase/wt/fv/docs
<Windchill>/codebase/com/ptc/core/HTMLtemplateutil/examples
<Windchill>/codebase/config/logicrepository/xml/explorer/structureexplorer/configurablelinksexample
<Windchill>/codebase/CambridgeDocs3/SampleData
<Windchill>/codebase/registry/ixb/samples
其中,<Windchill>Windchill 的安装位置。
6. 保护 WEB-INF 目录。
检查 <Windchill>\codebase\WEB-INF 目录内容以及目录可访问性。Apache 的默认配置应为拒绝从 Web 客户端访问此目录及其内容。不过,建议您执行相关验证以确保目录内容不可访问。要确定 URL 前缀或可能允许访问此目录的模式,请检查 <APACHE_HOME>/conf/conf.d/30-app-Windchill-Auth.conf 文件中的配置。检查并验证是否限制所有已配置的备用 URL 模式的 Web 访问。如果可以访问,请采取相应的纠正措施。有关详细信息,请参阅支持文章 CS375403
a. 要确定此目录是否已打开,请访问 http://<Windchill_URL>/WEB-INF/webapp.properties
b. 如果进行身份验证后显示该文件,则说明目录可访问。
7. 安全 RMI (远程方法调用)。
有关详细信息,请参阅防火墙中的配置指南。
8. 默认启用跨站请求伪造 (CSRF) 保护,使 Windchill 中的数据更改操作免受 CSRF 攻击。有关详细信息,请参阅跨站请求伪造
9. Windchill 解决方案建立加强的密码策略。加强密码具有下列特征:
具有最小密码长度
包含大写字母、小写字母、数字和特殊字符
不包含用户名或组织名
具有到期日期
包括在尝试指定数量的登录后锁定帐户。默认情况下,在一行内连续输入 5 次错误密码后,WindchillDS 将锁定相应帐户。锁定的有效时间为 15 分钟。
10. 更改在加载数据期间创建的默认帐户的密码。它们通常包括 wcadmindemo。设置新密码时,通过下列先前列出的加强密码特征来使用加强密码。
有关详细信息,请参阅用户密码管理选项
11. 当用户离开公司时,将他们从 Windchill 中移除。如果以后其他人将重新使用该用户名,则通过从 Windchill 中完全移除用户,可避免任何问题。可通过下列步骤完全移除用户:
a. 从目录服务中移除用户或移除 Windchill 对用户条目的可见性。
b. “参与者管理”实用程序中,使用“从 Windchill 中删除”操作。
有关从 Windchill 中删除用户的详细信息,请参阅删除用户
12. 确保在 web 服务器上禁用目录列表。出厂时,HTTP Server 不允许使用目录浏览功能。
13. 针对严重事件启用审计。在调查任何可疑活动时,创建已记录事件的常规记录很有价值。出厂时,Windchill 会记录系统使用情况、组织使用情况、下载事件以及任何潜在的 CSRF 事件。
考虑记录下列审计事件:
用户登录
用户注销 (仅适用于基于表单的身份验证)
用户密码更改
所有访问控制修改:
访问权限和策略更改
团队、角色和组的变更
内容添加、删除或移动:
导入
导出
下载
查看表示
跨上下文共享
对象或参与者创建或删除
生命周期状态变更
安全标签修改 (如果启用了安全标签)
有关启用审计事件的信息,请参阅配置审计事件记录
如果启用审计事件日志记录,还应考虑通过移除 Windchill 数据库应用程序用户对所有审计表格的移除删除权限以防止从 Windchill 中清除审计记录。要移除该权限,
a. 使用 Oracle SQLplus 实用程序以数据库管理员身份登录到数据库。
b. 如果尚不存在 Windchill 数据库应用程序用户,请创建一个。可通过执行 <Windchill>\db\sql\create_wc_app_user.sql 脚本创建该用户。
c. 使用以下命令移除 Windchill 数据库应用程序用户对 Windchill 审计表格的“删除”权限:SQL> revoke delete on <WC_db_user>.AuditRecord from <WC_db_user> (其中 <WC_db_user> 为数据库应用程序用户名)。
d. 停止 Windchill 服务器。
e. 在 Windchill shell 中运行以下命令更新具有数据库应用程序用户信息的数据库特性:
xconfmanager -s wt.pom.dbUser=<WC_db_user> -t "db/db.properties"
xconfmanager -s wt.pom.dbPassword=<WC_db_user_password> -t
"db/db.properties"
xconfmanager -p
f. 启动 Windchill 服务器。
14. 为了帮助防范潜在拒绝服务 (DoS) 攻击,请确保对 Windchill 部署强制执行速率限制。PTC 建议,不要仅依赖 Apache 配置来确保强制执行速率限制。
通过使用防火墙 (或其他负载均衡器) 和合适的规则和策略来提高 Windchill 部署的安全性,以控制到达 Apache 的流量。请咨询您的内部安全团队,以确定适用于您的环境的规则和策略。
有关 Windchill 配置中防火墙的详细信息,请参阅防火墙
Apache HTTP Server 提供了安全的配置指南和技巧。有关详细信息,请参阅 Security Tips。在 Windchill 中,Apache 使用默认配置设置。应根据客户需求调整这些设置,但可能不会针对 Windchill 强制执行完全速率限制。
15. 为管理日志考虑以下事宜:
适当地授予日志文件操作系统权限
生成日志统计信息,并在生成日志的服务器之外的服务器上执行日志分析。
监视 web 服务器日志文件的增长情况并调查
任何异常的增大
HTTP 响应错误的异常编号,如 40x 或 50x
实施脚本来实时或在设置的时间间隔后检查日志
仅当对问题进行故障排除时启用生产系统的特定日志记录功能。例如,使用以下步骤将客户端错误日志消息记录到方法服务器日志中:
1. 导航至“站点” > “实用程序” > “服务器状况”“服务器状况”窗口随即打开。
2. 单击“监控工具”链接。“系统健康监控工具”窗口随即打开。
3. 单击“日志级别”链接。
4. 通过以下设置启用日志记录功能:
选择“服务器进程”下的“服务器管理器”“方法服务器”“Servlet 引擎”
“记录器”字段中输入 wt.log4javascript
将日志记录级别设置为“错误”
5. 单击“设置”启用日志记录功能。
故障排除后,将日志记录级别设置为 OFF 来禁用日志记录功能。
使用监视工具分析日志。有关详细信息,请参阅使用监控工具
16. 自定义 Windchill 代码时,请遵守下列安全准则:
保护创建、更新或删除数据操作免受跨站请求伪造攻击。
在 SQL 查询中使用准备好的或参数化的语句。这样可防止 SQL 注入攻击。
考虑来自不可信外部资源的所有数据。如果未对不可信数据进行适当处理,应用程序很容易受到注入攻击。不可信数据的示例包括以下几个:
最初来自用户或外部系统并存储在 Windchill 数据库中的数据。例如,对象名称、数字或说明。
来自客户端的数据 (包括请求参数、表单字段、隐藏字段、查询字符串、HTTP 标头以及 URL)。
最初来自用户或外部系统并存储在 LDAP 中的数据,如用户名。
存储在任何外部数据库中的数据
验证所有不可信数据的数据类型、格式和长度是否正确。不可信数据包括表单字段、查询字符串、HTTP 标题、cookie 以及 URL。
在浏览器 (客户端) 中显示的所有数据上使用基于上下文的适当编码,(如 HTML 编码、JavaScript 编码或 URL 编码),以防止跨站点脚本 (XSS) 攻击。
确保执行 RemoteAccess 的类未略过访问控制、提升权限或不适当地访问文件系统。
删除所有未使用的代码。
有关详细信息,请参阅 OWASP top 10 guidelines (https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project)。
这对您有帮助吗?