Ubuntu Server 16.04へペネトレーションテストのデータ管理システム『Kvasir』をインストールする

調べものをしてたところ、ペネトレーションテストのデータを管理するためのシステム『Kvasir』というものを見かけた。 確かにペネトレーションテストの実行データをファイルサーバなどで管理しているといろいろと面倒だし、ちゃんと連携できるかといわれると難しいかもしれない。 こういったツールで管理するのもよさそうだ。 NessusやNmapのデータも管理できるようなので、とりあえずUbuntu Server 16.04 LTSにインストールして触ってみることにする。

前提条件として、以下が挙げられている。

  • web2pyの最新版が動作していること
  • データベースとしてのPostgreSQL
  • nmapやNessusなどの脆弱性診断ツールの別途用意

どうやら、Kvasirはweb2pyで動作するように書かれているようだ。 ドキュメントは一通りそろっているようなので、インストールについてはこちらの情報を参考にすすめていく。

1. 前提パッケージのインストール・設定

1-1. aptでの前提パッケージのインストール

まずは前提となるパッケージ類のインストールから。 以下のコマンドでインストールを行う。

sudo apt install -y python-pip git-core python-lxml python-tornado python-beautifulsoup python-dev python-yaml postgresql python-psycopg2
pip install msgpack-python

1-2.Web2pyのインストール

次にWeb2pyのインストールを行う。 とりあえず/opt配下に設置する。

cd /opt
sudo git clone https://github.com/web2py/web2py.git web2py
cd web2py
sudo git submodule update --init --recursive
cd

1-3. PostgreSQLの設定

次にPostgreSQLの設定を行う。 まず、初期状態でKvasirで利用するためのDBユーザ・DB作成を行う。

sudo -u postgres createuser -SleEPRD kvasir
sudo -u postgres createdb kvasir -O kvasir
blacknon@BS-PUB-UBUNTU-01:/opt$ sudo -u postgres createuser -SleEPRD kvasir
[sudo] blacknon のパスワード:
Enter password for new role:
Enter it again:
CREATE ROLE kvasir ENCRYPTED PASSWORD 'md5e44811d331da4ed1bc3eaabf836eb313' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
blacknon@BS-PUB-UBUNTU-01:/opt$ sudo -u postgres createdb kvasir -O kvasir
blacknon@BS-PUB-UBUNTU-01:/opt$

次に以下のコマンドで「pg_hba.conf」の設定値を変更し、すべてのMETHODをmd5にする。

sudo sed -i '/^#/!s/peer/md5/g' /etc/postgresql/*/main/pg_hba.conf

さらにポートを6543に変更しサービスを再起動する。

sudo sed -e '/^port/s/5432/6543/g' \
         -i /etc/postgresql/*/main/postgresql.conf
sudo systemctl restart postgresql

1-4.SSL証明書の作成(オレオレ証明書)

次に、Web2py・PostgreSQLで利用するためのSSL証明書(オレオレ証明書)の作成をする。

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr
sudo openssl x509 -req -days 1095 -in server.csr -signkey server.key -out server.crt
blacknon@BS-PUB-UBUNTU-01:/opt$ sudo openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
.........................+++
.....+++
e is 65537 (0x10001)
blacknon@BS-PUB-UBUNTU-01:/opt$ sudo openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
blacknon@BS-PUB-UBUNTU-01:/opt$ sudo openssl x509 -req -days 1095 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd
Getting Private key

作成した証明書・鍵ファイルを所定の位置に移動する。

sudo mv server.key /etc/ssl/private/server.key
sudo mv server.crt /etc/ssl/certs/server.crt
sudo mv server.csr /etc/ssl/server.csr

最後に、所有グループを「ssl-cert」にしてやる。

sudo chgrp ssl-cert /etc/ssl/private/server.key
sudo chgrp ssl-cert /etc/ssl/certs/server.crt
sudo chgrp ssl-cert /etc/ssl/server.csr

1-5.Web2pyを起動する

