openvas(GVM)错误排除

重置postgresql数据库

检查

转自:https://www.cnblogs.com/NagaResst/p/17329029.html

最近给公司做内网安全扫描,部署了一个 kali 安装了 GVM。

虽然安装啥的都很人性化,但是坑也不少。这就来数一数。
数据库

首先 kali 上的 postgresql 集群就是多版本的。根据 gvm 版本的不同,需要的数据库版本也不一样。

具体需要哪个版本 gvm-check-setup 会告诉你。

想要看自己的设备上运行了几个集群,使用命令 pg_lsclusters

然后去改配置文件,换端口再重启 postgresql 就行。

配置文件路径 /etc/postgresql/<版本>/main/postgresql.conf

把两个版本的端口号一换,然后 systemctl restart postgresql 就可以了。

这时候再运行 gvm-check-setup,估计数据库这个坑就过了。
The SCAP database is required

安装好大概率是会提示这个。这个问题好解决,但是也是最难解决的,国内同步 gvm 的 feed 库非常吃屎,慢慢搞吧。

sudo gvm-stop
sudo runuser -u _gvm – greenbone-nvt-sync --rsync
sudo greenbone-scapdata-sync
sudo greenbone-certdata-sync

sudo reboot

找不到 scan config 或者 port list

这个问题是最白痴的,本质上算 BUG。

去路径 /var/lib/gvm/data-objects/gvmd/ 找

会有几个版本的文件夹,把有东西的复制到你当前版本的文件夹下可以解决。

如果都没有,就删掉 timestamp 重新更新 greenbone-feed-sync --type GVMD_DATA 。

删掉 timestamp 这步非常重要,gvm 用一个时间戳来控制你同步了多少文件,删掉这个文件就会强制同步所有数据。

当然更新完了别忘了把文件从旧的版本文件夹复制到新的。

如果半路 rsync 报错,同步失败,就继续删掉 timestamp 文件,继续更新。

重装和重置

在Debian上重新安装PostgreSQL,你可以按照以下步骤进行:

    卸载已安装的PostgreSQL:
    如果你之前已经安装了PostgreSQL,首先需要将其卸载。打开终端,使用以下命令卸载PostgreSQL及其相关依赖:

sudo apt-get purge postgresql*  
sudo apt-get autoremove

这些命令会删除PostgreSQL软件包及其配置文件。

删除PostgreSQL残留文件:
除了通过包管理器卸载外,你可能还需要手动删除PostgreSQL残留的文件和目录。通常,PostgreSQL的数据文件和配置文件会位于/etc/postgresql/和/var/lib/postgresql/目录下。你可以使用以下命令删除这些目录(如果存在的话):

sudo rm -rf /etc/postgresql/ 
sudo rm -rf /var/lib/postgresql/


注意:在执行上述命令之前,请确保你已经备份了所有重要的数据库文件,因为这将删除所有相关的数据库文件。

更新软件包列表:
在重新安装之前,更新你的Debian系统的软件包列表是很重要的。使用以下命令更新:

sudo apt update

安装PostgreSQL:
现在你可以重新安装PostgreSQL了。使用以下命令安装最新版本的PostgreSQL:

sudo apt install postgresql

安装过程中,系统会提示你输入管理员密码以完成安装。

检查PostgreSQL状态:
安装完成后,PostgreSQL服务将自动启动。你可以使用以下命令检查PostgreSQL服务的状态:

sudo systemctl status postgresql

如果服务正在运行,你将看到相关的状态信息。

访问PostgreSQL:
默认情况下,PostgreSQL会创建一个名为“postgres”的系统用户,并且只允许该用户访问数据库。你可以使用psql命令行工具以“postgres”用户的身份登录到PostgreSQL数据库:

    sudo -u postgres psql


    这将启动psql命令行界面,你可以在这里执行SQL命令。

请注意,这些步骤假设你具有足够的权限来安装和卸载软件包,并且你的Debian系统已经配置好了网络连接,以便能够下载和安装软件包。如果你遇到任何问题或错误消息,请根据错误消息的内容进行故障排除或寻求进一步的帮助。

sudo -u postgres psql

psql: 错误: 连接到套接字"/var/run/postgresql/.s.PGSQL.5432"上的服务器失败:没有那个文件或目录 Is the server running locally and accepting connections on that socket?

这个错误表明psql客户端尝试以postgres用户的身份连接到PostgreSQL服务器时失败了,因为无法找到预期的Unix套接字文件。这通常意味着PostgreSQL服务没有运行,或者配置不正确,导致客户端无法找到正确的连接套接字。

要解决这个问题,请按照以下步骤操作:

    检查PostgreSQL服务状态:
    首先,你需要确认PostgreSQL服务是否正在运行。在Debian系统上,你可以使用systemctl来检查服务的状态:

