greenbone/gsa
GitHub: greenbone/gsa
Greenbone 漏洞管理平台的 React 前端界面,提供扫描任务管理、报告查看和系统配置功能。
Stars: 253 | Forks: 113

# Greenbone Security Assistant
[](https://github.com/greenbone/gsa/releases)
[](https://codecov.io/gh/greenbone/gsa)
[](https://github.com/greenbone/gsa/actions/workflows/ci-js.yml?query=branch%3Amain++)
Greenbone Security Assistant 是为
[Greenbone Enterprise 设备](https://www.greenbone.net/en/product-comparison/)
开发的 Web 界面,使用 [React](https://reactjs.org/) 编写。
- [发布版本](#releases)
- [安装](#installation)
- [开发](#developing)
- [翻译](#translations)
- [格式](#format)
- [更新](#updating)
- [支持新语言](#support-a-new-language)
- [设置](#settings)
- [配置文件](#config-file)
- [配置变量](#config-variables)
- [vendorVersion](#vendorversion)
- [vendorLabel](#vendorlabel)
- [vendorTitle](#vendortitle)
- [guestUsername 和 guestPassword](#guestusername-and-guestpassword)
- [disableLoginForm](#disableloginform)
- [enableCommunityFeedNotification](#enablecommunityfeednotification)
- [enableEPSS](#enableepss)
- [enableKrb5](#enablekrb5)
- [enableStoreDebugLog](#enablestoredebuglog)
- [logLevel](#loglevel)
- [timeout](#timeout)
- [apiServer](#apiserver)
- [apiProtocol](#apiprotocol)
- [manualUrl](#manualurl)
- [manualLanguageMapping](#manuallanguagemapping)
- [protocolDocUrl](#protocoldocurl)
- [reloadInterval](#reloadinterval)
- [reloadIntervalActive](#reloadintervalactive)
- [reloadIntervalInactive](#reloadintervalinactive)
- [reportResultsThreshold](#reportresultsthreshold)
- [severityRating](#severityrating)
- [支持](#support)
- [维护者](#maintainer)
- [贡献](#contributing)
- [许可证](#license)
## 发布版本
所有 [发布文件](https://github.com/greenbone/gsa/releases) 均使用
[Greenbone Community Feed 完整性密钥](https://community.greenbone.net/t/gcf-managing-the-digital-signatures/101) 进行签名。
此 gpg 密钥可从 https://www.greenbone.net/GBCommunitySigningKey.asc 下载,
指纹为 `8AE4 BE42 9B60 A59B 311C 2E73 9823 FAA6 0ED1 E580`。
## 安装
GSA 的前置条件:
- node.js >= 20.0
要安装 nodejs,可以使用以下命令
```
export VERSION=20
export KEYRING=/usr/share/keyrings/nodesource.gpg
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null
gpg --no-default-keyring --keyring "$KEYRING" --list-keys
echo "deb [signed-by=$KEYRING] https://deb.nodesource.com/node_$VERSION.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/node_$VERSION.x nodistro main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list
sudo apt update && sudo apt install nodejs
```
进入 gsa 源代码目录并删除可能存在的构建输出
目录。
```
cd path/to/gsa
rm -rf build
```
安装 JavaScript 依赖并启动构建过程。构建过程
会创建一个包含 GSA 生产构建的 `build` 目录。`build/img` 目录
将包含徽标和横幅等图像。`build/static` 目录将包含
生成的 JavaScript 和 CSS 文件,此外,在 `build/static/media`
目录中可以找到所有图标的 SVG 文件。
```
npm install
npm run build
```
生产构建的所有内容可以通过任何 Web 服务器提供。如果
通过我们的 [gsad Web 服务器](https://github.com/greenbone/gsad/) 提供 GSA,则在
构建 `gsad` 时,需要将文件复制到所选 `CMAKE_INSTALL_PREFIX` 目录的
`share/gvm/gsad/web/` 子目录中。通常这
设置为 `/usr` 或 `/usr/local`。
```
mkdir -p $INSTALL_PREFIX/share/gvm/gsad/web/
cp -r build/* $INSTALL_PREFIX/share/gvm/gsad/web/
```
如果您不熟悉或不习惯从源代码构建,我们建议
您使用 Greenbone Enterprise TRIAL,这是一个预先配置好的虚拟机,
可以直接使用。关于该虚拟机的信息
可在 找到。
## 开发
使用 GSA 需要重新构建 JavaScript bundle。此过程非常
耗时,因此在开发过程中应避免。可以
在特殊的 Web 开发服务器中运行 GSA。可以使用以下命令启动开发服务器:
```
cd path/to/gsa && npm run start
```
之后,开发 Web 服务器将建立,并在
URL `http://127.0.0.1:8080` 打开一个新的浏览器窗口,其中包含 GSA Web 应用程序。
当 src 文件夹中的 GSA JavaScript 文件发生更改时,浏览器窗口
将自动重新加载。
除了开发服务器外,[gsad] 也需要启用 CORS 运行。
```
gsad --http-cors="http://127.0.0.1:8080"
```
为了能够与 gsad 通信,Web 应用程序需要知道
服务器 URL。这可以通过编辑 [`path/to/gsa/public/config.js`
文件](#config-file) 来完成。以下几行可用于在端口 9392 上使用
HTTP 运行的本地 gsad:
```
config = {
apiProtocol: 'http',
apiServer: '127.0.0.1:9392',
};
```
对于 HTTPS,只需将协议属性相应地设置为 `'https'`。
更改 `config.js` 文件后,应手动重新加载
浏览器窗口。
## 翻译
对于翻译和国际化,使用 [i18next](https://www.i18next.com/)。
利用 [我们的 i18next 配置](./src/gmp/locale/lang.js#L45),
翻译存储在特定语言的 JSON 文件中。现有的
翻译可以在 [public/locales/](./public/locales/) 目录中找到。
### 格式
翻译以键值对的形式存储在 JSON 文件中,其中
键是英文字符串,值是特定语言的翻译。
未翻译的字符串具有空字符串 `""` 作为值。
德语翻译示例:
```
{
"Create a new Tag": "Einen neuen Tag erstellen",
"Create a new Target": "Ein neues Ziel erstellen",
"Create a new Task": ""
}
```
### 更新
要更改或扩展翻译,可以将新值添加到特定的 JSON
文件中,提交到 git,最后通过 pull request 上传到 GitHub。
但有时 UI 会发生变化,添加了新的英文描述或现有的
描述被重新措辞。在这种情况下,必须从
源代码中提取新键并将其添加到 JSON 文件中。这可以通过运行以下命令完成
```
npm run i18n-extract
```
新的翻译字符串以空字符串 `""` 作为默认值添加。
因此,搜索空字符串将找到需要翻译的值。
### 支持新语言
当前支持的语言列在 [src/gmp/locale/languages.js](./src/gmp/locale/languages.js#L23) 中。
如果 Web UI 中应该有新语言可用,则需要在此
对象中添加一个条目。此外,必须将相应的语言代码添加到
[i18next-parser.config.js](./i18next-parser.config.js) 中。
## 设置
GSA 的行为可以通过设置进行更改。所有设置都可以
通过配置文件进行调整。有些设置也可以在运行时
更改。其中一些在重新加载后保持不变,有些在重新加载后重置。
本节列出所有设置并解释其行为。
### 配置文件
配置文件是一个普通的 JavaScript 文件(后缀为 .js)。其名称为
`config.js`,在使用 [gsad] 提供 GSA 时(例如在生产环境中),
将从 `/usr/share/gvm/gsad/web/`(或
`/usr/local/share/gvm/gsad/web/`)目录加载。
在开发过程中,当使用即时转译 JavaScript 开发
服务器(通过 `npm run start`)时,文件从 `public/` 目录加载。
`config.js` 文件必须包含一个全局配置对象,其中设置作为
属性,例如
```
config = {
// javascript files in contrast to JSON files allow comments
foo: 'bar',
};
```
它在 [settings.ts](./src/gmp/settings.ts) 文件中实现的
`Settings` 对象中进行评估。`Settings` 对象
为 [GSA 应用程序](./src/web/App.tsx#L29) 实例化一次。
### 配置变量
| 名称 | 类型 | 默认值 | 运行时可更改 | 重新加载后保持 |
| ------------------------------------------------------------------- | -------------------------- | ----------------------------------------------------------------------------- | ------------------------- | ----------------------- |
| [apiProtocol](#apiprotocol) | String ('http' 或 'https') | `global.location.protocol` | - | x |
| [apiServer](#apiserver) | String | `global.location.host` | - | x |
| enableGreenboneSensor | Boolean | false | - | x |
| [disableLoginForm](#disableloginform) | Boolean | false | - | x |
| [enableCommunityFeedNotification](#enablecommunityfeednotification) | Boolean | true | x | x |
| [enableEPSS](#enableepss) | Boolean | true | x | x |
| [enableKrb5](#enablekrb5) | Boolean | false | x | x |
| [enableStoreDebugLog](#enablestoredebuglog) | Boolean | false | x | x |
| [guestUsername](#guestusername-and-guestpassword) | String | undefined | - | x |
| [guestPassword](#guestusername-and-guestpassword) | String | undefined | - | x |
| locale | String | undefined | x | x |
| [logLevel](#loglevel) | String | [`'warn'`](./src/gmp/settings.ts#L27) | x | x |
| [manualUrl](#manualurl) | String | [https://docs.greenbone.net/GSM-Manual/gos-24.10/](./src/gmp/settings.ts#L24) | - | x |
| [manualLanguageMapping](#manuallanguagemapping) | Object | undefined | - | x |
| [protocolDocUrl](#protocoldocurl) | String | [https://docs.greenbone.net/API/GMP/gmp-22.5.html](./src/gmp/settings.ts#L25) | - | x |
| [reloadInterval](#reloadinterval) | Integer | [15 \* 1000; // fifteen seconds](./src/gmp/settings.ts#L21) | x | - |
| [reloadIntervalActive](#reloadintervalactive) | Integer | [3 \* 1000; // three seconds](./src/gmp/settings.ts#L22) | x | - |
| [reloadIntervalInactive](#reloadintervalinactive) | Integer | [60 \* 1000; // one minute](./src/gmp/settings.ts#L22) | x | - |
| [reportResultsThreshold](#reportresultsthreshold) | Integer | [25000](./src/gmp/settings.ts#L26) | x | - |
| [timeout](#timeout) | Integer | [300000; // 5 minutes](./src/gmp/settings.ts#L28) | x | - |
| [severityRating](#severityrating) | `'CVSSv2'` 或 `'CVSSv3'` | `'CVSSv3'` | - | x |
| [vendorVersion](#vendorversion) | String | undefined | - | x |
| [vendorLabel](#vendorlabel) | String | undefined | - | x |
| [vendorTitle](#vendortitle) | String | OPENVAS | x | x |
#### vendorVersion
允许调整登录和关于页面上显示的产品版本字符串。
#### vendorLabel
允许调整登录页面上的产品信息图像。它必须是相对
路径,例如 `foo.png`。该路径将在生产环境中映射到 `$INSTALL_PREFIX/share/gvm/gsad/web/img/`(使用 [gsad]),并在 [开发服务器](#developing) 中映射到 `gsa/public/img`。
#### vendorTitle
允许调整 HTML 标题,即打开 GSA 的浏览器标签页中显示的文本。
#### guestUsername 和 guestPassword
这两个设置允许通过单击登录。必须谨慎设置此用户。
例如,如果此用户是使用管理员权限创建的,则登录后
将拥有这些权限。因此,在创建访客用户时要小心。如果
guestUsername 包含在 `config.js` 文件中,将显示 `Login as Guest` 按钮。
#### disableLoginForm
此设置允许停用登录页面上的用户名密码表单。
它可用于停用*普通*用户的登录。
#### enableCommunityFeedNotification
启用关于使用社区源的通知。默认为
启用。
#### enableEPSS
启用在 CVE 和 VT 中显示 EPSS 分数和百分位。默认为
启用。
#### enableKrb5
启用添加 Kerberos 凭据的功能。
#### enableStoreDebugLog
对此设置的更改在浏览器重新加载期间保持不变。如果
在浏览器控制台中更改了该值,例如通过 `gmp.settings.enableStoreDebugLog = true`,
则需要重新加载浏览器窗口以应用此设置。该设置可以是
`true`、`false` 或 `undefined`。
如果 enableStoreDebugLog 为 `true`,或者它为 `undefined` 且 [logLevel](#loglevel)
为 `debug`,则会显示 redux store 的更改。 包含
用户可见的所有数据。
#### logLevel
logLevel 的值在浏览器重新加载期间保持不变。如果
该值已更改,例如通过在浏览器控制台中运行 `gmp.settings.logLevel = 'debug'`,
则需要重新加载浏览器窗口以应用此设置。此外,必须
通过 `gmp.settings.logLevel = undefined` 重置此设置,以不再显示调试
日志并再次使用默认设置。如果 logLevel 设置为
`'debug'` 且 [enableStoreDebugLog](#enablestoredebuglog) 不为 `false`,则
也会显示 store 调试日志。
#### timeout
此设置指定向 [gsad] 提供的 API 发出数据请求后的超时时间。
默认为 5 分钟 (300000 ms)。
#### apiServer
默认为 `window.location.host`。它包含
[gsad] 服务器的域名/IP 地址,包括端口,例如 `'192.168.10.123:9392'`。
#### apiProtocol
默认为 `window.location.protocol`,必须是 `'http'` 或 `'https'`。
#### manualUrl
手册的 URL。在 Greenbone Enterprise Appliance 上,手册在
本地提供,该值是相对 URL `'/manual'`。该 URL 用于
从帮助图标指向用户手册页面的所有链接。
#### manualLanguageMapping
由于我们拥有的翻译手册数量可能少于可用的语言环境,
因此提供了将语言环境映射到相应翻译
手册的设置。如果当前语言环境未映射,它总是回退到
英语 (`en`) 语言环境。
#### protocolDocUrl
此设置包含公共 Greenbone Management Protocol (GMP)
文档的 URL。它仅在关于页面使用。
#### reloadInterval
重新加载数据的*标准*间隔。默认值为 15 秒
(15000 ms)。
#### reloadIntervalActive
此间隔用于在具有活动进程的页面上重新加载数据。这
目前适用于至少包含一个活动扫描任务的
任务列表页面、任务详细信息页面、报告列表页面
和报告详细信息页面。
默认值为 3 秒 (3000 ms)。
#### reloadIntervalInactive
当 GSA 不是活动浏览器窗口或标签页时,使用此间隔代替 [reloadInterval](#reloadinterval) 或
[reloadIntervalActive](#reloadintervalactive) 来重新加载数据。
默认值为 60 秒 (60000 ms)。
#### reportResultsThreshold
如果显示的报告的过滤结果数量超过此阈值,则
仅加载不含详细信息的报告,并在
主机、端口、应用程序、操作系统、CVE、Close CVE 和 TLS
证书标签页中显示信息面板,提示用户通过
附加过滤来减少结果数量。此设置可用于提高
报告详细信息页面的响应速度。
#### severityRating
定义严重性等级应使用的严重性评级。目前
允许使用值 `CVSSv2` 和 `CVSSv3`。CVSS 版本 3 引入了新的
从 9.0 到 10.0 的*严重 (Critical)* 级别,即 CVSS 版本 2 中的*高 (High)* 级别。
严重性等级用于例如图表中。
## 支持
有关 `gsa` 使用的任何问题,请使用 [Greenbone Community
Portal](https://community.greenbone.net/)。如果您发现软件有问题,
请在 GitHub 上 [创建 issue](https://github.com/greenbone/gsa/issues)。
如果您是 Greenbone 客户,您也可以或者额外将
您的问题转发到 Greenbone Support Portal。
## 维护者
该项目由 [Greenbone AG](https://www.greenbone.net/) 维护。
## 贡献
非常感谢您的贡献。请在 GitHub 上 [创建 pull
request](https://github.com/greenbone/gsa/pulls)。较大的更改需要
先通过 [github 上的 issues 部分](https://github.com/greenbone/gsa/issues) 与开发团队
讨论。
## 许可证
版权所有 (C) 2009-2026 [Greenbone AG](https://www.greenbone.net/)
根据 AGPL-3.0 [GNU Affero General Public License v3.0 or later](LICENSE) 授权。
标签:AES-256, AMSI绕过, CMS安全, Community Edition, GPT, GraphQL引擎检测, Greenbone, GSA, GSVA, IPv6支持, JavaScript, MITM代理, OpenVAS, PB级数据处理, PHP, React, Syscalls, Web前端, 仪表盘, 企业安全, 加密, 威胁检测, 安全运维, 数据可视化, 漏洞扫描器, 漏洞管理, 漏洞评估, 网络安全, 网络空间测绘, 网络资产管理, 自动化攻击, 自动化攻击, 隐私保护