今時点でWeb2pyを起動してアクセスできることを確認する。 まず最初に、起動用のユーザとして「kvasir」ユーザを作成し、サブグループとして「ssl-cert」を追加してWeb2pyの各種ファイルへの権限を付与する。

sudo useradd kvasir
sudo usermod -aG ssl-cert kvasir
sudo chown -R kvasir. /opt/web2py

次に、実際にWeb2pyを起動してみる。

cd /opt/web2py
sudo -u kvasir python web2py.py -c /etc/ssl/certs/server.crt -k /etc/ssl/private/server.key -p 8443 -i 0.0.0.0 --minthreads=40 -a Password(最後に使用したパスワードを使うなら「<recycle>」)

ブラウザから「https://サーバのIPアドレス:8443」へアクセスし、Web2pyのページが表示されればOK。

2. Kvasirのインストール

2-1. Kvasirのソースのダウンロード・配置

前提となる設定が一通り終わったら、Kvasirのソースを取得する。

cd /opt
sudo git clone https://github.com/KvasirSecurity/Kvasir.git Kvasir
sudo chown -R kvasir. Kvasir/
sudo ln -s /opt/Kvasir /opt/web2py/applications/kvasir

2-2.Kvasirの設定ファイル配置・編集

次に、設定ファイルの配置を行う。 まず、以下のコマンドでサンプルファイルをコピーしてやる。

sudo -u kvasir cp /opt/Kvasir/kvasir.yaml{.sample,}

設定ファイルを配置したら、各種情報を編集する。 DBへの接続情報について、環境に合わせて編集する。

/opt/Kvasir/kvasir.yaml
db: migrate: True # if multiple web2py instances are used with 1 database, only 1 u ser needs True fake_migrate: False # only True if absolutely necessary lazy_tables: false # set this to True after setup is complete for faster db access kvasir: # any web2py supported URI connection string is acceptable - additional libraries may b e required # see http://web2py.com/books/default/chapter/29/06#Connection-strings uri: postgres://kvuser:kvpass@localhost:5432/kvasir pool_size: 10 msf: # direct msf db support is not currently supported - future support planned uri: postgres://msfuser:msfpass@localhost:5432/msf pool_size: 10

Kvasirでは「database」ディレクトリが必要になるのだが、これは自動的に作成されない。 このため、以下のコマンドで手動作成する。また、ユーザテーブルについても同様なので手動作成をする。

sudo -u kvasir mkdir /opt/Kvasir/databases

ここまでできたら、Web2pyを起動させてブラウザから「https://サーバのIPアドレス:8443/kvasir」にアクセスしてみよう。 以下のようなログイン画面が表示されるはずだ。

なお、実際に運用に乗せる場合であれば、wikiにもあるようにパスワード等の情報を暗号化するための「security_key」の設定を変更する方がいいだろう。

3.Webコンソールへログインする

さて、Webログイン画面まで表示できたら、ユーザを追加してログインできるようにしよう。
ブラウザから「https://サーバのIPアドレス:8443/kvasir/appadmin/insert/db/auth_user」にアクセスすることで、ユーザの作成画面に移行できる。

とりあえず、以下についてだけ入力しておいてやればいいだろう。

  • First name:
  • Last name:
  • E-mail:
  • Username:
  • Password:
  • Host Detail Page:
  • Table Show Start:
  • First Tab on Host Detail:
  • Enable TableTools:
  • Default Background Tasks:

「Registration key」については、入力するといろいろ面倒そうなので今回は未入力。
無事ユーザの作成ができたら、Loginページからログインする。ログイン後、新しいユーザの作成画面が表示されるので、まだユーザを作成する場合はここで作ってしまうといいだろう。
特にユーザの作成が不要であれば、「profile」などから別画面に移動する。

Home画面がこちら。 今の段階では何もデータを登録していないのでグラフ等も真っ白だ。

ひとまず、これでインストールは完了した。 次回以降に脆弱性情報の登録等を行ってみる。