Klocwork部署的安全最佳实践

2023-11-06

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安装包含了/_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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Klocwork部署的安全最佳实践 的相关文章

  • 如何防护零日攻击

    零日攻击是什么 零日攻击 也称为零时差攻击 通常是指利用还没有被补丁的安全漏洞进行的攻击 这些漏洞在被发现后 由于各种原因 软件供应商未能及时发布补丁 使得黑客有机会利用这些漏洞进行攻击 零日攻击通常由技术高超的黑客发起 他们在对目标系统或
  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

    0x01 产品简介 SpiderFlow是新一代爬虫平台 以图形化方式定义爬虫流程 以流程图的方式定义爬虫 不写代码即可完成爬虫 是一个高度灵活可配置的爬虫平台 0x02 漏洞概述 SpiderFlow爬虫平台src main java o
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • 在 Unix 上的 Perforce 中,如何添加符号链接目录?

    我在 Unix 中创建了一个符号链接目录 我想将其添加到 perforce 这个问题与 Unix 上的符号链接有关 Windows 符号链接的行为与 Unix 非常不同 http en wikipedia org wiki Symbolic
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • ai_socktype 不支持 Servname

    我正在使用 Vagrant 运行 Centos 虚拟机 机器似乎运行正常 但是当我尝试同步 Perforce 时 我可以看到以下错误 vagrant vagrant c5 x86 64 perforce p4 sync f Perforce
  • 如何创建私有远程perforce分支并推送到它?

    熟悉git 第一次使用perforce 我正在开发自己的功能 我不想将其推送到主线远程存储库 我需要类似 git 远程分支的东西 其中 我可以提交我的更改 就像是git commit 我可以推送到不合并的远程私有分支 就像是git push
  • 如何使用 Perforce 设置文件权限位

    我注意到有一些文件的其他位被关闭 例如 签入 Perforce 时权限设置为 550 我希望每个人都可以阅读和 或执行它们 用 ls l 的说法来说 文件的权限如下所示 签入 r xr x 签出 rwxr x 我尝试设置修改555在做之前p
  • 当出现客户端未知错误时如何在 Perforce P4 中设置客户端根

    突然 当我跑步时p4 info在终端中 我注意到客户端根目录未设置 不知道为什么它突然被取消设置 以下是输出 其中显示 客户端未知 代替客户端根目录 我可以通过什么命令设置一样吗 我试过了p4 client and p4 set但可能是 语
  • 自定义 Perforce RCS 关键字扩展的输出

    我想使用 RCS 关键字扩展来过滤文件 以便 Change 被翻译成1745而不是默认行为 Change 1745 我意识到这会阻止未来的扩展 但就目的而言这是可以接受的 也欢迎使用其他将更改列表编号插入文件的方法 这是我在 Perforc
  • 有类似于 Perforce 的 git-svn 的东西吗?

    有没有一个工具可以让我获得与 Perforce 的 git svn 相同的功能 我在 github 上看到了 git p4 但看起来像是将源代码从 git 存储库导入到 Perforce 存储库 情况是否会反过来呢 它是用作常用工具还是仅用
  • p4和git之间有双向桥吗?

    是否有一个好的 可靠且自动化的 方法来为多个用户在 perforce 和 git 之间移动 git 更改 git p4 似乎可以很好地处理单用户情况 但我正在寻找多用户选项 目前 我们正在从多种不同的源代码控制系统转向单一的源代码控制系统
  • 如何在命令行中更改现有变更列表的描述?

    命令 p4change 会提示编辑器并需要一个表单 但我想在命令行中执行此操作 我怎样才能实现这个目标 使用以下命令 p4 更改 u CL number 欲了解详情 请访问这一页 http www perforce com perforce
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde

