Rundeck(というか、sshコマンド経由)でVulsコマンドからスキャンを実行する際の注意点
Pocket

先日、RundeckでVulsをインストールしているリモートサーバからvulsを実行するジョブを作成したところ、scan開始時点で処理が止まってしまい、そのまま10分以上たっても何も進まないことがあった。
Rundeckではリモートサーバに対して、sshコマンドから以下のように処理をしているようだ。

ssh user@server 'コマンド'

 

で、コンソールから同じようにコマンドを実行したのだが、やはり以下のような出力で処理が止まってしまった。

[user@server ~]# ssh vuls@vuls '/home/vuls/go/bin/vuls scan -debug -lang=ja -report-text -cve-dictionary-dbpath=/path/to/cve.sqlite3 -config=/path/to/config.toml -results-dir=/path/to/results'
vuls@vuls's password:
time="2016-12-02T15:40:03+09:00" level=info msg="Start scanning"
time="2016-12-02T15:40:03+09:00" level=info msg="config: /path/to/config.toml"
time="2016-12-02T15:40:03+09:00" level=info msg="cve-dictionary: /path/to/cve.sqlite3"
Sponsored Links

Vulsは国内で作られたOSSということで、Slackのコミュニティも日本語だったのでお伺いしたところ、どうやらパイプなどから標準出力でサーバ名を渡す処理があるらしく、そこで止まっているようだとのこと。引数でサーバ名(スペース区切りで複数指定可)を渡すことで回避可能のようなので、以下のようにコマンドを実行して回避することにした。

ssh vuls@vuls '/home/vuls/go/bin/vuls scan -debug -lang=ja -report-text -cve-dictionary-dbpath=/path/to/cve.sqlite3 -config=/path/to/config.toml -results-dir=/path/to/results $(awk -F[].[] "/\[servers\./{printf \$3 \" \"}" /path/to/config.toml)'

 

awkでコンフィグファイルから「[servers.サーバ名]」のサーバ名だけを抽出してスペース区切りで出力させてる感じ。
修正が入るかどうかはわからないけど、ひとまずこれで回避可能なので、RundeckでリモートサーバにVulsを実行させる場合は参考にしてもらえるといいだろう。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*