Установка Greenbone Vulnerability Management (GVM) 21.04 на Debian 10 Buster

# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.

apt-get install build-essential curl cmake pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev libssh-gcrypt-dev libhiredis-dev libxml2-dev libpcap-dev libnet1-dev libldap2-dev libradcli-dev libpq-dev gcc-mingw-w64 libpopt-dev libunistring-dev heimdal-dev perl-base bison libgcrypt20-dev libksba-dev nmap python-impacket libsnmp-dev libical-dev xsltproc rsync texlive-latex-extra texlive-fonts-recommended xmlstarlet zip rpm fakeroot nsis gnupg gpgsm sshpass socat snmp gnutls-bin xml-twig-tools libmicrohttpd-dev python3-lxml python3-pip python3-setuptools python3-packaging python3-wrapt python3-cffi python3-psutil python3-lxml python3-defusedxml python3-paramiko python3-redis -y

# Веб интерфейс GVM написан на JavaScript и использует фреймворк React. Для поддержки JavaScript-зависимостей установим 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

apt-get update
apt-get install yarn -y

yarn install
yarn upgrade

# Установка PostgreSQL.

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

# Настройка пользователя и базы данных PostgreSQL и настройка разрешений и расширений базы данных.

sudo -Hiu postgres createuser gvm
sudo -Hiu postgres createdb -O gvm gvmd
sudo -Hiu postgres psql -c 'create role dba with superuser noinherit;' gvmd
sudo -Hiu postgres psql -c 'grant dba to gvm;' gvmd
sudo -Hiu postgres psql -c 'create extension "uuid-ossp";' gvmd
sudo -Hiu postgres psql -c 'create extension "pgcrypto";' gvmd

# Применение изменений и включение в автозагрузку службу PostgreSQL.

systemctl restart postgresql
systemctl enable postgresql

# Создаем пользователя GVM от которого будет работать система.

useradd -r -M -U -s /usr/sbin/nologin -c "GVM User" gvm

# Скачиваем исходники пакетов входящих в состав системы GVM 21.04 и распаковываем их.

mkdir -p /opt/gvm-source
cd /opt/gvm-source/

export GVM_VERSION=21.4.4
export GVM_LIBS_VERSION=$GVM_VERSION
export GVMD_VERSION=21.4.5
export GSA_VERSION=$GVM_VERSION
export GSAD_VERSION=$GVM_VERSION
export OPENVAS_SMB_VERSION=21.4.0
export OPENVAS_SCANNER_VERSION=$GVM_VERSION
export OSPD_OPENVAS_VERSION=$GVM_VERSION

curl -f -L https://github.com/greenbone/gvm-libs/archive/refs/tags/v$GVM_LIBS_VERSION.tar.gz -o gvm-libs-$GVM_LIBS_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gvmd/archive/refs/tags/v$GVMD_VERSION.tar.gz -o gvmd-$GVMD_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gsa/archive/refs/tags/v$GSA_VERSION.tar.gz -o gsa-$GSA_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gsad/archive/refs/tags/v$GSAD_VERSION.tar.gz -o gsad-$GSAD_VERSION.tar.gz
curl -f -L https://github.com/greenbone/openvas-smb/archive/refs/tags/v$OPENVAS_SMB_VERSION.tar.gz -o openvas-smb-$OPENVAS_SMB_VERSION.tar.gz
curl -f -L https://github.com/greenbone/openvas-scanner/archive/refs/tags/v$OPENVAS_SCANNER_VERSION.tar.gz -o openvas-scanner-$OPENVAS_SCANNER_VERSION.tar.gz
curl -f -L https://github.com/greenbone/ospd-openvas/archive/refs/tags/v$OSPD_OPENVAS_VERSION.tar.gz -o ospd-openvas-$OSPD_OPENVAS_VERSION.tar.gz

