在Ubuntu 20.04上安装和设置GVM 11

在本指南中,我们将学习如何安装和设置 GVM 11 在Ubuntu 20.04上。 Gen骨 V脆弱性 中号年龄(GVM),以前称为OpenVAS,是一种网络安全扫描程序,它提供一组网络漏洞测试(NVT)以检测系统和应用程序中的安全漏洞。在撰写本文时, GVM 11是当前的稳定版本

在Ubuntu 20.04上安装和设置GVM 11

在此演示中,我们将通过源代码在Ubuntu 20.04上构建GVM 11。

运行系统更新

首先,更新和升级系统软件包;

apt update
apt upgrade

创建GVM用户

在此演示中,我们将以非特权系统用户身份运行GVM。因此,我们将创建 gvm 用户和组。

useradd -r -d /opt/gvm -c "GVM (OpenVAS) User" -s /bin/bash gvm

根据选项指定创建GVM用户目录 -d 在上面的命令中,将用户和组所有权设置为 gvm

mkdir /opt/gvm
chown gvm:gvm /opt/gvm

安装所需的构建工具

为了在Ubuntu 20.04上成功构建GVM 11,您需要安装许多必需的依赖项和构建工具。

apt install gcc g++ make bison flex libksba-dev curl redis libpcap-dev 
cmake git pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev 
libssh-gcrypt-dev libldap2-dev gnutls-bin libmicrohttpd-dev libhiredis-dev 
zlib1g-dev libxml2-dev libradcli-dev clang-format libldap2-dev doxygen 
gcc-mingw-w64 xml-twig-tools libical-dev perl-base heimdal-dev libpopt-dev 
libsnmp-dev python3-setuptools python3-paramiko python3-lxml python3-defusedxml python3-dev gettext python3-polib xmltoman 
python3-pip texlive-fonts-recommended texlive-latex-extra --no-install-recommends

在Ubuntu 20.04上安装Yarn

接下来,安装Yarn JavaScript程序包管理器

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt update
apt install yarn -y

在Ubuntu 20.04上安装PostgreSQL

GVM 11放弃了对sqlite3的支持,目前仅支持PostgreSQL作为后端数据库。因此,您需要在Ubuntu 20.04上安装PostgreSQL。

apt install postgresql postgresql-contrib postgresql-server-dev-all

创建PostgreSQL用户和数据库

安装完成后,为OpenVAS Manager创建PostgreSQL用户和数据库。请注意,数据库和用户应创建为PostgreSQL用户, Postgres

sudo -Hiu postgres
createuser gvm
createdb -O gvm gvmd

授予PostgreSQL用户DBA角色

psql gvmd
create role dba with superuser noinherit;
grant dba to gvm;
create extension "uuid-ossp";
q
exit

完成后,重新启动PostgreSQL。

systemctl restart postgresql

从源代码构建GVM 11

在Ubuntu 20.04上安装和设置GVM 11需要多种工具。这些包括;

  • GVM库
  • OpenVAS
  • OSPd
  • ospd-openvas
  • 绿骨漏洞管理器
  • 绿骨安全助手
  • Python GVM
  • GVM工具
  • OpenVAS SMB

每个组件都有 自述文件 还有一个 安装.md 该文件说明了如何构建和安装它。

由于我们以非特权用户gvm的身份运行GVM,因此我们将在以下位置安装所有GVM配置文件和库, /opt/gvm

更新PATH环境变量 /etc/environment,包括GVM二进制路径,使其看起来像;

vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"

将GVM库路径添加到 /etc/ld.so.conf.d

echo "/opt/gvm/lib" > /etc/ld.so.conf.d/gvm.conf

构建并安装GVM 11

切换到GVM用户gvm并创建一个临时目录来存储GVM源文件。

su - gvm
mkdir /tmp/gvm-source

下载GVM源文件

导航到上面创建的临时目录,然后运行后续命令以克隆GVM github分支文件。

cd /tmp/gvm-source
git clone -b gvm-libs-11.0 https://github.com/greenbone/gvm-libs.git
git clone https://github.com/greenbone/openvas-smb.git
git clone -b openvas-7.0 https://github.com/greenbone/openvas.git
git clone -b ospd-2.0 https://github.com/greenbone/ospd.git
git clone -b ospd-openvas-1.0 https://github.com/greenbone/ospd-openvas.git
git clone -b gvmd-9.0 https://github.com/greenbone/gvmd.git
git clone -b gsa-9.0 https://github.com/greenbone/gsa.git

源文件到位后,继续在Ubuntu 20.04上构建和安装GVM。

[email protected]:/tmp/gvm-source$ ls
gsa gvmd gvm-libs openvas openvas-smb ospd ospd-openvas

请注意,我们会将所有GVM文件和库安装到非标准位置, /opt/gvm。因此,您需要设置 PKG_CONFIG_PATH 在配置之前,将环境变量更改为pkg-configfiles的位置:

export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

请务必更换路径, /opt/gvm,因此。

