OpenVAS / Greenbone Tutorial: Install, Scan, and Read Results

Tested on Kali GNU/Linux Rolling 2026.2 (kali-rolling)
Package gvm 25.04.3
gvmd 26.24.0-1
gsad 24.16.0-1
openvas-scanner 23.45.1-1
greenbone-security-assistant 26.17.0-0kali1
Lab environment Pentest lab
Cert prep CompTIA PenTest+ PT0-003 — network vulnerability scanning and result analysis
Privilege sudo for package install, gvm-setup, feed sync, service management, and gvm-cli through the packaged _gvm account (sudo -u _gvm); normal user for the web UI
Scope Kali apt install of Greenbone/GVM, gvm-setup and gvm-check-setup, feed synchronization readiness and import progress checks, web UI login, target and task workflow, reading severity/CVE/QoD fields, validating findings, credentialed vs uncredentialed scans, troubleshooting missing scan configs, and a concise OpenVAS vs Nessus comparison. Does not cover Docker/container deployment in depth, source builds, or exploitation walkthroughs.
Related guides Vulnerability scanning concepts
Short on time?Beta Get the gist of this 21-minute read in seconds, then ask follow-up questions

Most "installed OpenVAS but cannot scan" threads share the same problem: the web UI comes up before feeds and scan configurations finish loading. This article uses the Kali gvm package path. Install, prove the feeds are ready, create a target against Metasploitable 2 in the lab, run a scan, and read what a result row actually means.

OpenVAS was the original name for the scanner engine. Today the open-source stack is Greenbone Community Edition, managed by GVM (Greenbone Vulnerability Manager). Search engines and exam prep still say “OpenVAS,” so this article keeps that word in headings and uses the current package names in commands.

IMPORTANT
Run vulnerability scans only against hosts and networks defined in your rules of engagement. Greenbone probes look like hostile traffic in IDS and firewall logs.

OpenVAS, GVM, and Greenbone: what you are installing

Greenbone spreads the work across a web front end, a manager, a scanner, and feed data:

Component Role
Greenbone Security Assistant (gsad) Web UI at https://127.0.0.1:9392 on Kali
gvmd Manager: stores targets, tasks, users, and report metadata
ospd-openvas / openvas-scanner Runs Network Vulnerability Tests (NVTs) against targets
Feeds NVT scripts, SCAP/CERT data, and gvmd objects that populate scan configs and port lists

Greenbone GVM architecture showing Web UI, gvmd manager, OpenVAS scanner, and feed synchronization

The login page is not the finish line. You need feed data imported so profiles like Full and fast show up under Scan Configs.


Install Greenbone / OpenVAS on Kali Linux

Size the VM before installing. Feed data plus PostgreSQL can eat many gigabytes, and the first sync is slow even on a good link:

  • Prefer 80 to 100 GB disk and 12 to 16 GB RAM
  • 8 GB RAM is the Greenbone minimum; tighter disks fill during SCAP import

Install the metapackage:

bash
sudo apt update
sudo apt install -y gvm

Confirm the core components:

bash
dpkg -l gvm gvmd gsad openvas-scanner | awk '/^ii/{print $2, $3}'
output
greenbone-security-assistant 26.17.0-0kali1
gsad 24.16.0-1
gvm 25.04.3
gvmd 26.24.0-1
openvas-scanner 23.45.1-1

Run the Kali setup script. It creates certificates, PostgreSQL objects, the admin user, and starts an initial feed sync:

bash
sudo gvm-setup

When setup finishes, it prints a one-time admin password. Copy it somewhere safe right away:

output
[+] Done
[*] Please note the password for the admin user
[*] User created with password 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

Replace that UUID in your notes with the value from your own terminal. You will not see it again in plain text.

Check the installation:

bash
sudo gvm-check-setup

Before certificates and feeds finish, you may see missing CA files or empty NVT directories. After gvm-setup but before feeds finish, a typical failure looks like:

output
        ERROR: Directories containing the NVT collection not found.
        FIX: Run the NVT synchronization script greenbone-feed-sync.
        sudo greenbone-feed-sync --type nvt

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

