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アドレスを要求しています。
終了すると、2つのファイルが呼び出されます nginx.key
と nginx.crt
あなたの中で /etc/nginx/ssl
ディレクトリ。
パスワードファイルを作成する
これで、サーバーへの通信を暗号化するためのSSL証明書ができました。
ただし、サーバーに対して自分自身を認証するためのメカニズムも実装する必要があります。 パスワードデータベースへのアクセスを誰にも許可したくありません。
これを行う最も簡単な方法は、実際には次のようなツールのセットをインストールすることです。 apache2-utils
. リポジトリからパッケージを取得できます。
sudo apt-get install apache2-utils
これにより、 htpasswd
ツール。Webサーバーが読み取って理解できる安全なパスワードファイルを作成するために使用できます。
作成するファイルの場所とユーザーアカウントを指定することで、パスワードファイルを生成できます。
sudo htpasswd -c / etc / nginx / htpasswd demo_user
新しいパスワード:新しいパスワードを再入力します: demo_userのパスワードを追加します
これにより、というファイルが作成されます htpasswd
の中に /etc/nginx
ディレクトリ、と呼ばれるユーザーのエントリ 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構成を作成する準備が整いました。
デフォルトのサーバーブロックファイルを変更します。 ルート権限でテキストエディタで開きます。
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;
}
これは、ポート80で着信する通常のリクエストに対して、リクエストを完全にポート443に直接送信して、SSLでラップすることをサーバーに通知します。
このブロックの下で、SSLトラフィックのルールを指定します。 SSL部分には、次のようなサーバーブロックを追加します。
サーバー{リッスン443; リッスン[::]:443 ipv6only = on ssl; server_name your_domain.com ;access_log /var/log/nginx/access.log; root /home/<span class="highlight">demo_user</span>/secure_html; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; location / { auth_basic "Restricted"; auth_basic_user_file "/etc/nginx/htpasswd"; dav_methods PUT DELETE MOVE COPY; dav_access group:rw all:r; }
}
この最初の部分は、ブロックをSSLサーバーとして設定します。 ログの場所の設定、サーバー名の設定、作成したディレクトリへのドキュメントルートの設定、作成したSSL証明書とキーの指定などの標準的な処理を実行します。
この下のロケーションブロックは、ディレクトリへのアクセスを制限するために作成したパスワードファイルを使用します。 最後に、KeePass2アプリケーションがデータを読み取り、変更し、サーバーに保存できるようにするWebDAVメソッドをいくつか設定します。
終了したら、ファイルを保存して閉じます。
これで、nginxを再起動して、新しい構成を実装できます。
sudo service nginx restart
これで、クライアント側アプリケーションを構成する準備が整いました。
ローカルコンピュータにKeePass2をダウンロードしてインストールします
まだ行っていない場合は、KeePass2プログラムをダウンロードしてローカルコンピューターにインストールする必要があります。 これにより、リモートデータベースファイルを操作できるようになります。
ローカルコンピューターでLinuxを実行している場合は、ディストリビューションのリポジトリにKeePass2パッケージがある可能性があります。 たとえば、Ubuntuでは次のように入力できます。
sudo apt-get update sudo apt-get install keepass2
これにより、KeePass2アプリケーションがローカルのUbuntuマシンにインストールされます。
ローカルコンピュータでWindowsまたはOSXを使用している場合は、 Keepass Webサイトにアクセスして、KeePass2アプリケーションの最新リリースを入手できます。 左側のナビゲーションバーにある[ダウンロード]リンクをクリックします。
ローカルマシンでWindowsを使用している場合は、右上隅にある「ProfessionalEdition」および「Installer」というラベルの付いたダウンロードリンクが探しています。
OS Xを使用している場合は、「寄稿/非公式のKeePassパッケージ」セクションまでスクロールダウンできます。 あなたがつかむことができるOSXのためのパッケージがあります:
アプリケーションを起動して実行するには、いくつかの追加の手順を実行する必要がある場合があります。 オペレーティングシステムの指示に従ってください。
リモートパスワードデータベースファイルに接続します
KeePass2アプリケーションがインストールされたので、アプリケーションを起動します。
自己署名SSL証明書を許可するようにKeePass2に指示します
最初に行う必要があるのは、検証できないSSL証明書を受け入れるようにアプリケーションに指示することです。 SSL証明書は自己署名されているため、システムの信頼できる認証局のリストにある認証局によって署名されていません。
設定を変更することで、これで問題がないことをKeePassに伝えることができます。
クリック
Tools
、次に選択しますOptions
. [詳細設定]タブをクリックします。 [ファイルの入出力接続]設定で、[無効なSSL証明書(自己署名、期限切れなど)を受け入れる]というオプションをオンにします。「OK」をクリックして変更を実装します。
リモートファイルに接続する
これで、ファイルに接続する準備が整いました。
クリック
File > Open > Open URL
メニューから:URLと認証情報を入力するように求めるダイアログボックスが表示されます。
次の形式でURLを入力します。
https:// your_domain.com /password_database.kdbx
データベースファイルに別の名前を付けた場合は、必要に応じて調整してください。 ユーザー名とパスワードには、選択したアカウントの詳細を入力します。
htpasswd
nginxディレクトリの場所を保護するコマンド。接続すると、データベースファイルのマスターパスワードの入力を求められます。 これは、データベースファイルを保護するために選択したパスワードです。
終了したら、パスワードデータベースをKeePass2インスタンスで開く必要があります。
これで、ローカルマシンのデータベースのパスワードとクレデンシャルを変更して使用できます。 変更をファイルに書き戻すことができ、それらはリモートサーバーに保存されます。
結論
これで、データベースファイルにアクセスするためのかなり良い方法が得られるはずです。 リモートデータベースファイルを使用すると、パスワードデータベースをデバイス間で同期させるのに役立ちます。
サーバーの問題やファイルの破損が発生した場合にログイン資格情報が失われないように、ファイルをいくつかの安全な場所にバックアップすることが絶対に必要です。 自動ミラーリングを処理するには、lsyncやBitTorrentSyncなどの自動同期システムを実装することをお勧めします。
また、データベースファイルが破損し、変更が他の場所に同期された場合に備えて、以前のバージョンのファイルを保存する別のバックアップメカニズムを実装することも検討する必要があります。