构建并安装GVM 11库

转到GVM库目录;

cd gvm-libs

创建一个构建目录并转到其中;

mkdir build
cd build

配置构建;

cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm

接下来,编译并安装GVM库

make
make install

生成并安装OpenVAS和OpenVAS SMB

开放式漏洞评估扫描程序(OpenVAS)是功能齐全的扫描引擎,它执行网络漏洞测试(NVT)的不断更新和扩展的提要。

OpenVAS SMB提供了一些模块,供OpenVAS扫描仪通过Windows Management Instrumentation API和Microsoft Windows系统进行交互。 winexe 二进制文件以在该系统上远程执行进程。

编译安装openvas-smb;

cd ../../openvas-smb/
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make install

构建并安装OpenVAS扫描仪;

cd ../../openvas

继续构建和安装openvas。

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make install

如果遇到错误, ...error: ‘pcap_lookupdev’ is deprecated: use 'pcap_findalldevs'... 编译openvas时,编辑 CMakeLists.txt 归档并替换如下所示的行,然后重新运行安装;

vim ../../openvas/CMakeLists.txt
...
#set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COVERAGE_FLAGS}")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror -Wno-error=deprecated-declarations")
...

配置OpenVAS

主机扫描信息临时存储在Redis服务器上。 Redis服务器的默认配置为 /etc/redis/redis.conf

切换回特权用户并继续。

首先,运行下面的命令为已安装的共享库创建缓存;

ldconfig

接下来,复制OpenVAS扫描仪Redis配置文件, redis-openvas.conf,到相同的Redis配置目录;

cp /tmp/gvm-source/openvas/config/redis-openvas.conf /etc/redis/

更新配置的所有权。

chown redis:redis /etc/redis/redis-openvas.conf

更新路径到Redis unix套接字 /opt/gvm/etc/openvas/openvas.conf 使用 db_address 参数如下;

echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

注意,Unix套接字路径是在 /etc/redis/redis-openvas.conf 文件。

chown gvm:gvm /opt/gvm/etc/openvas/openvas.conf

将gvm用户添加到redis组;

usermod -aG redis gvm

您还可以通过以下调整来优化Redis服务器本身,从而提高性能:

增加somaxconn的值,以避免客户端连接速度慢的问题。

echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf

Redis后台保存在内存不足的情况下可能会失败。为避免这种情况,请启用内存过量使用(男子5 proc)

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf

重新加载上面创建的sysctl变量。

sysctl -p

为了避免Redis造成延迟和内存使用问题,请禁用Linux内核对透明大页面(THP)的支持。为了轻松解决此问题,请为此创建一个systemd服务单元。

vim /etc/systemd/system/disable_thp.service
[Unit]
Description=Disable Kernel Support for Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

重新加载系统配置;

systemctl daemon-reload

启动并启用此服务以在系统启动时运行。

systemctl enable --now disable_thp

重新启动OpenVAS Redis服务器

systemctl start [email protected]

许多网络漏洞测试(NVT)需要root特权才能执行某些操作。以来 openvasospd-openvas 通过sudo将以下行添加到sudoers文件中,以确保 gvm 本演示中使用的用户可以使用无密码sudo以提升的权限运行openvas。

echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas" > /etc/sudoers.d/gvm

另外,更新 secure_path 包括GVM /sbin 路径 /opt/gvm/sbin

visudo
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"

另外,启用 gvm 用户来运行GSA Web应用程序守护程序, gsad,使用无密码的sudo。

echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad" >> /etc/sudoers.d/gvm

更新OpenVAS NVT

使用以下命令更新Greenbone Security Feed /社区Feed中的OpenVAS网络漏洞测试Feed。 greenbone-nvt-sync 命令。

greenbone-nvt-sync 命令 禁止 以特权用户root身份执行,因此切换回我们上面创建的GVM用户并更新NVT。

su - gvm

接下来,以openvas用户身份更新NVT。

greenbone-nvt-sync

更新完成后,您需要使用来自VT文件的相同VT信息更新Redis服务器。

sudo openvas --update-vt-info

生成并安装Greenbone漏洞管理器

export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
cd /tmp/gvm-source/gvmd
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make install

生成并安装Greenbone Security Assistant

cd ../../gsa
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make install

从Feed服务器更新GVM CERT和SCAP数据;

greenbone-scapdata-sync
greenbone-certdata-sync

考虑将cron作业设置为以您喜欢的频率运行nvts,cert和scap数据更新脚本,以从Feed服务器提取更新。

接下来,运行以下命令以生成证书gvmd。服务器证书用于身份验证,而客户端证书主要用于授权。更多关于 man gvm-manage-certs

gvm-manage-certs -a

生成并安装OSPd和OSPd-OpenVAS

开放扫描仪协议(OSP)为不同的安全扫描仪创建统一的界面,并在中央Greenbone Vulnerability Manager服务下始终提供其控制流和扫描结果。