That message means “do not create a task yet,” not “reinstall Kali.” A clean check is useful, but it is not the final feed-readiness test. On a fresh Kali install, gvm-check-setup ended with It seems like your GVM-25.04.0 installation is OK while the manager still returned zero NVTs and zero scan configurations. The files had downloaded, but gvmd was still loading them into PostgreSQL.

Enable the services so they start after reboot:

bash
sudo systemctl enable --now gvmd gsad ospd-openvas

On Kali, gsad listens on 127.0.0.1:9392 by default. Open the UI from the Kali desktop or through an SSH tunnel. Do not reach it from another host unless you change the unit file.


Wait for Greenbone feeds before scanning

Feed sync is the step most install guides skip. Without it you get no scan configurations, no port lists, and tasks that fail with “config not found.” There are two separate phases:

  1. greenbone-feed-sync downloads feed files into directories under /var/lib/openvas, /var/lib/notus, and /var/lib/gvm.
  2. The scanner and gvmd load that data into Redis and PostgreSQL. This import keeps going after the download command exits, and the database can stay busy for a long time.

That is why the XML for Full and fast can sit at /var/lib/gvm/data-objects/gvmd/scan-configs/ while the web UI still shows an empty Scan Configs page.

Synchronize all feed types (NVT, SCAP, CERT, gvmd data):

bash
sudo greenbone-feed-sync --type all

If only the vulnerability-test download failed, retry that feed alone:

bash
sudo greenbone-feed-sync --type nvt

Initial sync pulls large rsync trees from feed.community.greenbone.net. It can take a long time. If your network drops idle connections, rsync may exit with errors like:

output
rsync: [Receiver] safe_read failed to read 1 bytes: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(283) [Receiver=3.4.4]

Re-run sudo greenbone-feed-sync --type all after a download error. After the download succeeds:

  • Leave gvmd, PostgreSQL, and ospd-openvas running so they can finish the import
  • Do not start several sync commands at once (lock files block concurrent writers)

You are ready when all of these are true:

  • sudo gvm-check-setup exits without ERROR lines. Treat that as an install check, not proof by itself.
  • Administration → Feed Status shows current feed versions, not unknown or 0.
  • Configuration → Scan Configs lists profiles such as Full and fast.

While gvmd is still importing into PostgreSQL, Feed Status can show Current for NVTs and Update in progress... for SCAP, CERT, and GVMD_DATA (the feed that carries scan configurations and port lists):

Greenbone Feed Status page showing NVT feed Current and SCAP, CERT, and GVMD_DATA feeds Update in progress

That pattern showed up on a fresh Kali install with 11 GB RAM and a 96 GB root volume. Downloads finished first; the database import kept going for another hour or more. Do not create a task until GVMD_DATA reaches Current and Scan Configs lists Full and fast.

If Scan Configs is still empty while feeds import, the UI looks like this. That is not a cue to click New Scan Config:

OpenVAS Scan Configs page showing No Scan Configs available while gvmd feed import is still running

The page shows Scan Configs 0 of 0 until gvmd finishes loading gvmd data objects. Wait for import to finish instead of building a custom config from the + icon.

You can also check from the command line. On Kali, gvm-cli must not run as root. Use the packaged _gvm service account, which can read /run/gvmd/gvmd.sock:

bash
sudo -u _gvm gvm-cli --gmp-username admin --gmp-password '<admin-password>' \
  socket --socketpath /run/gvmd/gvmd.sock --xml "<get_configs/>" --pretty

The first request can take tens of seconds while the manager is busy. Before the import completes, the response is valid but empty:

output
<get_configs_response status="200" status_text="OK">
  <configs start="1" max="1000"/>
  <config_count>0<filtered>0</filtered><page>0</page></config_count>
</get_configs_response>

Status 200 means the socket, manager, and login work. config_count of 0 means the scanner is not ready. After import, the same command returns named configurations, including Full and fast.

Import phases and when scan configs appear

