前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Openvas配置slave的debug之路

Openvas配置slave的debug之路

作者头像
FB客服
发布于 2020-02-20 07:09:45
发布于 2020-02-20 07:09:45
1.2K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

作为安全行业从业者,一定会有一款适合自己的扫描器,在众多开源扫描器中,相信有很多人会选择openvas,绿骨头组织的这款产品因其性能卓越,扩展性强,接入点、接入方式灵活等众多优点,至今已经成为了企业的安全解决方案之一。

这款扫描器有一个非常优秀的功能点,即以GMP协议为支撑,平台支持灵活任务下发。因此这个功能是一定要尝试的,试想当你想对一批目标进行定时扫描或者常规扫描时,你只需要简单的配置,通过web界面或者cli脚本,将任务下发给你的scanner-slave集群,然后坐等收集扫描结果,是不是很爽!

笔者最近在配置openvas的主从服务器时,遇到了一些BUG甚是头疼,磕了很久终于解决,于是记录下来,以防有同道中人掉坑里。

名词扫盲

在配置扫描器的时候,海量的教程,海量的词汇经常让我头晕晕的,比如Openvasmd、gvmd、openvassd、gasd、OMP、GMP等等,首先我们来过一遍这些名词。第三列的重要指数是笔者综合在学习OpenVas的过程中碰到的频率,重要性,困扰性给的一个参考值。

名称

功能

重要指数

gvmd

GVM10自带的守护进程

10

openvasmd

GVM9及之前的守护进程的叫法

10

openvassd

GVM的扫描器进程,作用就是进行漏洞扫描,并将结果反馈给管理模块。

10

OSPd

多个扫描器之间使用OSP协议进行通信,而OSPd就是通信进程。

3

GOS

全称Greenbone Operating System。GSM设备的操作系统。提供商业版本,具有企业支持功能的GVM框架。

4

GSM

全称Greenbone Security Manager,绿骨公司系列产品之一,常以应用程序或虚拟机形式出现。

8

GMP

全称Greenbone Management Protocol,听名字就知道是管理协议,gvmd和openvasmd使用该协议、基于XML与其他模块进行通信,以前叫OMP。

8

OSP

全称Open Scanner Protocol,多种绿骨公司产品之间用于通信的协议

5

GVM

全称Greenbone Vulnerability Manager,这是许多服务的一个框架,作为一个商业产品也是组成GSM的一部分,以前直接叫openvas。

10

GVM9

GVM9代版本,也叫OpenVas9,用在GOS 4代系列。

10

GVM10

GVM10代版本,用在GOS 5代系列。

10

GSE

全称Greenbone Source Edition,绿骨应用栈,支撑漏洞扫描,漏洞管理,GVM等,用以支持第三方调用,比如Linux的某个分支提供GVM,但它是以GSE为基础构建的。

3

配置slave-scanner的方法

不论是跟GMP还是OSP server通信,首先需要选择一种主从服务器间的通信方法:

TLS

TLS连接类型是GOS 3.1及更高版本中用于通信的默认连接类型,也是笔者要重点介绍的配置方法.笔者的测试环境为centos7,具体版本见2.3,一台slave和一台master,且防火墙关闭(方便测试)

Master配置

第一步:登录到GSA上,进入 Configuration-> Credentials

第二步:进入Configuration-> Scanner,Type一定要选GMP Scanner.Credential选刚刚创建的test.

第三步:创建任务

第四步:配置证书,重中之重

任务创建之后需要在master上给相应的scanner配置slave的cacert.pemslave上cert默认路径在/var/lib/gvm/CA/cacert.pem此处需要把slave上的cacert.pem复制到master上.

此处配置证书需要在master机器上,并以命令行方式进行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gvmd --get-scanners                   //查找test的uuid
gvmd --modify-scanner="test-uuid" --scanner-ca-pub=/path/to/slave/cacert.pem

此处配置完成master后,最好重启一下gvmd以及gsad.原因后面会说.接下来配置Slave.

Slave配置

第一步,创建一个非admin的账号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gvmd --create-user=test --new-password=test --role=Admin

