0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vuls 2026春。

0
Posted at

背景

定期的に来るやつです。
さぁ、今年もやってきましょう。

思い出しておくべき注意点

  1. 構成はdocker、実行はvulsctlのラッパースクリプトで
  2. 結構容量使う
    • かき集めてくる脆弱性のソース情報がすごいことになる。
    • ディスクは大体 20GBくらい開けとく。
      • update-all.shで10GB, report.shの初回のvuls.dbで4Gくらい持ってかれる。
      • 展開中はもうちょっと膨れるから、20GBくらいは開けておかないとパンクするかも。
    • しれっとDLに失敗してデータが欠けることがある。
      • 赤字が出ないかと、report時に妙に検知数が少なくなってないかは確認が必要。
  3. メモリも結構使う
    • 落としてきたデータをsqliteに流し込む時点ですごく使う。
    • virtualbox上なら8GBはないと処理が終わらない。
      • KVMだと4GBでも大丈夫なんですが、、virtualboxはどうにも。。
  4. URLフィルタは幅広で開ける
    • httpも使うし、ftpも使うし、かなりあっちこっちのデータをかき集めてくる。
    • CDNも登場するので、、開けるURLを特定するのは結構めんどい。
  5. スキャンモードはfast, offline
    • fastのみだと、被監査対象上で、インタネット上のパッケージ情報確認させるコマンドを叩くときがある。
    • 完全オフラインの環境でscanかけるとそこでエラーでコケる。
    • 全部が全部ではなく。alpineベースのコンテナなどで発生。
  6. レポート作成時にその場でDLしてこようとするファイルがある
    • vuls2。
    • 去年は古いOSの場合のみ該当だったような記憶があるけど、、今試すとubuntu 24.04対象でも使用。
    • 本番の前に、ダミーやvulsコンテナを走らせるマシン自体に対して一巡scanとreportを実行して、DLを終えておく必要があります。
  7. 設定のパスやIPは「vulsコンテナから見た」値を書く
    • vulsコンテナを走らせているdockerを積んでいるマシン自体に対してscanをかける際に、"localhost"とかくとうまく行かない。
    • vulsコンテナから見たlocalhost(vulsコンテナ)に対してsshしようとしてしまう。
    • コンテナから疎通できるdockerホストマシンのIPなどを指定しないといけない。
    • DBファイルのパスを指定する際も、dockerホストのvulsctlディレクトリのパスを指定したくなるが、、NG。
    • scan.shを走らせた際のディレクトリがコンテナ上の/vuls/にマウントされるので、その前提でパスを書く。

...ディスクサイズとメモリサイズは毎回やらかします。
今回も数回失敗しながら思い出しました。。

走らせてみる

設定はこんなです。

$ cat ~/vulsctl/docker/config.toml

[vuls2]
SkipUpdate = false

[servers]

[servers.remotehost]
host               = "192.168.122.179" # コンテナからアクセスできるホストのIP。localhostはだめ。
user               = "user01"
port               = "22"
keyPath            = "/root/.ssh/id_ed25519"
scanMode           = ["fast", "offline"]

update-all.sh

着々と公開情報をDLして、sqlite3に展開。
1時間から2時間位かかります。
全部終わると、sqlite3ファイルがいくつか作られ、10GBくらい使用。

自分自身へのscan.sh

本格的にスキャンする前に必要ファイルを先にDLしきっておきたい。
ということで、自分自身向けにscanとreportを一巡通しておきます。

で、、また忘れてましたが、、、

  • 対象サーバに公開鍵sshできるようにしておく
  • 一回sshして、known_hostsに登録しておく

が必要、、と。

で、実行。
scanについては、途中で追加ファイルのDLとかすることはないので問題なく通ります。
modeでoffilineつけ忘れていると、対象によっては対象サーバがインタネット上の情報取りに行く動きがある時があります。

report.sh

最初の方で、vuls.dbを落としてきます。
4GBくらい。

update-all.shで落としてくる10GBとこいつで合わせて14GB。
コンテナイメージ自体やDL途中の一時ファイルもみて、20GBくらいの空きが必要、という感じですね。

設定のSkipUpdate = falseがないと、毎回DLしてしまってちと面倒になります。

で、本番のスキャンへ

scan.shとreport.shの頭で最新版のvulsコンテナを落としてくる処理が入ってます。
その状態でオフライン環境で実行しても、ちょっと待ちが出るだけでエラーで止まったりはしないんですが、、
まぁ一応コメントアウトしておきます。

これで、準備は完了。
ここから先はインタネット接続無しで動作する、、と思います。
微妙なOSやコンテナをスキャンするとその場で追加DLが必要にあるかもですが、、、まぁ該当があったら都度考えるということで。

まとめ

ということで、今回の思い出しでした。
ディスクとメモリの割当は毎回ど忘れしてハマるんですよね。。
今回こそは忘れない、、といいんだけどなぁ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?