Feed readiness is not one step. After greenbone-feed-sync exits, gvmd imports several feed types. Scan configurations load only in the last phase (GVMD_DATA), which is why the UI can look broken for hours even though login works.

Phase What happens How you know it is running Scan configs yet?
NVT Vulnerability tests download, then load into the scanner Feed Status → NVT shows Current first No
SCAP CVE/CPE data copied into PostgreSQL; slow UPDATE on ~1.8M CPE rows Log shows update_scap: Updating data from feed, year files like nvdcve-2.0-2024.json.gz, then Updating CVSS scores and CVE counts for CPEs, then update_scap_end: Updating SCAP info succeeded No
NVT (manager DB) gvmd pulls ~95k VTs from ospd-openvas over OSP into PostgreSQL Log shows OSP service has different VT status ... Starting update; process list shows gvmd: OSP: Upd; SELECT count(*) FROM public.nvts stays 0 until this bulk load commits No
CERT CERT advisories import (can finish while SCAP is still open) Log shows sync_cert: Updating CERT info succeeded No
GVMD_DATA Scan configs, port lists, and report formats load from /var/lib/gvm/data-objects/gvmd/ Feed Status → GVMD_DATA flips to Current; public.configs count rises Yes: Full and fast appears here

On a lab VM with 11 GB RAM and a 96 GB root disk, the XML for Full and fast already existed at /var/lib/gvm/data-objects/gvmd/scan-configs/ while Scan Configs still showed 0 of 0. The manager had not imported those objects into PostgreSQL yet.

Track import progress and estimate remaining time

Use these checks instead of guessing from the login page alone.

1. Feed Status in the web UI

Open Administration → Feed Status. A common mid-import pattern:

  • NVT: Current
  • SCAP, CERT, GVMD_DATA: Update in progress...

That means downloads finished and the database import is still running. Do not restart services or rerun greenbone-feed-sync just because SCAP is slow.

2. Scan config count

bash
sudo -u postgres psql -d gvmd -tAc "SELECT count(*) FROM public.configs;"

0 means not ready. When GVMD_DATA import completes, this jumps to a positive number and Scan Configs lists Full and fast.

  1. Is gvmd still syncing?
bash
ps aux | grep 'gvmd: Sync\|gvmd: OSP'
sudo systemctl status gvmd postgresql

Healthy signs during import:

  • Child processes named gvmd: Synchron, gvmd: Syncing, or gvmd: OSP: Upd (NVT load into the manager after SCAP)
  • A PostgreSQL child with high CPU (COPY scap2... or UPDATE scap2.cpes)

4. Live log tail

bash
sudo tail -f /var/log/gvm/gvmd.log

Example log lines from a first import, and what they mean:

output
update_scap: Updating data from feed
Updating /var/lib/gvm/scap-data/nvdcve-2.0-2024.json.gz
Updating CVSS scores and CVE counts for CPEs
update_scap_end: Updating SCAP info succeeded
OSP service has different VT status (version 202609030608) from database (version (null), 0 VTs). Starting update ...
sync_cert: Updating CERT info succeeded

After update_scap_end, Scan Configs can still be empty. The manager next loads vulnerability tests from the scanner (gvmd: OSP: Upd). That step handled 95,255 plugin files before public.nvts and public.configs moved off zero. Once GVMD_DATA starts, the log shifts toward gvmd data objects, and Scan Configs fills in shortly after that phase completes.

5. PostgreSQL size

