人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: logihot
●カテゴリ:コンピュータ インターネット
✍キーワード:ALL Apache ETC GROUP Hatena
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●35ポイント

以下の設定でいけます。

#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 で好きに扱えばよいというわけです。

◎質問者からの返答

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


2 ● virtual
●35ポイント ベストアンサー

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

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


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

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


アクセス拒否の方法

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

◎質問者からの返答

ありがとうございます。

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しにいっていたとおもいますが。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