OpenVAS 9, 10, 11 버전은 2020 기준으로 EOL 로 인해 사용이 불가능합니다.
아래는 Ubuntu 20.04 버전에 OpenVAS 20.8.0 버전 설치하는 방법을 기술하였습니다.
메모리는 4G 이상이 필요합니다.
1. 패키지 설치
# apt -y update
# apt -y install build-essential cmake gnutls-bin pkg-config libgnutls28-dev libssh-dev libssl-dev redis-server libhiredis-dev libxml2-dev doxygen xsltproc libldap2-dev libgcrypt-dev libpcap-dev libgpgme-dev libradcli-dev graphviz bison libksba-dev libical-dev libpq-dev postgresql postgresql-contrib postgresql-server-dev-all libopenvas-dev heimdal-dev libpopt-dev xmltoman gcc-mingw-w64 nmap libmicrohttpd-dev npm nodejs virtualenv python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil
# npm install -g yarn --prefix /usr/
2. 사용자 환경 설정
# echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | sudo tee -a /etc/profile.d/gvm.sh
# chmod 0755 /etc/profile.d/gvm.sh
# source /etc/profile.d/gvm.sh
3. GVM 라이브러리 경로 추가
# vi /etc/ld.so.conf.d/gvm.conf
# gmv-libs location /opt/gvm/lib |
4. 사용자 계정 생성
# mkdir /opt/gvm
# adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''
# usermod -aG redis gvm
# chown gvm:gvm /opt/gvm/
# su - gvm
5. 소스 디렉토리 생성
$ mkdir src
$ cd src/
$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
6. GVM 라이브러리 생성
$ git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git
$ 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/
7. OpenVAS samba 설치
$ git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git
$ 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 install
$ cd /opt/gvm/src/
8. OpenVAS scanner 설치
$ git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git
$ 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
$ exit
9. Redis 설정
# 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 redis-server@openvas.service
# systemctl start redis-server@openvas.service
10. GVM 사용자 권한 설정
# vi /etc/sudoers
기존 설정 유지하고 파란색 부분만 추가 합니다.
Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"
gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad |
11. 취약점 룰 업데이트
# su - gvm
$ greenbone-nvt-sync
12. OpenVAS 매니저 설치
$ cd /opt/gvm/src/
$ git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git
$ cd 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
$ exit
13. PostgreSQL 설정
# sudo -u postgres bash
$ export LC_ALL="C"
$ cd // 출처에는 해당 항목이 없는데 그냥 진행하면 아래 명령시 퍼미션 에러 출력되므로 디렉토리 이동해준다.
$ createuser -DRS gvm
$ createdb -O gvm gvmd
$ psql gvmd
gvmd=# create role dba with superuser noinherit;
gvmd=# grant dba to gvm;
gvmd=# create extension "uuid-ossp";
gvmd=# create extension "pgcrypto";
gvmd=# exit
$ exit
14. GVM 인증서 생성
$ sudo su - gvm
$ gvm-manage-certs -a
15. GVM admin 생성
$ /opt/gvm/sbin/gvmd --create-user=admin --password=admin
$ gvmd --get-users --verbose
// 출력된 admin 계정의 UUID 확인 : ad77ed01-f2ce-4bb3-a3c5-c8df70f38332
$ gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value ad77ed01-f2ce-4bb3-a3c5-c8df70f38332
// 출력되었던 admin 계정의 UUID 입력, 실행
16. Greenbone Feed 갱신
$ greenbone-feed-sync --type GVMD_DATA
$ greenbone-feed-sync --type SCAP
$ greenbone-feed-sync --type CERT
17. Greenbone Security Assistant 구축
$ cd src/
$ git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git
$ cd 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
* make 진행중 npm install 중에 문제가 생기면 여러번 시도를 해보고,
'npm ERR! code EINTEGRITY' 라는 에러가 출력 될 경우
npm cache verify 실행 후 다시 make 를 시도합니다.
18. Python 으로 가상 환경 설정
$ exit
# python3 --version
# add-apt-repository ppa:deadsnakes/ppa
# apt -y update
# apt -y install python3.7 python3.7-dev
$ sudo su - gvm
$ cd /opt/gvm/src
$ export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
$ virtualenv --python python3.7 /opt/gvm/bin/ospd-scanner/
$ source /opt/gvm/bin/ospd-scanner/bin/activate
19. 스캐너 래퍼용 ospd 클래스 다운로드 및 설치
(ospd-scanner) gvm@ubuntu:~$ git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git
(ospd-scanner) gvm@ubuntu:~$ mkdir /opt/gvm/var/run/ospd/
(ospd-scanner) gvm@ubuntu:~$ cd ospd/
(ospd-scanner) gvm@ubuntu:~$ pip3 install .
(ospd-scanner) gvm@ubuntu:~$ cd /opt/gvm/src
20. 원격 제어를 위한 ospd-openvas 설치
(ospd-scanner) gvm@ubuntu:~$ git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git
(ospd-scanner) gvm@ubuntu:~$ cd ospd-openvas/
(ospd-scanner) gvm@ubuntu:~$ pip3 install .
21. systemd 설정
$ exit
$ sudo su
# vi /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 |
# vi /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 |
# vi /etc/systemd/system/ospd-openvas.service
[Unit] Description=Job that runs the ospd-openvas daemon Documentation=man:gvm After=network.target redis-server@openvas.service Wants=redis-server@openvas.service
[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 |
데몬 재시작 및 부팅시 자동 활성화 설정
# systemctl daemon-reload
# systemctl enable gvmd
# systemctl enable gsad
# systemctl enable ospd-openvas
# systemctl start gvmd // 매니저
# systemctl start gsad // 웹UI
# systemctl start ospd-openvas // 스캐너
데몬 상태 확인
# systemctl status gvmd
22. 관리 페이지 접근
브라우저로 아래 URL 을 입력합니다.
https://192.168.0.1
* 초기 로그인 계정 : admin / admin
* 로그인 후 비밀번호 변경 필수
로그인 후 우측 상단의 사람 아이콘에 마우스를 올려놓으면 출력되는 My Settings 메뉴를 선택합니다. 좌측의 노트 모양의 Edit 버튼을 눌러 'Timezone (Asia/Seoul)' 과 'Change Password' 를 변경합니다.
[참고] https://www.libellux.com/openvas/#install-openvas-20-08-from-source
[코멘트] sysdocu.tistory.com
----------------------------------------------------------------------------------------------------
위 내용을 진행하며 부족했던 부분은 추가로 작성 하였습니다.
1. CLI 사용하기
OpenVAS 신 버전에서는 구버전에서 사용하던 openvas-manager 나 omp 명령이 없습니다.
이를 대체하기 위한 명령어로는 gvm-cli 가 있으며, gvm-tools 패키지를 설치해서 사용이 가능합니다.
1) gvm-cli 설치
# python3 -m pip install gvm-tools
2) pdf 생성용 패키지 설치
# apt -y install texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra
3) 스캐닝을 위해 사용자 전환
# sudo su - gvm
4) 스캐닝
타겟 생성 (스캐닝 대상 서버 IP 와 스캐닝할 포트 범위)
$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\
--xml "<create_target><name>test1</name>\
<hosts>192.168.10.2</hosts>\
<alive_tests>Consider Alive</alive_tests>\
<port_list id='33d0cd82-57c6-11e1-8ed1-406186ea4fc5'></port_list>\
</create_target>"
태스크 생성 (파란색 글씨는 고정 : Full and Fast scan)
$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\
--xml "<create_task><name>test2</name>\
<target id=\"681ea656-785d-42b0-8f49-ce35f01ec6cd\"></target> \
<config id=\"daba56c8-73ec-11df-a475-002264764cea\"></config></create_task>"
스캐닝 시작
$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\
--xml '<start_task task_id="589082e6-0245-4553-8501-aabcc6bbd4bb"/>'
스캐닝 상태 확인
$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\
--xml "<get_tasks task_id=\"589082e6-0245-4553-8501-aabcc6bbd4bb\"/>" |sed -e "s/></>\n</g" |grep -E "progress|scan_start|scan_end|severity"
리포트 저장 (파란색 글씨는 고정 : pdf 문서 코드)
$ gvm-cli --gmp-username admin --gmp-password admin socket --socketpath /opt/gvm/var/run/gvmd.sock\
--xml "<get_reports report_id=\"8f1114a3-a37a-402c-b01c-c872864abc83\" format_id=\"c402cc3e-b531-11e1-9163-406186ea4fc5\" details='True' filter='apply_overrides=0 levels=hml rows=100 min_qod=70 first=1 sort-reverse=severity' />" | grep -oP '(?<=</report_format>)[^<]+' | base64 -d > report.pdf
2. 트러블 슈팅
스캐닝이 되지 않고 바로 종료되거나,
Error Message 가 아래와 같이 출력 된 경우 해결 방법입니다.
(에러)
Could not connect to Scanner
(해결)
unix-socket 을 확인합니다.
# systemctl status ospd-openvas
/opt/gvm/var/run/ospd.sock
사용자를 전환 합니다.
# sudo su - gvm
아래 명령으로 출력된 OpenVAS 스캐너 ID 를 확인 합니다.
$ gvmd --get-scanners
확인했던 unix-socket 과 OpenVAS 스캐너 ID 를 갱신해 줍니다.
$ gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock
그리고 나서 스캐닝을 재시도 합니다.
------------------------------- End-Of-Life ---------------------------------
Ubuntu 18.04, 19.04, 20.04 에서 설치 방법 (OpenVAS)
# apt -y update
# apt -y install openvas
# openvas-setup
설치 마지막에 아래와 같이 패스워드가 출력되므로 잊지않고 메모해두기 바랍니다.
User created with password '609e5e80-4be1-4ac4-8072-6185b9a75589'.
패스워드를 분실 하였을때는 아래와 같이 초기화가 가능합니다.
# openvasmd --user=admin --new-password=new_password
가동 및 중지
# openvas-start
# openvas-stop
CentOS 7.x 에서 설치 방법 (OpenVAS)
OS 종류별 설치 방법은 아래 사이트를 참고하세요.
http://www.openvas.org/
1) selinux 중지
/etc/sysconfig/selinux 수정
2) OS환경 업데이트
# yum -y update
3) 필수 구성요소 설치
# yum -y install wget bzip2 texlive net-tools alien gnutls-utils
4) 리포지토리 추가
# wget -q -O - https://www.atomicorp.com/installers/atomic | sh
5) OpenVAS 9 설치
# yum -y install openvas
6) /etc/redis.conf 파일에 아래 내용 주석 해제
unixsocket /tmp/redis.sock
unixsocketperm 700
* /etc/redis.conf 파일 없는경우 (yum install redis)
7) Redis 시작
# systemctl enable redis
# systemctl start redis
8) OpenVAS 설정
# openvas-setup
9) 방화벽에 tcp/9392 포트 오픈
이제 https://<IP-ADDRESS>:9392 에 접속해 로그인 후 스캐닝이 가능하다.
CLI (omp) 를 사용하려면 아래 명령을 필수로 수행해야 합니다.
# openvasmd -p 9390 -a 127.0.0.1
또한 pdf 로 출력이 되지 않을 경우 (0 byte) 아래 매뉴얼을 참고합니다.
https://sysdocu.tistory.com/1332
[추가 설정 - Timezone 변경]
https://IP:9392
관리자 계정으로 로그인 후
Extras > My Settings 들어가면
상단 제목 부분에 '연장' 아이콘이 있습니다. 그것을 클릭해서 Timezone 변경이 가능합니다.
CentOS 7.x 에서 설치 방법 (GVM)
같은 OpenVAS 9 버전임에도 설치 해야 하는 패키지, 명령어 등이 바뀌어서 새로운 설치 방법을 찾아보게 되었습니다.
아래 절차대로만 실행하면 CentOS 7 에서 새로운 OpenVAS 9 사용이 가능해질 것입니다.
OpenVAS 설치시 openvas-manager, omp 사용이 불가하고 강제적으로 GVM 이 설치되어 gvm-cli 명령을 이용해야 합니다.
그마저도 GCE (커뮤니티 에디션) 에서는 지원이 안된다는 얘기가 있습니다.
[설치]
# vi /etc/sysconfig/selinux
SELINUX=disabled
# yum -y update
# yum -y install wget
# wget -q -O - https://updates.atomicorp.com/installers/atomic | sh
wget -q -O – https://www.atomicorp.com/installers/atomic | sh 도 상관없음
# yum -y install greenbone-vulnerability-manager
# vi /etc/redis.conf
아래 옵션 두 줄 주석 해제
unixsocket /tmp/redis.sock
unixsocketperm 700
# systemctl enable redis
# systemctl restart redis
# openvas-setup
설치중 관리자 계정 등록
# echo 'OPTIONS="--listen=0.0.0.0 --port=9392"' > /etc/sysconfig/gsad
# systemctl restart gsad
netstat -nltp 로 확인시 9392 포트가 안열려 있으면 gsad 를 재가동
* 취약점 검사 결과 리포트 PDF 추출을 위한 패키지 설치
# yum -y install texlive-collection-fontsrecommended texlive-collection-latexrecommended texlive-changepage texlive-titlesec
# mkdir -p /usr/share/texlive/texmf-local/tex/latex/comment
# cd /usr/share/texlive/texmf-local/tex/latex/comment
# wget http://mirrors.ctan.org/macros/latex/contrib/comment/comment.sty
# chmod 644 comment.sty
# texhash
*gvm-tools 설치를 위한 python 3.6 설치
gvm-tools 를 설치해야 gvm-cli 를 사용할 수 있음
# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
# yum -y update
# yum install -y python36u python36u-libs python36u-devel python36u-pip python36-defusedxml python36-lxml
gvm-cli 명령을 실행해서 옵셜 설명이 나오면 정상. 그 외 에러가 출력되면 맨 아랫줄 메세지를 참고하여 패키지를 추가 설치하거나 별도 해결책을 찾아봐야 합니다.