vuls 도입 메모 ~Vuls 서버 구축으로부터 취약성 진단의 정기 실행을 할 때까지(메일 통지·Chatwork 통지)~
소개
이 절차에 따라
vuls 서버 측에서 수행
대상 환경
설치된 버전
$ vuls -v
vuls v0.6.1 ca21602
$ go version
go version go1.10.1 linux/amd64
$ go-cve-dictionary -v
go-cve-dictionary v0.3.1 b083bed
디렉토리 구조
다음은 본 절차에서 개인적으로 중요하다고 생각하는 포인트
- /opt/vuls/
- config.toml ★vuls設定ファイル
- cve.sqlite3 ★脆弱性診断が含まれるDB
- go/
- bin/vuls ★vulsコマンドの存在場所
- go/src/github.com/future-architect/vuls/ ★vulsのインストール場所
- results/ ★vuls診断結果を保存するディレクトリ
- 各種診断結果。。。
- vulsrepo/ ★vuls診断結果をWebで確認するツール一式
- その他ライセンスもろもろ。。。
- server/
- vulsrepo-config.toml ★VulsRepoの設定ファイル
- vulsrepo-server ★VulsRepoの起動スクリプト
- その他設定もろもろ。。。
Vuls 구축 절차
#
로 시작하는 행의 명령은 root 사용자로 실행되고 $
는 vuls 사용자로 실행됩니다. vuls 설치
1. 필요한 패키지 설치
# yum -y install sqlite git gcc
# wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz
# tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
2. vuls 용 사용자 작성, 로그 설정
# useradd vuls -b /opt ★任意のユーザで構いません
# mkdir /var/log/vuls
# chown -R vuls.vuls /var/log/vuls ★useraddした任意のユーザ名の権限にする
# chmod 700 /var/log/vuls
3. Go 언어용 환경 변수 설정
# vi /etc/profile.d/goenv.sh ★goenv.shを作成して以下の3行を記載する。
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# source /etc/profile.d/goenv.sh
4.go-cve-dictionary 설치
go-cve-dictionary란?
# su - vuls
$ mkdir -p $GOPATH/src/github.com/kotakanbe
$ cd $GOPATH/src/github.com/kotakanbe
$ git clone https://github.com/kotakanbe/go-cve-dictionary.git
$ cd go-cve-dictionary
$ make install
5. NVD에서 취약성 데이터베이스 얻기
$ cd /opt/vuls
$ for i in `seq 1998 $(date +"%Y")`; do go-cve-dictionary fetchjvn -years $i; done
6.vuls 설치
$ mkdir -p $GOPATH/src/github.com/future-architect
$ cd $GOPATH/src/github.com/future-architect
$ git clone https://github.com/future-architect/vuls.git
$ cd vuls
$ make install
vuls 실행
vuls 연결 준비
다음은 vuls 서버 측에서 작업
# su - vuls
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub ★このファイルの中身をメモ
다음은 취약성 진단 서버 측에서 작업
# useradd vuls
# su - vuls
$ mkdir ~/.ssh/
$ vi ~/.ssh/authorized_keys ★先ほどメモしたファイルの中身を記載する
$ chmod 700 /home/vuls/.ssh/
$ chmod 600 ~/.ssh/authorized_keys
SSH 연결 확인 (vuls 서버 → 취약성 진단하는 서버)
# ssh -i /opt/vuls/.ssh/id_rsa vuls@<脆弱性診断するサーバのIPアドレス>
vuls 구성 파일 작성 (vuls 서버에서 실행)
# su - vuls
$ vi config.toml
[servers.target-server]
host = "<脆弱性診断するサーバのIPアドレス>"
port = "22"
user = "vuls" ★脆弱性診断をするユーザ
keyPath = "/opt/vuls/.ssh/id_rsa"
취약성 진단 실행
$ vuls scan target-server
$ vuls report -lang=ja
취약점 진단을 웹 도구(VulsRepo)에서 확인하고 싶습니다.
VulsRepo 설치
# su - vuls
$ cd $HOME $ git clone https://github.com/usiusi360/vulsrepo.git
$ cd $HOME/vulsrepo/server
$ cp vulsrepo-config.toml.sample vulsrepo-config.toml
$ vi vulsrepo-config.toml
[Server]
rootPath = "/opt/vuls/vulsrepo"
resultsPath = "/opt/vuls/results"
serverPort = "5111"
VulsRepo 시작
$ cd $HOME/vulsrepo/server
$ ./vulsrepo-server
취약성 진단 결과를 웹에서 확인
http://< Vuls 서버의 IP 주소 >:5111로 이동합니다.
취약성 진단한 대상의 보고서를 선택 → [Submit]
왼쪽 상단의 풀다운에서 [03. Pivot: Package/CVSS-Severity/CveID/Summary => ServerName]을 선택 → [Save]
VulsRepo를 systemd로 관리하고 싶습니다.
시작 파일 만들기
# vi /etc/systemd/system/vulsrepo.service
[Unit]
Description=vulsrepo daemon
Documentation=https://github.com/usiusi360/vulsrepo
[Service]
ExecStart = /opt/vuls/vulsrepo/server/vulsrepo-server
ExecRestart = /bin/kill -WINCH ${MAINPID} ; /opt/vuls/vulsrepo/server/vulsrepo-server
ExecStop = /bin/kill -WINCH ${MAINPID}
Restart = no
Type = simple
User = vuls
Group = vuls
[Install]
WantedBy = multi-user.target
확인
# systemctl list-unit-files --type=service|grep vulsrepo
vulsrepo.service disabled
자동 기동 설정, 동작 확인
# systemctl enable vulsrepo
Created symlink from /etc/systemd/system/multi-user.target.wants/vulsrepo.servic
#
# systemctl status vulsrepo
● vulsrepo.service - vulsrepo daemon
Loaded: loaded (/etc/systemd/system/vulsrepo.service; enabled; vendor preset:
Active: inactive (dead) since 水 2019-01-09 16:29:37 JST; 3s ago
Docs: https://github.com/usiusi360/vulsrepo
Process: 32536 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUC
Process: 32525 ExecStart=/opt/vuls/vulsrepo/server/vulsrepo-server (code=kille
Main PID: 32525 (code=killed, signal=TERM)
#
# systemctl start vulsrepo
#
# systemctl status vulsrepo
● vulsrepo.service - vulsrepo daemon
Loaded: loaded (/etc/systemd/system/vulsrepo.service; enabled; vendor preset:
Active: active (running) since 水 2019-01-09 16:29:46 JST; 1s ago
Docs: https://github.com/usiusi360/vulsrepo
Process: 32536 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUC
Main PID: 32545 (vulsrepo-server)
Tasks: 4
Memory: 864.0K
CGroup: /system.slice/vulsrepo.service
mq32545 /opt/vuls/vulsrepo/server/vulsrepo-server
# systemctl stop vulsrepo
#
# systemctl status vulsrepo
● vulsrepo.service - vulsrepo daemon
Loaded: loaded (/etc/systemd/system/vulsrepo.service; enabled; vendor preset:
Active: inactive (dead) since 水 2019-01-09 16:29:37 JST; 3s ago
Docs: https://github.com/usiusi360/vulsrepo
Process: 32536 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUC
Process: 32525 ExecStart=/opt/vuls/vulsrepo/server/vulsrepo-server (code=kille
Main PID: 32525 (code=killed, signal=TERM)
Vuls 정기 실행
취약성 정보의 정기 업데이트
다음은 매주 월요일 아침 5시에 실행됩니다.
# vi /etc/crontab
00 5 * * 1 vuls ${HOME}/go/bin/go-cve-dictionary fetchnvd -last2y -dbpath=/opt/vuls/cve.sqlite3
30 5 * * 1 vuls ${HOME}/go/bin/go-cve-dictionary fetchjvn -latest -dbpath=/opt/vuls/cve.sqlite3
취약성 진단 결과를 이메일로 통지
메일러 설치, 시작, 자동 시작
# yum install -y postfix
# systemctl start postfix
# systemctl enable postfix
Vuls 이메일 설정하기
# vi /opt/vuls/config.toml
[email]
smtpAddr = "localhost"
smtpPort = "25"
from = "[email protected]"
to = ["[email protected]"]
subjectPrefix = "[vuls]"
취약성 진단 결과를 이메일로 알림(선택사항: -to-email)
$ vuls scan && vuls report -lang=ja -format-full-text -to-email
취약성 진단의 정기 실행
다음은 매월 1일 아침 6시에 진단을 실행합니다.
# vi /etc/crontab
00 6 1 * * vuls /opt/vuls/go/bin/vuls scan && /opt/vuls/go/bin/vuls report -lang=ja -format-full-text -to-email > /dev/null 2>&1
취약성 진단 결과를 채팅으로 통보하기
설정 파일 작성
$ vi /opt/vuls/config.toml
[chatwork]
room = "aaaaaaa" ★チャットワークルームID
apiToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ★チャットワークのユーザのAPIトークン
취약성 진단 결과를 채팅에 알리기(옵션: -to-chatwork)
$ vuls scan && vuls report -format-full-text -to-chatwork -lang=ja
Reference
이 문제에 관하여(vuls 도입 메모 ~Vuls 서버 구축으로부터 취약성 진단의 정기 실행을 할 때까지(메일 통지·Chatwork 통지)~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takahashi-kazuki/items/7c75ba779b3af1e32bc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)