以前、WordPressをインストールしたらまず行うセキュリティ対策 という記事を書きました。
今回は、WordPressを構成するファイル及びディレクトリの推奨するパーミッション設定について解説したいと思います。
目次
パーミッション(アクセス権)とは
まず初めにパーミッションについて簡単に説明します。
パーミッションとはファイルやディレクトリを開いたり編集したりするときの権限設定のことです。
Linuxで作成されるファイルやディレクトリにはパーミッションが設定されます。これでユーザごとにファイルへのアクセスの許可または禁止を設定できます。
アクセス権には、以下の3種類があります。
【 ファイルへのアクセス権限 】
アクセス権 | 英字 | 数字 | 説明 |
読み取り | r | 4 | read ファイルの読み取りが可能 ( 内容表示など ) |
書き込み | w | 2 | write ファイルへの書き込みが可能 ( 編集や上書きコピーなど ) |
実行 | x | 1 | execute ファイルの実行が可能 ( プログラムやシェルスクリプトの実行 ) |
【 ディレクトリへのアクセス権限 】
アクセス権 | 英字 | 数字 | 説明 |
読み取り | r | 4 | read ディレクトリの読み取りが可能 (ディレクトリに登録されているファイル名の表示) |
書き込み | w | 2 | write ディレクトリの書き込みが可能 ( 新規ファイル作成、削除、名前変更など) |
実行 | x | 1 | execute ディレクトリに登録されいているファイルへのアクセスが可能 |
アクセス権は左から3文字ずつ、
-
- ユーザー(所有者)のアクセス権
- グループのアクセス権
- その他ユーザーのアクセス権
を表しており、「rwx rw- r–」の場合、
- ユーザー(所有者)に対しては、読み取り可能、書き込み可能、実行可能
- グループに対しては、読み取り可能、書き込み可能
- その他ユーザーに対しては、読み取り可能
という意味になります。
最後に数値で表す場合には、「読み取り=4」、「書き込み=2」、「実行=1」として所有者、グループ、その他ユーザーごとに足した数値で表します。
下記の場合、「764」というのがアクセス権を数値で表したものとなります。
———————————–
所有者 グループ その他ユーザー
———————————–
rwx rw- r–
421 42 4
↓ ↓ ↓
7 6 4
———————————–
例えば、一般ユーザはシステムに関するファイルへの書き込みは出来ないようになっており、誤って上書きやファイルを消してしまったりすることが出来ないようにしています。
このようにパーミッションはセキュリティのために存在していると言っても過言でありません。そして、パーミッション設定は余分な書き込みや実行許可を与えないようにしておくことが基本となります。
WordPressは常に狙われている!
前回の記事でも記載しておりますが、
WordPressはオープンソースであるため、無料で使用でき、プラグインも豊富なので、世界中で最も利用されているCMSの1つです。
ただその反面、オープンソースであるゆえに、脆弱性が発見されやすくハッカーの標的になりやすい、といった特徴もあります。
WordPressで理想的なパーミッションの設定
パーミッション設定がセキュリティに大きな効果があることは前述しましたが、当然WordPress利用時でもそれは同じです。
環境や運用面などで適切な設定は変わってきますが、一般的に推奨されているパーミッションを紹介します。
.htaccess
「604」か「606」
「.htaccess」ファイルが書き換えられてしまう事例が多発していますので、パーミッション設定は必須です。パーマリンクの設定が出来るようにするには「606」にします。
wp-config.php
「400」か「600」
ファイルのオーナーのみが読み込むことが出来る「400」が最も安全な設定になります。
インストーラ(レンタルサーバーなどで用意されているWordPressの自動インストールなど)でwp-config.phpを作成した場合、パーミッションは「646」か「666」になっています。この場合、オーナーは「Apache」になってしまいますので、自分自身では変更できません。
そのため、FTPソフトなどでwp-config.phpをダウンロードして、サーバー上のwp-config.phpを削除して、再アップロードします。これでオーナーが自分になり、パーミッションの設定ができるようになります。
ただし、共有サーバーの場合「400」で設定できないケースも多いようですので、WordPress.org では「600」を推奨しています。
その他のファイル・ディレクトリ
一般的には
その他のディレクトリは「705」
その他のファイルは「604」
とするのが良いようです。ただし、WordPressの管理画面でテーマの編集やファイルのアップロードができない場合は、「themes」や「uploads」を「707」などに変更する必要があります。これはサーバーの仕様によって異なります。
画像がアップロードできないからといってパーミッションを「777」「666」などに設定した場合、「誰でも書き込める」状態になってしまいます。くれぐれもそのよう設定だけはしないよう注意してください。
なお、ファイル、ディレクトリ共にパーミッションの真ん中の設定「グループ」を0としているのは、共用サーバの場合、他人と同じグループに設定されている可能性があるためです。
パーミッション変更後に行うテストについて
サーバーの環境によりパーミッション変更後に不具合が出る可能性がありますので、変更後は最低限下記の動作確認をしておくと安心です。
- WordPress管理画面へのログイン
- 記事の投稿及び画像のアップロード
- プラグインの追加と削除
- テーマの変更
コマンドでパーミッションを一括変更する方法
サーバーにsshでシェルアクセスができる場合、次のコマンドで指定したパス以下を再帰的にパーミッション変更できます。
※設定変更により、環境によっては不具合が発生する可能性もありますので自己責任でお願いいたします。
ディレクトリ一括変更
1 2 |
find [パス] -type d -exec chmod 705 {} \; 例 find ./ -type d -exec chmod 705 {} \; |
ファイル一括変更
1 2 |
find [パス] -type f -exec chmod 604 {} \; 例 find ./ -type f -exec chmod 604 {} \; |
いかがでしたでしょうか?
繰り返しになりますが、WordPressはその性質上攻撃の対象をなりやすいということを理解して、セキュリティ対策をしっかりしていただければと思います。