sudo systemctl status postgresql

如果服务没有运行,你可以使用以下命令启动它:

sudo systemctl start postgresql

    然后再次检查服务状态以确保它已成功启动。

    检查PostgreSQL版本和集群:
    Debian系统可能安装了多个版本的PostgreSQL或者配置了多个集群。确保你检查的是正确版本或集群的服务状态。

    检查Unix套接字文件:
    如果服务正在运行,但psql仍然报告找不到套接字文件,请检查/var/run/postgresql/目录,看是否有与你的PostgreSQL实例相对应的套接字文件。PostgreSQL实例通常以其版本号命名(例如12-main),所以你可能需要查找类似于/var/run/postgresql/12-main/.s.PGSQL.5432的文件。

    检查PostgreSQL配置文件:
    查看PostgreSQL的配置文件(通常是postgresql.conf),确认它指向了正确的Unix套接字位置。配置文件通常位于/etc/postgresql/[版本号]/main/。

    查看日志:
    检查PostgreSQL的日志文件以获取更多信息。日志文件通常位于PostgreSQL数据目录中,或者可以在/var/log/postgresql/找到。

    尝试使用TCP/IP连接:
    如果Unix套接字连接不起作用,你可以尝试使用TCP/IP连接。这通常涉及修改pg_hba.conf文件以允许基于TCP/IP的连接,并确保postgresql.conf中正确配置了listen_addresses(将其设置为'*'以监听所有IP地址)。

    重新加载配置或重启服务:
    如果你更改了任何配置文件,请确保重新加载或重启PostgreSQL服务以应用这些更改。

    检查防火墙和网络设置:
    确保没有任何防火墙规则阻止你访问PostgreSQL的端口(默认为5432)。

    确保用户和环境变量:
    当你使用sudo -u postgres psql时,确保你的环境变量没有干扰PostgreSQL的连接。有时,sudo会清除环境变量,这可能会影响连接。如果需要,你可以使用sudo -E来保留环境变量。

如果你尝试了上述所有步骤但问题仍然存在,请检查PostgreSQL的安装是否完整或是否存在其他系统问题。在一些情况下,重新安装PostgreSQL可能是必要的。但在重新安装之前,请确保备份所有重要的数据库文件。

权限未定义问题

⠸ Downloading Notus files from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/vt-data/notus/ to
/var/lib/notus  
⠹ Downloading NASL files from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/vt-data/nasl/ to
/var/lib/openvas/plugins
Releasing lock on /var/lib/openvas/feed-update.lock
注意:加粗部分,是要下载数据的目录,此目录的所有者一定要是gvm用户和gvm用户组,   不能  是_gvm用户和_gvm用户组

以这个为例

└─# ll /var/lib/openvas/       
总计 224
-rw-rw----  1 gvm  gvm       0  4月28日 20:15 feed-update.lock
-rwxrwxrwx  1 _gvm _gvm      0  4月25日 21:23 gvm-checking
-rwxrwxrwx  1 _gvm _gvm      0  4月25日 21:23 gvm-create-functions
-rwxrwxrwx  1 _gvm _gvm      0  4月25日 21:23 gvm-helping
-rwxrwxrwx  1 _gvm _gvm      0  4月25日 21:23 gvm-migrating
-rwxrwxrwx  1 _gvm _gvm      0  4月25日 21:23 gvm-serving
drwxrwxr-x 24 gvm  gvm  225280  4月27日 23:09 plugins

上图目录,plugins这个文件夹,所属必须是gvm用户和用户组,其他文件也可能应该是gvm用户和gvm用户组,因为没有报错,暂时没有修改。

需要修改的目录有:

chown -R gvm:gvm /var/lib/openvas/plugins

/var/lib/notus
/var/lib/openvas/plugins

/var/lib/gvm/scap-data
/var/lib/gvm/cert-data
/var/lib/gvm/data-objects/gvmd/22.04

更新网址,查询dns问题

使用了代理:

# rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to 
zsh: 没有那个文件或目录: rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/

没使用代理:

Acquired lock on /var/lib/gvm/feed-update.lock
⠹ Downloading SCAP data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to
⠦ Downloading SCAP data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to
⠇ Downloading SCAP data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to
⠧ Downloading SCAP data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to
/var/lib/gvm/scap-data
Releasing lock on /var/lib/gvm/feed-update.lock
[*] Checking Default scanner
08b69003-5fc2-4037-a479-93b440211c73  OpenVAS  /run/ospd/ospd.sock  0  OpenVAS Default
[i] No need to alter default scanner

[+] Done
[i] Admin user already exists for GVM
[i] If you have forgotten it, you can change it. See gvmd manpage for more information

