ブロギングライフ

ブログサイト運営関連、AdSenseについての情報などを発信しています。

原因不明の403 エラーが発生した場合の対処法 – WAFが原因の可能性があるため一旦無効にしてみます

原因不明の403 エラーが発生した場合の対処法 – WAFが原因の可能性があるため一旦無効にしてみます

昨日、運営するフォーラムサイトの拡張機能の設定を変更しようとしたところ、”403 Forbidden” のエラーメッセージが表示されました。Forbiddenは、日本語で「禁じられた」、「立入禁止の」、「ふれてはいけない」などの意味を持つ言葉です。

ウェッブサーバーがクライアントからの要求を認めない(却下)した場合にHTTP ステータスコード 403が返されます。管理やアクセス権限を持たないクライアントが、アクセスを認められていないディレクトリにアクセスしようとした時などにも、403エラーとなります。

403 エラーが発生する原因についての調査

エラーが発生した場合、原因として考えられる可能性のある事柄を一つ一つ調べていくのが基本です。

フォーラムサイトの管理者でログインしていたのですが、管理者のサイトオーナーが別のIDで登録していたことを思い出しました。サイトオーナーの管理者にログインし直して、設定を行なおうとしましたが、再度403エラーが表示されました。

アドミニストレーター(管理者)のディレクトリのアクセス設定を少し緩めてみました。しかし、エラーが依然として発生して、設定を行うことができません。拡張機能のプログラムを一旦無効にして、削除してから、再インストールしてみましたが結果は同じでした。

数日前にGoogleからXSSの脆弱性が確認されたベンダーファイルリストの通知を受け取った後で、XSSへの対策として .HTACCESS の設定を加えました。XSS対策を.HTACCESSに追加したことが何らかの関連性があることも考えられたため、一旦、追加したコードを削除しました。しかし、403 エラーの問題は解決しませんでした。

サーバーのキャッシュにエラーとなる原因が残っている可能性もあるため、キャッシュの削除(パージ)をしてから、それぞれの変更を行っていました。ブラウザキャッシュやクッキーが影響していることもあり得ると思い、Chrome シークレットモードやFirefoxで新たに管理者としてログインして設定しようとしても、依然として403 エラーが発生しました。

問題が発生したフォーラムサイトは、ミックスホストのサーバを使用しています。同じフォーラムプラットフォーム、phpBBを使用しているエックスサーバーでは問題が発生していません。使用している拡張機能の構成もほぼ同じです。

PHPのバージョンは、ミックスホストを使用しているサイトでは5.6、エックスサーバーは7.1です。PHP バージョン7 に対応していない拡張機能などもありますが、今回の場合、最新のバージョンを使用しているサイトでは問題なく動作していて、PHP5.6の方で動作していない状態です。2017年12月の時点でPHPを使用しているサーバーの9割はPHP 5.6を使用しています。PHPのバージョンなどの互換性で問題が起こるとは思えません。

2時間位いろいろ試したのですが、設定を行おうとすると403のエラーが発生して設定を実行できない原因は分かりませんでした。時間は深夜2時を過ぎてきて、頭が動かなくなってきました。このような状況に陥った場合、思いつくところは全てやってみたと思いがちなので、諦めて翌日に再調査しようかと思いながら、鈍い動きの状態の頭にムチを打って、状況を客観的に見直しました。

WAFが原因の可能性

エックスサーバーでは問題が起こらず、mixhostでは起きているため、サーバー側の仕様や設定などの可能性もあると考えて、mixhostのサイトに行って、「原因不明の403エラー」で検索してみると、以下の様な簡潔な説明のページが表示されました。

原因不明の403エラーが発生した場合、WAFによりアクセスが遮断され、エラーが発生している場合がございます。WAFを無効化する事で問題を解決できる場合がございますので、一度お試し下さい。

『今回の現象、状況を考えるとWAFが原因の可能性は高い!』と思い、早速WAFを無効にしてみることにしました。

mixhostでWAFの設定を無効にする方法

mixhostは、オープンソースのWAFモジュール ModSecurity を使用しています。以下にミックスホストでのModSecurityを無効にする手順を紹介します。

ミックスホストのcPanelにログインして、セキュリティの中のModSecurityをクリックします。

Cpanelのセキュリティアイテム内のModSecurityをクリックします

ModSecurityの設定画面が表示されます。「すべてのドメインの構成」と「個々のドメインの構成」からModSecurityの有効と無効の設定切り換えを行うことができます。

一旦、ModSecurity 全てのドメインの構成を無効にします。「全てのドメインに対して ModSecurity が有効になっています。ドメインの ModSecurity は無効にできます。」と表示されている文内の[無効]を押します。

全てのドメインのModSecurityを無効にします

「構成に関連する問題をトラブルシューティングする場合のみ、ModSecurity を無効にして下さい。」とのメッセージが表示されています。今回はまさにトラブルシューティングなので該当します。[すべて無効にする]のボタンを押します。

ModSecurityを無効にする確認メッセージ画面

「全てのドメインに対して ModSecurity が無効になっています。」のメッセージが表示されます。

ModSecurity 無効化完了メッセージ

以上で、ミックスホストのWAF、ModSecurity を無効にする作業は完了です。

403 エラーが発生していたサイトに戻り設定変更を行なったところ、403 エラーは表示されず、無事に設定を行うことができました!

WAFは、サイトのセキュリティを高める効果がありますが、時としてサイトの設定などを行う際に障害となる場合があります。今回のフォーラムサイトの拡張機能設定時に403 エラーが発生する原因はWAFであることが確認できました。

備考:
サイトの設定などの際にWAFが原因で403エラーが発生する場合は、一旦、WAFを無効にして設定を行なって、再び有効に戻すことをお勧め致します。

サイトの拡張機能の設定後、再び、ModSecurityを全てのドメインで有効にもどしました。

作業終了後、再びModSecurityを有効に戻しました

サイトを運営していると、問題が発生することがあります。問題はできるだけ避けたいと思いますが、ある意味避けられないところもあります。問題が発生した場合、できるだけ冷静に一つ一つ原因の可能性を探ることが肝要となります。

備考:
今回の403エラーの原因はサーバーが利用しているWAFが原因でしたが、WAFを使用していることが問題なわけではありません。WAFは、サーバーのセキュリティを高めるための機能です。新しい技術を積極的に取り込んだレンタルサーバーを提供しているのがミックスホストの特徴です。ミックスホストのレンタルサーバーやサポートについては、個人的にはとても気に入っています。

コメントを残す(承認後表示されます)

*
*
* (公開されません)

Return Top