bash
du -sh /var/lib/postgresql/*/main

On a fresh Kali install the gvmd database often grows from a few gigabytes toward 20 to 25 GB during the first SCAP import. A rising size with active gvmd: Syncing usually means work in progress, not a hang.

6. Current database query (optional)

bash
sudo -u postgres psql -d gvmd -c \
  "SELECT pid, state, left(query, 100) FROM pg_stat_activity \
   WHERE datname='gvmd' AND state='active' AND query NOT LIKE '%pg_stat_activity%';"

During SCAP you may see long-running COPY scap2.affected_products or UPDATE scap2.cpes SET (severity, cve_refs). The CPE update step alone took about 45 to 90 minutes on an 11 GB VM after the CVE JSON files finished loading.

How long to plan for

There is no timer in the UI. These ranges come from a Kali lab run and match what other Greenbone CE installs report on modest hardware:

Stage Typical duration (first install)
greenbone-feed-sync download 20 to 60 minutes (network dependent)
NVT import Often the first feed to reach Current
SCAP import (largest phase) 1 to 2+ hours on 8 to 11 GB RAM
NVT load into gvmd (OSP update after SCAP) 15 to 45 minutes for ~95k VTs; log may pause on one line while gvmd: OSP: Upd runs
CERT import Often minutes; may complete before SCAP commits
GVMD_DATA import (scan configs appear) 15 to 30 minutes after SCAP finishes
Total before first scan 2 to 4 hours is realistic on a lab VM; faster hardware finishes sooner

If NVT is Current but Scan Configs is still empty after two hours, check /var/log/gvm/gvmd.log and PostgreSQL activity before assuming failure. High CPU on gvmd: Syncing and a growing database usually mean the import is still working.

Sizing reminder:

  • Prefer 80 to 100 GB disk and 12 to 16 GB RAM
  • An 8 GB VM with a 55 GB disk stalled during the SCAP CPE update and nearly filled the volume

Check whether feed import is still working

Do not restart a busy manager only because the UI stays empty. Check process names and recent log entries:

bash
sudo systemctl status gvmd ospd-openvas postgresql
sudo tail -n 80 /var/log/gvm/gvmd.log

During the first import, systemctl status gvmd showed child processes named gvmd: Synchron and gvmd: Syncing, while PostgreSQL showed an active COPY. The log recorded update_scap: Updating data from feed. Those are signs of work, not a hang. CPU use may stay high until the transaction commits, so database counts can sit at zero and then appear together.

While gvmd: Syncing is active and the log still advances:

  • Do not restart gvmd or PostgreSQL (that aborts the long SCAP transaction)
  • Do not rerun greenbone-feed-sync just to “speed things up” (it does not help PostgreSQL load and can hit lock files)

One retry failed when the kernel reported a PostgreSQL soft lockup and the database restarted. The manager log then contained:

output
sql_exec_internal: PQexec failed: server closed the connection unexpectedly
FATAL: the database system is not yet accepting connections
DETAIL: Consistent recovery state has not been yet reached.

In that case, confirm PostgreSQL and gvmd recover, then let the automatic import retry. Do not delete the database or rerun gvm-setup over a transient recovery message. If the same lockup repeats, check CPU, RAM, disk I/O, and the PostgreSQL journal before you rebuild anything.


Log in and confirm the scanner is ready

Open the web UI locally:

text
https://127.0.0.1:9392

Accept the self-signed certificate warning on first access. The login page shows the OpenVAS Community Edition branding and a Sign in form:

OpenVAS web UI login page at https://127.0.0.1:9392 with Username and Password fields

Log in as admin with the password gvm-setup printed. If you reset the password during lab testing, use that value instead.

Before you create a task, confirm:

  • Administration → Feed Status: feeds show a version and recent sync time.
  • Configuration → Scan Configs: at least one policy (for example Full and fast) is listed.
  • Configuration → Scanners: the default OpenVAS scanner is present and reachable.

When the GVMD_DATA import finishes, Scan Configs looks like this (7 of 7, with Full and fast at 60 families and 186,269 NVTs):

OpenVAS Scan Configs page listing Base, Discovery, Full and fast, Host Discovery, Log4Shell, and System Discovery

Confirm Full and fast is in the list before you create a task. If the page is still empty, go back to the feed sync section. Creating a task early produces confusing errors even when the login page works.


Create a scan target

A target is the host or range Greenbone will probe. In the UI, open Configuration → Targets → New Target and set:

Field Lab value Why it matters
Name Metasploitable2-lab Label for tasks and reports
Port list All IANA assigned TCP or 1-65535 Defines which ports NVTs may test
Credentials (leave empty for first scan) Optional SSH/SMB creds for authenticated checks later

Save the target only after you confirm the IP responds to ping or Nmap from Kali. The New Target form used Hosts 192.168.56.127, Port List All IANA assigned TCP, and empty credentials:

New Target dialog named Metasploitable2-lab with host 192.168.56.127 and All IANA assigned TCP port list

Click Create. The target then appears under Configuration → Targets.

Create a target from the CLI (optional)

gvm-cli refuses to run as root. On Kali, run it through the packaged _gvm service account:

bash
sudo -u _gvm gvm-cli --gmp-username admin --gmp-password '<admin-password>' \
  socket --socketpath /run/gvmd/gvmd.sock \
  --xml "<create_target><name>Metasploitable2-lab</name><hosts>192.168.56.127</hosts><port_range>1-65535</port_range></create_target>" \
  --pretty
output
<create_target_response status="201" status_text="OK, resource created" id="b5c79e15-84fc-4653-80fc-276a03a8f8d9"/>

List targets to verify:

bash
sudo -u _gvm gvm-cli --gmp-username admin --gmp-password '<admin-password>' \
  socket --socketpath /run/gvmd/gvmd.sock --xml "<get_targets/>" --pretty

The response should show your host under <hosts>.


Create and run a vulnerability scan

In the UI:

  1. Open Scan → Tasks → New Task
  2. Name the task (for example MS2-full-fast)
  3. Select the Metasploitable2-lab target
  4. Choose scan config Full and fast (a balanced default that runs common NVTs without every exhaustive check)
  5. Select the default OpenVAS scanner
  6. Save, then click the start (play) icon on the task row

The New Task form used name MS2-full-fast and Scan Targets Metasploitable2-lab. Further down the same form, set Scanner to OpenVAS Default and Scan Config to Full and fast:

New Task dialog named MS2-full-fast with Scan Targets set to Metasploitable2-lab

Full and fast fits a first lab scan: broad TCP coverage with reasonable runtime. Save Full and deep for later, when you have time and RoE approval for heavier probing.

If scan configs are missing

Starting a task before feeds finish fails at the manager. A CLI attempt with a known Full and fast UUID returns:

output
<create_task_response status="404" status_text="Failed to find config 'daba56c8-73ec-11df-a475-002264764cea'"/>

That 404 means the configuration object is not in gvmd yet. Finish feed import and re-check Scan Configs in the UI.

While a scan runs, the task page shows progress percentage and status:

  • Running at 0% for the first several minutes is normal on Full and fast (host discovery and NVT queue setup)
  • The task went Requested, then Queued, then Running
  • ospd-openvas logged Starting scan, and openvas --scan-start was active while the UI still showed 0%

After discovery finishes, the percentage moves. The Tasks list looks like this once the bar leaves 0% (here MS2-full-fast at 12% with one live report link):

OpenVAS Tasks list showing MS2-full-fast Running at 12 percent with Reports count 1

Treat a stuck scan as a problem when either of these holds:

  • Status never leaves Requested
  • Progress stays at 0% for a long time and no openvas process is running

Then check whether the target is reachable, the scanner service is up, or feeds are still importing. See troubleshooting below.

When the scan finishes, the Tasks page shows Status Done and a severity pill for the worst host score. On Metasploitable 2 with Full and fast, that score reached 10.0 (Critical):

OpenVAS Tasks page showing MS2-full-fast Done with severity 10.0 Critical

Click the report link (or open Scans → Reports) to read the counts.


Read the Greenbone scan report

Open Scans → Reports and select the finished task. The Reports list shows status, task name, overall severity, and per-class counts. The Metasploitable Full and fast report on this lab finished with Critical 11, High 9, Medium 40, Low 6, and Log 90 (False Pos. 0):

OpenVAS Reports page for MS2-full-fast Done with severity 10.0 and Critical 11 High 9 Medium 40 Low 6 Log 90

Open the report, then open the Results view. Results ranked by severity put Critical rows first. The top Critical row on this scan was a TWiki finding on 192.168.56.127:80/tcp with QoD 80%:

OpenVAS Results list showing TWiki Critical 10.0 QoD 80 percent on host 192.168.56.127 port 80/tcp

Use these fields when you open any result row:

Column / field What it tells you
Severity Normalized risk score for sorting, not proof of exploitability
Host Affected IP or hostname
Port / service Where the NVT matched (for example 80/tcp, ftp)
NVT Network Vulnerability Test name (the plugin that fired)
CVE Public identifier when the NVT maps to a CVE
QoD (Quality of Detection) How confident Greenbone is that the detection is correct
Result / evidence Banner text, version string, or plugin output. Read this first.
Solution Vendor-oriented remediation summary
Affected software Version range the plugin believes matched

One finding (lab example)

The TWiki Critical row from the Results list above looked like this in the detail view:

Field Lab value
Severity 10.0 (Critical)
Host 192.168.56.127
Port 80/tcp
NVT TWiki < 4.2.4 Multiple XSS / Command Execution Vulnerabilities
QoD 80 %
Result Installed version 01.Feb.2003; fixed version 4.2.4

Other Critical rows on the same host included Apache/phpMyAdmin/PostgreSQL end-of-life detections and Samba/ProFTPD issues. Many of those carry QoD 30 %, so treat them as leads until you confirm the version or banner yourself.

The color of the severity bar matters less than whether the detection result matches the host:

  • Banner, version, and reachable port should agree with the Result text
  • High QoD with consistent evidence belongs in vulnerability triage notes
  • High severity with weak QoD or vague evidence needs a manual check first

Validate a Greenbone finding

Scanner output is a lead, not a finding for your final report. A short validation loop:

  1. Confirm the host and port are reachable from your test position.
  2. Read the Result and QoD fields, not only severity.
  3. Compare the reported version or banner to manual enumeration (nmap -sV, service login banner, package query when credentialed).
  4. Open the CVE or vendor advisory and check prerequisites (exact build, configuration, backdoored tarball vs stock package).
  5. Decide validate, defer, or reject, and document why.

For exploit selection after validation, continue with validate scan results and exploit selection. This article stops at confirmation; exploitation belongs in scoped follow-on work.


Credentialed vs uncredentialed scans

Mode What Greenbone can see Tradeoff
Uncredentialed Exposed services, banners, unauthenticated checks Matches external attacker view; misses patch levels visible only after login
Credentialed (SSH/SMB) Local package versions, configuration files, missing patches on the host Stronger findings; requires safe credentials and RoE approval

Your first lab scan against Metasploitable 2 should stay uncredentialed so you learn the UI and severity model. Add SSH or SMB credentials in the target only when your engagement authorizes authenticated scanning and you have a test account to use.


OpenVAS / Greenbone troubleshooting

Problem Likely cause What to check
No scan configurations in UI Feed files are missing or gvmd is still importing them Check Feed Status; run SELECT count(*) FROM public.configs; tail /var/log/gvm/gvmd.log; wait for GVMD_DATA Current
gvm-check-setup says OK but configs are empty Setup checks passed before database import finished Normal during SCAP import; look for gvmd: Syncing, rising PostgreSQL size, and config_count 0 in get_configs
No port lists gvmd data feed download/import incomplete Check Administration → Feed Status and wait for the gvmd data import
gvm-check-setup NVT directory error NVT rsync not finished or failed sudo greenbone-feed-sync --type nvt; inspect rsync errors
Task fails: config not found Scan configs empty Wait for feeds; confirm Scan Configs in UI
Scan stays at 0 % Early in the scan, or target/scanner problem First minutes of Full and fast: wait and check openvas --scan-start is running. If it never moves, ping the target and sudo systemctl status ospd-openvas gvmd
Web UI loads but no results Scan never started or target has no open ports Confirm task status Done; check host firewall
gvm-cli “MUST NOT be run as root” Invoked as root or without socket access Run through the packaged account: sudo -u _gvm gvm-cli …
rsync Connection reset by peer Network timeout or proxy Retry feed sync; avoid interrupting long downloads
PostgreSQL connection closes during first import Database restarted or recovered after a stall Check journalctl and gvmd.log; allow the recovered manager to retry before rebuilding anything
Old CVE data Feeds stale Schedule periodic greenbone-feed-sync; compare feed dates

Official references: Greenbone Community Edition documentation and Kali GVM tools.


OpenVAS / Greenbone vs Nessus

Topic Greenbone Community Edition (GVM) Nessus (Essentials / Professional)
Licensing Open source; community feeds Proprietary; Essentials is free with limits
Setup Heavier: PostgreSQL, feeds, multiple services Installer-driven; faster first scan for many users
Feeds / plugins Community feed via greenbone-feed-sync Tenable plugin feed
GUI Greenbone Security Assistant web UI Nessus web UI
Credentialed scans Supported with stored credentials Supported
Reporting Built-in reports; export for triage Strong reporting templates
Best fit Learning, self-hosted lab, unlimited IPs in CE Quick commercial-style assessments, Tenable ecosystem

Accuracy depends on feed freshness, scan configuration, credentials, and how well version detection matches the target. Greenbone fits a self-hosted lab when open-source scanning depth matters. Nessus fits when the workflow or client standardizes on Tenable. Follow the Nessus vulnerability scanner tutorial for that path.


Greenbone containers (alternative install)

Greenbone publishes container images for labs that prefer Docker or Podman over the Kali packages. Containers trade package integration for a repeatable stack. This article uses the Kali gvm metapackage because it matches PenTest+ lab search intent and the ethical hacking course toolchain.


Summary

Kali's OpenVAS path is the GVM packages: apt install gvm, then gvm-setup and gvm-check-setup. The UI at https://127.0.0.1:9392 will load before the scanner is useful. Scan configs only show up after the feeds download and PostgreSQL finishes importing them. On a lab VM that often takes 2 to 4 hours.

While feeds are still importing:

  • Watch Administration → Feed Status and /var/log/gvm/gvmd.log
  • Run SELECT count(*) FROM public.configs and wait until the count is above zero
  • Leave gvmd and PostgreSQL alone; an empty Scan Configs page is normal until GVMD_DATA finishes

After configs appear, create a target, start a Full and fast task, and open the report. Read QoD, port, NVT name, CVE, and the Result text along with severity, then validate those hits by hand before treating them as confirmed. If a feed download fails partway through, re-run greenbone-feed-sync. That usually fixes it without a reinstall.


References


Frequently Asked Questions

Why does OpenVAS show no scan configurations?

Feed data is missing or not fully imported. Run sudo greenbone-feed-sync --type all once if the download failed, leave the services running, and inspect /var/log/gvm/gvmd.log. Scan configs appear only in the GVMD_DATA phase, after NVT, SCAP, and CERT data load into PostgreSQL. gvm-check-setup may report success while SCAP is still running and SELECT count(*) FROM public.configs still returns 0.

How long does Greenbone feed sync take?

Often 2 to 4 hours end to end on a first Kali install, not just the download. The rsync step may finish in 20 to 60 minutes; SCAP import into PostgreSQL is usually the longest phase (1 to 2+ hours on 8 to 11 GB RAM). Scan configurations appear only in the final 15 to 30 minutes when GVMD_DATA imports. Track progress with Feed Status, sudo tail -f /var/log/gvm/gvmd.log, and SELECT count(*) FROM public.configs rather than refreshing the Scan Configs page alone.

What login URL does Kali use?

Default local URL: https://127.0.0.1:9392 with the admin password printed by gvm-setup. Remote access requires SSH port forwarding or changing gsad listen settings.

What does QoD mean in OpenVAS results?

Quality of Detection: the scanner’s confidence that the test result is correct. High severity with low QoD still needs manual validation.

Is OpenVAS the same as Greenbone?

OpenVAS is the scanner engine name many users still search for. The full stack is Greenbone Community Edition managed by GVM, with the Greenbone Security Assistant web UI.

Finished reading?Beta Get the key takeaways in seconds, then ask follow-up questions
Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with 15+ years of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, networking, and security, delivering robust and efficient solutions for diverse projects.

  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security
  • Cloud Computing
  • Kubernetes
  • Linux
  • Ansible (software)