前回の記事
あなたのサーバは本当に安全ですか?今もっともイケてる脆弱性検知ツールVulsを使ってみた
はじめに
先日書かせていただいたVulsの記事の反響がすごく、とても驚いています。
個人的に感じていたツールの優秀さに、共感頂けたのはとても嬉しいです。
さて、今回は、 Vulsが稼働中のDockerコンテナの脆弱性検知 に対応したので、そちらを紹介したいと思います。
Vulsとは
Github: vuls
日本語のREADME: vuls japanese
Vulsはgolang製の脆弱性検知ツールです。
VulsはVULnerability Scannerの略です。
「バルス!」
Docker対応の詳細
特徴
- 設定ファイルにコンテナ名orコンテナIDを登録するだけでscan出来る
- 動いているコンテナの脆弱性を調べることができる
- もちろん TUI で確認出来る!
- コンテナのOSは本体と同じく以下に対応している
Distribution | Release |
---|---|
Ubuntu | 12, 14, 16 |
Debian | 7, 8 |
RHEL | 4, 5, 6, 7 |
CentOS | 5, 6, 7 |
Amazon Linux | All |
実際に試してみた。
環境
Role | OS |
---|---|
Dockerホスト | AmazonLinux |
Dockerコンテナ | Ubuntu12.04 |
VulsScanner | OSX |
脆弱性スキャン対象のamazonにて
- ホストOSであるAmazonに入る
$ ssh -i /Users/matsunosadayuki/.ssh/vuls-dev.pem ec2-user@54.199.215.192
- ダウンロードできるdockerの確認
$ sudo yum info docker
読み込んだプラグイン:priorities, update-motd, upgrade-helper
インストール済みパッケージ
名前 : docker
アーキテクチャー : x86_64
バージョン : 1.9.1
- dockerインストール
$ sudo yum install docker
- dockerグループにec2-userを追加
$ sudo usermod -aG docker ec2-user
- ubuntu12.04のイメージを取得
$ sudo docker pull ubuntu:12.04
- ubuntu12.04を起動
$ sudo docker run -d -t ubuntu:12.04 bin/bash
- コンテナの起動を確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65b284c96e29 ubuntu:12.04 "bin/bash" 23 hours ago Up 19 minutes romantic_ptolemy
Vuls Scanを実行するサーバにて
- 設定ファイルの作成
[servers]
[servers.vuls-dev-amazon]
host = "54.199.215.192"
port = "22"
user = "ec2-user"
keyPath = "/Users/matsunosadayuki/.ssh/vuls-dev.pem"
containers = ["${running}"]
"${running}" と入力すると、動いているコンテナ全てを調べてくれる
個別に設定したい場合は、コンテナ名やコンテナIDを入力する
- scanの準備
$ vuls prepare
INFO[0000] Start Preparing (config: /Users/matsunosadayuki/vuls/config.toml)
[May 25 22:10:27] INFO [localhost] Detecting OS...
[May 25 22:10:32] INFO [localhost] (1/1) Detected vuls-dev-amazon: amazon 2016.03
[May 25 22:10:32] INFO [localhost] Detecting Container OS...
[May 25 22:10:36] INFO [localhost] Detected 65b284c96e29/romantic_ptolemy on vuls-dev-amazon: ubuntu 12.04
[May 25 22:10:36] INFO [localhost] Installing...
[May 25 22:10:36] INFO [vuls-dev-amazon_romantic_ptolemy] apt-get update...
[May 25 22:10:36] INFO [vuls-dev-amazon] Nothing to do
[May 25 22:10:43] INFO [localhost] Success
- scan実行
% vuls scan
INFO[0000] Start scanning (config: /Users/matsunosadayuki/vuls/config.toml)
[May 25 22:42:39] INFO [localhost] Validating Config...
[May 25 22:42:39] INFO [localhost] Detecting Server OS...
[May 25 22:42:43] INFO [localhost] (1/1) Detected vuls-dev-amazon: amazon 2016.03
[May 25 22:42:43] INFO [localhost] Detecting Container OS...
[May 25 22:42:46] INFO [localhost] Detected 65b284c96e29/romantic_ptolemy on vuls-dev-amazon: ubuntu 12.04
[May 25 22:42:46] INFO [localhost] Scanning vulnerabilities...
[May 25 22:42:46] INFO [localhost] Check required packages for scanning...
[May 25 22:42:46] INFO [localhost] Scanning vulnerable OS packages...
おお。Detecting Container OS...
ゆうとる。
- tui
$ vuls tui
そしておなじみのTUIがなんと進化して、階層表示になってる!!
個人的には、たとえ脆弱性スキャンがなくてもこのTUIは利用する価値がある!
注意点
vulsは0.1.4で今回のdocker対応が入ったが、どうやらsqliteの構造が変わったらしい。
https://github.com/future-architect/vuls/pull/67
なので Scan
や TUI
を実行するときは、古いデータを削除する必要がある。
その他便利機能
-
vuls history
- scanした履歴がみれる!
-
vuls discover
- CIDRを指定すると、そのネットワーク内にいるサーバをすべて探して設定ファイルを作ってくれる!
特に vuls discover
は普通にそれだけでも十分有用なツールです!
さいごに
Vulsはやっぱりすごいです。
一つの武器を手にいれた感じですね。
脆弱性検知だけじゃなくて、ターミナルでのサーバ管理にも使えそうですね!