共计 5390 个字符,预计需要花费 14 分钟才能阅读完成。
Klocwork 是一款动态代码剖析和 SAST 工具,实用于 C、C++、C#、Java、JavaScript、Python 和 Kotlin,可辨认软件安全性、品质和可靠性问题,帮忙强制恪守规范。
浏览本文,您将理解 Klocwork 的设置步骤,助力您实现平安的最佳实际。如需理解更多对于 Klocwork 的信息,请分割 Perforce 受权合作伙伴——龙智。
在装置任何基于 web 的应用程序时,都必须遵循平安最佳实际。本文概述了设置 Klocwork 的步骤,这是一款动态剖析和 SAST 工具,旨在实现平安操作。Klocwork 通常本地部署,并且位于防火墙之后。如有可能在互联网上裸露任何内容,则需采取额定的预防措施。
平安最佳实际与 Klocwork 概述
Klocwork 门户可接管剖析后果,用以制作对于合规、趋势和问题细节的总体报告。您登录后能够查看报告、进行问题分类并配置剖析设置。此外,Klocwork 门户部署在本地或云上,可在裸机、虚拟机或容器中运行。
通过配置 Klocwork 的开箱即用身份验证和平安设置,能够不便地在测试设置中进行设置并尽快相熟 Klocwork,但在生产环境中应用时,此时门户要解决重要数据,则须要更改其配置。
需配置的要害方面包含:
- 移至 HTTPS (SSL/TSL 设置)
- 关上选择性端口和路由
- 验证和 SSO
从平安角度而言,以下是 Klocwork 组件。为简略起见,这些是默认端口号,而所有的端口号都是可配置的。
△ 采纳一或两个虚拟机的典型 Klocwork 服务布局
Klocwork 的服务器端组件能够驻留在同一个虚拟机上,或者许可证服务能够运行在独自的虚拟机上。然而必须关上以下三个端口:
- 许可服务共用 (27000)
- 许可服务 Klocwork 守护程序(33133)
- Klocwork 门户 (443)
配置客户端工具时须要应用许可服务公共端口和 Klocwork 门户端口。
SSL/TSL
对 Klocwork 门户和 Klocwork 客户端工具或浏览器之间的通信进行加密的根本技术有两种:
- 应用反向代理
- 为 SSL/TSL 配置 Klocwork 门户
应用反向代理通常是 IT 部门的抉择,因为他们相熟它们的装置和配置,并且成果良好。如果您心愿在 Linux 主机的 443 端口上部署 Klocwork 门户,则须要一个反向代理。
配置 Klocwork 自身作为 SSL/TSL (https)服务运行,能够通过以下三个简略的步骤实现:
- 为运行 Klocwork 门户的主机向企业签名受权机构索取一个签名的 SSL/TSL 证书。在期待期间,您能够应用由 kwauthconfig 生成的未签名证书。
- 运行 kwauthconfig,配置用于 https 连贯的门户。
- 告诉用户应用 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 的平安范例很简略,配置步骤如下:
- 配置 SSL / TSL
- 凋谢特定端口和门路
- 启用身份验证
采纳这些配置步骤后,您曾经:
- 管制接入点
- 加密门户和客户端工具间传输的所有数据和用户凭据
- 管制哪些用户能够拜访门户数据
作者简介:
John Chapman | 征询经理
John Chapman 领有超过 30 年的软件开发和治理教训。他目前在 Klocwork Professional Services 负责征询经理。
文章起源:https://bit.ly/3yhaeCp
如需体验 Klocwork SAST 如何帮忙您确保软件平安,请分割 Perforce 受权合作伙伴——龙智:
电话:400-775-5506
邮箱:marketing@shdsd.com