Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feed sync #389

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b3624a8
Update redis.md
syspect-tech Jun 13, 2023
174cbbe
Merge pull request #1 from rippledj/rippledj-fix-redis-config-for-sys…
syspect-tech Jun 13, 2023
0d3e0fb
Update dependencies.md
syspect-tech Jun 13, 2023
54be934
Merge pull request #2 from rippledj/rippledj-patch-1
syspect-tech Jun 13, 2023
83f0537
Update dependencies.md
syspect-tech Jun 13, 2023
96067ed
Merge pull request #3 from rippledj/rippledj-patch-2
syspect-tech Jun 13, 2023
7d8328d
Create gvm-feed-sync-docs
syspect-tech Jul 12, 2023
b9dfbb0
Delete gvm-feed-sync-docs
syspect-tech Jul 12, 2023
fa4d930
Create greenbone-feed-sync-docs.md
syspect-tech Jul 12, 2023
c2ff178
Update greenbone-feed-sync-docs.md
syspect-tech Jul 12, 2023
2037c37
Update greenbone-feed-sync-docs.md
syspect-tech Jul 12, 2023
40b32db
Update greenbone-feed-sync-docs.md
syspect-tech Jul 13, 2023
3460fa7
created feed-sync docs
syspect-tech Sep 14, 2023
eab20f8
Merge branch 'main' into feed-sync
syspect-sec Sep 14, 2023
9c3147c
Update src/feed-sync.md
syspect-sec Oct 30, 2023
f69a664
Update src/feed-sync.md
syspect-sec Oct 30, 2023
ef2bce6
Update src/feed-sync.md
syspect-sec Oct 30, 2023
d917c70
Update src/feed-sync.md
syspect-sec Oct 30, 2023
d1fed1f
Update src/feed-sync.md
syspect-sec Oct 30, 2023
a389619
Update src/feed-sync.md
syspect-sec Oct 30, 2023
a87698e
Update src/feed-sync.md
syspect-sec Oct 30, 2023
e0251ba
Update src/index.md
syspect-sec Oct 30, 2023
414643f
Merge branch 'main' into feed-sync
syspect-sec Oct 30, 2023
e539d81
Addressing issues blocking the first pull request
Nov 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 187 additions & 0 deletions src/feed-sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@

# Feed Sync Guide

This documentation provides instructions on updating the feed sync for your specific Greenbone version and installation method. Please note that there is currently a migration from the `/usr/local/sbin/greenbone-feed-sync` bash script to a new Python-based script with the same name: `greenbone-feed-sync`. Also, please note that Kali Linux distribution comes with its own additional bash command script `gvm-feed-update`, yet we do recommend using the native Greenbone feed-sync commands.
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved

