OpenVAS on Ubuntu22.04 LTS

# はじめに
OpenVAS(現：Greenbone-Vulnerability-Manager)を使用する機会があり、忘れないうちにまとめます。  
※ 以降、OpenVAS 表記で進めます


# 前提
- ローカル環境で脆弱性検査を実施する
- 攻撃手法を問わず、幅広く脆弱性検査可能なツールを選定する
- お手軽なのが良い...(本音)

上記条件でGoogleさんに聞くと、概ね OpenVAS が要件を満たしていました。従い、今回は OpenVAS で脆弱性検査をしてみたいと思います。 


# 環境
- Windows10 with WLS2
- Docker on Ubuntu22.04 LTS

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/ddcb6a44-f8dc-7e90-b9f5-38f73de7cca2.png)
環境は上記の通りです。  


# 事前調査
まず初めに、OpenVAS をざっと理解するために[公式ドキュメント](https://www.greenbone.net/en/)を確認します。
はいっ？コミュニティエディション無くないですか？となりますが、GitHub あたりから[こちら](https://greenbone.github.io/docs/latest/22.4/container/index.html)に飛べるはずです！

インストール要件を確認すると、最新のLinuxディストリビューションが列挙されています。  
手元の環境を勘定して、Ubuntu22.04 を採用したいと思います。Ubuntu22.04 さえ用意できれば、後は yaml 食わせてコンテナ起動してドンっ！という感じです。

次に windows 上で Ubuntu22.04 環境の用意を考えます。本記事投稿時点では `wls --list --online` コマンドで Ubuntu22.04 LTS はリストされていません。

```shell:wls --list --online
> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl --install -d <Distro>' を使用してインストールします。

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS
```

Ubuntu-20.04 を Ubuntu22.04 に VerUP する方もいるようですが、`Microsoft Store` から Ubuntu22.04 LTS をダウンロードする方法が一番容易だと判明しました。

ここまでで環境が理解できましたので、早速手を動かしていきます。


# Let's get started!!
まずは `Microsoft Store` から Ubuntu22.04 LTS をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/a3fd5163-8ea7-a6c1-7469-83aee1dc6049.png)

初回起動時に新規ユーザ作成が必要になります。
```shell
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: user01
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This message is shown once a day. To disable it please create the
/home/user01/.hushlogin file.
$
```

※ 補足ですが、`Windows Terminal` なるものがあるので合わせてインストールしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/9c231761-1591-9d4b-78bf-dfbc47385ac1.png)

正しくインストールできたか確認します。

```shell:wsl --lsit
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
Ubuntu-22.04
```

問題無いようですので、別タブで Ubuntu22.04 を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/65a5aaff-011c-636b-41e8-efb81e9c3f45.png)

ここからは OpenVAS [公式ドキュメント](https://greenbone.github.io/docs/latest/22.4/container/index.html)通りに進めていきます...が、Docker インストール手順は別手順が必要なので注意が必要です。
実行コマンドを下記に列挙します。

```shell
$ sudo apt update
$ sudo apt install curl
$ sudo apt install docker.io
$ sudo apt install python3 python3-pip
$ sudo python3 -m pip install --user docker-compose
$ sudo usermod -aG docker $USER && su $USER
$ export DOWNLOAD_DIR=$HOME/greenbone-community-container && mkdir -p $DOWNLOAD_DIR
$ cd $DOWNLOAD_DIR && curl -f -L https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml -o docker-compose.yml
```

この次は `docker-compose` コマンドを打つ必要がありますが、docker-compose 未インストールかつdocker が起動しない状態です。従い、[WSL2のUbuntu 22.04でSystemdでDockerを起動させる](https://level69.net/archives/31296)の優良記事を基に docker を再インストールします。

```shell
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo apt purge needrestart
$ sudo /usr/libexec/wsl-systemd
$ sudo /usr/libexec/nslogin
$ ps ax | grep systemd
$ sudo systemctl start docker <--- docker 起動失敗
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
$ sudo update-alternatives --config iptables
$ sudo systemctl start docker
$ docker ps
```

ここまでで docker 起動確認はできました。OpenVAS 公式ドキュメント内の手順を消化していきます。

```shell
$ sudo apt install docker-compose
$ docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition pull
$ docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition up -d
$ docker-compose -f $DOWNLOAD_DIR/docker-compose.yml -p greenbone-community-edition logs -f
$ xdg-open "http://127.0.0.1:9392" 2>/dev/null >/dev/null &
```

ここまで来たらブラウザで `http://127.0.0.1:9392` にアクセスして admin/admin でログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/5f9c571f-7ae9-3c30-5d87-9db6ec946c38.png)



# まとめ
最初は手元のノートPC(メモリ8GB)で OpenVAS を動作させましたが、結構コンテナ起動するコンテナ数が多くて/スキャン実施時もシステムリソースを食うみたいで、最終的には検証環境をもう少し余裕のあるマシンに移行しました。  
スキャン単発で CPU ファンが頑張っていたので、恐らく複数スキャンは厳しそうです。。。  
  

# 参考文献
- [Greenbone Community Containers 22.4](https://greenbone.github.io/docs/latest/22.4/container/index.html)
- [WSL2のUbuntu 22.04でSystemdでDockerを起動させる](https://level69.net/archives/31296)
- [OpenVASで簡易的な脆弱性スキャン](https://www.secure-iv.co.jp/blog/587)