ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


WordPressは、今日インターネットで使用されている最も人気のあるCMS(コンテンツ管理システム)です。 パワフルでシンプルなため多くの人が使用していますが、セキュリティを犠牲にして利便性とトレードオフを行う場合もあります。

これは、ディレクトリの所有権とアクセス許可を割り当てる方法、およびアップグレードの実行方法を選択する場合に当てはまります。 これを行うには、さまざまな方法があります。 テーマとプラグインをアップグレードおよびインストールするための比較的安全な方法と考えるものを選択します。

このガイドでは、サーバーの初期設定を完了していることを前提としています。 また、VPSLAMPスタックをインストールする必要があります。

また、Ubuntu12.04にWordPressがインストールされていることを前提としています。 Ubuntu12.04にWordPressをインストールする方法に関するガイドはこちらからご覧いただけます。

ユーザーと必要なソフトウェアを入手したら、このガイドのフォローを開始できます。

SSHを使用した安全な更新の設定


キーベースの更新とインストールが構成されていない場合、これらのタスクのいずれかを実行しようとすると、接続情報の入力を求めるプロンプトが表示されます。

ホスト名、FTPユーザー名、FTPパスワードなどのFTPクレデンシャルを提供するように求められます。

WordPress ftp credentials

FTPは本質的に安全でないプロトコルであるため、ほとんどの場合、FTPを使用することはお勧めしません。 安全な代替手段を使用するようにインストールを構成します。

権限の変更


上記のWordPressのインストールに関するガイドに従った場合、ApacheWebユーザーにWebディレクトリの許可を与えたことに気付くでしょう。 これは開始するのに非常に迅速な方法ですが、セキュリティ上のリスクになる可能性があります。 理想的な状況では、コンテンツ所有者をWebプロセスから分離します。 これは、SSH更新を許可するための準備の一環として行います。

wp-userというユーザーを作成して、WordPressのインストールを所有します。

sudo adduser wp-user

設定したいパスワードなど、たくさんの質問があります。 パスワードを設定したくないので、パスワードに関する質問の繰り返しを含め、すべてのプロンプトで「ENTER」を押します。

次に、WordPressファイルが提供されている/var/www/htmlディレクトリに移動します。

cd /var/www/html

インストール時に構成したwww-dataApache Webユーザーから変更して、このディレクトリの下にあるすべての新しいユーザー所有権を付与します。

sudo chown -R wp-user:wp-user /var/www/html

WordPress用のSSHキーを作成する


次に、WordPressユーザー用のSSHキーペアを作成する必要があります。 次のコマンドを発行して、WordPressユーザーにログインします。

sudo su - wp-user

ssh-keygenコマンドでキーペアを作成します。

ssh-keygen -t rsa -b 4096

キーをどこに保存し、何と呼ぶかを尋ねられます。 /home/wp-user/wp_rsaを選択します。 また、パスフレーズを選択するように求められます。 プロンプトで「ENTER」を押して、パスワード認証なしでキーを作成します。

通常のユーザーアカウントに戻ります。

exit

アクセス許可を安全にするために、いくつかのメンテナンスを行う必要があります。 WordPressユーザーに所有権を与えたいのですが、www-dataグループをグループ所有者として設定します。 次に、他のアクセスをロックダウンします。

sudo chown wp-user:www-data /home/wp-user/wp_rsa*
sudo chmod 0640 /home/wp-user/wp_rsa*

~/.sshディレクトリを作成し、Webプロセスがログインできるように、適切なアクセス許可と所有権を与える必要があります。

sudo mkdir /home/wp-user/.ssh
sudo chown wp-user:wp-user /home/wp-user/.ssh/
sudo chmod 0700 /home/wp-user/.ssh/

これで、公開鍵を許可された鍵ファイルに入力して、ユーザーがそれらの資格情報を使用してログインできるようになります。 このファイルはまだないので、公開鍵をコピーするだけです。

sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys

繰り返しになりますが、これらのファイルのアクセス許可と所有権を調整して、安全性を維持しながらアクセスできるようにする必要があります。

sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys
sudo chmod 0644 /home/wp-user/.ssh/authorized_keys

これらのキーは、同じコンピューター上にあるWordPressサイト内からのログインにのみ使用されるため、このサーバーへのログインを制限できます。

sudo nano /home/wp-user/.ssh/authorized_keys

ファイルの最初で、他のテキストの前に、赤で部分を追加して、キーの使用をローカルコンピューターに制限します。

from =“ 127.0.0.1” ssh-rsa…

ファイルを保存して閉じます。

キーを使用するようにWordPressの構成を調整する


これで、WordPressがSSHログインを認証するために必要なパッケージをインストールできます。

sudo apt-get update
sudo apt-get install php5-dev libssh2-1-dev libssh2-php

ユーティリティが用意できたので、構成ファイルを編集して、構成した値を設定できます。

sudo nano /var/www/html/wp-config.php

ファイルの終わりに向かって、次の行を追加します。

define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');

ファイルを保存して閉じます。

ここで、新しい更新手順を利用するためにApacheを再起動する必要があります。

sudo service apache2 restart

結果をテストする


これで、構成が正しいかどうかをテストできます。 次のURLのブラウザでサイトにアクセスして、管理者としてWordPressサイトにログインします。

your_domain.com / wp-admin

新しいテーマをインストールすることで、設定が正しく構成されていることを確認できます。 「外観」、「テーマ」の順にクリックします。

WordPress Themes

上部にある[テーマのインストール]をクリックします。

WordPress install themes

テーマを検索するか、「注目の」テーマをクリックします。 「インストール」をクリックして、テーマをサイトにインストールします。 指定したキーファイルを使用して、パッケージに正常にログイン、ダウンロード、およびインストールする必要があります。

