https://t.co/G3wwsU5NHl
Vulsの開発環境リニューアルした!!ブログ書こう!!?— adachin?SRE (@adachin0817) September 1, 2018
以前Vulsの開発環境をdockerで構築したとブログを書いたのですが、(上記)
ディレクトリマウントできない!!
ということで前日行われたVuls祭り#4でも…
docker-composeで構築する!
と宣言したので今回リニューアルしました!!(早い)
というわけで簡単に使い方をブログします。
■RVIRUS0817/dev_vuls
https://github.com/RVIRUS0817/dev_vuls
■Environment
・docker-compose version 1.22.0, build f46880f
・CentOS7(Container)
・go version go1.10.1 linux/amd64
・vuls v0.5.0 153234b
・go-cve-dictionary v0.2.0 01c5660
・goval-dictionary v0.1.0 818624d
・gost e926a00
Vulsのバージョンも0.5.0にアップデートしてgostも導入しています。
ちなみにコンテナのイメージファイルはなんと9GBもあるので!後でDockerfile化します。。。(なのでみんな頑張ってpullしてw)
以下がVulsの設定ファイルです。
■Vuls setting files
1 2 3 4 5 6 7 8 9 10 |
[root@dev_vuls > su vuls [vuls@dev_vuls > cd ~/vuls [vuls@dev_vuls > ll total 1232068 -rw-rw-r-- 1 vuls vuls 481 Sep 1 22:56 config.toml -rw-r--r-- 1 vuls vuls 1153449984 Sep 1 22:55 cve.sqlite3 -rw-r--r-- 1 vuls vuls 12070912 Sep 1 21:59 gost.sqlite3 -rw-r--r-- 1 vuls vuls 96100352 Sep 1 22:55 oval.sqlite3 drwx------ 4 vuls vuls 4096 Sep 1 22:53 results/ -rwxr-xr-x 1 vuls vuls 1648 Sep 1 21:45 vuls-update.sh* |
ここまでがdev_vulsコンテナの環境と設定ファイルの紹介なので、
実際にVulsのコードをテスト(コントリビュート)したい場合について説明していきます。
■Setting File mount(Local PC)
・make home directory
1 2 3 |
$ mkdir -p ~/www/future-architect/ $ mkdir -p ~/www/knqyf263/ $ mkdir -p ~/www/kotakanbe/ |
まずwindows,Mac依存関係なく、各Vulsのリポジトリをfork/cloneする必要があるので、ローカルのホームディレクトリに上記のディレクトリを3つ作りましょう。
そして下記のように設定ファイルをブチ込めば準備完了です。
1 2 3 4 5 6 7 |
$ cd ~/www/future-architect/ $ git clone fork-repository(vuls) $ cd ~/www/knqyf263/ $ git clone https://github.com/knqyf263/gost.git $ cd ~/www/kotakanbe/ $ git clone https://github.com/kotakanbe/go-cve-dictionary.git $ git clone https://github.com/kotakanbe/goval-dictionary.git |
あとはdocker-composeでコンテナを立ち上げるだけです!
上記の私のリポジトリをforkかcloneしてください!
■How to use docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[~/git/RVIRUS0817/dev_vuls/docker] $ docker-compose up -d Pulling dev_vuls (tvirus17/dev_vuls:)... latest: Pulling from tvirus17/dev_vuls 5e35d10a3eba: Pull complete a12691c116f9: Pull complete 60937d4e493a: Pull complete 221a120c7adb: Pull complete 2a9db6fc8ac5: Pull complete 1ac8daaab8ee: Pull complete ca938fbc3c8b: Pull complete e328b2d4f72b: Pull complete 77caf148c02a: Pull complete 0c514c35f410: Pull complete Digest: sha256:04a37d80712d343fee3e0dbe570c6e5e23995898b28867f03986686874044f57 Status: Downloaded newer image for tvirus17/dev_vuls:latest Creating dev_vuls ... done $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e580c7917303 tvirus17/dev_vuls "/sbin/init" 10 hours ago Up 10 hours dev_vuls $ docker images |grep dev_vuls tvirus17/dev_vuls latest 3d6b517d264d 13 hours ago 9.86GB |
コンテナが立ち上がったら各Vulsをデプロイする必要があります。(ディレクトリマウントしているので)
■Deploy container
・Deploy
1 2 3 4 5 6 7 8 9 10 |
$ docker exec -it dev_vuls bash $ sudo su vuls $ cd $GOPATH/src/github.com/knqyf263/gost $ make install $ cd $GOPATH/src/github.com/future-architect/vuls $ make install $ cd $GOPATH/src/github.com/kotakanbe/go-cve-dictionary $ make install $ cd $GOPATH/src/github.com/kotakanbe/goval-dictionary/ $ make install |
あとはローカルでブランチ切って開発して、またデプロイからのscanとreportできればOK!!
1 2 3 4 |
$ cd ~/vuls $ goval-dictionary fetch-redhat 5 6 7 $ vuls scan $ vuls report -format-one-line-text -format-json -to-slack -lang=ja -ignore-unfixed -cvss-over=7 |
!!!
■Vuls自体の動きを知りたい人場合(初心者向け)
docker-composeで立ち上げる場合、上記のローカルファイルをマウントしているため、Vulsのコードをfork/cloneしない限り動きません。
そんな場合は以下のように直接docker runして、vulsユーザーのvulsディレクトリにconfig.tomlがあるので設定ファイルを書き換えれば動きます。
1 2 |
$ docker run -h "dev_vuls" -e TZ=Asia/Tokyo --privileged -d --name dev_vuls tvirus17/dev_vuls /sbin/init $ docker exec -it dev_vuls bash |
1 2 3 4 |
$ cd ~/vuls $ goval-dictionary fetch-redhat 5 6 7 $ vuls scan $ vuls report -format-one-line-text -format-json -to-slack -lang=ja -ignore-unfixed -cvss-over=7 |
■各Vuls自動アップデート方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ cd ~/vuls $ ./vuls-update.sh ----Current goval/go-cve-dictionary/gost,Vuls version---- go-cve-dictionary v0.2.0 01c5660 goval-dictionary b8751b9 gost e926a00 vuls v0.5.0 153234b ----Update go-cve-dictionary---- Update OK ----Update goval-dictionary---- Update OK ----Update gost---- Update OK ----Update Vuls---- Update OK ----New goval/go-cve-dictionary,Vuls version---- go-cve-dictionary v0.2.0 01c5660 goval-dictionary v0.1.0 818624d gost e926a00 vuls v0.5.0 153234b |
■まとめ
これでじゃんじゃんコントリビュートしたい人やVuls初心者の方使ってくだせええ!!
にしてもドキュメント書くの大変だった。。
しかしイメージファイル9GBとか..くそ重いので削減します。Dockerfileも作る。
0件のコメント