Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

WordPressをインストールしたらまず行うセキュリティ対策

セキュリティ会社のsucuriが行った「Hacked Website Report – 2016」によると、2016年にハッキングされたCMS8,000サイトのうち、WordPressが74%、Joomla!が17%、Magentoが6%でした。

wordpress00

(調査結果及び、画像引用:Hacked Website Report 2016/Q3)

WordPressはオープンソースであるため、無料で使用でき、プラグインも豊富なので、世界中で最も利用されているCMSの1つです。ただその反面、オープンソースであるゆえに、脆弱性が発見されやすくハッカーの標的になりやすい、といった特徴もあります。

そこで今回は、WordPress本体のアップデートの他に簡単にできるセキュリティ対策の中から、プラグインを導入せずにできるものをご紹介します。プラグインを導入すれば簡単なのですが、以下のようなデメリットもあるためです。

  • プラグインを利用することでメモリ領域を使用するため、サイトの動作が遅くなる可能性がある。
  • プラグインが原因で、予期せぬ動作を引き起こす場合がある。
  • プラグイン自体に脆弱性が存在する可能性がある。

それでは、順番に解説していきます。

①「wp-config.php」を、アクセス不可に設定する

「wp-config.php」というファイルは、Wordpressを利用する上で、最も重要で、最もセキュリティレベルを高く設定しなければいけないファイルです。
なぜなら、「wp-config.php」には、データベースのアカウント情報が記載されているからです。


**************************************************************
/** WordPress のためのデータベース名 */
define(‘DB_NAME’, ‘testdb’);

/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘testdb’);

/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘password’);

/** MySQL のホスト名 */
define(‘DB_HOST’, ‘localhost’);
**************************************************************

このファイルが、攻撃者の手に渡ってしまったら、データベースを直に操作されてしまう危険性があります。

そのために大事なのが「外部からのアクセスを不可能に設定し、パーミッションも厳しく設定する」事です。

手順は下記の通りです。

まず、「wp-config.php」と同じ階層に「.htaccess」ファイルを作成し(既にある場合は作成せず追記します)、「.htaccess」ファイルに、下記を入力してください。

<files wp-config.php>
order allow,deny
deny from all
</files>

これで、外部からのアクセスは不可能になります。

次に、パーミッションの変更ですが、「wp-config.php」のパーミッションは「404」にしておく事を推奨します。

②デフォルトユーザーの「admin」は削除しておく

WordPressをインストールして、デフォルトのままだと「admin」というユーザーアカウントが存在します。
この「admin」アカウントを、残しておくと非常に危険です。
なぜなら、ハッカーから「ブルートフォースアタック(総当たり攻撃)」を受けた場合、「パスワードのみ特定すれば良い」ので、不正ログインのハードルがかなり下がります。
実際に、Wordpressへの「ブルートフォースアタック」は、ほとんどがユーザ名「admin」として、不正ログイン試行されているようです。
そのため「admin」アカウントは必ず削除しておきましょう。

admin ユーザの削除手順は下記の通りです。
1.「新規ユーザーを追加」より、管理者権限を持ったユーザ(権限グループで管理者を選択)を追加します。

初めに管理者権限を持ったユーザがadminの他に存在している状態にしないとadminユーザを削除することができません。

wordpress01

2.一度adminユーザをログアウトし、1で追加したユーザで再度ログインします。すると、以下のように変更されて、adminユーザが削除出来るようになっているはずです。
このadminユーザを削除するわけですが、ここで注意が必要となります。

wordpress02

削除をクリックした後に、ユーザの投稿をどう処理しますか?という選択がありますので、すべての投稿を以下のユーザにアサイン という項目にチェックをしましょう。

wordpress03

③未使用のプラグインは削除する

インストールしているだけで使っていないプラグインや、以前は使用していたがが、現在は使わなくなっているプラグインは、「停止」にするだけではなく「削除」するようにしましょう。
なぜなら「削除」しておかないと、プラグインに脆弱性が存在した場合、その脆弱性が狙われる可能性があるためです。
使わないプラグインは停止だけでなく完全に削除する癖をつけましょう。

また、使用しているプラグインもアップデートがあればアップデートをしておくことが大切です。
sucuriの調査によると、ハッキングに関与しているトップ3のプラグインは、Revslider、TimThumb、GravityFormsでした。これらのプラグインを導入しているユーザーは、早急にアップデートをした方が良いでしょう

④パスワードを複雑にする

パスワードは最低でも、ランダムに10文字以上の英数字を織り交ぜた文字列を設定すべきです。パスワードは8文字以内だとハッキングされやすいというデータもあります。

おすすめは自動生成のパスワードです。

最新のWordpressはパスワード生成機能が標準で実装されていますが、下記ようなサイトで生成するのもおすすめです。

http://www.graviness.com/temp/pw_creator/

まとめ

今回紹介した1から4まですべての対策を行うのに要する時間は30分程だと思いますが、これだけでも格段にセキュリティが向上します。被害に合ってからでは遅いので今すぐ実施することをお勧め致します。

WordPressの最新版をインストールする。また777とか666といったパーミッションは使わない(suEXEC使用)こともセキュリティ強化になりますので、合わせて確認して欲しいポイントです。

また、万が一ハッキング被害にあった時の為に、バックアップをとっておく事も重要です。

今回のブログの主旨とは異なりますが、未知の危険に対して事前に全て対応することは不可能な為です。
セキュリティ対策とバックアップをしっかりとっておくことが大切となりますので、バックアップも忘れずに行うようにしてください。