LoginSignup
3
3

More than 1 year has passed since last update.

Wordpressのセキュリティ対策/wp-config.phpの移動によるリスク回避。

Last updated at Posted at 2022-03-10

Web制作会社のエムハンドでエンジニアをしてる@yadon_yadon_yadon_don_donです:raised_hand:
先日WordPress関連のセキュリティ対策の見直しを行いました。
主にこちらのページを参考に行いました。
そこで面白いなと思った「wp-config.phpの強化」について、ご紹介します:point_up:
そこまで専門的な知識なし、コードコピペでできます:relaxed:
設定の所要時間およそ5~10分です。

設定方法

wp-config.phpの移動

Wordpressインストールディレクトリにあるwp-config.phpのコピーして、ドキュメントルートよりも1つ以上、上の階層にペーストします。
複数台Wordpressを置くことがあると思うので、ドキュメントルートよりも1つ以上、上の階層にwp_configというディレクトリを作成して、サブドメインやインストールディレクトリ名でディレクトリ分けすることをお勧めします。

wp_config/
  wordpress01/wp-config.php
  wordpress02/wp-config.php
  wordpress03/wp-config.php
public_html/
  wordpress01/
    ここに実際のwp-config.phpやwp-contentディレクトリがある
  wordpress02/
    ここに実際のwp-config.phpやwp-contentディレクトリがある
  wordpress03/
    ここに実際のwp-config.phpやwp-contentディレクトリがある

コピー元のwp-config.phpの内容を変更して、コピー先のwp-config.phpを読み取るようにする

コピー元(Wordpressがインストールされているディレクトリ)のwp-config.phpを下記のようにして、
コピー先のwp-config.phpをインクルードして読み込んでください。

<?php
/** WP設置ディレクトリへの絶対パス */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

/** wp-config.phpの内容が設置されたファイルのインクルード */
include(ABSPATH.'../../wp_config/wordpress01/wp-config.php');

「ABSPATH」関連の記述については、参考元Aaron Adamsによる記事に記載がありました。
こちらの記載がないと、wp-settings.phpのインクルードがうまくいかずエラーが吐き出されます。
やっていることとしては、コピー元のwp-config.phpで先に「ABSPATH」の定義を行っている形です。
これを記載ないと「ABSPATH」の定義がコピー先のパスで行われ、「wp-settings.phpというファイルはない」というエラーが返ってきます。

実際のエラー

Warning: require_once(…/wp_config/wordpress01/wp-settings.php): failed to open stream: No such file or directory in …/wp_config/wordpress01/wp-config.php

両方のwp-config.phpのパーミッションを400に変更する

両方のwp-config.phpのパーミッションを400に変更してください。
こちらを先にしてしまうと、wp-config.phpの編集ができなくなるので注意ください。

実際の効果について

まだ実装して間もないので、実際の効果の方はなかなか見えないものですが、
少なくとも以下のような効果が期待できそうな気がします。

重要情報の流出のリスク回避

wp-config.phpにはDBの情報等、とても重要な情報が保存されています。
なおかつ、設置されている場所に関してはWordpressがインストールされた箇所の直下にあるので予測がしやすいです。
基本的にはこの対策を取らなくても、wp-config.phpのURLをたたいても情報は見れないようになっています。
しかし何らかの事情で突破されたら、その情報が漏れてしまいます。
この対策を取っていれば、もし仮に突破されたとしても、流出するのはインクルードパスだけですので、情報の流出防止対策になります。

安全な場所に重要情報のバックアップを取ることができる。

Wordpressでもし攻撃を受けた場合、wp-config.phpは狙われやすいファイルと言えます。
wp-config.phpを上書きされて、別のサイトが表示されてしまいます。
そういった攻撃はわりとポピュラーかと思います。
なので、セキュリティ対策とバックアップを取ることができるこの方法は非常に合理的であるかと思います。

終わりに

メリットに関しては、その他にもあるかもしれません。
気が付いたら追記しようかと思います。
この対策ですが、割と簡単にできる割には、
どのような効果か色々説明できて、やった感が出るので、個人的にすごく好きな対策です。

セキュリティ対策の参考にさせていただいた、
https://kinsta.com/jp/blog/wordpress-security/
には、感謝いたします。
色々な対策が記載されてあり非常に参考になりました。
ありがとうございます:relaxed:

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3