こんにちは、ヤス@ロコ父さんです。
WordPressのブログサイトを作ったら、セキュリティ対策として真っ先に実施することをお勧めする設定をご紹介します。
[1] 管理者のログインユーザ名が見えないようにする。
[2] 自宅のインターネット回線からのみWordPressの管理者ログイン画面を表示する
ブログサイトは毎日大量の不正アクセスに晒されています
気付きのきっかけとなったのは、WordPressのプラグイン:Redirection(リダイレクション)を導入したことでした。
元々このプラグインを導入した意図は「パーマリンクを変更した記事のリダイレクトを行いたい」でした。
例えばこんな風にURLを変更した場合に、
www.roco-channel.com/early-retirement/abc ⇒ www.roco-channel.com/early-retirement/123
Redirectionプラグインの管理画面で古いURLから新しいURLへのリダイレクトを設定した後は、
「実際にどれくらいリダイレクトされたアクセス数があるのか?」をログでチェックすることができます。
一方でリダイレクトされない古いURLは「404エラー:Page Not Found」になりますが、
このRedirectionプラグインは「リダイレクトログ」だけではなく「404エラーログ」も確認できるため、
404エラーの発生頻度の様子も確認することができます。
それで、404エラーのログを時々チェックしていると以下の事に気付いて驚かされました。
・毎日大量の不正アクセス(乗っ取り攻撃)に晒されていること
・特に管理者権限を奪取しようとする不正アクセスが多いこと
不正アクセス対策を何もしていない時は、24時間で200~400回の不正アクセスがありました。
その多くが、"admin" という文字列を要求URLに含んでいましたので明らかに
「WordPressブログサイトの管理者権限を奪取しようとする不正アクセスの試み」
に違いありません。
これが不正アクセスログのほんの一部分ですが、"/admin" とか "/auther" というURLを狙ってきていることが判ります。
という訳で「WordPressブログサイトの管理者権限を奪取されないように対策する」ことにしました。
管理者ユーザ名が外から見えないようにする
私のブログサイトは自分1人が管理者なので、普段自分がよく使うユーザ名を設定していましたが、
プラグイン:Redirectionの404エラーのログをチェックしていたら、
URLの後ろに /?auther=2 とか /?auther=3 でアクセス要求を出してくる怪しい送信元
が幾つかありましたので、あれれ?と思って調査したところ、
URLの後ろに /?auther=1 を付けると自分のユーザ名がブラウザのURL欄に表示されているではありませんか!
外からユーザ名が見える設定で最初の2年くらいは放置していた事になります。( ; ^_^A
これではいけないと思って即時に対策を実施しました。
以下を WordPressのテーマファイルエディターで、functions.php の後ろにコピペして保存すれば対策完了です。
メニュー: 外観 > テーマファイルエディター > functions.php
// ユーザ名が見えないように/?auther=1をトップページにリダイレクト
function author_archive_redirect() {
if( is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( 'template_redirect', 'author_archive_redirect' );
これで管理者のログインユーザ名が外からは見えないようになりました。w
管理者ログイン画面は自宅のインターネット回線からのみ許可とした
次に、管理者ログイン画面は自宅のインターネット回線からのみ許可としました。
この対策をすれば、バックドアを仕込まれた怪しいプラグインをインストール&有効化しない限りは、
管理者権限でログインすることは出来なくなるはずです。
1)先ずは自宅のインターネット回線のIPアドレス範囲を、whatismyipaddressというサイトにアクセスして調べます。
私のIPアドレスは何ですか-あなたのパブリックアドレスを参照してください-IPv4&IPv6
2)次に、得られたIPアドレスを以下のサイトにコピペして「IPアドレスの範囲」を調べます。
そうすると以下の様な情報が見えますので、
Network Information: [ネットワーク情報]
a. [IPネットワークアドレス] 106.xx.0.0/16 (マスク範囲)
b. [ネットワーク名] JPNE-IP4-002
f. [組織名] 株式会社JPIX
ここに表示されたIPアドレスの範囲: 106.xx.0.0/16(送信元IPアドレス)
からのアクセスのみに制限(限定)すればよいことになります。
私の場合は、レンタルサーバの管理コンソールから「.htaccess 」を編集して、使用しているインターネット回線業者の特定のIPアドレスブロックからのみWordPressのログイン画面を表示するように設定しました。
<特定のIPアドレスブロックからのみ、wp-adminログインを許可する設定>
# WordPress admin tool can be accessed only from my Internet line
<FilesMatch "wp-login.php|wp-admin">
order deny,allow
deny from all
allow from 106.xx.0.0/16
</FilesMatch>
これを .htaccess の最後にコピペしました。
※ IPアドレスの xx には実際には数字を入れます
ちょっと難易度が高いかも知れませんのが、Webサーバの基本的な設定ファイルを直接編集するため、以下を注意さえすれば
余計な副作用を心配する必要はありません。
- 「.htaccess を編集」する前に内容をメモ帳などにコピペして残しておくこと
- 「.htaccess を編集」した後はブラウザでサイトが正常に表示されるか必ず確認すること
- 「.htaccess を編集」した後は内容をメモ帳などにコピペして残しておくこと
万が一、編集&保存後にサイトが表示されなくなった場合は、追加した部分を削除して、元に戻してください。
※何れの設定変更も自己責任で行ってください。
以上ご参考になれば幸いです。