第二步:保证gvmd监听在TCP-port上,而不是Unix socket,这一步笔者在实验的时候错了许多次,总结出几个要注意的点.首先执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service gvmd stop
service gsad stop

其次执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gvmd --listen=0.0.0.0 --port=9391
gsad --mlisten=0.0.0.0 --mport=9391

确保gsad正常运行的前提下,gvmd监听9391端口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
netstat -anop | grep  gvmd
tcp        0      0 0.0.0.0:9391            0.0.0.0:*               LISTEN      13034/gvmd: Waiting  off (0.00/0/0)

期间打开log,跟进报错:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail -f /var/log/gvm/gvmd.log

启动task

点击启动task,此处可能会遇到如下几个问题:

问题一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
failed to connect xxxx port 9391.

解决方案:确保slave上的9391端口开放,确保防火墙能通过.

问题二:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(master)slave_connect failed  | (slave)read_from_client_tls

该问题广泛出现在Greenbone 开源社区,github issue,同样的配置不见得能解决同样的问题,因此笔者进行了深入的分析和研究。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail -f /var/log/gvm/gvmd-master:
md manage:WARNING:slave_connect: failed to open connection to XXXX on 9391
lib  serv:WARNING:gvm_server_verify: the certificate is not trusted
lib  serv:WARNING:gvm_server_verify: the certificate hasn't got a known issuer
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail -f /var/log/gvm/gvm-slave:
md   main:read_from_client_tls: failed to read from client: The TLS connection was non-properly terminated.

1.笔者首先抓了master上的包,发现有向slave的9391端口发的包, slave的9391端口也有返回包,排除了网络不可达的问题.

2.端口可以通信,那会不会是证书选错了?笔者通过查阅各种资料,确保cacert没有搞错,路径没有搞错

3.端口正常,证书正确,配置正确?经历一天的排除+尝试,一遍遍确认自己配置是正确的前提下,笔者终于找到了找到了一个可能的原因,即当执行下列命令之后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gvmd  --modify-scanner="uuid" --scanner-ca-pub=/path/to/cacert.pem

gvmd并不能立即加载该证书,并且即使按照上面步骤执行也会重复出现上述报错.如果没有加载证书,配置再正确,报错都一样,分析都是白搭。

因此需要在配置完证书之后,重启一下gvmd使其加载证书,才能加载正确配置。

重启task即可在两边的log中发现如下log,且GSA上也终于从requested变成了running.欣喜地发现进度为1%.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Status of task test6  has changed to Running

ssh

从GOS 4开始,SSH是默认的连接类型,可通过GVM建立管理守护进程之间的连接。GMP协议通过SSH隧道传输并转发到gvmd / openvasmd,目前笔者还没有测试过.

Unix Domain Socket

Unix Domain Socket是Greenbone Source Edition中gvmd的默认类型。但只可以使用在与进程相同的主机上运行client-tools时。

gvmd/openvasmd提供的Unix Domain Socket的从GVM 9中的openvasmd.sock更改为GVM 10中的gvmd.sock。

在GOS 4代里sock路径一般为/run/openvas/openvasmd.sock.

在GOS 5代里sock路径一般为/run/gvm/gvmd.sock.

基于OSPd的扫描器也可以通过Unix Domain Socket访问。

举个例子,笔者的实验环境为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm -qa | grep gvm  
rpm -qa | grep openvas 
gvmd-8.0.0-6928.el7.art.x86_64
gvm-libs-10.0.0-6924.el7.art.x86_64
openvas-scanner-6.0.0-6930.el7.art.x86_64
openvas-smb-1.0.5-6923.el7.art.x86_64

默认启动的gvmd使用的是Unix Domain Socket,验证如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
netstat -ano |grep gvmd
unix  2      [ ACC ]     STREAM     LISTENING     25846    /var/run/gvmd.sock

总结

1.官方文档永远是最好的教程,其次是开源社区.

2.Debug时要有自己的主线+思考,不是盲目地遇到 一个问题就去查,别人的前置环境和自己的不一样会让自己掉进去,越陷越深,这样问题就会发散。

3.心平气和,万不得已之时,重启大法好!

附一份官方参考文档:https://readthedocs.org/projects/gvm-tools/downloads/pdf/latest/

