如何在 Ubuntu 20.04 上安裝 GVM 漏洞掃描器

GVM (Greenbone Vulnerability Management)是一種用於漏洞掃描和漏洞管理的開源解決方案。 GVM 以前被稱為 開放式增值服務.

Greenbone Vulnerability Manager 和 OpenVAS 被世界上許多人廣泛使用,包括安全專家和普通用戶等,他們在一套工具中使用這一切,這些工具協同工作,使用自己的已知弱點數據庫對客戶端計算機運行測試和攻擊。

在本文中,我們將展示如何在 Ubuntu 20.04 上安裝和設置 GVM,以確保您的服務器免受攻擊。

基礎系統

我們將在 Ubuntu 20.04 上通過基本安裝系統包來設置 Greenbone Vulnerability Manager 20.08。

安裝先決條件

首先安裝以下依賴包。

sudo su -
apt update &&
apt -y dist-upgrade &&
apt -y autoremove &&
apt install -y software-properties-common &&
apt install -y build-essential cmake pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev libssh-gcrypt-dev libldap2-dev doxygen graphviz libradcli-dev libhiredis-dev libpcap-dev bison libksba-dev libsnmp-dev gcc-mingw-w64 heimdal-dev libpopt-dev xmltoman redis-server xsltproc libical-dev postgresql postgresql-contrib postgresql-server-dev-all gnutls-bin nmap rpm nsis curl wget fakeroot gnupg sshpass socat snmp smbclient libmicrohttpd-dev libxml2-dev python3-polib gettext rsync xml-twig-tools python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil python3-impacket virtualenv vim git &&
apt install -y texlive-latex-extra --no-install-recommends &&
apt install -y texlive-fonts-recommended &&
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 -y install yarn &&
yarn install &&
yarn upgrade

創建 GVM 用戶

將以下命令粘貼到終端以創建將在安裝和編譯過程中使用的 gvm 用戶:

echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | tee -a /etc/profile.d/gvm.sh &&
chmod 0755 /etc/profile.d/gvm.sh &&
source /etc/profile.d/gvm.sh &&
bash -c 'cat < /etc/ld.so.conf.d/gvm.conf
# gmv libs location
/opt/gvm/lib
EOF'

mkdir /opt/gvm &&
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos '' &&
usermod -aG redis gvm &&
chown gvm:gvm /opt/gvm/

現在以 gvm 用戶身份登錄。 從現在開始,標題標題將被標記為需要執行命令的用戶。

sudo su - gvm

下載和安裝軟件 (GVM)

現在創建 src 文件夾並 git clone GVM 源代碼:

mkdir src &&
cd src &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git &&
git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git &&
git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git &&
git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git &&
git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git &&
git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git &&
git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git

安裝 gvm-libs (GVM)

在這一步中,我們將編譯 gvm-libs 來自 github:

cd gvm-libs &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
mkdir build &&
cd build &&
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. &&
make &&
make doc &&
make install &&
cd /opt/gvm/src

安裝 openvas-smb (GVM)

現在進入 openvas-smb 目錄並編譯源代碼:

cd openvas-smb &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
mkdir build &&
cd build/ &&
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. &&
make &&
make install &&
cd /opt/gvm/src

安裝掃描儀 (GVM)

和前面的步驟一樣,我們現在將構建和安裝 openvas 掃描器:

cd openvas &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
mkdir build &&
cd build/ &&
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. &&
make &&
make doc &&
make install &&
cd /opt/gvm/src

為 OpenVAS 安裝修復 redis (root)

現在我們必須退出當前會話以通過在終端中鍵入“exit”返回特權用戶。
現在將以下代碼粘貼到終端:

export LC_ALL="C" &&
ldconfig &&
cp /etc/redis/redis.conf /etc/redis/redis.orig &&
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/ &&
chown redis:redis /etc/redis/redis-openvas.conf &&
echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf &&
systemctl enable [email protected] &&
systemctl start [email protected]

sysctl -w net.core.somaxconn=1024 &&
sysctl vm.overcommit_memory=1 &&
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf &&
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

cat << /etc/systemd/system/disable-thp.service
[Unit]
Description=Disable 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
EOF

systemctl daemon-reload &&
systemctl start disable-thp &&
systemctl enable disable-thp &&
systemctl restart redis-server

將 /opt/gvm/sbin 路徑添加到 secure_path 變量:

sed 's/Defaultss.*secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"/Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"/g' /etc/sudoers | EDITOR='tee' visudo

允許運行 ospd-openvas 的用戶以 root 權限啟動:

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

更新 NVT (GVM)

我們現在將運行 greenbone-nvt-sync 來更新漏洞文件定義。
首先切換回 GVM 用戶會話:

sudo su – gvm

並運行以下命令:

greenbone-nvt-sync

如果您收到超時錯誤,很可能是防火牆擋住了路。 確保打開 TCP 端口 873。如果出現連接被拒絕的錯誤,請稍等片刻再試。

這需要很長時間,所以你必須要有耐心。

使用 OpenVAS (GVM) 在 redis 中上傳插件

這可能需要一些時間,具體取決於您的硬件,並且在您運行命令時不會給您任何反饋。

sudo openvas -u

注意:如果您發現缺少庫錯誤,請鍵入以下內容(一次一行):

exit
echo "/opt/gvm/lib > /etc/ld.so.conf.d/gvm.conf
ldconfig
sudo su - gvm

安裝管理器 (GVM)

現在進入 gvmd 目錄來構建和安裝 Greenbone Manager:

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

配置 PostgreSQL(Sudoers 用戶)

切換到 sudoers 中的用戶(不要為此使用 root 或 gvm)。 用戶會話將切換為“sudo – 在 postgres bash”命令如下。
一次執行一行。

