制作会社から制作会社じゃない会社に転職が決まりました。制作会社で学んだことを残らず記事にしたいと思います。

パンDKOTORI Blogの公式キャラクター「パンD」です。
コーディング.htaccess更新ボタンを押すと403エラー[WordPress]

更新ボタンを押すと403エラー[WordPress]

2014年02月21日WordPress サーバー .htaccess 
更新ボタンを押すと403エラー[WordPress]記事のアイキャッチ画像

WordPressの更新ボタンをクリックすると403エラーが表示される場合、サーバーのセキュリティ機能「WAF(ウェブアプリケーションファイアウォール)」を疑いましょう。

まえがき

みなさん、WAF(ウェブアプリケーションファイアウォール)ご存じですか?
2012年の中盤くらいからロリポップやヘテムル等で導入され始めたWebアプリケーション上の脆弱性をカバーする機能です。

KoToRiはセキュリティ関係はサッパリなのでWAFについて詳しく解説することはできませんが、このWAFは重大な欠点があります!

WAFを有効にしているとWordPressの管理画面上で記事の更新、及びテンプレートの更新を行うと403エラーが出ます。

WAFで403エラー

WordPressを使っていて403エラーが出る場合、まずWAFを疑いましょう。

WAF出始めの頃から、この欠点はいろんなブログで紹介されていてKoToRiも当初から知っていましたがWAFが登場して約1年半たった今、いい加減改善されてるだろうと思い久々にWAF有効にして更新ボタンをポチってみました。

まぁ、案の定403エラーが表示されました。

いい加減どうにかしてよ!ということで、KoToRiBlogでお世話になっているロリポップに直接問い合わせてみました。
その時のやり取りを紹介していこうと思います。

やり取りなんかどうでもいいから解決方法教えろよ!という方のために先に結論を書いておきます。

現時点では結局WAFを無効にするしかないです笑

WAFとWordPressを共存できるかロリポップに問い合わせ

そもそも、ことの発端はロリポップに強制的にWordPressのログインページにアクセス制限をかけられたことから始まりました。

どうやらロリポップは、WordPressへの総当たり攻撃や辞書攻撃を検知すると勝手にログインページにアクセス制限を掛ける機能が導入されているようです。
いつのまにか。

WordPressの.htaccess編集

上のページに対処方法が記載されているのですが【アクセスするIPがすぐに変わってしまう場合】の手順に「『WAF』を有効にする」というのがあります。

ここで誰もが思うはずです。
WAF有効にするとWordPress使えねーじゃん!知ってるくせに無責任なこと書いてんじゃないよ!

でも、こんなこと書いてるくらいなので、もしかするとWAFとWordPress共存できるようになったのかな!と期待して試してみたわけです。

結果403エラーが表示され、あの頃と何も変わっていないくせに「『WAF』を有効にする」とか書いてある事にちょっとプンスカしたので問い合わせてみた次第です笑

WAFを巡るロリポップとのやりとり

まず、KoToRiはこんな感じでメールしました。

.htaccessの書き換えが行われたのですが
IPが固定ではないためページ上の
「【アクセスするIPがすぐに変わってしまう場合】」
を参考に復旧したいのですが

WAF設定を有効にするとWordPressのテンプレートの更新や記事の更新が出来ません。

WAF設定を有効にしつつWordPressも問題なく動作するような
対処法はございますか?

これに対しての返信がこちら

WAF設定を行っている該当ドメイン名をご記載の上、
再度ご連絡いただけますでしょうか。

お客様の操作についてのみ制限を解除して調整する対応を承ります。

お客様の操作についてのみ制限を解除して調整する対応を承ります。
これは期待が膨らみます。

指示通り制限解除してほしいドメイン名を知らせます。

/

WAF設定しているのは上記ドメインになります。

すると、こんな返信が。

お問い合わせいただきました件についてですが、
「/」の1週間分(2/6~2/11)のログを
調査いたしましたが、WAFの検知ログを確認できませんでした。

WordPressの記事やテンプレート更新時にエラーに
なったということでしたが、その時の状態について
再度詳細をご連絡いただけないでしょうか。

ログ要るんだ

WAFとWordPressの共存を試してから1週間経っちゃってたのでもう一度WAF有効にしてエラーをログに残します。

/

WAF設定の上記ドメインの2/14のログをご覧ください。

ここでやっと具体的な作業指示が来ました。

エラーを回避いただく場合、今回「WAF設定」の対象となったものについて
動作した「WAF設定」のツールを設定から除外いただくことで制限の対象と
ならないように調整いただくことが可能です。

対応いただく場合、以下の内容を記述した「.htaccess」をWEBサーバー上に
設置いただくことで調整いただけます。

 SiteGuard_User_ExcludeSig xss-try-4

