写点什么

Klocwork 部署的安全最佳实践

  • 2022 年 7 月 11 日
  • 本文字数:4146 字

    阅读完需:约 14 分钟

Klocwork部署的安全最佳实践

Klocwork 是一款静态代码分析和 SAST 工具,适用于 C、C++、C#、Java、JavaScript、Python 和 Kotlin,可识别软件安全性、质量和可靠性问题,帮助强制遵守标准。


阅读本文,您将了解 Klocwork 的设置步骤,助力您实现安全的最佳实践。如需了解更多关于 Klocwork 的信息,请联系Perforce授权合作伙伴——龙智


在安装任何基于 web 的应用程序时,都必须遵循安全最佳实践。本文概述了设置 Klocwork 的步骤,这是一款静态分析和 SAST 工具,旨在实现安全操作。Klocwork 通常本地部署,并且位于防火墙之后。如有可能在互联网上暴露任何内容,则需采取额外的预防措施。


安全最佳实践与 Klocwork 概述


Klocwork 门户可接收分析结果,用以制作关于合规、趋势和问题细节的总体报告。您登录后可以查看报告、进行问题分类并配置分析设置。此外,Klocwork 门户部署在本地或云上,可在裸机、虚拟机或容器中运行。



通过配置 Klocwork 的开箱即用身份验证和安全设置,可以方便地在测试设置中进行设置并尽快熟悉 Klocwork,但在生产环境中使用时,此时门户要处理重要数据,则需要更改其配置。


需配置的关键方面包括:


  1. 移至 HTTPS (SSL/TSL 设置)

  2. 打开选择性端口和路由

  3. 验证和 SSO


从安全角度而言,以下是 Klocwork 组件。为简单起见,这些是默认端口号,而所有的端口号都是可配置的。



△ 采用一或两个虚拟机的典型 Klocwork 服务布局


Klocwork 的服务器端组件可以驻留在同一个虚拟机上,或者许可证服务可以运行在单独的虚拟机上。但是必须打开以下三个端口:


  1. 许可服务共用 (27000)

  2. 许可服务 Klocwork 守护程序(33133)

  3. Klocwork 门户 (443)


配置客户端工具时需要使用许可服务公共端口和 Klocwork 门户端口。


SSL/TSL


对 Klocwork 门户和 Klocwork 客户端工具或浏览器之间的通信进行加密的基本技术有两种:


  1. 使用反向代理

  2. 为 SSL/TSL 配置 Klocwork 门户


使用反向代理通常是 IT 部门的选择,因为他们熟悉它们的安装和配置,并且效果良好。如果您希望在 Linux 主机的 443 端口上部署 Klocwork 门户,则需要一个反向代理。


配置 Klocwork 本身作为 SSL/TSL (https)服务运行,可以通过以下三个简单的步骤完成:


  1. 为运行 Klocwork 门户的主机向企业签名授权机构索取一个签名的 SSL/TSL 证书。在等待期间,您可以使用由 kwauthconfig 生成的未签名证书。

  2. 运行 kwauthconfig,配置用于 https 连接的门户。

  3. 通知用户使用 https,并使用“使用安全连接”和新的端口号更新 IDE 的 Klocwork 插件配置。


请求已签名的 SSL/TSL 证书


下面是生成密钥对和证书签名请求文件(.csr)的 openssl 命令示例。只有 portal.csr 文件会发送到签名机构。


