FutureVulsでサーバの脆弱性をスキャンするためには、スキャナプログラムのインストールが必要です。
FutureVulsでは、2種類のモードを備えております。
ローカルスキャン
リモートスキャン
1. グループ管理者権限を持つユーザでFutureVulsへログインしたあと、右上にあるアイコンをクリックし「グループ設定」へアクセスしてください。
2. 左のリストから「スキャナ」をクリックします。インストール用コマンドが表示されるため、それをコピーします。
FutureVulsではインストール時、スキャン結果のアップロード時にスキャン実行サーバからインターネットへのアクセスが発生します。 プロキシサーバを経由してインターネットへアクセスが行われる環境では、次のインストール実行前に 「設定=>プロキシ設定」の章を参照し、必要な設定をしてください。
3. スキャナプログラムのインストールを行うサーバ上にて「2.」でコピーしたコマンドを実行します。このとき以下のように特権を持ったユーザで実行してください。
以下のメッセージが出力された場合は、root権限を付与されたユーザにスイッチし再実行してください。
2017/11/08 06:04:19 [START ]: chkRootUser
2017/11/08 06:04:19 [ERROR ]: Please run as root user.
インストーラは以下の処理を実行します
実行ファイルの配置
コンフィグファイルの作成
実行ユーザ・グループの作成&ホームフォルダの作成
定期実行の登録
スキャンに必要なOSパッケージのインストール
4.インストール後、定期実行が行われると自動的にスキャンが行われ、スキャン結果がFutureVulsへアップロードされます。
FutureVulsではインストール時、スキャン結果のアップロード時にスキャン実行サーバからインターネットへのアクセスが発生します。 プロキシサーバを経由してインターネットへアクセスが行われる環境では、インストール後にプロキシの設定する必要があります。 **設定=>プロキシ設定**の章を参照し、必要な設定をしてください。
リモートスキャンの設定方法を説明します。 スキャナをセットアップしたサーバを「スキャナサーバ」、 脆弱性スキャン対象のサーバを「スキャン対象サーバ」と記載します。 スキャナサーバはLinuxのみ対応、スキャン対象サーバはLinux, Windowsに対応しています。
リモートスキャンでは、スキャン対象サーバ上にて下記の設定が必要です。(Linuxの場合のみ)
スキャナサーバに上記ローカルスキャンの手順のとおり、スキャナプログラムを導入します。
FutureVulsではリモートサーバのスキャンを行う際は、RSA公開鍵認証によるSSHログインを行います(パスワード認証には対応しておりません)。 リモートサーバにログインできるユーザと秘密鍵、公開鍵をご用意ください。
リモートスキャンでは、事前に一度、 スキャナサーバからスキャン対象サーバに対して手動でSSH接続してください。
スキャン対象サーバのホストフィンガープリントをSSHのknown_hostsに登録するためです。
スキャナをインストールしているマシンがWindowsの場合
一度スキャン対象サーバの管理者権限ユーザで手動SSH接続してください。config.tomlに指定するSSH接続のユーザも管理者権限のものとしてください。
その後C:\Users\<手動でSSH接続したユーザ名>\.ssh\known_hosts
とスキャン対象サーバの秘密鍵をC:\Windows\System32\config\systemprofile\.ssh
に配置してください。
config.tomlで秘密鍵のパスを指定する際には、上記のパスに配置した秘密鍵を指定してください。
リモートのサーバをスキャンする場合は、以下のとおりコンフィグファイルに設定を追加します。
$ vi /opt/vuls-saas/config.toml
[servers]
[servers.localhost]
host = "localhost"
port = "local"
# ↑↑ ローカルスキャンの設定はインストーラにより自動設定されます ↑↑
# ↓↓ スキャン対象サーバの設定をお使いの環境に合わせて追記します ↓↓
# ex)
[servers.<サーバ名>]
user = "vuls-saas" ←<リモートログインに使用するユーザ名>
host = "192.168.0.100" ←<リモートログイン先サーバ:IPアドレスまたは名前解決できるサーバ名>
port = "22" ←<リモートログイン先のポート番号>
keyPath = "/opt/vuls-saas/vuls-saas.pem" ←<秘密鍵の配置場所>
~~~~
スキャン対象サーバがWindowsの場合、リモートログインに使用するユーザには管理者権限を持つユーザを指定することを推奨します。
管理者権限を持たないユーザを指定した場合、一部の適用済みKBと一部のインストール済みパッケージが検知できない可能性があるためです。
keyPathにはスキャン対象サーバのSSH秘密鍵を指定します。 重複する内容は「default」に記載することで省略できます。
[default]
#port = "22"
#user = "username"
#keyPath = "/home/username/.ssh/id_rsa"
以下のようにスキャン対象サーバを複数定義します。 UUIDは定義されていなければreport時に自動生成されます。
[default]
port = "22"
keyPath = "/home/vuls-saas/.ssh/stg.pem"
scanMode = ["fast-root"]
[servers]
[servers.ama2]
user = "ec2-user"
host = "13.113.92.xx"
[servers.ama2.uuids]
ama2 = "xxxxxxxxxxxxxxxxxxxxxxxxx"
[servers.dev]
user = "ubuntu"
host = "54.248.62.xx"
[servers.dev.uuids]
dev = "zzzzzzzzzzzzzzzzzzzzzzzzzz"
自分でUUIDを指定する場合はconfig.toml内で他に定義しているものとの重複に注意してください。 FutureVulsではサーバの識別はUUIDを用いて識別するという仕様です。 定義ミスによりUUIDが同じ場合は同じサーバとして認識されますのでご注意ください。
スキャナサーバをスキャン対象から省きたい場合、スキャンが実行される前(デフォルトでスキャナをインストール後、5分でスキャンが実行)にコンフィグファイルからスキャナサーバの情報を削除してください。コンフィグファイルに情報が記載のサーバのみスキャン対象となります。
・configファイルからスキャナサーバの設定を消去
ファイルパス: /opt/vuls-saas/config.toml
[saas]
GroupID = XXXX
Token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
URL = "https://auth.vuls.biz/one-time-auth"
[servers]
//スキャン対象サーバの情報のみ記載する
設定ファイル内にCIDRレンジを指定することで、範囲内のすべてのサーバに対してリモートスキャンが可能です。 以下のように定義します。
[default]
port = "22"
scanMode = ["fast-root"]
[servers]
[servers.testNW-target]
user = "ec2-user"
host = "192.168.0.60/31"
keyPath = "/home/vuls-saas/.ssh/auth.pem"
スキャンが実行されると、スキャナは指定した範囲内のすべてのIPアドレスに対しリモートスキャンを試み、成功すると各サーバごとの設定情報で上書きします。
[default]
port = "22"
scanMode = ["fast-root"]
[servers]
[servers."testNW-target(192.168.0.60)"]
user = "ec2-user"
host = "192.168.0.60"
keyPath = "/home/vuls-saas/.ssh/auth.pem"
[servers."testNW-target(192.168.0.60)".uuids]
"testNW-target(192.168.0.60)" = "bab806a2-59b7-628f-ff6b-c620df7191ca"
[servers."testNW-target(192.168.0.61)"]
user = "ec2-user"
host = "192.168.0.61"
keyPath = "/home/vuls-saas/.ssh/auth.pem"
[servers."testNW-target(192.168.0.61)".uuids]
"testNW-target(192.168.0.61)" = "dbad42bd-f045-5485-1189-f6a6e4d09a01"
2回目以降のスキャンでは、設定ファイルに記載の情報を基に、各サーバへリモートスキャンが実行されます。
/opt/vuls-saas/config.toml
)を直接編集し、元のUUIDに戻してください$ su - vuls-saas
$ cd /opt/vuls-saas
$ cp vuls-saas.sh vuls-saas.sh.bak
$ vim vuls-saas.sh
$ diff vuls-saas.sh*
diff vuls-saas.sh*
16c16
< ./vuls scan -ips ${@} > scan.log 2>&1
---
> ./vuls scan -ips > scan.log 2>&1
./vuls-saas.sh dev
./vuls-saas.sh dev ama2
./vuls-saas.sh
リモートスキャンの対象サーバの設定が正しく行われており、Vulsからリモートスキャンが可能な状態かどうかは vuls configtest
コマンドで確認できます。
※vuls configtest
コマンドはスキャナサーバにスキャナをインストール後、スキャナサーバにて実行可能です。
sudo su - vuls-saas
cd /opt/vuls-saas
./vuls configtest
リモートスキャン実行後、サーバタブにて各サーバの情報をご確認いただけます。
一行一サーバ情報の表示となり、サーバの台数だけ課金対象となることにご注意ください。
スキャン対象となるサーバの数が多く、スキャンプロセスに時間がかかる場合は、
config.toml
の分割、vuls-saas.sh
のカスタマイズ、crontabの設定変更などを行うことで、
スキャンプロセスを分散させることができます。
vuls
コマンドはデフォルトで現在ディレクトリの config.toml
を読み込みます。
config.toml
を以下のように分割すると
config.group-a.toml
config.group-b.toml
-config
オプションで明示的に指定することで、複数の設定ファイルを読み込むことができます。
./vuls scan -ips -config config.group-a.toml
./vuls saas -config config.group-a.toml
./vuls scan -ips -config config.group-b.toml
./vuls saas -config config.group-b.toml
これを応用して vuls-saas.sh
を以下のように修正すると
※ この修正では特定のサーバを指定したリモートスキャンはできなくなります(アップロード失敗になるため)。
$ diff vuls-saas.sh*
65c65
< ./vuls saas ${@} > report.log 2>&1
---
> ./vuls saas > report.log 2>&1
vuls-saas.sh
にも -config
オプションを追加するが可能になり、crontabの設定は以下のようにできます。
22 05 * * * vuls-saas /opt/vuls-saas/vuls-saas.sh -config config.group-a.toml >/dev/null 2>&1
22 05 * * * vuls-saas /opt/vuls-saas/vuls-saas.sh -config config.group-b.toml >/dev/null 2>&1
vuls scan
コマンドはデフォルトで300秒のタイムアウトが設定されています。
以下のように vuls-saas.sh
を修正することで、タイムアウトを明示的に指定できます。
$ diff vuls-saas.sh*
59c59
< ./vuls scan -ips ${@} > scan.log 2>&1
---
> ./vuls scan -ips -timeout 300 ${@} > scan.log 2>&1