WordPressのセキュリティ対策(初心者向け)

2019年6月19日

WordPressブログのセキュリティ対策

初級編|初心者向けのWordPressセキュリティ対策

WordPressブログを公開するということは、インターネットを経由して世界中と繋がるということ。

リアル社会で治安の悪い国や地域を含めて、世界一周旅行を計画するときには、治安対策や防犯対策をしますよね。
インターネットの世界では、治安の悪い地域の悪い人達が、向こうから勝手にブログに不正なアクセスをしてきます。

WordPressブログにはセキュリティ対策が必要です。

簡素な入門者向け、初心者向けのセキュリティ対策で済ませてしまっているWordPressブログが結構多く見受けられます。制作業者さんでもその程度のセキュリティ対策で良しとして、レベルアップを図っていない例も多いようです。

ここでは比較的簡単に出来る、専門知識不要の初心者向けWordPressブログのセキュリティ対策を紹介します。

ひとつだけ設定すればOK!ではありません。設定を詰めて複数のより多くの対策を積み重ねていく事によって、セキュリティが高まっていきます。

玄関のドアに鍵をかけておけばそれで良し、で済ませないでください。2重ロックにする。よりピッキングに強い壊されにくい鍵に交換する。積み重ねによって、防犯対策(セキュリティ対策)が高まっていきます。

メタ情報は公開しない

外観→ウェジェット→メタ情報、で表示されるログインURL、RSS、WordPress.org へのリンクはサイト上で公開しない。ログインアドレスをご丁寧に第3者に公開する必要はありません。

ログインIDにadminは使わない。

WordPress簡単インストール機能のあるレンタルサーバーでは、最初にログインユーザー名を決めてから、WordPressをサーバー管理画面からインストールすることになります。それ以外WordPressの標準設定では、adminがログインユーザー名のデフォルト。推測し易いログインユーザー名は不正アクセスを目論む第3者に、ログインのヒントを与えているようなもの。必ず変更しておきましょう。

海外からの不正なログイン試行はadminやサイト名アルファベットが多いです。このブログならbistaraiでログインしようとしてくる。

ユーザー名を公開しない

ワードプレス編集者

ユーザー名と複雑なパスワードとの組み合わせによって、掛け算で難解になっていく。WordPressのしくみ上、ブログを公開するとユーザー名を第3者に公開することになってしまう。これも不正アクセスを目論む第3者に、ログインのヒントを与えているようなもの。必ず変更しておきましょう。

テーマの変更、Edit Author Slugプラグイン等で対策する。このサイトで使っているテーマLuxeritasでは、ユーザー名を表示させない=Authorページを表示させない設定機能があります。

ちなみにSiteGuard WP PluginでログインURLを変更しても、簡単に突破できます。頭隠して尻隠さず。セキュリティ対策としては意味がありません。

wp-config.phpを部外者から見えないようにする

WordPressブログのセキュリティ対策

wp-config.phpのパーミッション(権限)設定を400にする。サーバーによっては404又は440でないと動作しない場合があります。その際は適理環境に合わせて調整のこと。

データベースのユーザー名、パスワード、ホスト名(サーバー情報)がwp-confing.phpに記述されています。

wp-confing.phpの記述内容
wp-confing.phpファイルの中身。ログインに必要な重要な情報が記述されています。

第3者に読まれてしまうとWordPress管理者権限、ブログ運営者と同様の権限でログインできてしまいます。
データベースに直接第3者がアクセスすることも可能になってしまいます。

万一wp-confing.phpが第3者に見られてしまうと、改ざん、盗用何でもありになってしまいます。

特に個人ユーザーのほとんどを占める共有レンタルサーバーでは、第3者にデータベースのパスワードが漏れないように、必ずやっておきましょう。

2013年8月末ロリポップ・サーバーにおける8428件のワードプレスサイト改ざん事件は、このwp-config.phpのパーミション設定不備が原因です。

蛇足ですが、このときのGMO社長の言動と対応は酷かったなー。

共有レンタルサーバーでwp-config.phpパーミッション設定にミスがあると、このように不正アクセスが共有レンタルサーバー全体に連鎖してしまいます。安全のために必ず行っておきましょう。