exit
cd /
sudo -u postgres bash
export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd

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

修復證書 (GVM)

一次輸入一行:

sudo su - gvm
gvm-manage-certs -a

創建管理員用戶 (GVM)

這將創建一個初始用戶名和密碼。 以後記得改。

gvmd --create-user=admin --password=admin

配置和更新提要 (GVM)

要完全更新提要,我們需要將“提要導入所有者”設置為 admin的 UUID。 首先,找到新的UUID admin 用戶

gvmd --get-users --verbose

你應該得到這樣的東西:

admin fb019c52-75ec-4cb6-b176-5a55a9b360bf

使用旁邊的字符串 admin 在下一個命令中:

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value (output string from the above command fb019c52-75ec-4cb6-b176-5a55a9b360bf)

所以 example 命令將是:

$ gvmd --get-users --verbose
admin fb019c52-75ec-4cb6-b176-5a55a9b360bf
$ gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value fb019c52-75ec-4cb6-b176-5a55a9b360bf

一次一行運行接下來的三個命令。 如果您收到連接被拒絕的錯誤,請再次嘗試該命令,直到成功為止。 這些命令也需要一些時間。

greenbone-feed-sync --type GVMD_DATA
greenbone-feed-sync --type SCAP
greenbone-feed-sync --type CERT

安裝 gsa (GVM)

再次像前面的步驟一樣,進入 gsa 文件夾並編譯 gsa 源代碼:

cd /opt/gvm/src/gsa &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
mkdir build &&
cd build/ &&
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. &&
make &&
make doc &&
make install &&
touch /opt/gvm/var/log/gvm/gsad.log &&
cd /opt/gvm/src

設置 OSPD-OpenVAS

安裝 virtualenv (GVM)

注意:您可能需要更改 –python python3.8 以匹配您安裝的 python 版本。

cd /opt/gvm/src &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/ &&
source /opt/gvm/bin/ospd-scanner/bin/activate

安裝 ospd (GVM)

我們將使用 pip installer 安裝 ospd:

mkdir /opt/gvm/var/run/ospd/ &&
cd ospd &&
pip3 install . &&
cd /opt/gvm/src

安裝 ospd-openvas (GVM)

同樣對於 ospd-openvas,我們將使用 pip 安裝程序和我們從 github 克隆的包:

cd ospd-openvas &&
pip3 install . &&
cd /opt/gvm/src

創建啟動腳本(root)

首先鍵入 exit 以註銷到 root 會話,然後在終端中粘貼以下內容:

cat << EOF > /etc/systemd/system/gvmd.service
[Unit]
Description=Open Vulnerability Assessment System Manager Daemon
Documentation=man:gvmd(8) https://www.greenbone.net
Wants=postgresql.service ospd-openvas.service
After=postgresql.service ospd-openvas.service

[Service]
Type=forking
User=gvm
Group=gvm
PIDFile=/opt/gvm/var/run/gvmd.pid
WorkingDirectory=/opt/gvm
ExecStart=/opt/gvm/sbin/gvmd --osp-vt-update=/opt/gvm/var/run/ospd.sock
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

cat << EOF > /etc/systemd/system/gsad.service
[Unit]
Description=Greenbone Security Assistant (gsad)
Documentation=man:gsad(8) https://www.greenbone.net
After=network.target
Wants=gvmd.service

[Service]
Type=forking
PIDFile=/opt/gvm/var/run/gsad.pid
WorkingDirectory=/opt/gvm
ExecStart=/opt/gvm/sbin/gsad --drop-privileges=gvm
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

cat << EOF > /etc/systemd/system/ospd-openvas.service
[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=network.target [email protected]
[email protected]

[Service]
Environment=PATH=/opt/gvm/bin/ospd-scanner/bin:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Type=forking
User=gvm
Group=gvm
WorkingDirectory=/opt/gvm
PIDFile=/opt/gvm/var/run/ospd-openvas.pid
ExecStart=/opt/gvm/bin/ospd-scanner/bin/python /opt/gvm/bin/ospd-scanner/bin/ospd-openvas --pid-file /opt/gvm/var/run/ospd-openvas.pid --unix-socket=/opt/gvm/var/run/ospd.sock --log-file /opt/gvm/var/log/gvm/ospd-scanner.log --lock-file-dir /opt/gvm/var/run/ospd/
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

啟用並啟動服務(root)

我們現在將啟用並啟動 GVM 服務,也以 root 用戶身份:

systemctl daemon-reload &&
systemctl enable gvmd &&
systemctl enable gsad &&
systemctl enable ospd-openvas &&
systemctl start gvmd &&
systemctl start gsad &&
systemctl start ospd-openvas

檢查服務(根)

確保所有三個服務都在運行(一次鍵入一行)。

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

修改默認掃描器 (GVM)

切換回 GVM 會話。

sudo su - gvm

首先,獲取有socket的scanner的UUID(ospd.sock)

gvmd --get-scanners

然後修改掃描儀:

gvmd --modify-scanner=(INSERT SCANNER UUID HERE) --scanner-host=/opt/gvm/var/run/ospd.sock

例子:

gvmd --get-scanners
08b69003-5fc2-4037-a479-93b440211c73 OpenVAS /var/run/ospd/ospd.sock 0 OpenVAS Default
6acd0832-df90-11e4-b9d5-28d24461215b CVE 0 CVE

gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock
Scanner modified.

這就對了。 您現在可以登錄 GVM 網絡界面。

開放式瓦斯
GVM

結論

我們已經在 Ubuntu 20.04 上成功完成了 GVM 安裝。 您現在可以使用您的服務器 IP 地址登錄。 默認登錄是 admin/admin 如上所述。 在下面的評論中告訴我們您對本教程的看法。