WordPressを運用する上で最低限気をつけるべきセキュリティ設定

不正アクセスされる経路

ブログの運営はアメブロやライブドアなどのブログサービスを利用すればバックアップやセキュリティなど保守面での運営負荷が減りますが、機能追加やカスタマイズ等の自由度が減るというトレードオフの関係があります。

ただし近年はブログサービス会社のサービスにも自由度が増しており、個人運営で利用するホスティング会社もバックアップツール提供やセキュリティ強化のサービスが付くなど、従来に比べて両者の差はなくなっているようです。

個人運用するならセキュリティ管理が重要であることは言うまでもありませんが、自分のサイトが不正アクセスによるハッキングにあったりマルウェア(ウィルスコード)を仕込まれることにより大事なデータを消されたりデータを改竄されるだけならまだしも、ボット化することで被害者であると同時に加害者になってしまい、間接的にネット犯罪に手を貸すことになることのほうがより危険です。

ハッキングまたはウィルス感染する原因はほぼ以下の3つのケースに集約しますので、WordPressを使う場合は基本的な対処方法さえ行っていればリスクは大幅に減るはずです。

  1. ローカルPCがウィルスに感染しFTPパスワードが盗まれ不正なファイルをアップロードされるケース
    • ウィルスソフトをきちんと運用(必須)
    • FTPではなくSFTPを使う(推奨)
  2. WordPress本体やテーマ、プラグインの脆弱性を突かれウィルスコードを仕込まれるるケース
    • 常に最新版にバージョンアップしておく(必須)
  3. WordPress管理画面のユーザーIDとパスワードを破られ乗っ取られるケース
    • 複雑な推測されにくいユーザーIDとパスワードを設定(必須)
    • 管理画面にBasic認証(推奨)
    • WEBサーバーのSiteGuard Liteが提供するWAF機能(推奨)
    • WordPressのSiteGuard WP Pluginでログインロック(必須)
    • 管理画面からの操作はHTTPS通信で行う(推奨)

管理すべきは自分のローカルPCとWEBサイトの両方であり、いったん自分のサイトがボット化されてしまうと、知らないうちに大量のスパムコメントやピンバック(記事中のリンク先に自動通知)を送ったりして、他サイトへのブルートフォース攻撃、アカウントリスト攻撃に加担しているかもしれません。

ブログのコメントでコミュニケーションをとる必要がなければ、WordPressのディスカッション機能はスパム攻撃に加担する可能性があるので無効化しておいたほうがよいと思います。

comment

WordPressサイトがWAF(Web Application Firewall)やログインロック機能等で不正アクセスを検知した場合に、アクセス元のIPをブロックしますが、多数の異なるIPのボットPCから一斉に攻撃されてしまうとセキュリティを破られる可能性が高まります。

基本防止策

インフルエンザなどの一般の病気と同じように、被害にあわないための防止策と、被害にあってしまった場合に最小限の被害に食い止めるための対処法が必要になります。

ローカルPC側のウィルス対策等は当然やるとして、今回はWEBサイト側のセキュリティ対策について以下の基本事項はちょっと本気だせば出来るので最低限やっとくべきだと思います。

  1. 基本防止策
    • adminへのパスワードリスト攻撃が多いのでadminユーザーを削除
    • パスワードを難しいものに変更
    • WordPress本体、テーマ、プラグインは常に最新版に更新
    • 管理画面にBasic認証(Basic認証でフォルダ単位のアクセス制御
    • FTPアカウント盗まれないように自分のPCのウィルス対策
    • FTPS(FTP over TLS/SSL)またはSFTP(SSH FTP)で暗号化(公開鍵暗号方式によるSSH接続
  2. 基本対処予防
    • WEBマスターツールに登録しマルウェア感染の通知を受ける

VPS(仮想サーバー)借りるならともかくホスティングサーバーでSFTPに対応しているところは少なく、公開鍵暗号方式は公開鍵と秘密鍵を作成して、公開鍵をサーバーのOpen SSHに登録して秘密鍵でアクセスという手続きが必要になるので、FTPSで十分だと思います。

追加防止策

サーバーのWAF(Web Application Firewall)機能はSQLインジェクションやクロスサイトスクリプティングなどの攻撃を高確率でブロックしてくれるので非常に有効なのですが、如何せん正当なアクセスと不当なアクセスを見分けるのが難しく過剰検知して403エラーを返すので仕事にならないという難点があります。

WordPressの場合、管理画面のURLがデフォルトでは決まっているので、SiteGuard WP Pluginのログインページ変更機能は不正アクセスに対して非常に有効だと思うのですが、如何せんWordPress HTTPSによる共有SSLと同居できないというネックがあります。

https

アカウントリスト攻撃防止を重視

  1. サーバーのWAFをオンにする。
  2. SiteGuard WP Pluginで定期的にログインページ変更
  3. SiteGuard WP Pluginのログインロック(3回失敗で一定時間ログインできない)
  4. SiteGuard WP PluginのWAFチューニングで過剰検知を緩和

HTTPSはHTTPによる通信を暗号化してセキュリティを強化したもので、共有SSL(独自ドメインの利用はできない)なら無料で提供されているケースが多いので、管理画面操作をHTTPSで暗号化することができます。

  • データ暗号化を重視
    1. WordPress HTTPSで共有SSLと管理画面をマッピング
    2. 閲覧用ドメインと管理画面用ドメインを分け、閲覧用にはWAF適用
    3. SiteGuard WP Plugin(ログインロックなど)

ただ僕のように使い方間違えると管理画面にログインできなくなるのでそのときはWordPressの該当pluginsフォルダが見つからなと一旦プラグインが無効化されるという特性を利用して以下の流れで復旧します。

  1. pluginsフォルダリネーム。
  2. pluginsフォルダ作成(空)。
  3. ログインできる。
  4. プラグインが見つからないので全プラグインが無効化されている。
  5. pluginsフォルダを元に戻す。
  6. WordPress HTTPSプラグイン削除。
  7. 他のプラグイン有効化。

このときWordPress HTTPSプラグインは一旦削除して再インストールしないと前の設定がそのまま適用され引き続きログインできなくなるので注意が必要です。