web-dev-qa-db-ja.com

Apacheの「すべての許可が必要」は実際に何をするのですか?

私は、ApacheサーバーをUbuntu 13.04で実行されているApache/2.4.6に更新しました。以前は次のようなvhostファイルがありました。

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>

しかし、実行すると、「禁止されています。アクセスする権限がありません/」

少しグーグルを実行した後、サイトを再び機能させるために、vhostが次のようになるように、「すべて許可する」という行を追加する必要があることがわかりました。

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>

これが「安全」で、セキュリティ上の問題が発生しないかどうかを知りたいです。 Apacheの page を読んだところ、これは「Allow from all」および「Deny from all」ディレクティブによって以前提供されていた機能を模倣しています。このプロバイダーは、「許可」されている2つの引数のいずれかを取ることができます。または「拒否」。次の例では、すべてのリクエストへのアクセスを許可または拒否します。」

しかし、これがなんらかのセキュリティ上の問題であるかどうか、または過去にそうする必要がなかったのになぜ今やらなければならないのかについては触れていません。

98
John Crawford

2.4で変更されたアクセス制御構成、および古い構成は、いくつかの変更がないと互換性がありません。 こちら を参照してください。

古い構成がAllow from all(サービスへのアクセスがブロックされているIPアドレスはありません)、次にRequire all grantedは新しい機能的同等物です。

93
Shane Madden

私はそれが古い投稿であることを知っていますが、私がいつも使用している機能的な例を使用すると、もっと役立つと思います!

Apache 2.2では次のようになります。

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>

Apache 2.4では次のようになります。

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require ip myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>

注意してくださいhtacess認証を使用する場合、この新しい構文はいくつかのことができます悪い、予期しないこと、それがあなたのケースである場合、読んでください: https://unix.stackexchange.com/questions/413309/Apache- 2-4-wants-me-to-decide-require-valid-ip-or-require-valid-user そして、あなたは大丈夫です!