Docker 컨테이너 환경 OpenVAS 실행 가이드
소개
이 문서는 Docker를 사용하여 사전 빌드된 컨테이너 이미지에서 Greenbone Community Edition을 실행하기 위한 가이드를 제공합니다. 각 서비스가 별도의 컨테이너에서 실행되는 분산 서비스 아키텍처로 구성됩니다. 이러한 서비스들의 오케스트레이션은 docker-compose 파일을 통해 이루어집니다.
Greenbone Community Containers를 사용하면 기존 운영 체제, 설치된 소프트웨어 및 도구 체인과는 독립적으로 로컬 네트워크를 스캔할 수 있습니다.
하드웨어 요구사항
최소:
- CPU 코어: 2
- 램: 4GB
- 하드 디스크: 20GB 여유 공간
권장:
- CPU 코어: 4
- 램: 8GB
- 하드 디스크: 60GB 여유 공간
사전 요구사항
참고: 가이드를 단계별로 따라주십시오. 나중 단계에서는 이전 명령의 설정이나 출력이 필요할 수 있습니다.
시스템에서 권한이 필요한 명령을 실행하기 위해 sudo 명령을 사용합니다.
curl 설치
이 가이드에서 파일을 다운로드하는 데 curl이 필요합니다.
sudo apt install curl
Docker 설치
서비스를 컨테이너 내에서 실행하려면 docker가 필요합니다. 다음 명령을 사용하여 Docker를 설치할 수 있습니다.
sudo apt install docker.io
Docker Compose 설치
Greenbone Community Edition의 서비스를 시작하고 연결하기 위해 docker-compose 버전 1.29.0 이상이 필요합니다. 서비스 오케스트레이션의 설명은 compose 파일을 사용하여 수행됩니다. Greenbone Community Edition을 위한 compose 파일은 나중에 제공됩니다.
sudo apt install docker-compose
설정
현재 사용자가 도커를 실행하고 따라서 컨테이너를 시작할 수 있도록 하기 위해 docker 사용자 그룹에 추가되어야 합니다. 그룹 변경을 적용하려면 로그아웃하고 다시 로그인하거나 su를 사용하십시오.
현재 사용자를 docker 그룹에 추가하고 현재 쉘 환경에 그룹 변경을 적용합니다.
sudo usermod -aG docker $USER && su $USER
docker compose 파일을 다운로드하려면 대상 디렉터리를 생성해야 합니다.
export DOWNLOAD_DIR=$HOME/greenbone-community-container && mkdir -p $DOWNLOAD_DIR
Docker Compose 파일
Greenbone Community Edition을 컨테이너와 함께 실행하려면 다음 컴포즈 파일을 사용해야 합니다.
services:
vulnerability-tests:
image: greenbone/vulnerability-tests
environment:
STORAGE_PATH: /var/lib/openvas/22.04/vt-data/nasl
volumes:
- vt_data_vol:/mnt
notus-data:
image: greenbone/notus-data
volumes:
- notus_data_vol:/mnt
scap-data:
image: greenbone/scap-data
volumes:
- scap_data_vol:/mnt
cert-bund-data:
image: greenbone/cert-bund-data
volumes:
- cert_data_vol:/mnt
dfn-cert-data:
image: greenbone/dfn-cert-data
volumes:
- cert_data_vol:/mnt
depends_on:
- cert-bund-data
data-objects:
image: greenbone/data-objects
volumes:
- data_objects_vol:/mnt
report-formats:
image: greenbone/report-formats
volumes:
- data_objects_vol:/mnt
depends_on:
- data-objects
gpg-data:
image: greenbone/gpg-data
volumes:
- gpg_data_vol:/mnt
redis-server:
image: greenbone/redis-server
restart: on-failure
volumes:
- redis_socket_vol:/run/redis/
pg-gvm:
image: greenbone/pg-gvm:stable
restart: on-failure
volumes:
- psql_data_vol:/var/lib/postgresql
- psql_socket_vol:/var/run/postgresql
gvmd:
image: greenbone/gvmd:stable
restart: on-failure
volumes:
- gvmd_data_vol:/var/lib/gvm
- scap_data_vol:/var/lib/gvm/scap-data/
- cert_data_vol:/var/lib/gvm/cert-data
- data_objects_vol:/var/lib/gvm/data-objects/gvmd
- vt_data_vol:/var/lib/openvas/plugins
- psql_data_vol:/var/lib/postgresql
- gvmd_socket_vol:/run/gvmd
- ospd_openvas_socket_vol:/run/ospd
- psql_socket_vol:/var/run/postgresql
depends_on:
pg-gvm:
condition: service_started
scap-data:
condition: service_completed_successfully
cert-bund-data:
condition: service_completed_successfully
dfn-cert-data:
condition: service_completed_successfully
data-objects:
condition: service_completed_successfully
report-formats:
condition: service_completed_successfully
gsa:
image: greenbone/gsa:stable
restart: on-failure
ports:
- 9392:80
volumes:
- gvmd_socket_vol:/run/gvmd
depends_on:
- gvmd
ospd-openvas:
image: greenbone/ospd-openvas:stable
restart: on-failure
init: true
hostname: ospd-openvas.local
cap_add:
- NET_ADMIN # for capturing packages in promiscuous mode
- NET_RAW # for raw sockets e.g. used for the boreas alive detection
security_opt:
- seccomp=unconfined
- apparmor=unconfined
command:
[
"ospd-openvas",
"-f",
"--config",
"/etc/gvm/ospd-openvas.conf",
"--mqtt-broker-address",
"mqtt-broker",
"--notus-feed-dir",
"/var/lib/notus/advisories",
"-m",
"666"
]
volumes:
- gpg_data_vol:/etc/openvas/gnupg
- vt_data_vol:/var/lib/openvas/plugins
- notus_data_vol:/var/lib/notus
- ospd_openvas_socket_vol:/run/ospd
- redis_socket_vol:/run/redis/
depends_on:
redis-server:
condition: service_started
gpg-data:
condition: service_completed_successfully
vulnerability-tests:
condition: service_completed_successfully
mqtt-broker:
restart: on-failure
image: greenbone/mqtt-broker
ports:
- 1883:1883
networks:
default:
aliases:
- mqtt-broker
- broker
notus-scanner:
restart: on-failure
image: greenbone/notus-scanner:stable
volumes:
- notus_data_vol:/var/lib/notus
- gpg_data_vol:/etc/openvas/gnupg
environment:
NOTUS_SCANNER_MQTT_BROKER_ADDRESS: mqtt-broker
NOTUS_SCANNER_PRODUCTS_DIRECTORY: /var/lib/notus/products
depends_on:
- mqtt-broker
- gpg-data
- vulnerability-tests
gvm-tools:
image: greenbone/gvm-tools
volumes:
- gvmd_socket_vol:/run/gvmd
- ospd_openvas_socket_vol:/run/ospd
depends_on:
- gvmd
- ospd-openvas
volumes:
gpg_data_vol:
scap_data_vol:
cert_data_vol:
data_objects_vol:
gvmd_data_vol:
psql_data_vol:
vt_data_vol:
notus_data_vol:
psql_socket_vol:
gvmd_socket_vol:
ospd_openvas_socket_vol:
redis_socket_vol:
아래 표는 Docker 컴포즈 파일의 제공된 컨테이너와 그들의 서비스를 자세히 설명합니다.
컨테이너 | 서비스 | 설명 |
---|---|---|
redis-server | Redis 서버 | 조정된 구성을 가진 Redis 서버입니다. VT 데이터 및 스캔 결과를 스캐너에서 저장합니다. |
pg-gvm | PostgreSQL | gvmd와 함께 사용하기 위한 PostgreSQL 데이터베이스 클러스터 설정입니다. 실제 데이터는 psql_data_vol 볼륨에 저장됩니다. |
gvmd | gvmd | PostgreSQL 데이터베이스와 ospd-openvas 스캐너와 통신하기 위해 볼륨 내 unix 소켓을 사용하는 gvmd 컨테이너입니다. 다운로드된 피드 데이터는 gvmd_data_vol 볼륨에 저장됩니다. 피드 데이터를 확인하려면 gpg_data_vol의 GPG 키링을 사용합니다. |
gsa | gsad | GSA 웹 애플리케이션을 제공하기 위해 실행되는 gsad 웹 서버 컨테이너입니다. 웹 인터페이스는 localhost의 9392 포트에서 사용할 수 있습니다. gvmd와 통신하기 위해 볼륨 내 unix 소켓을 사용합니다. |
ospd-openvas | ospd-openvas | 취약성 스캐너를 제공하는 컨테이너입니다. 피드에서 가져온 VT 데이터는 vt_data_vol 볼륨에 저장됩니다. 피드 데이터를 확인하려면 gpg_data_vol의 GPG 키링을 사용합니다. Redis 서버와의 연결은 볼륨 내 unix 소켓을 통해 설정됩니다. |
mqtt-broker | Mosquitto MQTT 브로커 | notus-scanner, openvas-scanner 및 ospd-openvas 간의 통신에 사용되는 MQTT 브로커입니다. |
notus-scanner | notus-scanner | 로컬 보안 검사에 사용되는 notus-scanner 컨테이너입니다. 피드 데이터를 확인하려면 gpg_data_vol의 GPG 키링을 사용합니다. notus-scanner 자체의 피드 데이터는 notus_data_vol에 저장됩니다. |
gvm-tools | gvm-tools | gvmd 및 ospd-openvas를 쿼리하고 제어하기 위한 gvm-tools CLI를 제공하는 컨테이너입니다. |
gpg-data | 그린본의 공개 서명 키가 있는 GPG 키링을 시작 시 gpg_data_vol 볼륨으로 복사하는 컨테이너입니다. 시작 후 종료됩니다. | |
vulnerability-tests | 시작 시 취약성 테스트(VT)를 vt_data_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
notus-data | 시작 시 notus-scanner에 대한 취약성 정보를 notus_data_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
scap-data | 시작 시 CVE 및 CPE 데이터를 scap_data_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
cert-bund-data | 시작 시 CERT-Bund 데이터를 cert_data_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
dfn-cert-data | 시작 시 DFN-CERT 데이터를 cert_data_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
data-objects | 시작 시 스캔 설정, 컴플라이언스 정책 및 포트 목록을 data_objects_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. | |
report-formats | 시작 시 보고서 형식을 data_objects_vol 볼륨으로 복사하는 컨테이너입니다. 라이선스를 표시한 후 종료됩니다. |
위 내용은 Docker 컴포즈 파일 내의 각 컨테이너와 해당 서비스를 자세히 설명한 것입니다.
다운로드
컴포즈 파일을 직접 복사하거나 다음 명령을 사용하여 다운로드할 수 있습니다.
cd $DOWNLOAD_DIR && curl -f -L https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml -o docker-compose.yml
Greenbone Community Containers 실행
docker-compose 파일을 사용하여 컨테이너 이미지를 다운로드(풀)하고 컨테이너를 백그라운드에서 시작할 수 있습니다.
Greenbone Community Containers 다운로드
docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition pull
Greenbone Community Containers 시작
docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition up -d
로그 출력의 지속적인 스트림을 얻으려면 다음 명령을 실행합니다.
모든 서비스의 로그 메시지 표시
docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition logs -f
로그 스트림은 Ctrl-C를 눌러 중지할 수 있습니다.
관리자 사용자 설정
경고: 기본적으로 admin이라는 사용자 이름과 admin이라는 비밀번호로 사용자가 생성됩니다. 이는 보안에 취약하며, 새로운 비밀번호로 업데이트하는 것이 매우 권장됩니다.
관리자 사용자의 비밀번호를 생성된 비밀번호 대신 원하는 비밀번호로 업데이트하려면 다음 명령을 사용합니다.
docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition \
exec -u gvmd gvmd gvmd --user=admin --new-password=<password>
취약성 관리 시작
서비스가 시작되고 모든 피드 데이터가 로드된 후, Greenbone Security Assistant 웹 인터페이스(GSA)를 브라우저에서 열 수 있습니다.
GSA를 브라우저에서 열기
xdg-open "http://127.0.0.1:9392" 2>/dev/null >/dev/null &
브라우저는 GSA의 로그인 페이지를 표시하며, 이전에 생성한 자격 증명을 사용하여 취약성 스캔을 시작할 수 있습니다.
설정 및 시작 스크립트
참고: 먼저 Prerequisites에 나와 있는 지침을 따르는 것을 기억하십시오.
다음 스크립트에는 위의 모든 명령이 포함되어 있습니다. 다음 명령을 사용하여 이 스크립트를 다운로드할 수 있습니다.
curl -f -O https://greenbone.github.io/docs/latest/_static/setup-and-start-greenbone-community-edition.sh && chmod u+x setup-and-start-greenbone-community-edition.sh
스크립트를 실행하려면 다음 명령을 실행하십시오.
./setup-and-start-greenbone-community-edition.sh
이제 이 스크립트를 실행하면 위에서 제시한 단계를 자동으로 수행할 수 있습니다.
원문 : https://greenbone.github.io/docs/latest/22.4/container/