WordPress®は、特にブログやコーディングに不慣れな場合に、優れたコンテンツ管理システム(CMS)です。ただし、WordPressのインストール数が多いため、Wordpressは攻撃者の標的になっています。良いニュースは、WordPressのインストールをより安全にするために実行できる多くのステップがあることです。
Linuxユーザーと権限
WordPressを初めて使用するユーザーは、Permission Denied
が表示されたときに、権限を全開に設定する(777権限を設定する)のが一般的です。 WordPressからのエラー。この構成により、すべてのユーザー(最も重要なのはWebサーバープロセス)がWordPressインストールのファイルを変更できるようになります。これをロックダウンするには、サイトのファイル転送プロトコル(FTP)ユーザーとして、WordPressのインストールごとに1人のユーザーを作成することをお勧めします。この記事では、サイトが1つで、このサーバーにwp-user
という名前を付けることを前提としています。 。
次のコマンドを使用して、このユーザーを作成します。
sudo useradd wp-user -d /home/wp-user -m -s /bin/false
注 :Secure Shell(SSH)キー認証のみを使用することをお勧めします。 FTPにパスワード認証を使用する場合は、ユーザーの強力なパスワードを作成する必要があります。
Webサービスのシステムユーザー以外のユーザーを、サイトのドキュメントルートの所有者にする必要があります。また、Webサービスへの書き込み権限を拒否する必要があります。 Webサービスは、コンテンツを提供するために読み取り権限のみを必要とし、書き込みまたは実行権限をWebサービスに割り当てると、部外者に攻撃ベクトルが残ります。ただし、WordPressはファイルをアップロードして独自のコードを更新できる必要があるため、これらのルールを少し曲げる必要があります。
たとえば、ディレクトリ全体の所有権をwp-user:www-data
として設定する必要があります。 。
この設定は、wp-user
を意味します ユーザー所有権があり、www-data
(Apache®Webサーバーのシステムユーザー)はグループの所有権を持っています。オペレーティングシステムによっては、このユーザーの名前がhttpd
になる場合もあります。 またはapache
。 nginx®を使用している場合、ユーザーはnginx
です。 。権限を設定するには、次のコマンドを実行して、サンプル値/var/www/example.com/
を置き換えます。 サイトのドキュメントルートを使用:
sudo chown -R wp-user:www-data /var/www/example.com/
WordPressのインストールには、次の基本権限を使用してください。
- フォルダの場合は755(drwxr-xr-x)
- ファイルの場合は644(-rw-r–r–)
これらの権限は、wp-user
を付与します 何でも変更できる機能、およびWebサーバーの読み取り専用アクセス。
次の例は、これらの権限を割り当てる方法を示しています。
find /var/www/example.com/ -type d -exec sudo chmod 755 {} \;
find /var/www/example.com/ -type f -exec sudo chmod 644 {} \;
これらの権限は、wp-user
を付与します 何かを変更する機能、およびWebサーバーの読み取り専用アクセス。これは静的サイトでは一般的な方法ですが、WordPressが正しく機能するためにアクセスして実行できる必要があるファイルがいくつかあります。次のリストは、同じドキュメントルートを想定して、設定する必要のある例外と権限を示しています。
-
find /var/www/example.com/wp-content/uploads -type d -exec sudo chmod 775 {} \;
-
find /var/www/example.com/wp-content/upgrade -type d -exec sudo chmod 775 {} \;
-
find /var/www/example.com/wp-content/themes -type d -exec sudo chmod 775 {} \;
-
find /var/www/example.com/wp-content/plugins -type d -exec sudo chmod 775 {} \;
-
find /var/www/example.com/wp-content/uploads -type f -exec sudo chmod 664 {} \;
-
find /var/www/example.com/wp-content/upgrade -type f -exec sudo chmod 664 {} \;
-
find /var/www/example.com/wp-content/themes -type f -exec sudo chmod 664 {} \;
-
find /var/www/example.com/wp-content/plugins -type f -exec sudo chmod 664 {} \;
-
sudo chmod 775 /var/www/example.com/wp-config.php
WordPressはこれらのディレクトリを使用して、システムの更新、テーマとプラグインの更新、ブログの添付ファイルのアップロード(最も一般的には画像)を行います。
WordPress管理者ユーザー
Linux®rootユーザーと同様に、WordPressのインストールには管理者が付属しています ユーザー。これはほとんどすべてのWordPressインストールに存在する管理ユーザーであるため、ハッカーはブルートフォース攻撃の標的になります。この攻撃ベクトルを閉じる最も簡単な方法は、管理者ユーザーを削除することです。別の名前のユーザーを作成し、そのユーザーに管理者権限を付与してから、管理者ユーザーを削除することをお勧めします。
FTPは、特にパスワードベースの認証を使用している場合、本質的に安全ではありません。パスワードを使用する代わりに、SSHキーの更新を設定する方がはるかに安全です。 SSHキーの更新を設定するには、次の手順を使用します。
-
必要なパッケージがシステムにインストールされていることを確認してください。 Ubuntu®またはDebian®では、次のコマンドを実行します。
sudo apt-get update sudo apt-get install php5-dev libssh2-php libssh2-1-dev
-
SSHアクセスを設定し、
wp-user
として次の手順を実行します 。wp-user
としてのログインを許可しなかったため 、次のsudoコマンドを使用してシェルを開く必要があります:sudo -u wp-user /bin/bash
-
次のコマンドを使用して、
wp-user
に移動します ホームディレクトリとSSHキーの設定:cd ~ ssh-keygen -t rsa -b 4096 mkdir ~/.ssh; cd ~/.ssh echo 'from="127.0.0.1"' cat ~/.ssh/id_rsa.pub > authorized_keys exit
-
次に、次のコマンドを使用して、権限が正しく設定されていることを確認します。
sudo chmod 700 /home/wp-user/.ssh sudo chmod 040 /home/wp-user/.ssh/* sudo chmod 644 /home/wp-user/.ssh/authorized_keys
-
次の行を/var/www/example.com/wp-config.phpに追加します ファイル:
define('FTP_PUBKEY','/home/wp-user/id_rsa.pub'); define('FTP_PRIVKEY','/home/wp-user/id_rsa'); define('FTP_USER','wp-user'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22');
ログイン情報の入力を求められることなく、WordPress、プラグイン、テーマを更新できるはずです。
希望する結果を得るには、できるだけ少ないプラグインを使用することをお勧めします。ただし、セキュリティを強化するために、次のプラグインを使用することをお勧めします。
- WP Security Pro :これは、ログイン保護、マルウェアスキャナー、2要素認証、ファイアウォールなどの保護機能を備えたオールインワンプラグインです。
- XML-RPCを無効にする : .htaccess を使用して、XML-RPCをロックダウンできます。 ファイル。ただし、WordPressインストールのリモートコントロールが必要なやむを得ない理由がない限り、ピンバック攻撃を防ぐために無効にすることをお勧めします。
- Disqus :WordPressの組み込みユーザーコメントシステムはスパムを非常に受けやすいため、オープン登録を無効にすることをお勧めします。これを行うには、[設定]>[一般]に移動します 、次に誰でも登録できますのチェックを外します 。次に、Disqusを使用してコメントをモデレートし、ユーザーにFacebook®またはGoogle®アカウントに対して認証を依頼します。