关于安全防护: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 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