この記事をシェアする

WordPressでブログを開設するにあたってやったことの解説

ご挨拶

お初にお目にかかります。貧弱一般モバPと申す者です。

今までもブログは一応持ってたんですが、
・なんかもう全く更新できてない
・どうせならPHPでゴリゴリカスタマイズしたい
・CSSやHTMLの勉強も平行してやりたい
・サイト運営というものをちゃんとやってみたい
ってえことで心機一転WordPressで作り直してみました!

一応前職で5年くらいWordPress触ってるので、
その経験を生かして、負荷対策とかセキュリティ対策とか
色々盛り込んでたりします。

これからWordPressでサイト運営を始めたいと思っている
誰かの助けになればと思い、
今回対応した内容をこちらに書き記させていただければと思います。
(自分の備忘録も兼ねて)

対応内容

①wp-cronの無効化

wp-config.phpに以下のように追加。

define('DISABLE_WP_CRON', 'true');

wp-cronとは、cron(ざっくばらんに言うとプログラムを自動実行するための仕組み)
が使えないサーバでも、
WordPressの予約投稿等の機能を使えるようにするための仕組み。
デフォルトで有効になっているため、無効化する場合は上記のように
明示的に無効化してやる必要がある。

これが有効になっていると、ユーザがWordPressのページを
開くたびにwp-cron.phpへのアクセスが発生するため、
余計な負荷が掛かってしまう。
まだ気にする段階ではないかもしれないが、
将来必要になってから慌てて設定するよりは
良いと思う。

ただし、ただwp-cronを無効化するだけだと
今度は予約投稿等が機能しなくなる。
なんだか本末転倒な気がするけど、
サーバのcronがwp-cronの代わりに機能するように
設定する必要がある。
この辺については以下の記事に記載した。

②xmlrpc.phpへのアクセスを遮断

WordPressのインストールディレクトリに設置されている
.htaccessに以下の通り記述。

<Files xmlrpc.php>
    Order allow,deny
    Deny from all
</Files>

もしくは、以下のようにループバックアドレスにリダイレクトさせる。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^xmlrpc.php$ http://127.0.0.1
</IfModule>

xmlrpc.phpはピンバック機能をWordPressで使えるようにするための
プログラム…なんだけども、ピンバック機能って必要か…?
ピンバック通知を悪用したDDOS攻撃に使われる可能性もあるんで
はやめに潰しておくが吉。
踏み台にされるとサイトの評価は下がるし、
負荷が上がってレンサバから怒られたりもする。

③ログイン画面にベーシック認証

敢えて説明する必要もないと思うが、
ログイン画面に対する攻撃への対策。

サーバにSSHでログインして、htpasswdコマンドでパスワードファイルを生成

htpasswd -cB ./.htpasswd ユーザ名

パスワードを入力してね!ってダイアログが出てくるので、
言われるがままパスワードを入力する。

んでもって、WordPressをインストールしたディレクトリの
.htaccessにこんな感じで記述

<Files wp-login.php>
AuthType Basic
AuthUserFile [.htpasswdを生成したディレクトリのフルパス]/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
require valid-user
</Files>

④著者アーカイブページにアクセスできないようにする

functions.phpに以下のように追加

add_action( 'template_redirect', 'author_archive_redirect' );
/**
 * 著者アーカイブページへのアクセスを禁じる
 */
function author_archive_redirect() {
    if( is_author() ) {
        wp_redirect( home_url());
        exit;
    }
}

著者の名前はWordPressのログイン名とイコールとなる。
つまり、
著者アーカイブページが見える

そこからWordPressのログインIDが割れる

不正ログインのリスクが高まる
ということになる。

サイト運用上必要でないのなら、アクセスできないように
した方が無難。

まとめ

いかがでしたでしょうか?
プラグインは必要最低限で運用したいので、
基本的にPHPや.htaccessでゴリゴリ書く方向で対応しました。
今後はログイン画面へのreCaptchaの実装だったり、
フォームの実装だったりを行っていく予定です。

それらの対応内容についても都度発信して行こうと思いますので、
ぜひ定期的に購読してアクセス数を増やしてくれると嬉しいなーって思います。
(爆

ではでは。

この記事をシェアする