ワードプレスは利用者が多いというのもありますが、ハッキングなどの被害もよく聞く話ではあります。プログラムや詳しい設定など分からなくても比較的簡単に始めやすいCMSなので、特に何も設定せず運用している場合もよく見かけます。
ハッキングなどの対策は実際問題イタチごっこのようなもので、完全にシャットアウトするのは難しい事もありますが、できる限りそういった被害にあいにくくする対策は必要であると思います。
全くの無防備での運用はせず、初期の段階で多少の防御をというレベルではありますが、記事にしてみたいと思います。
前回の記事はこちら
不正ログイン対策
以前のワードプレスではインストールするとデフォルトで「admin」という管理者ユーザが登録されています。
もし「admin」というユーザが存在し管理者として運用しているなら、真っ先に狙われやすい為、別の管理者ユーザでログインして「admin」ユーザは削除して下さい。
最新のワードプレスをインストールした方であれば、インストール時に設定したユーザが管理者となっていると思います。
まずはこのユーザの設定を修正するためワードプレスにログインします。
ニックネームの変更
ワードプレスでは記事を投稿した際、投稿者名も表示されます(大抵のテーマでこの仕様)。
仮に管理者で記事を投稿した場合、デフォルトの状態では管理者のログインIDそのものが表示されるという仕様になっています。ニックネームを変更する事で表示名を変える事が出来ます。
テーマにより投稿者名を非表示する設定もありますので、各テーマの設定を調べてみて下さい。
左メニュー「ユーザー」>「ユーザー一覧」を選択します。
まだユーザを作成していなければ、管理者1人のみの状態かと思います。「編集」をクリックし、プロフィール設定の画面を表示します。
ページの中段に名前の項目があります。そちらのニックネームを変更します。初期状態であれば、「ユーザー名」と「ニックネーム」「ブログ上の表示名」は全て同じになっていると思います。
「ニックネーム」項目を別な名前に変更(日本語可)すると、「ブログ上の表示名」のプルダウンメニューから入力した名前を選択出来ます。この2項目を変更しておきます。
変更が完了したら、ページ一番下にある「プロフィールを更新」ボタンを押します。
投稿者アーカイブの無効化
先ほどの設定では表示を変更しただけなので、ログインIDを隠すまでの対策は出来ておりません。
【ドメイン名/?author=1】(ユーザを追加すると順番に数字が割り当てられます)とURLを入力して自分のサイトを確認してみると、【ドメイン名/author/ユーザー名】にリダイレクトされます。結局管理者のIDは簡単にばれてしまうわけです。
複数の投稿者でブログを運営している場合には、authorリンクを別の名称に変更してくれる「Edit Author Slug」プラグインを利用すると良いでしょう。
一人のユーザで運営している場合には少しでもプラグインは少ない方が良いので、投稿者アーカイブページ自体を見れなくしてしまう設定が最善です。
投稿者アーカイブページを無効化するには、使用しているテーマの「functions.php」に以下の記述を加えます。(子テーマの場合は子テーマの「functions.php」)
function disabled_author_archive($qry){
if(! is_admin() && is_author()){
unset($_REQUEST['author']);
$qry->set('author','');
$qry->set_404();
status_header(404);
}
}
add_filter('parse_query','disabled_author_archive');
「functions.php」に記述を加える場合には、元の「functions.php」をバックアップしてから修正するようにして下さい。
投稿者アーカイブページにアクセスがあった場合にページをリダイレクトして404ページを表示する方法もありますが、こちらはリダイレクトはせずにそのままステータス404を返す設定になります。
WordPress各ファイルのパーミッション設定
パーミッションとはサーバに設置するファイルのアクセス権限の事です。各種FTPクライアントソフトなどにより設定が可能です。
FTPソフトにより、権限や属性などと呼び方は異なります。
各レンタルサーバ会社の推奨設定もあるので、そちらも参考にしてみて下さい。
htaccessファイル
推奨は「604」パーマリンク設定があれば「606」に変更します。
wp-config.phpファイル
ワードプレスの重要な設定が記述されたファイルです。簡単インストールなどでは変更できない場合があります。
変更できる場合には、もっとも推奨されるのは「400」です。設定できない場合には「600」に変更しましょう。
install.phpファイル
wp-admin/install.phpのファイルはワードプレスインストール後は必要ない為、パーミッション「000」に設定。
その他ファイル・フォルダ
レンタルサーバ会社などにより設定できないもしくは他の推奨パーミッションもあります。
その他のhtmlファイル、画像ファイル、phpファイルなどは「604」に変更。
フォルダ(ディレクトリ)については「705」に変更します。(場合によっては「707」もしくは「755」)
cgiとしてプログラムを実行したりそのデータファイルなどは違うパーミッションが推奨されるので、各レンタルサーバ会社の推奨設定を参照にして下さい。
htaccessによるセキュリティ強化
ワードプレスをインストールするとルートディレクトリに自動的に「htaccess」ファイルが生成されています。こちらのファイルに記述を追記していきます。
ディレクトリ一覧の非表示
「index.html」ファイルがないディレクトリを指定した場合、ファイル一覧が表示されるのを防ぐ設定です。
設置サーバがApacheの場合の記述方法。
Options -Indexes
htaccessファイル自体のアクセス禁止
「htaccess」へのアクセスを全て拒否します。
<files ~ "^\.ht">
deny from all
</files>
wp-config.phpファイルへのアクセス禁止
先ほどパーミッションを設定しましたが、念のためにアクセス禁止に設定します。
<files wp-config.php>
order deny,allow
deny from all
</files>
wp-mail.php install.phpファイルへのアクセス禁止
複数ファイルをまとめてアクセス禁止の記述する事も可能です。これらのファイルもアクセス禁止にした方が無難です。
<FilesMatch "^(wp-mail\.php|install\.php)">
order allow,deny
deny from all
</FilesMatch>
wp-login.phpファイルのアクセス制限設定
こちらは全て拒否できないので、許可するIPアドレスかホスト(IPが変わる場合)を設定。
<files wp-login.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx #ホストもしくはIPアドレスを記入
</files>
xmlrpc.phpファイルのアクセス制限設定
これはリモートから記事を投稿したり、ピンバックの際に使われるファイル。このファイルも狙われやすいので、特定のIPアドレスかホストのみを許可。
<files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx #ホストもしくはIPアドレスを記入
</files>
まとめ
2回に渡ってワードプレスの初期設定を行ってきました。私がワードプレスのサイトを立ち上げて毎回行う設定です。
これらを設定すれば万全と言う訳ではないので、運用しながら設定を追加するなり修正するなりしてみて下さい。
セキュリティに関してもあくまで最低限な設定なので、気になるようであればプラグインなども調べてみると良いと思います。