yamory の使い方

yamory へようこそ! yamory の基礎知識と使い方をご紹介します。

scan

scan コマンドについて、以下に記します。

概要

scan コマンドは SSH 接続 による Linux リモートホストのスキャン、WinRM 接続 による Windows リモートホストのスキャン、および yamory-cli をインストールしたローカルホストのスキャンを行います。

scan コマンドでスキャンを行う際に、コマンドフラグ及び設定ファイルの内容で動作を決定します。
設定ファイルはコマンドフラグ --config より指定できますが、指定がない場合、自動的にカレントディレクトリ直下の config.yaml を読み込みます。

また、スキャンにはアクセストークンが必要です。
アクセストークンは、チーム設定画面より発行できます。
発行手順などはこちらを参照してください。

アクセストークンは、コマンドフラグ、または設定ファイルで指定できます。
両方指定された場合の優先順位は以下の通りとなり、設定ファイルの設定が無視されます。

  • コマンドフラグ(--token) > 設定ファイル(token 項目)

コマンドフラグ

フラグ 説明
--config 設定ファイルの場所 (省略時は./config.yaml )
--token/-T ホストスキャンのアクセストークン
--output ソフトウェア資産情報をローカルファイルに保存する場合に指定。ソフトウェア資産情報は yamory へ送信されません。
--pac HTTP プロキシの PAC ファイルのパスを指定
--proxy HTTP プロキシの URLを指定 ( --pac が指定された場合このフラグは無効になります)

--output フラグについて

インターネットに接続できない環境で、ソフトウェア資産情報をローカルファイルに保存する場合に指定します。
出力されるファイル名は yamory_result_<yyyyMMddHHmm>_<hostname>.json です。
また、--output フラグを指定する場合 token は省略可能です。

設定ファイル

設定ファイルは YAML 形式で記述します。直下に以下のキーを記述できます。

キー 必須 説明
token 文字列 ホストスキャンのアクセストークン
pac 文字列 HTTP プロキシの PAC ファイルのパスを指定
proxy 文字列 HTTP プロキシの URLを指定 ( pac が指定された場合このフラグは無効になります)
hosts 配列 スキャン対象の情報

hosts

スキャン対象のホストの情報が記述されているリストです。それぞれのリスト項目に下記のキーを記述できます。

SSH 接続で Linux ホストをスキャンする場合

キー 必須 説明
title 文字列 yamory サービス上表示されるスキャン対象の名前 (省略時は hostname コマンドの実行結果)
hostname 文字列 SSH 接続する際に使われるホスト名(ドメイン名もしくは IP アドレス)
identifier 文字列 ホスト識別子。ホスト識別子には 半角英数字, -, _ のみ使用できます。
scanMode 文字列 スキャンモードの指定 (省略時は ssh)
port 数字 SSH 接続する際に使われるポート番号 (省略時は 22)
distribution 文字列 ホストの OS
version 文字列 ホストのバージョン
sshAgent マップ ssh-agent の設定
credentials マップ SSH 接続する際に使われる認証情報
openSystem 文字列 公開ホストの設定を true または false で指定
tags 文字列 ホストタグ名をカンマ区切りで指定
useSudo 文字列 スキャン時に sudo を使用するか否かを指定。デフォルト false

WinRM 接続で Windows ホストをスキャンする場合

キー 必須 説明
title 文字列 yamory サービス上表示されるスキャン対象の名前 (省略時は hostname または $Env:Computername コマンドの実行結果)
hostname 文字列 WinRM 接続する際に使われるホスト名(ドメイン名もしくは IP アドレス)
identifier 文字列 ホスト識別子。ホスト識別子には 半角英数字, -, _ のみ使用できます。
scanMode 文字列 スキャンモードの指定。winrm を指定します。
port 数字 WinRM 接続する際に使われるポート番号。 (省略時は 5985)
credentials マップ WinRM 接続する際に使われる認証情報
openSystem 文字列 公開ホストの設定を true または false で指定
tags 文字列 ホストタグ名をカンマ区切りで指定
winUpdateType 文字列 更新プログラムの取得先を指定します。Windows Update を使用する場合は WU、WSUS を使用する場合は WSUS、cab ファイルを使用する場合は CAB を指定します (省略時は WU)
wsusScanFilePath 文字列 cab ファイルのフルパスを指定します

yamory-cli をインストールしたローカルホストをスキャンする場合

キー 必須 説明
title 文字列 yamory サービス上表示されるスキャン対象の名前 (省略時は hostname または $Env:Computername コマンドの実行結果)
identifier 文字列 ホスト識別子。ホスト識別子には 半角英数字, -, _ のみ使用できます
scanMode 文字列 スキャンモードの指定。local を指定します。
distribution 文字列 ホストの OS
version 文字列 ホストのバージョン
openSystem 文字列 公開ホストの設定を true または false で指定
tags 文字列 ホストタグ名をカンマ区切りで指定
useSudo 文字列 スキャン時に sudo を使用するか否かを指定。デフォルト false
winUpdateType 文字列 更新プログラムの取得先を指定します。Windows Update を使用する場合は WU、WSUS を使用する場合は WSUS、cab ファイルを使用する場合は CAB を指定します (省略時は WU)
wsusScanFilePath 文字列 cab ファイルのフルパスを指定します

identifier パラメーターについて