tar -xvzf gvm-libs-$GVM_LIBS_VERSION.tar.gz && mv gvm-libs-$GVM_LIBS_VERSION gvm-libs
tar -xvzf gvmd-$GVMD_VERSION.tar.gz && mv gvmd-$GVMD_VERSION gvmd
tar -xvzf gsa-$GSA_VERSION.tar.gz && mv gsa-$GSA_VERSION gsa
tar -xvzf gsad-$GSAD_VERSION.tar.gz && mv gsad-$GSAD_VERSION gsad
tar -xvzf openvas-smb-$OPENVAS_SMB_VERSION.tar.gz && mv openvas-smb-$OPENVAS_SMB_VERSION openvas-smb
tar -xvzf openvas-scanner-$OPENVAS_SCANNER_VERSION.tar.gz && mv openvas-scanner-$OPENVAS_SCANNER_VERSION openvas-scanner
tar -xvzf ospd-openvas-$OSPD_OPENVAS_VERSION.tar.gz && mv ospd-openvas-$OSPD_OPENVAS_VERSION ospd-openvas

# Собираем и устанавливаем пакет — GVM Libraries.

cd gvm-libs
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DSYSCONFDIR=/etc -DLOCALSTATEDIR=/var
make
make install
cd ../..

# Собираем и устанавливаем пакет — Greenbone Vulnerability Manager.

cd gvmd
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DLOCALSTATEDIR=/var -DSYSCONFDIR=/etc -DGVM_DATA_DIR=/var -DGVMD_RUN_DIR=/run/gvmd -DOPENVAS_DEFAULT_SOCKET=/run/ospd/ospd-openvas.sock -DGVM_FEED_LOCK_PATH=/var/lib/gvm/feed-update.lock -DSYSTEMD_SERVICE_DIR=/lib/systemd/system -DDEFAULT_CONFIG_DIR=/etc/default -DLOGROTATE_DIR=/etc/logrotate.d
make
make install
cd ../..

# Собираем и устанавливаем пакет — Greenbone Secuirty Assistant.

cd gsa
rm -rf build
yarn
yarn build
cd ..