*本文原创作者:LittleT1ger,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS 5.8下离线安装OpenVAS开源漏扫系统
OpenVAS开源漏扫系统,主要用于扫描系统漏洞(端口漏洞、服务工具版本漏洞、系统配置漏洞、服务加固隐患等等),并出示系统评估报告,可根据报告提示进行系统修复。
星哥玩云
2022/07/04
1.7K0
CentOS 5.8下离线安装OpenVAS开源漏扫系统
在Ubuntu 16.04上安装OpenVAS 8
OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费。OpenVAS默认安装在标准的Kali Linux上,本教程将介绍配置及启动OpenVAS。
谢鸢
2018/08/20
2.3K0
在Ubuntu 16.04上安装OpenVAS 8
Rocky Linux8.4下安装GVM21.04(漏洞扫描器)
OpenVAS是一个全功能的漏洞扫描器,OpenVAS是类似Nessus的综合型漏洞扫描器,可以用来识别远程主机、Web应用存在的各种漏洞。Nessus曾经是业内开源漏洞扫描工具的标准,在Nessus商业化不再开放源代码后,在它的原始项自中分支出openVAS开源项目。
yuanfan2012
2021/07/15
2.4K0
Rocky Linux8.4下安装GVM21.04(漏洞扫描器)
Centos7安装Openvas(GVM-10)
主要介绍GVM-10在CentOS 7 64位系统上的安装过程,在root账户下执行各项操作。
用户2926896
2019/11/13
5.1K0
Debian10已经自带OpenVAS了
近两年,信息安全要求越来越高,以前流于形式的安全检测变成了每月一次安全扫描和整改。
用户9314062
2022/05/20
9410
Debian10已经自带OpenVAS了
Web安全学习笔记之Openvas配置,使用,报告
OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费。OpenVAS默认安装在标准的Kali Linux上,本节将介绍配置及启动OpenVAS。
Jetpropelledsnake21
2019/02/15
3.2K0
OpenVAS开源风险评估系统部署方案
OpenVAS,即开放式漏洞评估系统,是一个用于评估目标漏洞的杰出框架。功能十分强大,最重要的是,它是“开源”的——就是免费的意思啦~ 它与著名的Nessus“本是同根生”,在Nessus商业化之后仍然坚持开源,号称“当前最好用的开源漏洞扫描工具”。最新版的Kali Linux(kali 3.0)不再自带OpenVAS了,所以我们要自己部署OpenVAS漏洞检测系统。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。 但是它的最常用用途是检测目标网络或主机的安全性。它
FB客服
2018/02/24
2.9K0
OpenVAS开源风险评估系统部署方案
openvas_openvas安装
OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。
全栈程序员站长
2022/09/20
4500
openvas_openvas安装
libvirt-TLS加密
TLS(Transport Layer Security Protocol),即安全传输层协议,其核心是加密两台计算机之间的通信。libvirt中使用TLS,可以实现libvirt的安全加密。例如,虚拟机在不同的主机之间迁移或者远程链接libvirt的守护进程对libvirt进程控制时,都可以走TLS通道进行加密。本文将实践libvirt的TLS配置和具体使用。有以下四个步骤。
虚拟化云计算
2018/04/08
2.3K0
libvirt-TLS加密
20.7 OpenSSL 套接字SSL加密传输
OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手,读者可将这个流程理解为上一章中RSA的分发密钥环节,只是SSL将这个过程简化了,当使用时无需关注传输密钥对的问题。
王 瑞
2023/11/05
4610
20.7 OpenSSL 套接字SSL加密传输
OpenSSL 是什么?
对称加密算法在加密和解密时,使用同一密钥。非对称加密算法需要两个密钥,即公开密钥和私有密钥,公开密钥和私有密钥是一对。用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。因为加密和解密使用两个不同的密钥,所以这类算法叫非对称加密算法。
小阑本阑
2023/06/08
1K0
OpenSSL 是什么?
openssl使用 Demo
1. website SSL(secure Socket Layer) TLS(transport Layer Security) - SSL3.0基础之上提出的安全通信标准,目前版本是1.0 openssl 主页 -> http://www.openssl.org/ openssl 中文文档 -> http://www.chinaunix.net/jh/13/478901.html
用户3519280
2023/07/06
4220
Docker私有Registry在CentOS6.X下安装指南
先从docker registry服务器端把文件/etc/pki/CA/cacert.pem拷贝到本机,然后执行命令:
白石
2019/08/23
6330
GmSSL支持SM2/SM3/SM4/SM9/SSL国产商用密码开源库
GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。
Tinywan
2024/07/05
1.2K0
GmSSL支持SM2/SM3/SM4/SM9/SSL国产商用密码开源库
Nginx 配置https及wss
部署单页应用 SPA 时,我们通常使用 Nginx 做中间层进行转发代理。为了保护 Web 安全,要求我们使用 HTTPS(HTTP + SSL) 以及 WSS(Websocket + SSL) 进行通信。HTTPS 及 WSS 协议旨在保护用户数据在网络上不被窃听(机密性) 和不被篡改(完整性)。
奋飛
2020/05/28
3.8K0
用户身份验证的几种方式以及OpenStack认证方式的使用
笔者在加入VMware之前,做UNIX技术支持工作将近8年。由于UNIX服务器通常在数据中心内部,与外网隔离,因此用户身份认证通过比较简单。即密码验证。后来接触到VIEW产品,逐渐了解到多种的身份识别方式。加上前段时间研究了openStack,将学习的心得分享给大家。 广义上讲,用户身份认证并不仅限于领域。广义上的身份识别技术有如下几种:静态密码、动态密码(短信密码、动态口令牌)、令牌、USB KEY、数字证书、生物识别技术。 在以上几种认证方式中,我们IT人员在数据中心通常能够遇到的是:静态密码、动态口
魏新宇
2018/04/08
4.1K0
用户身份验证的几种方式以及OpenStack认证方式的使用
Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
在 Kubernetes 中运行大规模以 Web 为中心的工作负载,最关键的需求之一就是在 L7 层实现高效流畅的入口流量管理。自从第一批 Kubernetes Ingress Controller 开发完成以来,Envoy(由 Matt Klein 和 Lyft 团队开发)已经成为云原生生态系统中的新生力量。Envoy 之所以受到支持,因为它是一个 CNCF 托管的项目,与整个容器圈和云原生架构有着天然的支持。
米开朗基杨
2019/08/30
1.8K0
Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
用 Ghostunnel 和 SPIRE 为 NGINX 提供 SPIFFE 认证
之前对 SPIFFE 和 SPIRE 进行了一个相对全面/啰嗦的介绍,这一篇就反过来,用一个简单的例子来展示 SPIRE 的基本用法,本文中会以 NGINX 作为服务生产方,使用 Ghostunnel 当做 NGINX 的反向代理,把原有的 HTTP 通信升级为支持定期正顺轮转的双向 TLS 认证协议,并且用 CURL 使用客户端证书来通过 Ghostunnel 安全地访问背后的 NGINX。这里为 CURL 和 NGINX 提供证书以及轮转的,就是 SPIRE 的 Server 和 Agent。
崔秀龙
2022/11/23
6050
在腾讯云轻量服务器通过Nginx Unit部署PHP应用
本文简单介绍在腾讯轻量服务器Ubuntu上安装Nginx Unit。并通过Nginx Unit部署运行了ThinkPHP框架。并进行简单的可用性测试。NGINX Unit 是Nginx团队的又一开源力作。一个通用的应用服务器。目前已支持Go、JavaScript (Node.js)、Java、Perl、PHP、Python、Ruby语言的应用。以可作为反向代理服务器进行工作。完全通过可以通过配置API已JSON配置文件的方式进行更新。请参考中文官网的配置和英文官网的安装指引。
您这种情况持续多久了
2023/10/30
8032
组复制安全 | 全方位认识 MySQL 8.0 Group Replication
本节从组复制的IP白名单以及安全套接字(SSL)支持两个方面来介绍如何保护组合组成员之间连接的安全性。
老叶茶馆
2020/09/23
1.4K0
推荐阅读
相关推荐
CentOS 5.8下离线安装OpenVAS开源漏扫系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验