Apacheで設定するホスト制限を「正規表現で許可ホストを指定できませんか?」また「許可グループを設置して、一括で管理できないものでしょうか?」


■正規表現で許可ホストを指定できませんか?

aaaa56.hatena.ne.jpというドメインがあり、56の部分が変動し、aaaaは固定です。
その場合に「aaaa32.hatena.ne.jp」からは許可、「bbbb32.hatena.ne.jp」は拒否したいです。
そのやり方を知らないため、今は「allow from .hatena.ne.jp」のように書いています。

<イメージ>

order deny,allow
deny from all
allow from aaaa[0-9]{2}.hatena.ne.jp

■許可グループを設置して、一括で管理できないものでしょうか?

認証はグループを設定して、許可グループで許可を与えることができると思います。それと同じように、ホストでの認証についても、グループ設定して、そのグループで管理できないものでしょうか。
これはたぶん、無理だと思います。

<イメージ>

order deny,allow
deny from all
allow from HOGE_GROUP
host file /etc/httpd/.group

回答の条件
  • 1人2回まで
  • 登録:2008/05/11 00:01:03
  • 終了:2008/05/11 21:17:35

ベストアンサー

id:virtual No.2

virtual回答回数1139ベストアンサー獲得回数1282008/05/11 07:18:49

ポイント35pt

"SetEnvIf"と"Deny from env="を使うとできます。

下記が参考になると思います。


.htaccessで正規表現を使い特定のホストをアクセス禁止

http://sb.xrea.com/showthread.php?t=9432


アクセス拒否の方法

http://plasticdreams.org/archives/2006/08/21/1342/deny-refere-sp...

id:logihot

ありがとうございます。

order deny,allow

deny from all

allow from 192.168.1.0/25

SetEnvIf Remote_Host "aaaa[0-9]{5}\.hatena\.ne\.jp" Access

allow from env=Access

とすることで、目的達成できました!192.168.1.0/25だけ、SetEnvIfの中に書くとうまくいかなかったので、外だししています。あとHostNameLookupsをonにしないと、ドメイン制限できないですね。。

いままでは、allow from .hatena.ne.jp とやってたので、全部nslookupしにいっていたとおもいますが。。

2008/05/11 12:49:02

その他の回答(1件)

id:y-kawaz No.1

y-kawaz回答回数1421ベストアンサー獲得回数2262008/05/11 01:34:34

ポイント35pt

以下の設定でいけます。

#HTTP_HOSTを取得する為のダミー設定
order allow,deny
allow from all
deny from dummy.example.jp
#ホスト名の正規表現によって拒否
RewriteEngine On
RewriteCond %{REMOTE_HOST} !^aaaa[0-9]{2}\.hatena\.ne\.jp$
RewriteRule . - [F]

複数の許可(拒否しない)設定が必要ならRewriteCondを複数行書けば良いです。


基本はREMOTE_HOSTを mod_rewrite でマッチさせてるだけですが、ポイントはダミーの deny from を書いておくことです。

通常サーバの負荷を軽減する為に逆引きは行われないため、環境変数REMOTE_HOSTは設定されません。ですが、allow from 等でホスト名が使われると逆引きを行う必要が出るので逆引きが実行されます、この際に一緒に環境変数REMOTE_HOSTも設定されることを使います。

あとはこの変数の値を mod_rewrite で好きに扱えばよいというわけです。

id:logihot

ありがとうございます。下の方の方法でうまくいきましたが、mod_rewriteを使う方法も勉強したいと思います。

2008/05/11 12:49:43
id:virtual No.2

virtual回答回数1139ベストアンサー獲得回数1282008/05/11 07:18:49ここでベストアンサー

ポイント35pt

"SetEnvIf"と"Deny from env="を使うとできます。

下記が参考になると思います。


.htaccessで正規表現を使い特定のホストをアクセス禁止

http://sb.xrea.com/showthread.php?t=9432


アクセス拒否の方法

http://plasticdreams.org/archives/2006/08/21/1342/deny-refere-sp...

id:logihot

ありがとうございます。

order deny,allow

deny from all

allow from 192.168.1.0/25

SetEnvIf Remote_Host "aaaa[0-9]{5}\.hatena\.ne\.jp" Access

allow from env=Access

とすることで、目的達成できました!192.168.1.0/25だけ、SetEnvIfの中に書くとうまくいかなかったので、外だししています。あとHostNameLookupsをonにしないと、ドメイン制限できないですね。。

いままでは、allow from .hatena.ne.jp とやってたので、全部nslookupしにいっていたとおもいますが。。

2008/05/11 12:49:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません