背景
定期的に来るやつです。
さぁ、今年もやってきましょう。
思い出しておくべき注意点
- 構成はdocker、実行はvulsctlのラッパースクリプトで
- 結構容量使う
- かき集めてくる脆弱性のソース情報がすごいことになる。
- ディスクは大体 20GBくらい開けとく。
- update-all.shで10GB, report.shの初回のvuls.dbで4Gくらい持ってかれる。
- 展開中はもうちょっと膨れるから、20GBくらいは開けておかないとパンクするかも。
- しれっとDLに失敗してデータが欠けることがある。
- 赤字が出ないかと、report時に妙に検知数が少なくなってないかは確認が必要。
- メモリも結構使う
- 落としてきたデータをsqliteに流し込む時点ですごく使う。
- virtualbox上なら8GBはないと処理が終わらない。
- KVMだと4GBでも大丈夫なんですが、、virtualboxはどうにも。。
- URLフィルタは幅広で開ける
- httpも使うし、ftpも使うし、かなりあっちこっちのデータをかき集めてくる。
- CDNも登場するので、、開けるURLを特定するのは結構めんどい。
- スキャンモードはfast, offline
- fastのみだと、被監査対象上で、インタネット上のパッケージ情報確認させるコマンドを叩くときがある。
- 完全オフラインの環境でscanかけるとそこでエラーでコケる。
- 全部が全部ではなく。alpineベースのコンテナなどで発生。
- レポート作成時にその場でDLしてこようとするファイルがある
- vuls2。
- 去年は古いOSの場合のみ該当だったような記憶があるけど、、今試すとubuntu 24.04対象でも使用。
- 本番の前に、ダミーやvulsコンテナを走らせるマシン自体に対して一巡scanとreportを実行して、DLを終えておく必要があります。
- 設定のパスや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が必要にあるかもですが、、、まぁ該当があったら都度考えるということで。
まとめ
ということで、今回の思い出しでした。
ディスクとメモリの割当は毎回ど忘れしてハマるんですよね。。
今回こそは忘れない、、といいんだけどなぁ。