[Linux][Security]vulsRepoのインストール・実行

前回、vulsを導入し、メール通知を行い、スケジュール実行するところまで仕込めたので、今度はグラフィカルに状態確認できるインタフェースを取り付けてみたの巻

vulsRepoとは?

vulsで出力されたレポートは、テキスト形式とJSON形式があります。この内JSON形式のファイルを読み込み、グラフィカルに情報を参照できるようにするツールです。全体感を把握したり、実際パッケージアップデートすることでの高価などを測定するのに役立つのかなって印象です。

vuls自体もCUIベースのインタフェースがあるんですが、どうしても「読む」と言う行為が発生するので、そういう意味で、vulsRepoはより視覚的にわかりやすく捉えるツールとしては良いんじゃないでしょうか。

Webで参照した情報だとApacheと連携するような記述があったりしたのですが、Readme見ると、どうやらHTTPデーモン丸含みでvulsRepoは作られてるようです。vuls自体もそうでしたが、だいぶここ最近で仕組みを変えているようなので、都度gitで更新状況を確認したほうが良さそうです。

前提

  • vulsRepoサーバはvulsサーバに同居する
  • vulsRepoはブラウザベースのツールなのだけど、参照は自宅内インフラに限定する
    • その為、アクセス先は内部に限定する
    • プロトコルはhttpとする
    • ポート番号等は、gitで拾ったソースコード内のREADME.mdの内容に従う

vulsRepoダウンロード

$ cd $HOME
$ git clone https://github.com/usiusi360/vulsrepo.git

設定ファイル作成

$ cd vulsrepo/server
$ cp vulsrepo-config.toml.sample vulsrepo-config.toml

設定ファイル編集

$ vi vulsrepo-config.toml

設定ファイルの内容

[Server]
rootPath = "/opt/vuls/vulsrepo"
resultsPath = "/opt/vuls/results"
serverPort = "5111"
----------
留意事項
・待受ポートは5111となる。
・resultsPathはvulsが結果出力するディレクトリを指定する。
 -実際resultsPathに入ってみて、各サーバの.jsonファイルが存在するかどうかを見てみると良い。

取り敢えず起動

$ /opt/vuls/vulsrepo/server/vulsrepo-server

上記コマンド実行により、vulsRepoサーバがフォアグラウンドで起動する。

http://<vulsサーバのFQDNもしくはIPアドレス>:5111

へブラウザでアクセスしてみて、以下のような画面が表示されれば取り敢えずは起動出来たといえる。

取り敢えず使ってみる

最初は何も出来ない状態なんだけど、スパナアイコンクリックして閉じると、「Please wait」って表示が出る。放っといても進展がないので、しばらく待ってブラウザをリロードする。(どうやら初回アクセスはこうしないとダメらしい・・・なんでやねん)

画面左上のアイコンをクリックすると、こんな表示が出てくる。赤枠/赤矢印の順に表示対象を選択し、「Submit」をクリックする。

すると、以下のようにHeatmapが表示される。このようにして、そのサーバがどれだけの脆弱性を抱えているかを方眼式に確認することが出来る。

また、プルダウンメニューから表示形式の変更も可能です。

Horizontal Bar Chartを選択し表示対象をsns-ap(Mastodon本番APサーバ)に絞ることで、アップデートすることにより脆弱性が減少したことの確認なんかが出来ました。こういうの、良いですねぇ。

サービス化

フォアグラウンドで動かすだけだと何かと辛いのでサービス化します。

# vi /etc/systemd/system/vulsrepo.service
----------
[Unit]
Description=vulsrepo
After=network.target

[Service]
Type=simple
User=vuls
WorkingDirectory=/opt/vuls/vulsrepo/server
ExecStart=/opt/vuls/vulsrepo/server/vulsrepo-server
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target
----------

# systemctl enable vulsrepo
# systemctl start vulsrepo

# systemctl status vulsrepo
---------以下結果出力
● vulsrepo.service - vulsrepo
  Loaded: loaded (/etc/systemd/system/vulsrepo.service; enabled; vendor preset: disabled)
  Active: active (running) since 日 2017-10-29 12:33:07 JST; 2h 42min ago
 Main PID: 18205 (vulsrepo-server)
  CGroup: /system.slice/vulsrepo.service
       |_ /opt/vuls/vulsrepo/server/vulsrepo-server
             :
             :
            以下略

考えられる発展形

取り敢えず出来たって感じですが、やっぱりグラフィカルな画面だとざっくりとみることが出来ていいですね。メール通知だとどうしても読まなければならないので辛いよなぁ・・・と感じたりで。しかもメール通知の場合サーバ毎でメールが異なるのが辛いなぁと。全体サマリー的なメールが飛ばせれば良いんですが・・・

後考えられる発展形としてはこんなのがあるのかなぁって感じです。

  • configファイル内、Authパラメータを設定し、認証を必要とする構成にする?(ちょっとよく分かってない)
  • リバースプロキシ、もしくはUTM等でSSLオフロード&ベーシック認証を搭載して外から見れるようにする

まだまだvuls自体発展途上な印象を受けるんですが、これ自体はすごく有益だと思ってます。WSUSのパッチ適用状況を把握する仕組みのLinux版って感じで。今後の自宅運用に乗せながら、チョイと勉強していこうかなと思います。セキュリティ周りはどうも苦手なんで・・・・Orz