openssl genrsa -out portal.key 2048openssl req -new -key portal.key -out portal.csr Country Name (2 letter code) []: US State or Province Name (full name) []: Minnesota Locality Name (eg, city) []: Minneapolis Organization Name (eg, company) []: mycompany Inc. Organizational Unit Name (eg, section) []: Defense Common Name (eg, your server's hostname) []: klocwork.mycompany.com Email Address []: me@mycompany.com
复制代码

收到的证书文件格式可能不同。它可能包含主机的证书、任何中间证书和签名机构的根证书。如果它只包含主机证书,则需要手动下载中间证书和根证书。需要将私钥与所有这些证书结合起来,形成密钥存储库。


下面是接收到 p7b 文件时 openssl 命令的一个示例。


openssl pkcs7 -print_certs -in myhost.p7b -out myhost.cer -inform deropenssl pkcs12 -export -in myhost.cer -inkey portal.key -out myhost_keystore.pfx -name tomcat Enter Export Password: changeit Verifying - Enter Export Password: changeitopenssl pkcs12 -nokeys -info -in myhost_keystore.pfx
复制代码


密码和名称是 Klocwork 门户使用的默认值,但您也可以使用其他名称。之后需要手动编辑 projects_root/tomcat/conf/server.template 文件中的 tomcat 服务器配置信息。最后一个命令输出用于验证的密钥库内容。


输出文件 myhost_keystore.Pfx 是 pkcs12 密钥库,必须拷贝到 projects_root/tomcat/conf/.keystore,以便 Klocwork 门户找到它。


用于 LDAP 服务器的 SSL/TSL 连接


当使用 SSL/TSL 连接到 LDAP 服务器(即 ldaps://…),这是推荐的做法,服务器的证书必须保存在门户的信任存储(<Klocwork 服务器安装>/_jvm/lib/security/cacerts)。Klocwork 安装包含了<Klocwork install>/_jvm/bin/keytool 实用工具,可用于这个任务。例如:


keytool -import -alias ldaproot -file rootca.cer -keystore cacertskeytool -import -alias ldapInter -file inter.cer -keystore cacertskeytool -import -alias ldap -file ldap.cer -keystore cacerts
复制代码


运行 kwauthconfig


虽然可以手动编辑 projects_root/config/admin.conf 和 projects_root/tomcat/conf/server.template 文件,但更轻松的选择通常是使用 GUI 工具 kwauthconfig。


如果您的 Klocwork 门户服务托管在 Linux 操作系统上,没有桌面,那么您将需要使用 X11 服务器。kwauthconfig 包含在 Klocwork 服务器安装包中。


Kwauthconfig 还用于配置门户进行身份验证和电子邮件通知。下面的示例只关注 SSL/TSL 配置。


非常重要


  • 在修改配置前停止 Klocwork 门户服务

  • 复制您的密钥存储库(例如 myhost_keystore.pfx)到 projects_root/tomcat/conf/。如果密钥存储库可用,则在启动 kwauthconfig 之前进行密钥存储。如果没有.keystore 文件,那么 kwauthconfig 将创建一个未签名的证书。


Kwauthconfig 将上次的 projects_root 配置数据或提示输入 projects_root 目录。





如果将密钥存储库复制到.keystore,则主机名、组织单元和组织字段可以留空。只有主机名是关键的,它必须与承载门户的机器的主机名匹配。大多数安装不需要智能卡身份验证,但是,如果选择了智能卡,您必须提供客户端证书的信任储存库的位置和密码。


kwauthconfig 不需要其他数据便可完成 SSL/TSL 设置。点击“Next”,接着可以点击“Finish”,然后点击“OK”,从而退出 kwauthconfig。


或者,您也可以选择在启动服务之前更改 Klocwork 门户端口。


例如,要从默认的 8080 端口切换到 443 端口,可以使用以下命令:

kwservice -r projects_root set-service-property klocwork port 443
复制代码


启动数据库和 Klocwork 服务,浏览 https://hostname:port。


通知 Klocwork 用户


最后一步是通知 Klocwork 用户,让他们可以用新的 https url 更新脚本,并在 IDE Klocwork 插件选项/首选项中勾选“使用安全连接”复选框。



打开端口和路径


安装 Klocwork 需要:


  • 三个入站连接端口

  • 内部数据库端口

  • 可选的到三个远程服务器进行身份验证(如 Active Directory/LDAP)的路径,发送电子邮件通知,并将数据导出到 bug 跟踪应用


客户端工具和许可/门户服务之间的任何防火墙都必须为 TCP/IP 连接打开 27000、33133 和 8080 端口。入站连接不使用其他端口。


这些端口号可以使用 kwservice 命令进行配置,对于许可证端口,在许可证文件中指定。


例如:

kwservice –projects-root <projects_root> set-service-property klocwork port 443
复制代码


一个典型的重新分配方式是针对 SSL/TSL 使用 443 端口,以便连接到 Klocwork 门户。如果门户运行在 Windows 操作系统上,这将很容易做到:只需使用 kwservice 命令。在 Linux 操作系统下,您将需要使用端口 443,或者对于端口 443,使用一个反向代理,因为端口 443 是一个保留端口,Klocwork 门户不能作为 root 运行。


此外,Klocwork 门户需要出站连接到身份验证服务器,用于电子邮件通知的 SMTP 服务器和 bug 跟踪服务器(例如 JIRA)。这些外部服务器必须配置为接受来自 Klocwork 门户的连接。


数据库端口(默认为 3306 端口)必须不能被外部应用所访问。


身份验证


Klocwork 的开箱即用身份验证配置是“身份验证禁用”。这对于初始设置和测试来说非常棒,但不适用于生产环境。因为任何人每次登录都会自动创建一个帐户。


相反,你应该使用下一个更高的身份验证配置,“Basic”。在这种模式下,只有那些拥有 Klocwork 门户用户账号的用户才能登录。


第一个帐户使用安装服务器包的用户名自动创建。要启用基本身份验证,必须进入门户,单击 Users 页面上的 authentication Disabled 链接。




在“认证禁用”和“Basic”模式下,Klocwork 维护一个用户和组数据库。用户在项目或所有项目中会被分配角色,这限制了他们在登录时可看到的内容和操作。


为提高身份验证的安全性,可使用外部用户数据库。Klocwork 同时支持 NIS 和 LDAP 服务器。Klocwork 还可以配置为 Windows 上 Active Directory 用户的单点登录。配置 Klocwork 门户使用外部用户数据库是通过 kwauthconfig 完成的。


Kwauthconfig 在检测 Active Directory 服务器时提供默认配置。这作为初始配置很好,但是如果外部数据库中的用户数量很大,那么最好细化用户和组过滤器以减少响应时间。


kwauthconfig 的关键对话框有:


1.访问服务器的设置,包括登录服务器的用户帐户。理想情况下,使用具有长期密码的服务帐户。cacerts 的默认密码是“changeit”。



2.定制提供商和过滤器。在本例中,用户过滤器已设置为“(&(objectCategory=person)(sAMAccountName=*)(memberOf=CN=KlocworkUsers,OU=Groups,DC=klocwork,DC=com))”。


这就要求用户必须是 Klocwork Users Active Directory 安全组的成员。最好与您的 IT 部门合作,优化认证服务和过滤器设置,以减轻 LDAP 服务器和 Klocwork 门户上的工作负载。



3.指定要检索的属性。


在本例中,可以使用用户的 cn 或 sAMAccountName 属性值登录。最左边的 User Attribute 用于显示用户名,并在 users 门户页面中搜索用户。如果有多个用户具有相同的 cn 值,最好先指定一个唯一的属性。



4.点击“Finish”完成配置设置。要测试服务器连接,请单击“测试连接”。



有两个高级设置需要手动编辑配置文件 projects_root/config/admin.conf。它们可以添加到任何位置。



安全范例与 Klocwork 回顾


Klocwork 的安全范例很简单,配置步骤如下:

  1. 配置 SSL / TSL

  2. 开放特定端口和路径

  3. 启用身份验证


采用这些配置步骤后,您已经:


  1. 控制接入点

  2. 加密门户和客户端工具间传输的所有数据和用户凭据

  3. 控制哪些用户可以访问门户数据


作者简介:


John Chapman  |  咨询经理


John Chapman 拥有超过 30 年的软件开发和管理经验。他目前在 Klocwork Professional Services 担任咨询经理。


文章来源:https://bit.ly/3yhaeCp

如需体验 Klocwork SAST 如何帮助您确保软件安全,请联系Perforce授权合作伙伴——龙智

电话:400-775-5506

邮箱:marketing@shdsd.com

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
Klocwork部署的安全最佳实践_klocwork_龙智—DevSecOps解决方案_InfoQ写作社区