カテゴリー
WordPress 上級者 中級者

WordPressのプラグインによるセキュリティ対策

WordPressのセキュリティ向上に関して、いくつか記事に残しておきますね。

WordPressは、CMSの中でも人気のシステムなので、それなりに攻撃の標的にされやすいのは間違いなく、自衛できる範囲で最大限、自衛した方がいい。

ただし、レンタルサーバーを借りて運営している以上は、サーバーのシステム権限までは持っていないので、そのレベルで脆弱性をつかれたりしたら基本的には、どうにもならないんですが、それはそれ。
うちはいちおう国内最大手のサービス(さくらインターネット)を利用してるのである程度信頼するしかない。

そもそも、こういうのは確率の問題。
ある程度、リスクを回避できる確率が向上するなら、やっておくにこしたことは無い。

特に、今のサイト攻撃って、ツールを使って半自動で行われるんで、そういうのを防ぐだけでも、だいぶリスクは低減できるはず。

というわけで、今回はプラグインによって比較的に簡単にセキュリティを向上できる「All In One WP Security」の設定について書いときます。

All In One WP Security

様々な機能があるプラグインのようですが、基本的には不正ログインの防止というところがメイン。

その意味では、まずはWordPress、FTP、MySqlなどのシステムへのログインのユーザー名とパスワードの厳重な管理が大前提。
安易なパスワードを設定なんか設定してちゃダメですし、ユーザー名をadminだのrootだのにしちゃうのもダメ。

さらには、ユーザーのニックネーム(投稿記事に表示される)も追加設定して、安易にログインIDを画面に表示しないようにしておくとか、WordPressの標準機能でできるところは、きちんとやっておく。

その上で、プラグインの設定に入ります。

User Login

まずは不正なログイン試行をされた場合に、そのIPアドレスからのログインをロックするかどうかを設定。

基本は、一番上の「Enable Login Lockdown Feature:」のチェックを入れておくだけで、後は不正ログイン試行と判断するまでの回数と、その判断時間、それとIPアドレスをロックする時間なんかを設定。
この設定だと5分以内に、同一IPアドレスからログイン試行が失敗した場合に、不正アクセスと判断して、120分の間、そのIPアドレスからのログインをブロックする設定。

他にも、不正アクセス時にメール通知したり、不正アクセスとみなさないIPアドレスを指定したりとか機能があるようなので、必要に応じて設定します。
まぁ、だいたいの人にとっては、上の設定だけで十分な気はします。

Database Security

続いて、WordPressが利用してるSQLデータベースのセキュリティ強化。

WordPressのテーブル名をデフォルトから変更する機能です。

システムに脆弱性があると、そこを狙って、WordPressのSQLデータベースを直接書き換えられることがあり得るわけですが、その時にWordPressのテーブル名がデフォルトと違うと、そこでデータベースエラーになって、書き換えは行われませんので。

自分の場合は、SEやってた昔のクセで、もともとデフォルト(”wp_”で始まる)とは違うプレフィックスを付けてたので、はじめから設定済み状態ではありましたが、デフォルトのままの人は変えておいた方がいいかも。

ただし、ここで何か不測の自体でデータベースの更新に失敗すると、サイト自体が失われちゃうので、事前にバックアップはとっておくように…との警告は出てますので、実行は慎重にすること。
SQLデータベースに関してあんまり詳しくないなら、やらないほうがいいかも。

Filesystem Security

続いて、ファイルシステムのパーミッションの設定。

UNIX/Linux系のシステムの場合、それぞれのディレクトリやファイルには、どのユーザーに何を許可するかを指定して、セキュリティを保つようになってますが、それがきちんんと設定されているかどうかを確認、設定する機能。

レンタルサーバーのインストールサービスなんかを利用した場合は、はじめからきちんと設定されているコトが多いのかと思いますが、念のために確認しときましょう。
万が一、セキュリティが緩い場合は、ここで修正しておけばオッケーです。

755とか644とかのパーミッションの値の詳細は、他のUNIX/Linux系の詳しいサイトで確認してもらうことにして、ものすごく大雑把に言えば、値が小さいほどアクセスできるユーザーが限られることになって、000とかに設定するとサイトのオーナーですらアクセスできない。

なので、現在のパーミッションが推奨パーミションよりも値が小さくて、それで動作に問題が出ていないなら、そのままでもかまわない。
うちもrootディレクトリが推奨よりアクセス制限厳しくなってたので、そのままです。

Brute Force

これはWordPressのデフォルトのログインページwp_login.phpから変更するための機能です。

不正ログインは、そもそもログインページのURLがデフォルトと異なると、不正ログインの試行自体が難しくなる。
これはもう好きなアドレスに変更しておきましょう。

Scanner

定期的に、ファイルが書き換えられていないかをスキャンする機能。
これは超重要。
うちは、今年の夏、外部から書き換えられたphpかjsファイルを特定できずにメールスパムボットの駆除に失敗して、レンタルサーバーを移転するコトになりましたから。

ただし、メディアファイルなんかは、日常の更新で書き換えられるので、スキャンの対象外とする拡張子を指定します。
jpeg
jpg
png
gif
css
scss
map
po
mo

あとは書き換えを検出した時に、通知するメールアドレスを指定すればオッケー。

これで、ひととおりです。

バックアップも重要

こうした自衛策をしたからといって全体に大丈夫とは言えませんが、それはある意味、車に乗れば交通事故を100%防ぐことが不可能なコトと同じ。
だからといって、安全運転をしなければ、事故の確率はもっとあがる。

それと同様、自衛策を取っておけば、外部からの攻撃により不正ログインを許したり、ボットを仕掛けられる確率は減るわけですから、やるに越したことはない。

あとは、可能な限りバックアップを取って、万が一の場合は確実に復旧できるような手はずは整えておいたほうがいい。