export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir -p /opt/gvm/lib/python3.8/site-packages/
export PYTHONPATH=/opt/gvm/lib/python3.8/site-packages
cd /tmp/gvm-source/ospd
python3 setup.py install --prefix=/opt/gvm
cd ../ospd-openvas
python3 setup.py install --prefix=/opt/gvm

启动OpenVAS扫描仪,GSA和GVM服务

运行以下命令 gvm 用户启动OpenVAS扫描仪,GSA(WebUI服务)和GVM守护程序。按照显示的顺序执行命令。

启动OpenVAS

/usr/bin/python3 /opt/gvm/bin/ospd-openvas 
--pid-file /opt/gvm/var/run/ospd-openvas.pid 
--log-file /opt/gvm/var/log/gvm/ospd-openvas.log 
--lock-file-dir /opt/gvm/var/run -u /opt/gvm/var/run/ospd.sock

启动GVM

gvmd --osp-vt-update=/opt/gvm/var/run/ospd.sock

启动GSA

sudo gsad

考虑为这些服务创建系统服务单元文件,以使您轻松管理它们。

检查状态;

ps aux | grep -E "ospd-openvas|gsad|gvmd" | grep -v grep

样品输出;

gvm         8221  0.0  0.0  81196  1436 ?        Ss   10:47   0:00 gpg-agent --homedir /opt/gvm/var/lib/gvm/gvmd/gnupg --use-standard-socket --daemon
gvm         8475  2.0  6.0 382248 122184 pts/0   Sl   10:54   1:23 /usr/bin/python3 /opt/gvm/bin/ospd-openvas --pid-file /opt/gvm/var/run/ospd-openvas.pid --log-file /opt/gvm/var/log/gvm/ospd-openvas.log --lock-file-dir /opt/gvm/var/run -u /opt/gvm/var/run/ospd.sock
gvm         8523  0.1 10.1 295648 206108 pts/0   S    10:57   0:06 gvmd: Waiting for incoming connections
postgres    8541  0.1  7.7 225436 157888 ?       SLs  10:57   0:05 postgres: 12/main: gvm gvmd [local] idle
root        8599  0.0  0.8 664696 17064 pts/0    Sl   10:58   0:00 gsad
root        8600  0.0  0.1 205912  3608 pts/0    Sl   10:58   0:00 gsad
gvm        11911  0.0  9.7 295648 198056 pts/0   S    12:01   0:00 gvmd: Reloading NVTs
gvm        11913  0.0  9.8 295648 201172 pts/0   S    12:01   0:00 gvmd: OSP: Updating NVT cache
postgres   11917  0.1  0.9 217796 19544 ?        Ss   12:01   0:00 postgres: 12/main: gvm gvmd [local] idle

您还可以在以下位置找到日志: /var/log/gvm/,在这种情况下是 /opt/gvm/var/log/gvm

创建GVM扫描仪

由于我们启动了扫描仪并将其设置为使用我们的非标准扫描仪主机路径(/opt/gvm/var/run/ospd.sock),我们需要创建并注册我们的扫描仪;

gvmd --create-scanner="Kifarunix-demo OpenVAS Scanner" --scanner-type="OpenVAS" --scanner-host=/opt/gvm/var/run/ospd.sock

接下来,您需要验证您的扫描仪。为此,您首先需要获取扫描仪标识符。

gvmd --get-scanners
08b69003-5fc2-4037-a479-93b440211c73 OpenVAS /tmp/ospd.sock 0 OpenVAS Default
6acd0832-df90-11e4-b9d5-28d24461215b CVE 0 CVE
9c6f2214-eb7c-4613-96bd-21551b259cf1 OpenVAS /opt/gvm/var/run/ospd.sock 9390 Kifarunix-demo OpenVAS Scanner

根据上面的输出,我们的扫描仪UUID为 9c6f2214-eb7c-4613-96bd-21551b259cf1

验证扫描仪;

gvmd --verify-scanner=9c6f2214-eb7c-4613-96bd-21551b259cf1

创建OpenVAS(GVM 11)管理员

通过运行以下命令创建OpenVAS管理用户;

gvmd --create-user gvmadmin

此命令为用户生成一个随机密码。创建自己的密码;

gvmd --create-user gvmadmin [email protected]

重置现有用户的密码;

gvmd --user= --new-password=

访问GVM 11(OpenVAS)

Greenbone Security Assistant(GSA)WebUI守护程序打开端口443,并侦听所有接口。如果防火墙正在运行,请打开此端口以允许外部访问。您可以通过网址访问GSA https:。接受自签名SSL警告并继续。

使用上面生成的管理凭据登录。

在Ubuntu 20.04上安装和设置GVM 11在Ubuntu 20.04上安装和设置GVM 11

然后你去。这就是在Ubuntu 20.04上安装和设置GVM 11所需的全部工作。您现在可以开始运行扫描。我有什么想念的吗,将其放在评论部分!请享用

参考

源文件 自述文件 安装.md 档案

Sidebar