[>] You can now run gvm-check-setup to make sure everything is correctly configured

 上述情况,使用了代理不能下载,反而不使用代理能下载。这个原因是dns解析到的ip属于国内还是国外,如果解析到了国内的地址,反而使用了代理,不能找到服务器地址,导致了使用了代理反而访问不到服务器。

解决方法:

1、将dns也走代理,使用透明代理模式,dns、ip地址都走代理。

2、都不走代理,使用国内地址,慢慢下载,此方法可能因为网络问题,超时,可能需要多次执行才能慢慢同步。未做验证,不建议这么做。

成功的结果:

┌──(root㉿DESKTOP-8822)-[/var/…/gvm/data-objects/gvmd/22.04]
└─# gvm-setup

[>] Starting PostgreSQL service

[>] Creating GVM's certificate files

[>] Creating PostgreSQL database
[i] User _gvm already exists in PostgreSQL
[i] Database gvmd already exists in PostgreSQL
[i] Role DBA already exists in PostgreSQL

[*] Applying permissions
注意:  role "_gvm" has already been granted membership in role "dba" by role "postgres"
GRANT ROLE
[i] Extension uuid-ossp already exists for gvmd database
[i] Extension pgcrypto already exists for gvmd database
[i] Extension pg-gvm already exists for gvmd database
[>] Migrating database
[>] Checking for GVM admin user
[*] Configure Feed Import Owner
[*] Update GVM feeds
Running as root. Switching to user 'gvm' and group 'gvm'.
Trying to acquire lock on /var/lib/openvas/feed-update.lock
Acquired lock on /var/lib/openvas/feed-update.lock
⠋ Downloading Notus files from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/vt-data/notus/ to 
/var/lib/notus
⠇ Downloading NASL files from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/vt-data/nasl/ to 
/var/lib/openvas/plugins
Releasing lock on /var/lib/openvas/feed-update.lock

Trying to acquire lock on /var/lib/gvm/feed-update.lock
Acquired lock on /var/lib/gvm/feed-update.lock
⠏ Downloading SCAP data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/scap-data/ to 
/var/lib/gvm/scap-data
⠦ Downloading CERT-Bund data from rsync://feed.community.greenbone.net/community/vulnerability-feed/22.04/cert-data/ to 
/var/lib/gvm/cert-data
⠙ Downloading gvmd data from rsync://feed.community.greenbone.net/community/data-feed/22.04/ to 
/var/lib/gvm/data-objects/gvmd/22.04
Releasing lock on /var/lib/gvm/feed-update.lock

[*] Checking Default scanner
08b69003-5fc2-4037-a479-93b440211c73  OpenVAS  /run/ospd/ospd.sock  0  OpenVAS Default
[i] No need to alter default scanner

[+] Done
[i] Admin user already exists for GVM
[i] If you have forgotten it, you can change it. See gvmd manpage for more information

[>] You can now run gvm-check-setup to make sure everything is correctly configured

 执行gvm-check-setup出现文件夹权限问题

_gvm账户权限问题

──(root㉿DESKTOP-8822)-[/var/…/gvm/data-objects/gvmd/22.04]
└─# gvm-check-setup 
gvm-check-setup 23.11.0
  Test completeness and readiness of GVM-23.11.0
Step 1: Checking OpenVAS (Scanner)... 
        OK: OpenVAS Scanner is present in version 22.7.9.
        OK: Notus Scanner is present in version 22.6.2.
        OK: Server CA Certificate is present as /var/lib/gvm/CA/servercert.pem.
