2013年7月31日水曜日

【apache】Limitを使ってHTTPメソッドごとにアクセス制限をする

■概要
前回、Locationを使ってIP制限をかける方法を紹介しました
http://kakakikikeke.blogspot.jp/2013/07/apachex-forwarded-for.html
今回は更にLocation+Limitを使ってアクセスされたパスとHTTPメソッドを
判断してアクセス制御する方法を紹介します

■設定
vim /etc/httpd/sites-enabled/000-default
<VirtualHost *:80>
    SetEnvIf X-Forwarded-For "192.168.10.101" deny_ip
    SetEnvIf X-Forwarded-For "192.168.10.102" deny_ip

    <Location /test>
        <Limit POST>
            Order deny,allow
            Deny from all
            Allow from env=deny_ip
            ProxyPass ajp://192.168.20.100:8009/sample-app/
        </Limit>
        <LimitExcept POST>
            Order allow,deny
            Allow from all
        </LimitExcept>
    </Location>
</VirtualHost>

上記設定後にターミナルから以下を実行して設定が反映されているか確認します

  • curl -X GET https://192.168.20.100/
  • ⇒deny_ipに登録されていればアクセスできる
  • curl -X POST https://192.168.20.100/
  • ⇒deny_ipに登録されていないとアクセスできない(apacheの403がそのまま返ってくることを確認する)

結果の通りですが、POSTをHTTPメソッドで指定した場合はエラーが返却されます

また設定に際してLimitとLimitExceptは基本ペアで設定するようにしてください
参考サイト:http://httpd.apache.org/docs/2.2/ja/mod/core.html

0 件のコメント:

コメントを投稿