Ubuntu20.04にGVM脆弱性スキャナーをインストールして使用する方法

「GreenboneVulnerabilityManagement」とも呼ばれるGVMは、システムとアプリケーションのセキュリティの抜け穴を見つけるための一連のネットワーク脆弱性テストを提供する、オープンソースの脆弱性スキャンおよび管理ソフトウェアです。 これは、世界中の多くのセキュリティ専門家や通常のユーザーが使用するオールインワンのツールスイートです。

このチュートリアルでは、Ubuntu20.04サーバーにGVMをインストールして構成する方法を示します。

前提条件

  • Ubuntu20.04を実行しているサーバー。
  • ルートパスワードがサーバーに設定されます。

入門

開始する前に、システムパッケージを最新バージョンに更新する必要があります。 次のコマンドを使用して、それらを更新できます。

apt-get update -y

サーバーが更新されたら、次のステップに進むことができます。

必要な依存関係をインストールする

開始する前に、必要なすべての依存関係をシステムにインストールする必要があります。 次のコマンドを実行して、それらをインストールできます。

apt-get install software-properties-common 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 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 texlive-latex-extra texlive-fonts-recommended -y

すべての依存関係がインストールされたら、Yarnリポジトリをシステムに追加します。

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

次に、リポジトリを更新し、次のコマンドを使用してYarnパッケージをインストールします。

apt-get update -y
apt-get install yarn -y

次に、次のコマンドを使用してYarnを最新バージョンにアップグレードします。

yarn install
yarn upgrade

終了したら、次のステップに進むことができます。

PostgreSQLのインストールと構成

GVMはPostgreSQLをデータベースバックエンドとして使用するため、PostgreSQLサーバーをシステムにインストールする必要があります。 次のコマンドでインストールできます。

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

インストールが完了したら、PostgreSQLにログインし、GVMのユーザーとデータベースを作成します。

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";

次に、次のコマンドを使用してPostgreSQLを終了します。

exit
exit

GVMをダウンロード

まず、次のコマンドを使用して、GVM用に別のディレクトリとユーザーを作成します。

mkdir /opt/gvm
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''

次に、redisユーザーをGVMに追加し、次のコマンドを使用して適切な権限を設定します。

usermod -aG redis gvm
chown gvm:gvm /opt/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

次に、次のコマンドを使用してGVMライブラリパスを定義します。

nano /etc/ld.so.conf.d/gvm.conf

次の行を追加します。

/opt/gvm/lib

次に、GVMユーザーにログインし、すべてのコンポーネントのディレクトリを作成します。

su - gvm
mkdir src

次に、次のコマンドを使用して、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-libsに変更し、構成パスをエクスポートして、次のコマンドでビルドディレクトリを作成します。

cd gvm-libs
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

次に、ディレクトリを変更して、次のコマンドを使用してgvm-libsをビルドおよびコンパイルします。

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

openvas-smbをインストールします

次に、ディレクトリをopenvas-smbに変更し、構成パスをエクスポートして、次のコマンドでビルドディレクトリを作成します。

cd /opt/gvm/src
cd openvas-smb
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

次に、次のコマンドを使用して、ディレクトリを変更してopenvas-smbをビルドおよびコンパイルします。

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

OpenVASスキャナーをインストールする

次に、ディレクトリをopenvasに変更し、構成パスをエクスポートして、次のコマンドでビルドディレクトリを作成します。

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

次に、次のコマンドを使用して、ディレクトリを変更し、OpenVASスキャナーをビルドしてインストールします。

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

次に、次のコマンドを使用してgvmユーザーを終了します。

exit

次に、次のコマンドを使用して、インストールされている共有ライブラリにキャッシュを作成します。

export LC_ALL="C"
ldconfig

次に、次のコマンドを使用して、OpenVASスキャナーRedis構成ファイルをコピーします。

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

次に、次のコマンドを使用して、Redisunixソケットへのパスを更新します。

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

次に、次のコマンドを使用してRedisサービスを有効にして開始します。

systemctl enable [email protected]
systemctl start [email protected]

次に、sysctl.confファイルを微調整する必要があります。 次のコマンドで実行できます。

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

次に、次のコマンドを使用してsysctlをリロードします。

sysctl -p

Systemdサービスファイルの作成

まず、次のコマンドを使用して、Transparent Huge Pages(THP)のsystemdサービスファイルを作成します。

nano /etc/systemd/system/disable-thp.service

次の行を追加します。

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

ファイルを保存して閉じ、次のコマンドでsystemdサービスをリロードします。

systemctl daemon-reload

次に、disable-thpサービスを開始し、システムの再起動時に開始できるようにします。

systemctl start disable-thp 
systemctl enable disable-thp

