WordPressを使用したサイトはセキュリティが弱い。

なんて話をよく聞くことがありますが、本当にそうでしょうか?

WordPressは世界で最も利用されているCMSで、インターネット上の39%のサイトがWordPressで出来ています

相対数が多いのでハッキングの対象になりやすい傾向はあるものの、CMS本体としてのセキュリティに問題があるケースは多くありません。

また、WordPressはマイナーバージョンアップが頻繁に行われており、アップデートを都度行っておけば、常にセキュリティを高く保つことが出来ます。

ハッキングされてしまう多くの原因は別のところにあり、以下の項目を対策していなければ、どのCMSを使おうが全く同じ結果になることでしょう。

1. ユーザー名・パスワードの見直し

これは、WordPressだけではなくFTP等にも言える事ですが、もしユーザー名が「admin」だとしたら1年以内にサイトがハッキングされるかもしれません。

ブルートフォースアタック(総当たり攻撃)によって試行されるユーザーリストの最上位のユーザー名が「admin」でしょう。

最悪なケース「admin」

そうならないためにも、まずはWordPressのユーザー名、パスワードを変更してください。

以下のようなサイトでランダムに生成する事が出来ますので、なるべく強固なパスワードを生成する事でハッキングのリスクを最小限に抑えることが出来ます。

https://www.luft.co.jp/cgi/randam.php

2. プラグインの精査

今、あなたのサイトで有効化されているプラグインは何個ありますか?

プラグインは非常に便利な反面、数が増えれば増えるほどセキュリティのリスクは高くなります。

本当に必要なプラグインだけ残して、昔からなんとなく有効化されていたプラグインは停止するべきです。

「停止中」「更新可能」が無い状態が理想です。

また、プラグインは定期的に更新していく必要がありますので、極力最新版を使うようにしましょう。

こちらの記事では、脆弱性が発見されたプラグインについて記載しています。
該当するプラグインをインストールしている場合は、ただちにアップデートしてください。

3. 常時SSLで通信する

近頃では、http://~から始まるウェブサイトは少なくなってきましたが、まだまだ存在しているようです。

http://~での通信は、全ての情報が平文で送られているため、外部から情報を掠め取る事も、覗き見る事も出来てしまいます。

セキュリティ上良く無いだけでなく、SEOにも悪影響を及ぼしますので、今すぐにでもSSLを導入しましょう。

SSLには様々な種類がありますが、Let’s Encryptは誰でも無料で利用する事ができます。

無料で利用できるSSL証明書「Let’s Encrypt」

ただ1点、他のSSL証明書と違い更新期間が短いので、自動更新の設定をしておいた方が良いですね。

4. wp-config.phpを移動

通常であれば、サーバーのドキュメントルート直下にwp-config.phpを置いてある事が多いと思います。

この状態は実は危険で、過去に一度.htaccessを書き換えられた結果phpファイルを表示できる状態にされてしまい、世界中にデータベース情報が流出していたお客様もいらっしゃいました。

そこで、Webの公開ディレクトリ以外にwp-config.phpを置く事で、多少なりともセキュリティリスクを抑えるできます。

Webの公開ディレクトリが「/var/www/public_html/」であれば、「/var/www/wp-config.php」となるように移動させます。

wp-config.phpは、wp-load.phpにより読み込まれるのですが、ABSPATH(ドキュメントルート)にwp-config.phpが見つからない場合、dirname()によりひとつ上のディレクトリを探しに行くよう書かれています。

*
 * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php
 * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit
 * of avoiding cases where the current directory is a nested installation, e.g. / is WordPress(a)
 * and /blog/ is WordPress(b).
 *
 * If neither set of conditions is true, initiate loading the setup process.
 */
if ( file_exists( ABSPATH . 'wp-config.php' ) ) {

	/** The config file resides in ABSPATH */
	require_once ABSPATH . 'wp-config.php';

} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) {

	/** The config file resides one level above ABSPATH but is not part of another installation */
	require_once dirname( ABSPATH ) . '/wp-config.php';

} else {
///

データベースへの接続情報は主にwp-config.phpに記述されていますので、とにかくこのファイルを閲覧できないようにする工夫が必要となります。

5. 管理画面からのファイル編集を禁止

WordPressには管理画面から直接ファイルを編集する機能が備わっています。

管理画面にログイン後、「外観」→「テーマエディター」で表示される画面です。

テーマエディター画面

最初の項目と関連しますが、安易なユーザー名とパスワードによりログイン画面が突破されてしまった場合、悪意をもったコードをここから埋め込まれる可能性があります。

安全のためにも、この画面からの編集を禁止してセキュリティリスクを減らしましょう。

お使いのテーマのfunctions.phpをエディタで開き、下記のコードを最終行に追記します。

define( 'DISALLOW_FILE_EDIT', true );

管理画面へ戻り、「外観」のサブメニューの中から「テーマエディター」が消えていればOKです。

まだまだ対策方法はありますが、「最低限」の対策ですので、近日中に続編を投稿致します!

面倒な設定が多いので、個人でブログをやっている方には少し難しい内容も含まれると思います。

WordPress制作のgiscoでは、セキュリティの対策代行や、ご相談を承っております!

是非お気軽にご連絡ください!

タグ: