個人的に仮想基盤のソフトでDebianベースのProxmox VEと言うものを使っているのだが、Vulsでこれの脆弱性について検出できるかどうかやってみる事にする。
基本はDebianベースだからいけると思うのだけど…ちょっと微妙な結果になった。
1.ユーザ作成・鍵ファイルの設定
まず、Proxmox側にssh接続してvulsユーザの作成をする。
useradd vuls -b /opt -s /bin/bash
mkdir /opt/vuls
chown vuls. /opt/vuls
passwd vuls
次に、Vulsサーバからssh接続する際の鍵ファイルを登録、コンフィグへの追加をする。
ssh-copy-id vuls@Proxmox
cat <<EOF >> config.toml
[servers.Proxmox]
host = "IPアドレス"
port = "22"
user = "vuls"
keyPath = "/opt/vuls/.ssh/id_rsa"
EOF
ただ、この時点でコンフィグ確認を行っても、sudoとかのコマンドが入ってないのでエラーになる。
[vuls@BS-PUB-SEC ~]$ vuls configtest
[Oct 1 20:09:17] INFO [localhost] Validating Config...
[Oct 1 20:09:17] INFO [localhost] Detecting Server/Contianer OS...
[Oct 1 20:09:17] INFO [localhost] Detecting OS of servers...
[Oct 1 20:09:17] INFO [localhost] (1/2) Detected: Proxmox: debian 8.4
[Oct 1 20:09:17] INFO [localhost] (2/2) Detected: BS-PUB-SEC: centos 7.2.1511
[Oct 1 20:09:17] INFO [localhost] Detecting OS of containers...
[Oct 1 20:09:17] INFO [localhost] Checking sudo configuration...
[Oct 1 20:09:17] ERROR [Proxmox] sudo error on SSHResult: servername: Proxmox, cmd: set -o pipefail; sudo -S apt-get -v, exitstatus: 127, stdout: bash: sudo: command not found
, stderr: , err: %!s()
[Oct 1 20:09:18] INFO [BS-PUB-SEC] sudo ... OK
[Oct 1 20:09:18] ERROR [localhost] Failed to sudo with nopassword via SSH. Define NOPASSWD in /etc/sudoers on target servers. err: [vuls@172.28.0.30:22: Failed to sudo: SSHResult: servername: Proxmox, cmd: set -o pipefail; sudo -S apt-get -v, exitstatus: 127, stdout: bash: sudo: command not found
, stderr: , err: %!!(MISSING)s()]
2.Proxmox側でapt-get・sudoersの設定
次に、Proxmox側でapt-getが行えるようにし、sudoなどの必要パッケージのインストールを実行する。
まず、Proxmoxにrootユーザでログインして、以下のコマンドを実行しapt-getが利用できるようにする。
echo "# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use" >> /etc/apt/sources.list
echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" >> /etc/apt/sources.list
sed -i '/^deb/s/^/# /' /etc/apt/sources.list.d/pve-enterprise.list
で、sudoなどの必要パッケージをインストールする。
apt-get install sudo
sudoのインストール後、以下のコマンドでsudoersにvulsユーザを追加する。
sed -i.bk '/^root/avuls ALL=(root) NOPASSWD: /usr/bin/apt-get, /usr/bin/apt-cache' /etc/sudoers
この状態でconfigtest、prepareをすれば通るはずだ。
[vuls@BS-PUB-SEC ~]$ vuls configtest
[Oct 1 20:16:10] INFO [localhost] Validating Config...
[Oct 1 20:16:10] INFO [localhost] Detecting Server/Contianer OS...
[Oct 1 20:16:10] INFO [localhost] Detecting OS of servers...
[Oct 1 20:16:10] INFO [localhost] (1/2) Detected: Proxmox: debian 8.4
[Oct 1 20:16:11] INFO [localhost] (2/2) Detected: BS-PUB-SEC: centos 7.2.1511
[Oct 1 20:16:11] INFO [localhost] Detecting OS of containers...
[Oct 1 20:16:11] INFO [localhost] Checking sudo configuration...
[Oct 1 20:16:11] INFO [Proxmox] sudo ... OK
[Oct 1 20:16:11] INFO [BS-PUB-SEC] sudo ... OK
[Oct 1 20:16:11] INFO [localhost] SSH-able servers are below...
Proxmox BS-PUB-SEC
[vuls@BS-PUB-SEC ~]$ vuls prepare
INFO[0000] Start Preparing (config: /opt/vuls/config.toml)
[Oct 1 20:16:57] INFO [localhost] Detecting OS...
[Oct 1 20:16:57] INFO [localhost] Detecting OS of servers...
[Oct 1 20:16:57] INFO [localhost] (1/2) Detected: Proxmox: debian 8.4
[Oct 1 20:16:57] INFO [localhost] (2/2) Detected: BS-PUB-SEC: centos 7.2.1511
[Oct 1 20:16:57] INFO [localhost] Detecting OS of containers...
[Oct 1 20:16:57] INFO [localhost] Checking sudo configuration...
[Oct 1 20:16:58] INFO [Proxmox] sudo ... OK
[Oct 1 20:16:58] INFO [BS-PUB-SEC] sudo ... OK
[Oct 1 20:16:58] INFO [localhost] Installing...
[Oct 1 20:16:58] INFO [Proxmox] apt-get update...
[Oct 1 20:16:58] INFO [BS-PUB-SEC] Ignored: yum-plugin-changelog already installed
[Oct 1 20:17:07] INFO [Proxmox] Installed: aptitude
3.スキャンを行う
さて、この状態になればあとはスキャンを行うだけだ。
vuls scan -debug -cve-dictionary-dbpath=/opt/vuls/cve.sqlite3 -results-dir=/opt/vuls/results/ -report-text -lang=ja -report-json
で、幾つか(結構多く)のパッケージについてはProxmox独自のものが使われているためエラーになってしまう。
どうやらchangelogからCVE番号が見れないようだ…
で、一応Debianのパッケージについては確認できる、ようなのだけど…
どうも通知系でうまく動かないっぽい。
一応、tuiでは見れるんだけど…