次に、Redisサービスを再起動して、変更を適用します。

systemctl restart redis-server

次に、パスワードを指定せずにsudoを使用してすべてのシステムコマンドを実行することをgvmユーザーに許可する必要があります。 次のコマンドで実行できます。

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
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を更新する

次に、Greenbone Security Feed / CommunityFeedからNetworkVulnerabilityTestsフィードを更新する必要があります。

まず、次のコマンドを使用してgvmユーザーにログインします。

su - gvm

次に、次のコマンドでフィードを更新します。

greenbone-nvt-sync

更新が完了したら、VTファイルからの同じVT情報でRedisサーバーを更新します。

sudo openvas --update-vt-info

Greenbone VulnerabilityManagerをインストールします

まず、ディレクトリをgvmdに変更し、構成パスをエクスポートして、次のコマンドでビルドディレクトリを作成します。

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

次に、次のコマンドを使用して、ディレクトリを変更してgvmdをビルドおよびインストールします。

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

次に、次のコマンドを使用して証明書を修正します。

gvm-manage-certs -a

次の出力が得られるはずです。

Generated private key in /tmp/tmp.gW57p1UV0s/cakey.pem.
Generated self signed certificate in /tmp/tmp.gW57p1UV0s/cacert.pem.
Installed private key to /opt/gvm/var/lib/gvm/private/CA/cakey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/cacert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/serverkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/servercert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/serverkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/servercert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/clientkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/clientcert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/clientkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/clientcert.pem.
Removing temporary directory /tmp/tmp.gW57p1UV0s.

フィードの構成と更新(GVM)

まず、GVMWebインターフェイスにアクセスするための管理者ユーザーを作成します。

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

次に、次のコマンドを使用して、管理者ユーザーのUUIDを見つけます。

gvmd --get-users --verbose

次の出力が得られるはずです。

admin 1288cbcf-23a0-407f-8013-b7a57acc5795

次に、ユーザーUUIDを使用してgvmd設定を変更します。

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795

次に、次のコマンドを使用してすべてのグリーンボーンフィードを同期します。

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

gsaをインストールします

まず、ディレクトリをgsaに変更し、構成パスをエクスポートして、次のコマンドでビルドディレクトリを作成します。

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

次に、次のコマンドを使用して、ディレクトリを変更してgsaをビルドおよびインストールします。

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

次に、次のコマンドを使用してgsaのログファイルを作成します。

touch /opt/gvm/var/log/gvm/gsad.log

OSPD-OpenVASを構成する

まず、ディレクトリをsrcに変更し、次のコマンドを使用して構成パスをエクスポートします。

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

次に、次のコマンドを使用してPython仮想環境を作成します。

virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/

次に、次のコマンドを使用して仮想環境をアクティブ化します。

source /opt/gvm/bin/ospd-scanner/bin/activate

次に、次のコマンドを使用してospdのディレクトリを作成します。

mkdir /opt/gvm/var/run/ospd/

次に、ディレクトリをospdに変更し、pipを使用してospdをインストールします。

cd ospd 
pip3 install .

次に、ディレクトリをospd-openvasに変更し、pipコマンドを使用してospd-openvasをインストールします。

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

次に、次のコマンドを使用してgvmユーザーを終了します。

exit

GVM、GSAD、OpenVASのSystemdサービスファイルを作成する

まず、次のコマンドを使用して、gvmdのsystemdサービスファイルを作成します。

nano /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

ファイルを保存して閉じ、次のコマンドを使用してgsadのsystemdサービスファイルを作成します。

nano /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

ファイルを保存して閉じ、次のコマンドを使用してopenvas用のsystemdサービスファイルを作成します。

nano /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

ファイルを保存して閉じてから、次のコマンドでsystemdデーモンをリロードします。

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ユーザーにログインします。

sudo su - gvm

次に、次のコマンドを使用してスキャナーのUUIDを取得します。

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

次に、上記のUUIDを使用してデフォルトのスキャナーを変更します。

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

GVMWebインターフェイスにアクセスする

この時点で、GVMがインストールされ、ポート80と443でリッスンしています。URLを使用してアクセスできます。 https:// your-server-ip。 以下に示すように、GVMログインページにリダイレクトされます。

GVMログイン

管理者のユーザー名とパスワードを入力し、 ログイン ボタン。 次のページにGVMダッシュボードが表示されます。

GVMダッシュボード

結論

おめでとう! これで、Ubuntu20.04サーバーにGVMが正常にインストールおよびセットアップされました。 これで、GVMがシステムの脆弱性のスキャンを開始することを確認できます。 ご不明な点がございましたら、お気軽にお問い合わせください。

Hope this helps!

Source link