Ubuntu14.04サーバーでNginxを使用してKeePass2パスワードファイルを提供する方法
序章
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.key
とnginx.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;
}