mkdir -p /usr/local/share/gvm/gsad/web
cp -rp /opt/gvm-source/gsa/build/* /usr/local/share/gvm/gsad/web

cd gsad
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DSYSCONFDIR=/etc -DLOCALSTATEDIR=/var -DGVMD_RUN_DIR=/run/gvmd -DGSAD_RUN_DIR=/run/gsad -DLOGROTATE_DIR=/etc/logrotate.d
make
make install
cd ../..

# Собираем и устанавливаем пакеты — OpenVAS и OpenVAS SMB.

cd openvas-smb
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release
make
make install
cd ../..

cd openvas-scanner
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DSYSCONFDIR=/etc -DLOCALSTATEDIR=/var -DOPENVAS_FEED_LOCK_PATH=/var/lib/openvas/feed-update.lock -DOPENVAS_RUN_DIR=/run/ospd
make
make install
cd ../..

# Собираем и устанавливаем пакеты — OSPd-OpenVAS.

cd ospd-openvas
pip3 install --upgrade pip
python3 -m pip install . --prefix=/usr/local --no-warn-script-location
python3 -m pip install --prefix=/usr/local --no-warn-script-location gvm-tools
cd ..

# Установка сервера Redis.

apt-get install redis-server  -y

# Добавление конфигурации для запуска сервера Redis для сканера/

ldconfig

cp /opt/gvm-source/openvas-scanner/config/redis-openvas.conf /etc/redis/
chown redis:redis /etc/redis/redis-openvas.conf

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

# Запускаем службу Redis и добавляем ее в автозагрузку.

systemctl start redis-server@openvas.service
systemctl enable redis-server@openvas.service

# Добавление пользователя gvm в группу redis.

usermod -aG redis gvm

# Тюнинг системы для повышение производительности.

echo 'net.core.somaxconn = 1024' >> /etc/sysctl.conf
echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
sysctl -p

cat > /etc/systemd/system/disable_thp.service << 'EOL'
[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
EOL

systemctl daemon-reload
systemctl enable --now disable_thp

# Настройка прав доступа на каталоги относящиеся к системе GVM.

chown -R gvm:gvm /var/lib/gvm
chown -R gvm:gvm /var/lib/openvas
chown -R gvm:gvm /var/log/gvm
chown -R gvm:gvm /run/gvmd
chown -R gvm:gvm /run/gsad

chmod -R g+srw /var/lib/gvm
chmod -R g+srw /var/lib/openvas
chmod -R g+srw /var/log/gvm

chown gvm:gvm /usr/local/sbin/gvmd
chmod 6750 /usr/local/sbin/gvmd

chown gvm:gvm /usr/local/bin/greenbone-nvt-sync
chmod 740 /usr/local/sbin/greenbone-feed-sync
chown gvm:gvm /usr/local/sbin/greenbone-*-sync
chmod 740 /usr/local/sbin/greenbone-*-sync

echo "gvm ALL = NOPASSWD: $(which openvas)" >> /etc/sudoers.d/gvm

# Создаем учетную запись администратора и устанавливаем его как владельца импорта фида.

sudo -u gvm gvmd --create-user admin --password=admin
User created.

sudo -u gvm gvmd --get-users --verbose
admin f2b57df6-9b3e-419c-91b5-ad5abd43d2b2

sudo -u gvm gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value f2b57df6-9b3e-419c-91b5-ad5abd43d2b2

# Выполняем первичную синхронизацию баз данных.

# Update Network Vulnerability Tests (NVTs)
sudo -u gvm greenbone-nvt-sync

# Keeping the feeds up-to-date
sudo -u gvm greenbone-feed-sync --type SCAP
sudo -u gvm greenbone-feed-sync --type CERT
sudo -u gvm greenbone-feed-sync --type GVMD_DATA

# Создаем сервис запуска для — OpenVAS.

cat << EOF > /etc/systemd/system/ospd-openvas.service
[Unit]
Description=OSPd Wrapper for the OpenVAS Scanner (ospd-openvas)
Documentation=man:ospd-openvas(8) man:openvas(8)
After=network.target networking.service redis-server@openvas.service
Wants=redis-server@openvas.service
ConditionKernelCommandLine=!recovery

[Service]
Type=forking
User=gvm
Group=gvm
RuntimeDirectory=ospd
RuntimeDirectoryMode=2775
PIDFile=/run/ospd/ospd-openvas.pid
ExecStart=/usr/local/bin/ospd-openvas --unix-socket /run/ospd/ospd-openvas.sock --pid-file /run/ospd/ospd-openvas.pid --log-file /var/log/gvm/ospd-openvas.log --lock-file-dir /var/lib/openvas --socket-mode 0o770
SuccessExitStatus=SIGKILL
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target
EOF

# Создаем сервис запуска для — GVM.

cat << EOF > /lib/systemd/system/gvmd.service
[Unit]
Description=Greenbone Vulnerability Manager daemon (gvmd)
After=network.target networking.service postgresql.service ospd-openvas.service
Wants=postgresql.service ospd-openvas.service
Documentation=man:gvmd(8)
ConditionKernelCommandLine=!recovery

[Service]
Type=forking
User=gvm
Group=gvm
PIDFile=/run/gvmd/gvmd.pid
RuntimeDirectory=gvmd
RuntimeDirectoryMode=2775
ExecStart=/usr/local/sbin/gvmd --osp-vt-update=/run/ospd/ospd-openvas.sock --listen-group=gvm
Restart=always
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
EOF

# Создаем сервис запуска для — GSA.

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

[Service]
Type=forking
User=gvm
Group=gvm
RuntimeDirectory=gsad
RuntimeDirectoryMode=2775
PIDFile=/run/gsad/gsad.pid
ExecStart=/usr/local/sbin/gsad --listen=0.0.0.0 --port=9392 --http-only
Restart=always
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
Alias=greenbone-security-assistant.service
EOF

# Включаем в автозапуск и запускаем созданные службы.

systemctl daemon-reload

systemctl enable ospd-openvas
systemctl enable gvmd
systemctl enable gsad

systemctl start ospd-openvas
systemctl start gvmd
systemctl start gsad

systemctl status ospd-openvas
systemctl status gvmd
systemctl status gsad

# Устанавливаем задания cron (в моем случае задания добавлены для root пользователя) для выполнения синхронизации один раз в день.

# Update Network Vulnerability Tests (NVTs)
0 19 * * * sudo -u gvm greenbone-nvt-sync

# Keeping the feeds up-to-date
0 21 * * * sudo -u gvm greenbone-feed-sync --type SCAP
0 22 * * * sudo -u gvm greenbone-feed-sync --type CERT
0 23 * * * sudo -u gvm greenbone-feed-sync --type GVMD_DATA
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Оставьте комментарий

шестнадцать − 14 =