If you are unable to achieve feed synchronization after reading this guide, or require further assistance with the feed sync update process, please consult the [Greenbone community forums](https://forum.greenbone.net/) or contact our support team for guidance.
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved

## A Note About Deprecated Sync Scripts
The following sync scripts listed below are deprecated and no longer installed by default since gvmd 22.5.0. If you want to check if you have these scripts installed you can try the following command:
```sh
which <feed-command>
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
```
- `greenbone-certdata-sync`: This script is equivalent to greenbone-feed-sync --type CERT, and it was primarily provided for backwards compatibility.
- `greenbone-scapdata-sync`: This script is equivalent to greenbone-feed-sync --type SCAP 1, and it was primarily provided for backwards compatibility.
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
- `greenbone-nvt-sync`: This script, written in bash, was used to download vulnerability tests data (nasl and notus files). It is deprecated since openvas-scanner 22.6.0.
- `/usr/local/sbin/greenbone-feed-sync` or `/usr/sbin/greenbone-feed-sync`: This is the old sync script written in bash to download CERT, SCAP, and GVMD_DATA. It is no longer installed by default since gvmd 22.5.0.

### Deprecated Sync Script Removal
If you have any of the deprecated sync scripts (`greenbone-certdata-sync`, `greenbone-scapdata-sync`, `greenbone-nvt-sync`, `/usr/local/sbin/greenbone-feed-sync` or `/usr/sbin/greenbone-feed-sync`) installed, it is recommended to remove them. This step ensures a clean transition to the new sync script.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can lead to mistakes because installing the grenbone-feed-sync python project will also install greenbone-certdata-sync, greenbone-scapdata-sync and greenbone-nvt-sync scripts that just use the new greenbone-feed-sync script with the desired type of feed. The only clear difference is that the old scripts are installed into an sbin directory and the new ones will be put into a bin directory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have modified this in the new commit which I will push later today.


## Introduction Of The New Python Feed Sync Script
A new Python-based `greenbone-feed-sync` command now replaces the deprecated feed sync scripts mentioned above. This new script can be run with can be run with **Greenbone version 22.4 and later**, however, older versions are not supported. This new feed sync method will now be installed by default as of **Greenbone Community Edition version 22.5.0**.
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved

The new script can handle various use cases, including the functionality provided by the `gvm-feed-update` which is provided by the Kali/Debian packagers. Full documentation for the new Python-based feed update script can be found [here](https://github.com/greenbone/greenbone-feed-sync/).

### Installation
Python 3.9 and later is supported. Also note that sycing feeds requires the `rsync` tool being installed and available within the PATH, which is normally installed as part of Greenbone Community Edition's source code and docker container installation methods.

#### Install using pipx
You can install the latest stable release of pontos from the Python Package Index (pypi) using [pipx](https://pypa.github.io/pipx/)
```sh
python3 -m pipx install greenbone-feed-sync
```

#### Install using pip
NOTE: The pip install command does no longer work out-of-the-box in newer distributions like Ubuntu 23.04 because of [PEP 668](https://peps.python.org/pep-0668). Please use the [installation via pipx](https://github.com/greenbone/greenbone-feed-sync/tree/main#install-using-pipx) instead.

You can install the latest stable release of greenbone-feed-sync from the Python Package Index (pypi) using [pip](https://pip.pypa.io/)
```sh
python3 -m pip install greenbone-feed-sync
```

## Updating the Greenbone Feeds

### Determine Which Command Is In Use
Before you can udpate the Greenbone feed sync, you should check which version of the commands are active when you execute the `greenbone-feed-sync` command. To do that, use the `which` command to determine the path of the command that is executed.
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved

For example:
```sh
which greenbone-feed-sync
/usr/local/bin/greenbone-feed-sync
```
Once you determine the path of the executed command you can identify whether it is the new Python-based feed sync command or the legacy bash version. To do that, use the `head` command to print the first line of the script. This will indicate the interpreter used at execution run-time.

For example:
```sh
# If the new Python-based feed update script is active you will see
head -1 /usr/local/bin/greenbone-feed-sync
#!/usr/bin/python3
```
```sh
# If the legacy bash feed update script is active you will see
head -1 /usr/local/bin/greenbone-feed-sync
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK the old script is always installed into sbin via gvmd's make file.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have modified this in the new commit which I will push later today.

#!/bin/sh
```

### Updating Feeds With New Python Script
By default, when no arguments are passed, it runs the sync operation for all types of feed data. To ensure proper execution and permissions, the new Python script must be run with root/sudo permissions, as it will need to change its execution context to the `gvm` or `_gvm` user.
```sh
# Update all feeds with single command
sudo greenbone-feed-sync
```
To update only one feed at a time, the new Python-based command can be used similar to the previous `/usr/sbin/greenbone-feed-sync` bash script command by specifying a feed type, however, note that the new feed types use lowercase and more options are available.
```sh
# Include the feed type as an argument to update only a specific feed type
greenbone-feed-sync --type <feed-type>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JFYI: the feed-type argument doesn't care for lower or upper case letters.

SCAP_DATA is the same as scap_data or even ScAp_DaTa.

```
The available feed types are:

* `all`: same as using the command without specifying a type
* `nvt`: Fetches any newly available vulnerability tests
* `gvmd-data`: Synchronizes GVM data feed which includes [???]
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
* `scap`: Synchronizes SCAP data feed
* `cert`: Synchronizes CERT data feed
* `notus`: Fetch any newly available NOTUS vulnerability tests
* `nasl`: Fetch any newly available NASL vulnerability tests
* `report-format` or `report-formats`: Fetches any newly available scan report formats
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
* `scan-config` or `scan-configs`: Fetches any newly available scan configurations
* `port-list` or `port-lists`: Fetches any newly available port lists

For other options, see the [full documentation here](https://github.com/greenbone/greenbone-feed-sync/).

### Updating Feeds With Legacy Bash Script

To update the feed sync using the legacy `greenbone-feed-sync` command, the `--type` parameter is **required**.
```sh
# Update feeds with legacy bash script
sudo -u gvm greenbone-feed-sync --type <feed-type>
```
Using one of the following values to replace **\<feed-type>**:

* `CERT`: Synchronizes CERT data feed
* `SCAP`: Synchronizes SCAP data feed
* `GVMD_DATA`: Synchronizes gvmd data feed

Other arguments that can be passed to the legacy command include:

* `--version`: Displays the version of the script
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
* `--identify`: Displays information about the script, including script ID, name, version, feed name, whether it is restricted or not
* `--describe`: Displays a description of the script and the feed it synchronizes
* `--feedversion`: Displays the version of the feed
* `--selftest`: Performs a self-test to check if all required utilities are available
* `--feedcurrent`: Checks if the feed is already up to date
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved

### Updating Feeds For Kali Linux Native Installation
Kali Linux includes its own command for feed synchronization. To update all feeds issue the command as follows
```
┌──(dev㉿kali)-[~]
└─$ sudo gvm-feed-update
```
Please note that the `gvm-feed-update` command mentioned above is not maintained by Greenbone. It is maintained by the Kali/Debian package managers. Under the hood, the `gvm-feed-update` is a bash script that essentially executes the standard `greenbone-feed-sync --type <feed-type>` scripts provided by Greenbone. We recommend avoiding the use of `gvm-feed-update` for your feed sync operations.

### Verifying Successfull Feed Sync Update
After the sync operation completes, you can verify the successful update of the feed data. To confirm the updated feed status visit the `/feedstatus` page which can be found under the **Administration** item in the top menu bar of Greenbone's web-interface. If a feed has successfully updated you will see **Current** beside the particular feed.

## Automating Feed Sync Updates
The Greenbone feeds are not automatically synced in the case of a Greenbone Community source code installation, for the Greenbone Community Docker containers, or the Greenbone native Kali Linux installation. The sugested method for automating the Greenbone feed sync is to create a crontab file to schedule the schedule the appropriate commands.

If using the new Python-based command, the crontab should be run under the root user context, however, if using the legacy feed sync bash script, the crontab should be created specifcally for the `gvm` or `_gvm` user.

1. [MORE]

2. Determine whether your installation uses the `gvm` or `_gvm` user. The Kali linux installation is typically the only installation type that uses `_gvm`. Therefore, you should expect to see either of these output:
```
┌──(dev㉿kali)-[~]
└─$ awk -F: '{ print $1}' /etc/passwd | grep gvm
_gvm
```
```
$ awk -F: '{ print $1}' /etc/passwd | grep gvm
gvm
```

## Troubleshooting A Connection To The Greenbone Feeds
To trouble shoot a connection to the Greenbone feeds, you can issue the following command from a terminal.
```sh
rsync rsync://feed.community.greenbone.net/community
```
You should see output such as the following:
```sh
Greenbone community feed server - http://feed.community.greenbone.net/
This service is hosted by Greenbone Networks - http://www.greenbone.net/

All transactions are logged.

If you have any questions, please use the Greenbone community portal.
See https://community.greenbone.net for details.

By using this service you agree to our terms and conditions.

Only one sync per time, otherwise the source ip will be temporarily blocked.

data-objects Greenbone community data objects, see https://community.greenbone.net/
nvt-feed Greenbone community NVT feed, see https://community.greenbone.net/
scap-data Greenbone community SCAP data feed, see https://community.greenbone.net/
cert-data Greenbone community CERT data feed, see https://community.greenbone.net/
community-legacy Greenbone community legacy feed, see https://community.greenbone.net/
community Greenbone community feed, see https://community.greenbone.net/
```
If you are unable to connect to the Greenbone feeds using the `rsync` command, we suggest you troubleshoot your network connection to identify any potential firewalls, content proxies, or network configurations. To do this you can try some of the following methods:

### Use nping

The `nping` command is part of the `nmap` tool. It can be used to directly traceroute a TCP connection to a specific port while `traceroute` and `tcptraceroute` cannot be configured to test a specific port. This will help identify port-based firewall rules as well as host/IP-based firewall rules. Note: `nping --tcp` command requires `sudo` or root permissions.
```sh
sudo nping --tcp --traceroute -c 13 -p 873 feed.community.greenbone.net
```
### Use traceroute/tracert
If you cannot install `nmap` on your host, you can try `traceroute` on Linux/Unix based systems or `tracert` for Windows which are both typically installed by default.
```sh
# For Linux/Unix systems
traceroute feed.community.greenbone.net
```
```sh
# For Windows systems
tracert feed.community.greenbone.net
```
1 change: 1 addition & 0 deletions src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,6 @@ background
faq
glossary
changelog
feed-sync
syspect-sec marked this conversation as resolved.
Show resolved Hide resolved
api
```