WordPress theme success

「アクティブ化」をクリックして新しいテーマに切り替え、「サイトにアクセス」をクリックして結果を確認できます。

一般的な問題


SSHキーを正しく設定しなかった場合に発生する可能性のある問題がいくつかあります。

Webインターフェイスを介して変更をプッシュしようとしたときに表示される可能性のある一般的なエラーの1つは次のとおりです。

ユーザーの公開鍵と秘密鍵が正しくありません

このエラーはイライラするほど具体的ではありません。 これはさまざまな理由で発生する可能性があり、その一部は次のとおりです。

  • 公開鍵、秘密鍵、およびそれらを含むディレクトリに対する不適切なアクセス許可。

    Webプロセスはこれらの各ファイルを読み取ることができる必要があるため、Webサーバーグループが所有者である場合、各ファイルには少なくとも640のアクセス許可が必要です。

    一方、~.sshディレクトリは、ログインするユーザーだけがアクセスできる必要があります。 これは、この例ではwp-userユーザーを意味します。 ディレクトリの内容は、このユーザーが同様に所有し、他のユーザーが書き込みできないようにする必要があります。

  • 不適切なファイルの所有権。 これらの同じキーは、正しい関係者が所有している必要があります。 所有者とグループ所有者の間では、これは多くの場合、ログインしているユーザーとWebプロセスユーザーの混合です。

    この例では、wp-userが秘密鍵と公開鍵の両方を所有し、www-dataグループがグループ所有者です。 これにより、サーバーがファイルを読み取れるようにしながら、それらを正しいユーザーに関連付けることができます。

  • 不適切なファイル形式。 公開鍵または秘密鍵にフォーマットの問題がある場合、WordPressは鍵を拒否し、使用を拒否します。 ~/.ssh/authorized_keysファイルについても同じことが言えます。

    authorized_keysファイルに追加した部分from="127.0.0.1" ...は、公開鍵に存在してはなりません。 SSHはそれを有効なファイルと見なしますが、WordPressは、SSHデーモンに試行を送信する前に、無効であると拒否します。

テーマとプラグインを更新またはインストールするプロセス中のもう1つの一般的なエラーは次のとおりです。

Could not create directory...

これは通常、Webディレクトリの所有権が正しくない場合の問題です。 wp-userアカウントでファイルを更新する場合は、アップロードディレクトリもこのユーザーが所有し、アクセスできる必要があります。

これは、/var/www/htmlディレクトリ内のファイルとフォルダをwp-userアカウントに渡す必要があることを意味します。 上記の手順を実行しても問題が解決しない場合は、-Rオプションをchownコマンドに渡したことを確認してください。

確認すべきもう1つの点は、アップロードディレクトリにWordPressユーザーの書き込み権限があることです。 ドキュメントルートに変更します。

cd /var/www/html

このフォルダー内のファイルのアクセス許可を確認すると、所有者(最初の列)の書き込みアクセス許可が表示されますが、2番目または3番目の列の書き込みアクセス許可は表示されません。

ls -l

total 180
-rw-r--r--  1 wp-user wp-user   177 Nov 18 15:21 index.html
-rw-r--r--  1 wp-user wp-user   418 Sep 24 20:18 index.php
-rw-r--r--  1 wp-user wp-user    20 Nov 18 15:24 info.php
-rw-r--r--  1 wp-user wp-user 19929 Jan 18  2013 license.txt
-rw-r--r--  1 wp-user wp-user  7128 Oct 23 16:08 readme.html
-rw-r--r--  1 wp-user wp-user  4892 Oct  4 10:12 wp-activate.php
drwxr-xr-x  9 wp-user wp-user  4096 Oct 29 16:08 wp-admin/
-rw-r--r--  1 wp-user wp-user   271 Jan  8  2012 wp-blog-header.php
-rw-r--r--  1 wp-user wp-user  4795 Sep  5 21:38 wp-comments-post.php
-rw-r--r--  1 wp-user wp-user  3350 Nov 19 12:23 wp-config.php
-rw-r--r--  1 wp-user wp-user  3177 Nov  1  2010 wp-config-sample.php
drwxr-xr-x  5 wp-user wp-user  4096 Nov 19 12:25 wp-content/
. . .

ご覧のとおり、-rw-r--r--を読み取るファイルのアクセス許可と、drwxr-xr-xを読み取るディレクトリのアクセス許可は、ファイルとディレクトリを所有するwp-userが書き込み権限などを持っていることを示しています。しない。

テーマやプラグインなどを含むwp-contentディレクトリ内の同様のチェックにより、これらのディレクトリがwp-userユーザーによって所有され、書き込み可能であるかどうかがわかります。

cd /var/www/html/wp-content
ls -l

total 16
-rw-r--r-- 1 wp-user wp-user   28 Jan  8  2012 index.php
drwxr-xr-x 3 wp-user wp-user 4096 Oct 29 16:08 plugins
drwxr-xr-x 6 wp-user wp-user 4096 Nov 19 13:10 themes
drwxr-xr-x 2 wp-user wp-user 4096 Nov 19 13:10 upgrade

これらのディレクトリは正しく構成されています。

結論


WordPressは便利で、比較的簡単に構成および管理できますが、セキュリティがサイトの主な関心事であってはならないという意味ではありません。

インストールの更新と同じくらい簡単なことは、セキュリティリリースの直後に実行する必要がありますが、簡単である必要があります。 また、安全でないプロトコルを使用したり、安全でないディレクトリのアクセス許可を設定したりすることを強制する手順であってはなりません。

更新手順と正しいディレクトリ権限を確保することは、かなり大きなセキュリティ上の懸念を防ぐことができる1つの簡単なタスクです。

ジャスティン・エリングウッド