Checking permissions of /var/lib/openvas/gnupg/*
        OK: redis-server is present.
        OK: scanner (db_address setting) is configured properly using the redis-server socket: /var/run/redis-openvas/redis-server.sock
        OK: the mqtt_server_uri is defined in /etc/openvas/openvas.conf
        ERROR: _gvm group or _gvm user does not own all the files in /var/lib/openvas/plugins
        FIX: Run 'chown -R _gvm:_gvm /var/lib/openvas/plugins'

 ERROR: Your GVM-23.11.0 installation is not yet complete!

Please follow the instructions marked with FIX above and run this
script again.

解决办法:

┌──(root㉿DESKTOP-8822)-[/var/…/gvm/data-objects/gvmd/22.04]
└─# chown -R _gvm:_gvm /var/lib/openvas/plugins
┌──(root㉿DESKTOP-8822)-[/var/…/gvm/data-objects/gvmd/22.04]
└─# gvm-check-setup                               
gvm-check-setup 23.11.0
  Test completeness and readiness of GVM-23.11.0
Step 1: Checking OpenVAS (Scanner)... 
        OK: OpenVAS Scanner is present in version 22.7.9.
        OK: Notus Scanner is present in version 22.6.2.
        OK: Server CA Certificate is present as /var/lib/gvm/CA/servercert.pem.
Checking permissions of /var/lib/openvas/gnupg/*
        OK: redis-server is present.
        OK: scanner (db_address setting) is configured properly using the redis-server socket: /var/run/redis-openvas/redis-server.sock
        OK: the mqtt_server_uri is defined in /etc/openvas/openvas.conf
        OK: _gvm owns all files in /var/lib/openvas/plugins
        OK: NVT collection in /var/lib/openvas/plugins contains 90232 NVTs.
        OK: The notus directory /var/lib/notus/products contains 456 NVTs.
Checking that the obsolete redis database has been removed
        OK: No old Redis DB
        Starting ospd-openvas service
        Waiting for ospd-openvas service
        OK: ospd-openvas service is active.
        OK: ospd-OpenVAS is present in version 22.6.2.
Step 2: Checking GVMD Manager ... 
        OK: GVM Manager (gvmd) is present in version 23.3.0.
Step 3: Checking Certificates ... 
        OK: GVM client certificate is valid and present as /var/lib/gvm/CA/clientcert.pem.
        OK: Your GVM certificate infrastructure passed validation.
Step 4: Checking data ... 
        OK: SCAP data found in /var/lib/gvm/scap-data.
        OK: CERT data found in /var/lib/gvm/cert-data.
Step 5: Checking Postgresql DB and user ... 
        OK: Postgresql version and default port are OK.
 gvmd      | _gvm     | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |            |           | 
16440|pg-gvm|10|2200|f|22.6||
        OK: At least one user exists.
Step 6: Checking Greenbone Security Assistant (GSA) ... 
        OK: Greenbone Security Assistant is present in version 22.9.1~git.
Step 7: Checking if GVM services are up and running ... 
        Starting gvmd service
        Waiting for gvmd service
        OK: gvmd service is active.
        Starting gsad service
        Waiting for gsad service
        OK: gsad service is active.
Step 8: Checking few other requirements...
        OK: nmap is present.
        OK: ssh-keygen found, LSC credential generation for GNU/Linux targets is likely to work.
        OK: nsis found, LSC credential package generation for Microsoft Windows targets is likely to work.
        OK: SELinux is disabled.
        OK: xsltproc found.
        WARNING: Your password policy is empty.
        SUGGEST: Edit the /etc/gvm/pwpolicy.conf file to set a password policy.
Step 9: Checking greenbone-security-assistant...
        OK: greenbone-security-assistant is installed

It seems like your GVM-23.11.0 installation is OK.                                                                                                                     

此问题,就是和上面gvm账户存在的冲突问题,暂时没有找到很合适的解决方案,临时解决方案,就是自己手动在执行对应命令的时候,修改对应文件夹权限。

好的地方:执行命令有问题,会有明确的提示,所以按照提示操作即可。

访问地址:https://127.0.0.1:9392/login        密码为自己设置的账户密码,或自行百度,查询默认密码,我是自己按照提示新建所以不一样,没有统一。

 解决feed更新问题的另一个方法(值得推荐大家使用)

转自:https://blog.csdn.net/a_2575055530/article/details/108927806

安装新版openVas(GVM)

kali2020中已经不可以直接安装openvas了,常用命令openvas-setup等等,在执行后都会在终端报错:命令找不到。
所以,要使用GVM。下面用我的安装经验来介绍如何安装,尽可能都切换到root权限之下进行安装,那样会省去很多麻烦(kali2020中切换权限需要先给root设置密码:sudo passwd root,然后会让你输入新的密码。设定之后使用su root命令切换用户输入密码之后就切换成功了)。

    1. 在一个全新的系统之中执行命令来更新源:执行apt install updateapt install dist-upgrade
    2. 安装gvm:apt install gvm,这一步会花费一些时间
    3. gvm初始化:sudo gvm-setup,这一步会花费巨多的时间,多久都有可能。并且在进行过程中可能会中断。但是那也不慌,一步一步来吗,gvm提供了检查错误的机制。
    4. (这一步执行前的话,最好先gvm-start开启网页,要不然问题巨他妈多)执行命令检查错误:sudo gvm-check-setup,这里有十步检查,会有各种各样的错误,我遇到的是这样的错误

       这个问题就是我的GVM装的不完整,极大可能就是因为我在setup那一步中更新卡死了。在FIX之后提示了怎么去操作,其中要点是我的系统已经切换到root权限,FIX之后提示中的runuser可以去掉。

      将这个命令输入之后又报错了,因为某个文件无法创建(我的是/tmp/…cert),然后去查这个文件,直接rm删除。再次运行FIX之后的指令,就可以了。再次sudo gvm-check-setup,检查十步正确。
    5. 然后就是小问题了,gvm-feed-update升级。
    6. sudo gvmd --user=admin --new-password=password改密码
      这些步骤都结束之后就可以登录了。

posted on 2024-04-27 23:07  叶子在行动  阅读(15)  评论(0编辑  收藏  举报

导航