「xss-try-4」がルール名となり、そのルールを「WAF設定」から
除外する記述となります。

ほうほう。.htaccessに

SiteGuard_User_ExcludeSig xss-try-4

を追加してやればいいそうです。

.htaccessってサーバー直下に置けばいいのか迷うところですが、とりあえず直下に置いとけばいいみたいです。

サーバー直下に.htaccessを設置して再びWAFを有効にして「更新」を押してみると。。。

403エラー

話がちがーう!!!
直らなかった旨をすかさずメールしました。

ご案内いただいた.htaccessですが設置しても403エラーが改善されませんでした。
ルートの.htaccessの最後の行に
SiteGuard_User_ExcludeSig xss-try-4
を追記いたしました。

すると、こんな返事が。

ご連絡いただいた日時、ドメインについて、こちらでも「WAF設定」
における動作制限を確認いたしました。
今回は以下のルールが影響し、制限の対象となっております。

 sqlinj-9
 sqlinj-13

以下の内容を「.htaccess」に追加いただくことで調整いただけます。

 SiteGuard_User_ExcludeSig sqlinj-9
 SiteGuard_User_ExcludeSig sqlinj-13

なんだかな~って感じですが指示通り.htaccessに案内にあるコードを追加して再度試してみました。

やっぱり403エラー

なんかだんだんやり取りが面倒くさくなってきましたが、WAFとWordPressを共存させることではなく、この一連の流れをブログの記事にすることを目標にして頑張って問い合わせ続けました笑
ぶっちゃけこの時点でWAFとWordPressの共存は諦めてました!

SiteGuard_User_ExcludeSig xss-try-4
SiteGuard_User_ExcludeSig sqlinj-9
SiteGuard_User_ExcludeSig sqlinj-13
を.htaccessに記述して試してみたのですが、直りません。
403エラーが出ます。

これに対しての返信がこれ。

前回のご案内の .htaccess の内容に下記内容を
追加していただけますでしょうか。

SiteGuard_User_ExcludeSig sqlinj-21
SiteGuard_User_ExcludeSig sqlinj-10

なお、一度に検知できる拒否の条件は1つのみ
となっておりますため、複数の条件で拒否されている場合には
引き続きエラーが表示される可能性もございます。

その場合にはお手数ではございますが再度お問い合わせを
いただけますでしょうか。拒否条件を再度確認し
別の条件での拒否が行われておりましたら追加でのご案内を
させていただきます。

ルールを除外いただくと、
該当のルールでのみ制限することができる外部からの
不正アクセスによるPHPの悪用を防ぐことはできなくなります。

設定が必要な場合、操作いただいた後は除外するための記述を
削除いただく等、通常の状態に戻していただくことなどをご検討ください。

これで出来なかったらいい加減諦める!と意気込んで指示通りに.htaccess修正して「更新」ボタン押してみると。。。

またもや403エラー

これはお手上げです。
きっとWAFを有効にしつつWordPressで投稿の更新やテンプレートの更新時の403エラーを回避することは出来ないのでしょう笑

仮に.htaccessにWAFのいくつかのルールを除外する指定をすることで、403エラーが回避できたとしても、ロリポップからのメールにあるように、本来であれば制限できる不正アクセスを弾けなくなってしまう可能性があります。

まとめ

結論。
WAFを有効にしている場合、WordPressの管理画面上で記事の更新、及びテンプレートの更新時に出る403エラーは回避できません。
もし、WAFとWordPressを共存させる方法を知っている神がいたら是非方法を教えてください。

結局WordPressを使うならWAFは無効にするしかありませんね。

もしクライアントがサーバーのコンパネとかバリバリ入れる人だったら記事更新時だけWAFを無効にするという方法で解決ですが、さすがに面倒くさすぎるでしょう。

諦めよ。

でも、聞いてください。
何故かWordPress 3.7.1だとWAF有効にしてても403エラーが出ません

WordPressのバージョンが影響しているのかは定かではありませんが、
同じロリポップサーバーの中でもWordPress 3.8.1の方は403エラーが出るのですが、3.7.1の方は403エラーが出ません。

不思議ですね笑

この件は、今回のやり取りでMPを大幅に削られたので回復できしだいロリポップに問い合わせてみたいと思います。

シェアするみんなシェアしてね

フォローするフォローする

いつもKOTORI Blogをご覧いただきありがとうございます。Facebook、Twitterを通じて、皆様と交流していき色んな情報を共有していければな~と思ってます。お気軽に登録してください!

基本フォロー返します。

RSSを登録する

RSSはこちらから。

follow us in feedly

Feedly使ってる人はこちらから。

Buy me a Beer

動く!パンDのLINEスタンプ
好きな人にアプローチスタンプ
パンDのLINEスタンプ

関連する記事関連する記事も読んでみてね

コメント