yamory のホストスキャン機能では、ホストの一意性を特定するためにマシン ID(/etc/machine-id の値。Windows の場合はシリアルナンバー)を使用していますが、クラウド環境などでコピーしたイメージを利用する際にマシン ID が同値となり、意図せずスキャン結果を上書きしてしまうことがあります。
そのような場合に identifier パラメーターを設定することでスキャン情報の上書きを回避できます。
identifier パラメーターには、チーム内でホストごとに一意の値になるように設定してください。

distribution、および version パラメーターについて

ホストの OS(distribution)、およびバージョン(version)が指定されている場合、 OS の自動判別が無効になります。
なお、現在指定できるdistributionは以下の通りです。

  • Amazon Linux: amazon-linux
  • CentOS: centos
  • Debian: debian
  • Oracle Linux: oracle-linux
  • Red Hat Enterprise Linux: redhat
  • Ubuntu: ubuntu

openSystem パラメーターについて

公開ホスト(外部ネットワークからパブリックアクセスが可能なホスト)として使用するかを指定できます。
公開ホストの場合は true、非公開ホストの場合は false を指定します。
openSystem が未指定の場合、前回スキャン情報があればその状態を引き継ぎ、初回スキャン時は公開ホストとして登録されます。
本パラメータはトリアージレベルの計算に使用されます。

useSudo パラメーターについて

一部のディストリビューションでホスト情報を取得する際に root 権限が必要な場合、useSudotrue を指定すると、sudo コマンドを使用してホスト情報を取得します。trueを指定する場合、no password で sudo コマンドを実行できる必要があります。
スキャンを実行するユーザーが root 権限なしでホスト情報を取得できる場合は、useSudofalse を指定すると sudo を使用せずにスキャンします。省略した場合はfalseとして扱います。
useSudo は以下のディストリビューションでのみ有効です。

  • Amazon Linux
  • CentOS
  • Oracle Linux
  • Red Hat Enterprise Linux

root 権限が必要な場合がある権限は以下の通りです。

  • rpm コマンドの実行権限
  • /etc/os-release の参照権限

wsusScanFilePath パラメーターについて

インターネット、または WSUS などの Windows Update サーバーに接続できない環境で Windows のホストスキャンを実施する場合に
Windows Update から提供されている cab ファイルを用いて未適用な更新プログラムを検出し脆弱性を検知できます。
wsusscn2.cab をスキャン対象の Windows ホスト上に配置し wsusScanFilePath パラメーターにスキャン対象の Windows ホスト上の wsusscn2.cab のフルパスを指定します。

wsusscn2.cab は Microsoft社が運営する windowsupdate.com から入手します。
Windows で wsusscn2.cab をダウンロードする場合以下を実行します。

curl.exe -sS -o C:\wsusscn2.cab http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab

また、cab ファイルを使用する場合、winUpdateType パラメーターには CAB を指定する必要があります。

cab ファイルを使用したスキャンについては、よくある質問「 インターネットに繋がらない環境のWindowsホストをリモートスキャンできますか?」も参照ください。

sshAgent

キー 必須 説明
useAgent 文字列 ssh-agent を使用するか否かを true または false で指定する。デフォルト false

credentials

SSH 接続

現在パスワード認証、公開鍵認証、ssh-agent の使用の 3 つのパターンをサポートしています。

パスワード認証の場合
キー 必須 説明
user 文字列 SSH 接続する際に使われるユーザ名
password 文字列 SSH 接続する際に使われるパスワード
公開鍵認証の場合
キー 必須 説明
user 文字列 SSH 接続する際に使われるユーザ名
key 文字列 SSH 接続する際に使われる秘密鍵のパス
keyPassphrase 文字列 SSH 接続する際に使われる秘密鍵のパスフレーズ
ssh-agent の使用の場合
キー 必須 説明
user 文字列 SSH 接続する際に使われるユーザ名

※ ssh-agent を利用する場合は、scan コマンドの実行前に、対応する秘密鍵を ssh-agent にあらかじめ登録しておく必要があります。

WinRM 接続

キー 必須 説明
user 文字列 WinRM 接続する際に使われるユーザ名 (省略時は Administrator)
password 文字列 WinRM 接続する際に使われるパスワード

設定ファイル例

token: "xxxxx"
proxy: "http://proxy.example.com:8080"
hosts:
  - title: "my-server"
    hostname: "192.168.0.111"
    identifier: "Change-to-unique-identifier-for-your-team!"
    port: 22
    credentials:
      user: "ubuntu"
      key: "path/to/ssh-key.pem"
      keyPassphrase: "ubuntupass1234"
    openSystem: true
    tags: "tag1"
  - title: "my-redhat-server"
    hostname: "192.168.0.222"
    identifier: "Change-to-unique-identifier-for-your-team!"
    port: 22
    credentials:
      user: "admin"
      password: "123456"
    openSystem: false
    tags: "tag1,tag2"
    useSudo: false
  - title: "my-new-server-via-ssh-agent"
    hostname: "192.168.0.233"
    identifier: "Change-to-unique-identifier-for-your-team!"
    port: 22
    distribution: "ubuntu"
    version: "20.04"
    sshAgent:
      useAgent: true
    credentials:
      user: "admin"
    openSystem: false
  - title: "windows-001"
    identifier: "Change-to-unique-identifier-for-your-team!"
    scanMode: "winrm"
    hostname: "192.168.0.244"
    port: 5985
    credentials:
      user: "Administrator"
      password: "xxxxx"
    winUpdateType: "WU"
  - title: "local-server"
    identifier: "Change-to-unique-identifier-for-your-team!"
    scanMode: "local"