進化するVuls!稼働中のDockerコンテナの脆弱性を検知する

More than 1 year has passed since last update.

前回の記事

あなたのサーバは本当に安全ですか?今もっともイケてる脆弱性検知ツールVulsを使ってみた


はじめに

先日書かせていただいたVulsの記事の反響がすごく、とても驚いています。

個人的に感じていたツールの優秀さに、共感頂けたのはとても嬉しいです。

さて、今回は、 Vulsが稼働中のDockerコンテナの脆弱性検知 に対応したので、そちらを紹介したいと思います。


Vulsとは

download.png

Github: vuls

日本語のREADME: vuls japanese

Vulsはgolang製の脆弱性検知ツールです。

VulsはVULnerability Scannerの略です。

「バルス!」


Docker対応の詳細

README #Docker

スクリーンショット 2016-05-24 20.13.15.png


特徴


  • 設定ファイルにコンテナ名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に入る


console

$ ssh -i /Users/matsunosadayuki/.ssh/vuls-dev.pem ec2-user@54.199.215.192



  • ダウンロードできるdockerの確認


target_amazon

$ sudo yum info docker

読み込んだプラグイン:priorities, update-motd, upgrade-helper
インストール済みパッケージ
名前 : docker
アーキテクチャー : x86_64
バージョン : 1.9.1



  • dockerインストール


target_amazon

$ sudo yum install docker



  • dockerグループにec2-userを追加


target_amazon

$ sudo usermod -aG docker ec2-user



  • ubuntu12.04のイメージを取得


target_amazon

$ sudo docker pull ubuntu:12.04



  • ubuntu12.04を起動


target_amazon

$ sudo docker run -d -t  ubuntu:12.04 bin/bash



  • コンテナの起動を確認


target_amazon

$ 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を実行するサーバにて


  • 設定ファイルの作成


config.yml

[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の準備


console

$ 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実行


console

% 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

スクリーンショット 2016-05-26 9.01.24.png

そしておなじみのTUIがなんと進化して、階層表示になってる!!

個人的には、たとえ脆弱性スキャンがなくてもこのTUIは利用する価値がある!


注意点

vulsは0.1.4で今回のdocker対応が入ったが、どうやらsqliteの構造が変わったらしい。

https://github.com/future-architect/vuls/pull/67

なので ScanTUI を実行するときは、古いデータを削除する必要がある。


その他便利機能



  • vuls history


    • scanした履歴がみれる!




  • vuls discover


    • CIDRを指定すると、そのネットワーク内にいるサーバをすべて探して設定ファイルを作ってくれる!



特に vuls discover は普通にそれだけでも十分有用なツールです!


さいごに

Vulsはやっぱりすごいです。

一つの武器を手にいれた感じですね。

脆弱性検知だけじゃなくて、ターミナルでのサーバ管理にも使えそうですね!