随机推荐

  • 【C++】【python】【kafka】使用C++调用python函数向kafka发送消息

    1 python操作kafka的代码 import sys import time import json from kafka import KafkaProducer from kafka import KafkaConsumer fr
  • (数据结构)顺序表操作——C实现

    线性表的顺序表示指的是用一组地址连续的存储单元 内存 依次存储线性表的数据元素 特点 逻辑相邻 物理也相邻 支持存放 插入 删除 修改 读取数据等操作 一位数组是一种特殊的顺序表 但顺序表不是数组 插入和删除较链表来说不太方便 固定大小的顺
  • 常见的一些医疗图像处理步骤

    一 数据格式 1 1 dicom DICOM是医学图像中标准文件 这些文件包含了诸多的元数据信息 比如像素尺寸 每个维度的一像素代表真实世界里的长度 此处以kaggle Data Science Bowl 数据集为例 data scienc
  • 一、C++应用:wxWidget绘图基础

    1 wxWidget绘图基础 1 1 实现窗口 wxWidgets窗口程序需要四个必须的部分 1 添加一个继承wxApp的应用程序类 2 添加一个继承wxFrame的框架类 3 重载wxApp OnInit 成员函数 并在其中创建框架类的对
  • 毕业设计-基于深度学习火灾烟雾检测识别系统-yolo

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • 基于STM32F103单片机的智能农场温室大棚光照温度土壤湿度检测系统

    系统功能设计 末尾附文件 本系统由STM32F103C8T6单片机核心板 LCD1602液晶显示 光照检测 土壤湿度传感器 风扇控制 继电器控制 高亮LED灯补光 按键控制组成 1 通过光敏电阻检测光照强度AD转换后给系统显示 将光照强度值
  • 经典的Python爬虫和网络编程面试题

    1 动态加载又对及时性要求很高怎么处理 Selenium Phantomjs 尽量不使用 sleep 而使用 WebDriverWait 2 分布式爬虫主要解决什么问题 1 ip 2 带宽 3 cpu 4 io 3 什么是 URL URL
  • UG NX导出2D图纸

    创建图纸 1 同时按下ctrl shift D进入制图页面 点击左上角 新建图纸页 选择视图创建向导调整视图 2 方向 gt 定制的视图 然后指定一个面 点击 完成 导出2D图纸 文件 gt 导出AutoCAD DXF DWG 退出制图 同
  • 【Leetcode041】 最大子数组和

    53 最大子数组和 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 示例 1 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数
  • Maven仓库(仓库配置) 配置好你的仓库~

    文章目录 远程仓库的配置 远程仓库的认证 部署至远程仓库 镜像配置 远程仓库的配置 Repositories元素下 可以用repository 子元素声明一个或者多个远程仓库 id 远程仓库的ID 必须唯一 maven自带的中央仓库的id为
  • 使用 OpenSSH 从 PC 机传送文件到CPU板时,CPU板和虚拟机不在一个ip网段无法通信

    本人也是萌新小白 这里主要分享一下自己调试过程中遇到的问题和解决方法 希望能帮到大家 gt lt 项目场景 从PC机的虚拟机的Ubuntu系统传输文件到CPU板系统 问题描述 1 首先是CPU板系统连接不到PC机的网络 2 CPU板系统和P
  • XML - insert

    XML insert 属性 属性 描述 id 命名空间中的唯一标识符 可被用来代表这条语句 parameterType 将要传入语句的参数的完全限定类名或别名 这个属性是可选的 因为 MyBatis 可以通过 TypeHandler 推断出
  • vue项目报错in ./src/app.vue?vue&type=style&index=0&lang=less

    原因 less和less loader版本号过高 解决 先删除原来的再重新安装 npm uninstall less loader npm uninstall less npm install less loader 4 1 0 D npm
  • flutter 设置状态栏的颜色,背景appBar: AppBar( elevation: 0.5, brightness: Brightness.light,

    在有AppBar的界面 状态栏一般有Brightness dark 和Brightness light两种模式 分别是白色的导航栏字体颜色和黑色的字体颜色 appBar AppBar elevation 0 5 brightness Bri
  • 【数据结构】单链表详解

    当我们学完顺序表的时候 我们发现了好多问题如下 中间 头部的插入删除 时间复杂度为O N 增容需要申请新空间 拷贝数据 释放旧空间 会有不小的消耗 增容一般是呈2倍的增长 势必会有一定的空间浪费 例如当前容量为100 满了以后增容到200
  • java混编

    java里面总共有八种基本数据类型 其分别为 byte short char int long float double Boolean 其他都是引用数据类型 而引用数据类型是以对象的形式存在 基本数据类型都可以直接进行运算 没必要先换算成
  • [Python人工智能] 十七.Keras搭建分类神经网络及MNIST数字图像案例分析

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了Keras环境搭建 入门基础及回归神经网络案例 本篇文章将通过Keras实现分类学习 以MNIST数字图片为例进行讲解 基础性文章 希望对您有所
  • 将时间戳转换成标准时间格式

    标准时间格式 2023 02 01 15 08 56 如果是要转成 2023 02 01 15 08 56 将下列代码拼接的字符串 改成 即可 毫秒时间戳转换时分秒 毫秒时间戳为16位 export function getLocalTim
  • [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密

    最近开始学习网络安全相关知识 接触了好多新术语 感觉自己要学习的东西太多 真是学无止境 也发现了好几个默默无闻写着博客 做着开源的大神 接下来系统分享一些网络安全的自学笔记 希望读者们喜欢 上一篇文章分享了解BurpSuite工具的安装配置
  • Klocwork部署的安全最佳实践

    Klocwork是一款静态代码分析和SAST工具 适用于 C C C Java JavaScript Python和Kotlin 可识别软件安全性 质量和可靠性问题 帮助强制遵守标准 阅读本文 您将了解Klocwork的设置步骤 助力您实现