序章

KeePass2は、Webサイトやアプリケーションの強力なパスワードを安全かつ簡単に保存、管理、および生成できるようにするアプリケーションです。

以前のガイドでは、kpcliを使用してリモートサーバー上のKeePassデータベースファイルと対話する方法について説明しました。 このガイドでは、nginxを使用してデータベースファイルに安全にアクセスできるようにサーバーを設定します。

次に、KeePass2のローカルインストールでこのリモートデータベースファイルに接続して使用する方法を示します。 これにより、どのデバイスからでもデータベースにアクセスできるようにしながら、パスワードを安全な場所に保持できます。

Nginxをインストールします

このチュートリアルの前提条件として、前のガイドを完了し、リモートサーバーにKeePass2データベースファイルがあることを前提としています。

次に、ファイルへの安全なアクセスを提供するようにWebサーバーを構成する必要があります。 このガイドではnginxを使用します。

次のように入力して、Webサーバーをインストールします。

sudo apt-get update
sudo apt-get install nginx

これにより、Webサーバーがダウンロードおよびインストールされます。

SSL証明書を作成する

SSLを使用してサーバーとの通信を保護します。 これにより、転送中にデータが暗号化され、外部の第三者がパスワード情報を読み取ることができなくなります。

まず、SSLファイルの保存に使用できるnginx構成階層の下にディレクトリを作成します。

sudo mkdir /etc/nginx/ssl

これで、次のように入力して自己署名SSL証明書を生成できます。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

これにより、サイトに関する一連の質問が表示されます。 できるだけよく答えてください。 最も重要な質問は、Common Name (e.g. server FQDN or YOUR name)と書かれている質問です。 これは、サーバーのドメイン名またはIPアドレスを要求しています。

完了すると、/etc/nginx/sslディレクトリにnginx.keynginx.crtという2つのファイルが作成されます。

パスワードファイルを作成する

これで、サーバーへの通信を暗号化するためのSSL証明書ができました。

ただし、サーバーに対して自分自身を認証するためのメカニズムも実装する必要があります。 パスワードデータベースへのアクセスを誰にも許可したくありません。

これを行う最も簡単な方法は、実際にはapache2-utilsと呼ばれるツールのセットをインストールすることです。 リポジトリからパッケージを取得できます。

sudo apt-get install apache2-utils

これにより、htpasswdツールがインストールされます。このツールを使用して、Webサーバーが読み取って理解できる安全なパスワードファイルを作成できます。

作成するファイルの場所とユーザーアカウントを指定することで、パスワードファイルを生成できます。

 sudo htpasswd -c / etc / nginx / htpasswd demo_user
 新しいパスワード:新しいパスワードを再入力します: demo_userのパスワードを追加します

これにより、/etc/nginxディレクトリにhtpasswdというファイルが作成され、demo_userというユーザーのエントリが作成されます。 ユーザーアカウントは何でも構いません。 システムアカウントとして存在するユーザーである必要はありません。

Webディレクトリを作成する

password_database.kdbxというファイルを提供します。 このファイルはホームディレクトリにあると想定します。

Webサーバーがファイルに正しくアクセスし、コンテンツの読み取りと書き込みができるようにするには、ファイルを保存するための適切なWebディレクトリを作成する必要があります。 (通常のユーザーとしての)ホームディレクトリに、パスワードデータベース用の新しいディレクトリを作成します。

mkdir ~/secure_html

次に、データベースファイルをそのディレクトリに移動します。

mv ~/password_database.kdbx ~/secure_html

次に、nginxがディレクトリの所有権の下で動作するユーザーとグループを指定する必要があります。

sudo chown www-data:www-data ~/secure_html

また、このディレクトリの下に作成されるすべての追加ファイルにWebユーザーがアクセスできるようにします。 これを行うには、ディレクトリのsetgiudビットを設定します。

sudo chmod 2770 ~/secure_html

次に、システムユーザーをwww-dataグループに追加して、保護したばかりのディレクトリにアクセスできるようにする必要があります。

sudo usermod -aG www-data demo_user

:この時点で、システムが新しいグループメンバーシップを認識するように、ログアウトしてから再度ログインする必要があります。

また、このディレクトリにすでに存在するすべてのものについて、Webサーバーにグループの所有権を与える必要があります。

sudo chown :www-data ~/secure_html/*

これで、ディレクトリとファイルが正しく構成されているはずです。

  • Webサーバーは、ディレクトリのユーザーおよびグループ所有者です。
  • Webサーバーは、すべてのファイルのグループ所有者です。
  • Webサーバーには、ディレクトリに作成された新しいファイルのグループ所有権が与えられます。

これで、このディレクトリを提供するようにnginx構成を設定できます。

Nginxサーバーブロックを構成する

これで、Nginx構成を作成する準備が整いました。

デフォルトのサーバーブロックファイルを変更します。 root権限でテキストエディタで開きます。

sudo nano /etc/nginx/sites-available/default

内部に、2つのサーバーブロックを作成します。 他のコンテンツを削除したり、コメントアウトしたりできます。

データ転送にはSSLが絶対に必要なので、最初のブロックはnginxに通常のHTTPトラフィックをHTTPSにリダイレクトするように指示します。 次のようになります。

サーバー{リッスン80default_server; リッスン[::]:80 default_server ipv6only = on;

access_log off;
return 302 https://$http_host$request_uri;

}