スポンサーリンク
2013年09月03日
記事毎に異なるJavaScriptを実行させる必要があったのですが、デフォルトのままだと、記事内のJavaScriptは無効となります。(と書いたのですが、権限を変更すれば大丈夫みたいな記事を見つけました。でも結局WAFが有効だとダメなのでしょうね。)プラグインを利用すればよいということが分かりましたが、不安定なること嫌うため、あまりプラグインを使っていません。もう少し調べてみると、カスタムフィールドを使えば比較的簡単に実現できることを知りました。それはとてもシンプルな仕組みで、カスタムフィールドにJavaScriptのコードを入れておき、single.phpで読み込むというものでした。
ローカル環境でテストを行い問題がなかったため、リモート環境で試すことにしたのですが、カスタムフィールドに<script>
タグがあると保存されません。そこで、ローカルとリモートで何が違うのかを調べたところ、このブログを置いているロリポップ!に問題(問題ではないのですが)があることが分かりました。
結果として、ロリポップ!の標準機能であるWAF1(Web Application Firewall)が原因でした。
さっそくWAFをオフにして試してみると、<script>
タグが受け付けられ問題が解消しました。
WAFの設定は、ユーザ専用ページのWEBツール
> WAF設定
です。
WAFをオフにして2週間ほどたった頃、ロリポップから一通にメールが届きました。
現在、ロリポップ!において、第三者からの大規模攻撃により WordPress を
ご利用中のお客様のサイトが改ざんされる被害が発生しております。
公式サイトにもアナウンスが掲載されました。
2013/08/28
【重要】WordPressをご利用のお客様へ
http://lolipop.jp/info/news/4148/
このメールを受け取る以前から、ロリポップのWordPressで不正アクセスや改ざんが発生していることは、ちらほらと耳にしていました。また、WAFをオフにしていたことが気がかりでしたので、何か対策をすることにしました。
ロリポップ上のWordPressをWAFで防御する方法 - HASHコンサルティングオフィシャルブログ
http://blog.hash-c.co.jp/2012/12/how-to-protect-your-wordpress-on-lolipop.html
なるほどと思い、上記サイトを参考に設定してみました。
サブドメインを利用している方は、最後までお読みください。
WordPress HTTPS (SSL) をインストール。
プラグインの有効化と設定。
SSL Host: https://・・・.jp/(ロリポップの指定URL)
Port: 443
Force SSL Administration: 有効
Force SSL Exclusively: 有効
Save Changeをクリック
・・・管理画面にアクセスできなくなりました。
閲覧はできるが管理画面だけ開けない。嫌な感じがしつつ、プラグインを外してみることにしました。
ftpで、wp-content/plugins/wordpress-httpsを削除
再度アクセスしてみると、このようなメッセージとともに管理画面にアクセスできるようになりました。
そこで、WordPress HTTPS (SSL)を再インストールしましたが、どこかに設定情報が残っているらしく、再び管理画面にアアクセスできない状態になりました。やはり、プラグインに問題があるようです。
そこで、本家サイトでプラグインを無効にする方法を調べました。
http://wpdocs.sourceforge.jp/FAQ/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0
16 管理パネルにアクセスできないときに全プラグインを停止するには?
上記手順に従い作業を終わらせ、ページを更新するとプラグインが全て無効になっている状態で、管理画面へのアクセスが可能となりました。
次に、必要なプラグインを有効にして、WordPress HTTPS
を削除しました。
アクセスできないときに、ブラウザのアドレスバーを見ていると、WordPress HTTPS
の機能で、blog.matomerge.com/wp-admin/
にアクセスすると、設定したSSL Hostのhttps://・・・.jp/
にリダイレクトしていることが分かりました。というか、そういうプラグインですよね。
サブドメインから独自ドメインにリダイレクトされるため、管理画面にアクセスできなくなっていました。そりゃそうですね、凡ミスです・・・
そこで、再々度WordPress HTTPS
をインストールして、HOST設定をサブドメインのルートである`https://・・・.jp/***/にしてみたところ、問題なく動作するようになりました。
ロリポップの管理画面で、アクセス制限を設定します。
もし、.htacceess
がすでに存在する場合は、上書きされるかもしれませんので、バックアップしておくことをおすすめします。
ルートの.htaccess
を編集します。
以下の内容を追加します。blog.matomaerge.com
は環境に合わせて変更してください。
SetEnvIf Host "^blog.matomaerge.com$" allow_host
order deny,allow
deny from all
allow from env=allow_host
satisfy any
WAFの設定変更
当初の目的であるWAFを閲覧用と管理用で切り替えます。
これでWordPressの管理画面へアクセスするときは、認証がかかります。
httpsでアクセスしていることが確認できました。そして、WAFが無効になっているので、カスタムフィールドに<script>
タグを追加することも可能になりました。
手順のみのざっくりとした内容でしたので、最初に紹介したサイトで詳細をご確認ください。
不慣れなことはしないほうがいいですね。再インストールという悪夢がよぎりました。といっても、セキュリティ対策は問題が起こってからでは遅いですから、いい勉強になりました。
http://lolipop.jp/waf/ ↩