Zabbix 3.4를 docker로 운용하여 Vuls와 연동시킨다 ~ 그 2 ~ Vuls의 인스톨

5609 단어 vuls도커zabbix

소개



그 1에서는 Zabbix 3.4를 설치했습니다.
이번에는 Vuls를 docker에서 움직여 보겠습니다.

환경



Vuls를 배포할 위치와 검색할 서버가 필요합니다.
Vuls는 Docker에서 움직이고 스캔 대상은 VirtulBox에 구축한 Ubuntu로 해 보았습니다.

공통



macOS High Sierra (10.13)

Vuls의 도입처



Docker Version 17.09.0-ce-mac33 (19543)

스캔 대상 서버



VirtualBox 5.1.28
Ubuntu Server 16.04.3 LTS
IP 주소 192.168.56.102
테스트를 위해 자동 업데이트가 꺼져 있습니다.

Vuls 설치



여기여기 의 기사를 참고로 했습니다.
공식:
htps : // 기주 b. 코 m / 푹신 푹신 ct / ㈜ ls / t 어 /

컨테이너 준비



데이터 공유 볼륨 컨테이너를 준비합니다.
docker pull busybox:latest
docker run -v /vuls --name vuls-data busybox

Vuls의 컨테이너 이미지를 가져옵니다.
docker pull vuls/go-cve-dictionary
docker pull vuls/goval-dictionary
docker pull vuls/vuls

당신을 위해 버전을 확인합니다.
docker run --rm vuls/go-cve-dictionary -v
docker run --rm vuls/goval-dictionary -v
docker run --rm vuls/vuls -v

go-cve-dictionary 구축



NVD에서 취약성 데이터베이스를 검색합니다.
for i in `seq 2002 $(date +"%Y")`; do \
docker run --rm -it \
--volumes-from vuls-data \
vuls/go-cve-dictionary fetchnvd -years $i; \
done

일본어화하고 싶기 때문에 JVN에서도 취약성 데이터베이스를 취득합니다.
for i in `seq 1998 $(date +"%Y")`; do \
docker run --rm -it \
--volumes-from vuls-data \
vuls/go-cve-dictionary fetchjvn -years $i; \
done

goval-dictionary 구축



이번에는 우분투가 대상이므로 우분투용 OVAL 정보를 취득합니다.
마지막 숫자는 대상 Ubuntu 버전입니다.
공백으로 구분하여 여러 버전을 지정할 수 있습니다.
docker run --rm -it \
--volumes-from vuls-data \
vuls/goval-dictionary fetch-ubuntu 16

SSH 키 만들기



기존 SSH 키가 없으면 새로 만듭니다.
cd ~/.ssh/
ssh-keygen -t rsa
chmod 600 id_rsa

【스캔 대상 서버측】사용자 추가 및 SSH 설정



이 작업은 스캔 대상 서버에서 수행됩니다.
스캔을 위해 사용자(vuls)를 추가하고 sudo 권한을 부여합니다.
우분투 이외의 배포판에서는 방법이 다를 수 있으므로 주의합시다.
sudo adduser vuls
sudo gpasswd -a vuls sudo

vuls 유저로 로그인해, 「SSH 키의 작성」으로 작성한 공개키( id_rsa.pub )의 내용을 authorized_keys 에 추가해, 공개키로 로그인할 수 있도록 합니다.
vim ~/.ssh/authorized_keys

SSH 연결할 수 있는지 확인



공개 키로 스캔 대상 서버에 로그인할 수 있는지 확인합니다.
ssh -i ~/.ssh/id_rsa [email protected]

config.toml 만들기



작업 폴더에서 만듭니다.

config.toml
[servers]
[servers.ubuntu]
host    = "192.168.56.102"
port    = "22"
user    = "vuls"
keyPath = "/home/vuls-user/.ssh/id_rsa"

config.toml 테스트


docker run --rm -it \
--volumes-from vuls-data \
-v ~/.ssh:/home/vuls-user/.ssh:ro \
-v $PWD:/vuls/config \
vuls/vuls configtest \
-config=/vuls/config/config.toml \
-ssh-native-insecure

스캔 수행


docker run --rm -it \
--volumes-from vuls-data \
-v ~/.ssh:/home/vuls-user/.ssh:ro \
-v $PWD:/vuls/config \
-v /etc/localtime:/etc/localtime:ro \
-e "TZ=Asia/Tokyo" \
vuls/vuls scan \
-config=/vuls/config/config.toml \
-ssh-native-insecure

명령줄에서 스캔 결과 보기


docker run --rm -it \
--volumes-from vuls-data \
-v ~/.ssh:/home/vuls-user/.ssh:ro \
-v $PWD:/vuls/config \
-v /etc/localtime:/etc/localtime:ro \
vuls/vuls report \
-cvedb-path=/vuls/cve.sqlite3 \
-ovaldb-path=/vuls/oval.sqlite3 \
-format-short-text \
-config=/vuls/config/config.toml \
-lang=ja

이런 결과가 출력되었습니다.
일부 문자 깨져있다 ....
신규 인스톨한 상태의 Ubuntu이므로, 대량의 취약성이 검출되고 있군요.


VulsRepo로 스캔 결과 표시


docker run -dt \
--volumes-from vuls-data \
-p 5111:5111 \
--name vulsrepo \
vuls/vulsrepo

이 상태에서 스캔을 실시해, 브라우저로부터 http://localhost:5111 에 액세스 하면 그래프 표시등을 이용할 수 있습니다.


TUI는 내 환경에서 오류 ( invalid dimensions )로 표시 할 수 없습니다.
Zabbix와 연계한다면, 여기까지 할 수 있으면 OK일까.

다음은 드디어 Vuls와 Zabbix의 협력입니다.

Zabbix 3.4를 docker로 운용하여 Vuls와 연계시킨다 ~ 그 3 ~ Zabbix와 Vuls의 연계

좋은 웹페이지 즐겨찾기