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命令切换用户输入密码之后就切换成功了)。
- 在一个全新的系统之中执行命令来更新源:执行apt install update和apt install dist-upgrade
- 安装gvm:apt install gvm,这一步会花费一些时间
- gvm初始化:sudo gvm-setup,这一步会花费巨多的时间,多久都有可能。并且在进行过程中可能会中断。但是那也不慌,一步一步来吗,gvm提供了检查错误的机制。
- (这一步执行前的话,最好先gvm-start开启网页,要不然问题巨他妈多)执行命令检查错误:sudo gvm-check-setup,这里有十步检查,会有各种各样的错误,我遇到的是这样的错误
这个问题就是我的GVM装的不完整,极大可能就是因为我在setup那一步中更新卡死了。在FIX之后提示了怎么去操作,其中要点是我的系统已经切换到root权限,FIX之后提示中的runuser可以去掉。
将这个命令输入之后又报错了,因为某个文件无法创建(我的是/tmp/…cert),然后去查这个文件,直接rm删除。再次运行FIX之后的指令,就可以了。再次sudo gvm-check-setup,检查十步正确。 - 然后就是小问题了,gvm-feed-update升级。
- sudo gvmd --user=admin --new-password=password改密码
这些步骤都结束之后就可以登录了。