웹사이트 검색

Ubuntu 20.04에서 GVM 취약점 스캐너를 설치하고 사용하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 필수 종속성 설치\n
  4. PostgreSQL 설치 및 구성
  5. GVM 다운로드
  6. gvm-libs 설치
  7. openvas-smb 설치
  8. OpenVAS 스캐너 설치
  9. 시스템 서비스 파일 생성
  10. NVT 업데이트
  11. Greenbone Vulnerability Manager 설치
  12. 피드 구성 및 업데이트(GVM)\n
  13. GSA 설치
  14. OSPD-OpenVAS 구성
  15. GVM, GSAD 및 OpenVAS용 시스템 서비스 파일 생성
  16. 기본 스캐너 수정
  17. GVM 웹 인터페이스 액세스
  18. 결론

"Greenbone Vulnerability Management"라고도 하는 GVM은 시스템 및 응용 프로그램의 보안 허점을 찾기 위해 일련의 네트워크 취약성 테스트를 제공하는 오픈 소스 취약성 검색 및 관리 소프트웨어입니다. 이것은 전 세계의 많은 보안 전문가와 일반 사용자가 사용하는 올인원 도구 모음입니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 GVM을 설치하고 구성하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 20.04를 실행하는 서버.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령을 사용하여 업데이트할 수 있습니다.

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

다음으로 다음 명령을 사용하여 Redis 유닉스 소켓의 경로를 업데이트합니다.

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

그런 다음 다음 명령을 사용하여 Redis 서비스를 활성화하고 시작합니다.

systemctl enable 

다음으로 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

체계적인 서비스 파일 생성

먼저 다음 명령을 사용하여 THP(Transparent Huge Pages)에 대한 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

다음으로 gvm 사용자에게 암호를 제공하지 않고 sudo를 사용하여 모든 시스템 명령을 실행할 수 있는 권한을 부여해야 합니다. 다음 명령으로 수행할 수 있습니다.

sed 's/Defaults\s.*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 보안 피드/커뮤니티 피드에서 네트워크 취약성 테스트 피드를 업데이트해야 합니다.

먼저 다음 명령을 사용하여 gvm 사용자로 로그인합니다.

su - gvm

그런 다음 다음 명령을 사용하여 피드를 업데이트합니다.

greenbone-nvt-sync

업데이트가 완료되면 VT 파일의 동일한 VT 정보로 Redis 서버를 업데이트합니다.

sudo openvas --update-vt-info

Greenbone 취약점 관리자 설치

먼저 디렉터리를 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)

먼저 GVM 웹 인터페이스에 액세스할 관리 사용자를 만듭니다.

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 피드를 동기화합니다.

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 


[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

GVM 웹 인터페이스에 액세스

이 시점에서 GVM이 설치되고 포트 80 및 443에서 수신 대기합니다. URL https://your-server-ip를 사용하여 액세스할 수 있습니다. 아래와 같이 GVM 로그인 페이지로 리디렉션됩니다.

관리자 사용자 이름, 암호를 제공하고 로그인 버튼을 클릭합니다. 다음 페이지에 GVM 대시보드가 표시되어야 합니다.

결론

축하합니다! Ubuntu 20.04 서버에 GVM을 성공적으로 설치하고 설정했습니다. 이제 GVM을 탐색하여 시스템의 취약성 스캔을 시작할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.