WordPressにおけるサイトの改ざん被害の多くの原因は、管理ユーザーのログイン情報漏洩により不正アクセスされ、テーマファイルなどを書き換えられることです。
そして不正ログインを防ぐ代表的な方法には以下のようなものがあります。
- ログインURLを変更する
- パスワードを複雑なものにする
- 作者一覧などのURLに含まれるユーザー名の文字列(スラグ)を別のものにする
- ログイン時にユーザー名を使用不可にし、メールアドレス+パスワードでのみログイン処理を行う
- プラグインなどを使って2要素認証などを取り入れる
- .hatccessでログイン画面や管理画面へのアクセスを限定する
ただ、これらには問題があり、それぞれの項目に対して以下のような問題や運営上の不都合が発生する可能性があります。
- 管理画面へアクセスした際のログイン画面へのリダイレクトを無効にする必要があるが、ログインURLを忘れた場合にはログインが困難になることもある
- 有効ではあるが、実際の運用では記憶して毎回入力するのではなく、ブラウザのパスワード保存機能を使って自動で呼び出すことがほとんどで、保存されたパスワードとユーザー名の情報が何等かの形で漏洩した場合には防ぎきれない
- 表面上のセキュリティアップは図れるが、WordPressがユーザー名を出力するケースは表示画面のみではないため、漏洩する可能性がある
- メールアドレスをまったく別のドメインにすればある程度のセキュリティは保てるかも知れないが、問い合わせやコメントの投稿や返信など、思わぬところから漏洩する可能性がある
- プラグインの動作不良や要素確認のためのメールが届かないなど、ログインできなくなる可能性がある
- 堅牢かつWordPressに依存しないセキュリティではあるが、IPアドレスの追加・変更時にサーバーのファイルマネージャーやFTPでファイルを取得しての編集などが必要になり、作業が面倒
WordPressのログインセキュリティに関してはこれをしておけばOKというものはないので、もちろん上記の措置の中からできるものを採用した上で、今回紹介する管理画面へのアクセス制限をかけることで、より改ざんのリスクを減らすことができると思います。
管理画面へアクセスできるIPアドレスを指定するコード
以下のコードを有効化しているテーマのfunctions.phpへ追加し、許可するIPアドレスを指定することで、特定の場所以外から管理画面を開けないようにできます。
/*** 特定のIPアドレスからの管理画面アクセスのみを許可する ***/
function pwcn_restrict_admin_access_by_ip() {
$allowed_ips = array(
'192.168.0.1', // あなたの自宅の固定IPアドレス (例)
//'203.0.113.10', // オフィスのIPアドレス (例)
// 必要に応じてさらにIPアドレスを追加
);
// 管理画面のパス(/wp-admin/)にアクセスしているかチェック
if ( is_admin() ) {
// ajax通信は制限対象外にする
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return;
}
// 訪問者の現在のIPアドレスを取得
$current_ip = $_SERVER['REMOTE_ADDR'];
// IPアドレスが許可リストに含まれているかチェック
if ( ! in_array( $current_ip, $allowed_ips ) ) {
// 許可されていないIPアドレスの場合、アクセスを拒否
header( 'HTTP/1.0 403 Forbidden' );
exit; // 処理を終了し、403エラーを表示
}
}
}
add_action( 'init', 'pwcn_restrict_admin_access_by_ip' );
コードを追加したらまず、コード中の「あなたの自宅の固定IPアドレス (例)」の行にあるIPアドレスを現在アクセスしているIPアドレスに書き換えて保存してください。
コードをそのままの状態でコピペして保存すると、いきなりアクセス拒否されますので必ずIPアドレスの変更を行ってください
管理画面に入れなくなったときは
本コードはログインしてから管理画面を開くまでの間に、指定したIPアドレスからの操作かどうかをチェックして、許可拒否を行う機能を追加するものです。
契約している通信事業者によっては、固定IP契約をしていない限り、セキュリティのために頻繁に割り当てるIPアドレスを変更することもありますし、何等かのタイミングでネットワークへの再接続を行った場合にIPアドレスが変わることもあります。
そうなると、ある時突然管理画面が開けなくなるということが発生するかも知れません(もしもそんなケースに遭遇したら、本機能が確実に機能している証明にはなるのですが...)。
もしも本機能が原因であることがはっきりしていて、さらにコード中のIPアドレスの変更が原因で管理画面のアクセスが不可になったことが確実な場合には、以下の手順で復旧するようにしましょう。
- FTPやサーバーのファイルマネージャーなどを使ってサイトの収容されているフォルダ内へアクセスし、有効化しているテーマのfunctions.phpを一旦パソコンにダウンロードする
- ダウンロードしたファイルを開き、本機能のコードを一旦削除する(その他のコードを削除しないよう注意してください)
- 該当コードを削除したファイルを元の場所に上書きアップロードする(アップロード前に元のファイルを別名にしておく、ダウンロードしたファイルをパソコン上で別名としてコピーしておくなどバックアップをしておくことをおすすめします)
これで本機能は無効になり、管理画面へのアクセスができるようになるはずです(機能を削除したので当たり前ではありますが..)。
ただし、WordPressはブラウザにいろいろな情報を一時情報として保存するようになっていて、機能を削除してもアクセスできないケースがあります。そのような場合には以下のようにして試してください。
機能を削除しているわけですから、復旧手順が間違っていなければ必ず管理画面へアクセスできるようになりますので焦らず確認してください
- 別のブラウザを使ってログインしてみる
- いつものブラウザでログイン画面を開き、「Ctrl」+「F5」(Google ChromeやMicrosoft Edgeの場合)を押してキャッシュをクリアする
- ある程度の時間や日数を置いてログインしてみる
- 別の拠点(例えばWifi接続していないスマホなど)からログインしてみる
上記のいずれかの方法で1つでも管理画面が開ける場合には、機能自体は無効になっていますから、あとはいつも使っているブラウザのキャッシュの問題でしょう。
以上、管理画面へアクセスできるIPアドレスを限定するためのコード例でした。
本機能は、当サイトで配布しているHima Art Utilityプラグインのバージョン6.0以降で実装していますので、コード編集に自信のない方や不安な方は使ってください。
その他WordPressのセキュリティに関する以下のページも参考にどうぞ。











コメントを残す