X-Forwarded-Forを使用して、IPアドレスでのアクセス制限

htaccessでWebページに対するアクセス制限をかける際の基本的な記述方法は以下となる。

■特定のホストのアクセスを制限
(全てを許可して、拒否するドメインやIPアドレスを記述)

order allow,deny             # 許可して拒否
allow from all               # 全てのアクセスを許可
deny from aaa.bbb.ne.jp      # aaa.bbb.ne.jpのアクセスを拒否
deny from 192.168.           # 192.168.???.???のアクセスを拒否

 

■特定のホストのアクセスのみを許可

(全てを拒否して、許可するドメインやIPアドレスを記述)

order deny,allow             # 拒否して許可
deny from all                # 全てのアクセスを拒否
allow from .aaa.ac.jp        # aaa大学からのアクセスを許可
allow from 10.10.10          # 10.10.10.???からのアクセスを許可

 

しかし、環境によってはプロキシや負荷分散装置(ロードバランサ)などがありアクセス元のIPアドレスがクライアントのものにならない場合がある。

そのような環境では上記のようなhtaccessの記述方法だとアクセス制限をすることができない。

 

■X-Forwarded-Forを使用する

通常はプロキシサーバを経由してHTTPリクエストが送信された場合、リクエストの送信元はプロキシサーバになるが、プロキシサーバによっては(設定次第?)では、HTTPヘッダの「X-Forwarded-For」に要求元のクライアントのIPアドレスを通知することができる。

そのような環境では、「X-Forwarded-For」ヘッダにクライアントのIPアドレスが入るので、そのヘッダ情報を利用してhtaccessを記述すれば良い。

※通常のアクセス制限設定時の記述と違うので注意が必要!!!

※サブネットの計算が必要なのと、正規表現を使用してアクセス制限するIPアドレスの範囲を指定

実際の記述例は以下のようになる

$ vi .htaccess

※作成する条件は、社内(学内)のパソコンと各携帯電話(DoCoMo、au、Softbank)のみアクセス

を許可(部分的に省略)

<Limit GET>

# 社内(192.168.1.1~192.168.1.124)を許可

SetEnvIf X-Forwarded-For "^192\.168\.1\." allowed_access

########################### docomo ###########################

#210.153.84.0/24

SetEnvIf X-Forwarded-For "^210\.153\.84\." allowed_access

#210.136.161.0/24

SetEnvIf X-Forwarded-For "^210\.136\.161\." allowed_access

#210.153.86.0/24

SetEnvIf X-Forwarded-For "^210\.153\.86\." allowed_access

#124.146.174.0/24

SetEnvIf X-Forwarded-For "^124\.146\.174\." allowed_access

############################################################

############################ au #############################

#210.230.128.224/28     Range:210.230.128.225~238

SetEnvIf X-Forwarded-For "^210\.230\.128\.(22[5-9]|23[0-8])" allowed_access

#121.111.227.160/27     Range:121.111.227.161~190

SetEnvIf X-Forwarded-For "^121\.111\.227\.(16[1-9]|17[0-9]|18[0-9]|190)" allowed_access

#222.5.63.0/25          Range:222.5.63.1~126

SetEnvIf X-Forwarded-For ^222\.5\.63\.([1-9]|[1-9][0-9]|10[0-9]|11[0-9]|12[0-6])$"" allowed_access

#222.5.63.128/25        Range:222.5.63.129~254

SetEnvIf X-Forwarded-For "^222\.5\.63\.(129|13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9]|20[0-9]|21[0-9]|22[0-9]|23[0-9]|24[0-9]|25[0-4])" allowed_access

#61.117.2.32/29         Range:61.117.2.33~38

SetEnvIf X-Forwarded-For "^61\.117\.2\.(3[3-8])" allowed_access

############################################################

########################### Softbank ##########################

#123.108.236.0/24       Range:123.108.236.1~254

SetEnvIf X-Forwarded-For "^123\.108\.236\." allowed_access

#123.108.237.0/27       Range:123.108.237.1~30

SetEnvIf X-Forwarded-For "^123\.108\.237\.([1-9]|[12][0-9]|30)$" allowed_access

#211.8.159.128/25       Range:211.8.159.129~254

SetEnvIf X-Forwarded-For "^211\.8\.159\.(129|13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9]|20[0-9]|21[0-9]|22[0-9]|23[0-9]|24[0-9]|25[0-4])" allowed_access

#202.253.96.0/28        Range:202.253.96.1~14

SetEnvIf X-Forwarded-For "^202\.253\.96\.([1-9]|[1][0-4])$" allowed_access

############################################################

order deny,allow

deny from all

allow from env=allowed_access

</Limit>

広告
カテゴリー: その他 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中