14
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Apacheを2.2から2.4にバージョンアップしたら、Requireディレクティブでも、BASIC認証が適用されなくなってしまってた話

Last updated at Posted at 2025-12-15

はじめに

サーバのOSのバージョンアップと共に HTTPサーバApacheのバージョンが2.2から2.4に更新された時の話です。

なにが起きたのか

Apacheのバージョンアップによりアクセス制限の設定方法が変わったのは認識していたので、バージョンアップ後以下のように、「order/deny/allow」「Requireディレクティブ」 に記述変更しました。

Apache 2.2 (バージョンアップ前)
<Directory /var/www/html>
    order deny,allow         # 変更点
    deny from all            # 変更点
    allow from 192.168.10.   # 変更点

    AuthType Basic
    AuthName RegisterName
    AuthUserFile /var/www/keys/basic.keys
    Require valid-user
</Directory>
Apache 2.4 [NG] (バージョンアップ後)
<Directory /var/www/html>
    Require ip 192.168.10.   # 変更点

    AuthType Basic
    AuthName RegisterName
    AuthUserFile /var/www/keys/basic.keys
    Require valid-user
</Directory>

しかし、指定ネットワークからのアクセスでBASIC認証が適用されなくなり、該当ページに指定ネットワークのすべてのユーザがアクセス可能な状況になってしまっていました。(セキュリティの機密性の侵害)
(指定ネットワーク外から許可ユーザのアクセスも可能な状況だった)

なぜ起きたのか

Apache2.2では、IP制限BASIC認証の設定記述は別記述で、無関係と思っていました。(実際は、デフォルトで 「Satisfy All = AND条件」 の適用)
しかし Apache2.4では両方ともRequireディレクティブでの記述となっており、複数のRequireディレクティブは、デフォルトで 「RequireAny = OR条件」 の適用となってました。

そのため、単純な書き換えだけでは「IP制限 AND BASIC認証」ではなく「IP制限 OR BASIC認証」となってしまっており、どちらかの条件しか適用されてなかったのでした。

修正内容

下記のように「IP制限 AND BASIC認証」となるようにRequireAllディレクティブを追加

Apache 2.4 [OK]
<Directory /var/www/html>
    <RequireAll>                 # 変更点
        Require ip 192.168.10.

        AuthType Basic
        AuthName RegisterName
        AuthUserFile /var/www/keys/basic.keys
        Require valid-user
    </RequireAll>                # 変更点
</Directory>

なぜおきてしまったのか

  • Apache 2.2で、IP制限とBASIC認証の設定記述は関係なかったから関係ないだろう
  • 併記の場合 ANDだろう

との 「思い込み」

  • OSのバージョンアップだけでアプリケーションの変更は行わなかったこと
  • BASIC認証を行わない他の箇所のorder/deny/allowの書き換えでは問題なかったこと

からの 「テスト不足」 だったのだと考えています。

次起こさないために

設定ファイルを書き換えた内容については、

  • 影響範囲を踏まえたテスト項目の作成
  • 事前の十分なテスト

を実施することが必要と考えています。

最後に

サーバの更新(メンテナンス)時間が業務時間外であり、幸いなことに、メンテナンス終了後の次の業務開始直後に気づいたので、ログを確認し、大きなインシデントにならなかったのが幸いでした。

14
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?