在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特权才能执行某些操作。以来 openvas
从 ospd-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
您还可以在以下位置找到日志:
,在这种情况下是 /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所需的全部工作。您现在可以开始运行扫描。我有什么想念的吗,将其放在评论部分!请享用
参考
源文件 自述文件 和 安装.md 档案
。