当社(株式会社Welcart)では、Welcart やその関連のプラグインの開発およびユーザーの皆様からご依頼をいただく開発・制作案件にて、攻撃の標的となる穴(セキュリティーホール)を残さないよう細心の注意を払い、複数人によるチェックを行っています。しかしながらWebサイトを運用する上では、システム側だけのセキュリティー対策では不十分で、運用者が自らリスクを認識し安全な運用を心掛ける必要もあります。ここでは、当社の開発におけるセキュリティーポリシーと運用上気を付けなくてはいけないセキュリティー対策について具体例を挙げます。
開発側のセキュリティー対策
当社開発部が中心となり、品質の管理については日々議論が行われています。特に、最新のコーディングについては厳密にルールを守っているものの、開発を始めて10年以上が経っている Welcart には古いコードもかなり残っており、それらをどの様な優先順位で修正すべきかは課題です。今現在では主に次の対策を継続的に行うことで品質管理を行っています。
Plugin Security の順守
WordPress.org では、プラグインを開発する上でのハンドブックを公開しています。特に 「Plugin Security」 はプラグインやテーマの開発を行う上で非常に重要なガイドラインを提供してくれています。弊社でもこれをガイドラインとして開発者のセキュリティー教育を行っています。
WordPress Coding Standards の順守
同じくWordPress.org では、WordPressを使用した開発を行うときのコーディング規約(WordPress Coding Standards)を公開しており、このコーディング規約に則ってコーディングを行うことで、サニタイズやエスケープを徹底することができます。弊社では、このコーディング規約をチェックするツールとして、全てのエンジニアのエディターに PHP Code Sniffer(WPCS)をインストールさせています。これによって、サニタイジングやエスケーピングに漏れが無いようチェックを行っています。さらに、このチェックはレポジトリへのコミット時にも自動でチェックがされるようCI(Continuous Integration)を導入しており、継続的な品質管理を行っています。
第三者のセキュリティー診断
それでもセキュリティーホールを完全に無くすのは至難の業です。例えば、Welcart以外のプラグインやサーバーの設定などもセキュリティーホールを生み出す原因になりうるものです。そこで当社は、専門の機関に診断を依頼しセキュリティーホールの見落としが無いかをチェックしています。
脆弱性修正の公開
リリースした製品について、専門の機関による診断、あるいは第三者からの報告でセキュリティーホールが明らかになった場合は、直ちに修正を行い修正版をリリースします。ユーザーの皆様には、直ちにこの修正版あるいは最新版にアップグレードしていただきますようお願いいたします。
このインフォメーションは、Welcart.com で情報を公開しています。 「過去の脆弱性の修正一覧」
また、当サイトでご登録いただいている会員のうち「メールでの案内を受け取る」としているユーザーにはメールでもお知らせしています。会員のご登録がこちらから行います。
「会員ログイン」
運用上のセキュリティー対策
セキュリティーの対策をとる上で、システムの開発におけるセキュリティーポリシーは大変重要ですが、運用上のセキュリティー対策も並行して行うことで初めて安全なWebサイトの運営が可能となります。WordPressの利用では次のことに気を付けて運用を行ってください。
ブルートフォース対策
攻撃者がログインページにて、パスワードを変えてはログインを試みています。これはロボットを使用して自動で行われるので、延々とログインを試されることになります。もし単純なパスワードの場合は簡単にログインされてしまうでしょう。WordPressの管理画面にログインされてしまうと、攻撃者は何でもできてしまいます。それだけは何としてでも阻止しなくてはいけません。このような攻撃には、次のうち1と2の対策だけでもほとんど侵入を許すことはなくなります。
- パスワードを複雑なものにする1234などの単純なパスワードでは簡単に入られてしまいます。予測できない文字列で10桁以上のパスワードが必要です。また、定期的にパスワードを変更するのも効果的です。
- プラグインを用いて阻止するSiteGuard WP Plugin が有効です。パスワードだけでなくキャプション文字を入力されるタイプですのでログインは強力になります。また、何度もログインに失敗した場合は一定期間アクセスを拒否することができるので、大量アクセスしてくるブルートフォース攻撃にも有効です。
- ログインページにBasic認証をかけるwp-login.phpにBasic認証をかけることでログインを難しくします。ブルートフォースアタックを受けた際には、ログイン試行による過負荷によりサーバがダウンする場合があります。Basic認証をかけることでログイン試行前にブロックを行い、ブルートフォースアタックによる過負荷を未然に防ぐことができます。ただし、wp-adminフォルダにBasic認証をかけてはいけません。このフォルダは通常のお客様もアクセスする可能性がありますので注意が必要です。
- ログインログの確認身に覚えのないログインが無いかを定期的に確認しましょう。怪しいログインがあった場合は直ちにパスワードを変更して、どの様な経路で侵入されたのかを調査しなくてはいけません。ログインログは、上記の SiteGuard WP Plugin で見ることができます。
アップグレード・メンテナンス
新機能の追加だけでなく不具合の修正などに伴い、WordPress、プラグイン、テーマは頻繁にアップデートを繰り返します。修正には、新たに見つかったセキュリティーホールの修正なども含まれていますので、定期的にアップグレードを行うことはとても重要です。アップグレードの重要性とその方法について記事がありますのでこちらもご参照ください。 「アップグレードの重要性とその方法」
その他の対策
- プラグインやテーマの必要性を精査セキュリティーホールはWordPress本体よりもプラグインやテーマを警戒すべきです。使用するプラグインは少ないほど危険性が低いと考えられますので、さほど必要でないプラグインはいっそ使用しないよう見直してみるべきです。不正アクセスを受けた場合、バックドアを仕組まれたプラグインをインストールされる場合があります。そのままにしておくと、バックドア経由で自由にアクセスされてしまう可能性があります。利用しているプラグインを管理、メンテナンスすることで攻撃によりインストールされたプラグインを早期に発見できるようになります。
- XML-RPCの利用を禁止するこの機能を駆使しているサイトはそう多くはないはずです。にもかかわらず xmlrpc.php への攻撃は非常に多くなっています。必要なければアクセス拒否設定をしておきましょう。Jetpack プラグインで一部 XML-RPC を使用しているようですが、XML-RPCを有効にした状態で設定を誤ってしまうとそこから侵入されてしまうケースがあります。必要でなければオフにしておいたほう良いです。
- サーバーのメンテナンスマネージドではないサーバー、AWSなどの自分で管理しなくてはいけないサーバーを使用している場合は、ミドルウエアの更新も重要です。古いPHP、OpenSSL には脆弱性がある可能性が高く、可能な限りバージョンアップを行ったほうが良いです。定期的にメンテナンスしましょう。
- 正しいSSLの利用をサイト全体をSSL化する常時SSL化はECサイトには必須です。SSL(HTTPS)を利用することで、ブラウザとサイト間での通信が暗号化されます。暗号化により途中の経路で盗み見ることや、同じ内容をもう一度送ることができなくなります。そうしたことから現在では、検索エンジンを始めとした多くのサービスで「常時SSL化」を推奨しています。自分のサイトが正しくSSL化されているか、こちらの記事を参照して今一度確認してみてください。「常時SSL化の設定方法」
- WAF の導入様々なホスティングサービスで WAF を利用できるものがあります。これは積極的に利用すると良いでしょう。ただし、Welcart に必要なアクセスまで拒否してしまう場合があります。その時はちゃんとホワイトリストを登録できるサーバーを選ぶべきです。
ECサイトは、お客様の個人情報を扱うリスクの高い WordPress 運用です。しかし、開発者と運用側が互いにセキュリティーを十分に意識し運用することで、堅牢なサイトとして維持・運営が可能だと思います。WordPress のメリットを最大限利用するために、しっかりとしたセキュリティー対策を心がけましょう。