ログインページのアドレス変更

Login rebuilderプラグインにはサイトアドレス/wp-login.phpのURL変更機能があります。

SiteGuard WP Pluginにも同様の機能が含まれています。しかし、ある方法を使うとログイン画面に第3者でも辿り着いてアクセスできてしまうので意味なしです。

何もしていないよりはマシ、といった程度ですかね。

ログインURL変更よりも、パスワードを複雑にしてログイン試行回数制限(可能な限り厳しく)を設けた方が効果的です。

WordPress、プラグイン、テーマは最新の状態に

WordPress、インストールしているプラグインは常に最新の状態に更新しておく。プラグインやテーマは使用停止中のものも更新。使用停止中のプラグインやテーマは削除しておくのがベスト。

しかし最新の状態にしておけば、不正アクセスを防げるとは言い切れないところが悩ましい。

ほんの1例として、WordPress5.01、4.9.9より前のバージョンでは攻撃者に任意のphpコードをアップロードされ実行されてしまう脆弱性が発見されています。

ファイル転送は通信暗号化

送受信データをSSL/TSLで暗号化する、安全性の高いファイル転送ソフトを使用しましょう。僕はWinSCPを使っています。

ブログの常時SSL化

ブログを常時SSL化しておく。httpsから始まるアドレスになり通信が暗号化されます。

海外サーバーから/wp-adminアクセス制限機能のあるサーバーを選ぶ

/wp-admin以下のフォルダへは管理者以外アクセスの必要はなし。海外サーバーからのアクセスを制限できる機能があるレンタルサーバーを選んでおくのも有効です。

このサイトで使っているスターサーバーにも備わっている機能です。

また、スターサーバーには/wp-login.phpの国外IPアクセス制限、REST APIやXML-RPCの国外IPアクセス制限、ブルートフォースアタック(総当たり攻撃)を防ぐログイン試行回数制限、大量コメント&トラックバック制限などの機能が備わっています。

WAF(ウェブアプリケーションファイアウォール)が備わったサーバーを選ぶ

XSS、ディレクトリトラバーサル、クロスサイトスクリプティングなどの攻撃からブログを守ります。WordPressブログに対しては、WAFがあれば防御できる攻撃がほとんどです。

WAFは今や必須と言えるでしょう。

エックスサーバーでの設定例

エックスサーバーWAF設定
WAF設定をクリック
WAF設定:XSS対策、SQLインジェクション対策、ファイル対策、メール対策、コマンド対策、PHP対策
XSS対策、SQLインジェクション対策、ファイル対策、メール対策、コマンド対策、PHP対策の全てをONに

サーバーにWAFが備わっていなければ、WAF機能を備えたセキュリティプラグインがあります。

セキュリティ・プラグインを使う

高性能で信頼性の高いプラグインを。僕のお勧めはWordfence。様々な方法で攻撃して来る不正アクセスからWordPressブログを防御します。WAFの機能も備えており、様々な方法の不正アクセスをブロックする多彩な機能が盛り込まれています。

インストールしたままの標準設定でもセキュリティ対策能力は高い。設定を詰めれば現時点で最強のセキュリティプラグイン。

まとめ

phpや.htaccessを書き換えなくて済む方法だけをまとめてみました。

WordPressのセキュリティ対策は、なにか一つコレだけやっておけばOK!のようなものはありません。塀を作り上げて高くしていくようなもので、ひとつひとつの事を積み上げていくしかありません。蓄積と積み上げが大切。

足し算的な積み上げでセキュリティ対策の得点を上げていくようにしましょう。

絶対に大丈夫!な方法論はない、簡単な事ではありません。だからこそ、記事を増やしていくように、セキュリティ対策も意識して積み上げていく事が必要だと思います。ハッキングされた!改ざんされた!からでは遅いのです。

レンタルサーバーである程度の対策がされているので、その初期設定のまま使っていて、xmlrpc等で簡単に情報を晒してしまっているWordPressブログも多く見受けられる。レンタルサーバーで用意しているセキュリティ対策は、あくまで初心者向きの簡単なものでしかないのです。ステップアップを心掛けたいものです。