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