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
Sponsored Links

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画面がこちら。
今の段階では何もデータを登録していないのでグラフ等も真っ白だ。

 

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

 


Written by blacknon

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

Leave a Comment

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

*