关于安全防护:Klocwork部署的安全最佳实践

6次阅读

共计 5390 个字符,预计需要花费 14 分钟才能阅读完成。

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 2048

openssl 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 der
openssl pkcs12 -export -in myhost.cer -inkey portal.key -out
        myhost_keystore.pfx -name tomcat
  Enter Export Password: changeit
  Verifying - Enter Export Password: changeit
openssl 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 cacerts
keytool -import -alias ldapInter -file inter.cer -keystore cacerts
keytool -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

正文完
 0