web-dev-qa-db-ja.com

IPアドレス範囲へのアクセスを制限する

.htaccessを介して、会社のイントラネットへのWebリソースへのアクセスを制限しようとしています。残念ながら、Allow from …を介したアプローチは役に立たず、サブネットを十分に理解していないため、問題をトラブルシューティングできません。

私のIPアドレスは(プライバシーのために最初の2ブロックに置き換えられています)1.2.70.59、ネットマスクはifconfigによって0xffff0000、つまり255.255.0.0として与えられます。 IPアドレス計算機を使用して、これからサブネットを取得しました。

スタックオーバーフローに関する回答 は、次のように動作するはずだと考えさせられました。

Order deny,allow
Deny from all
Allow from 1.2.0.0/255.255.0.0

または、CIDRを使用(最後の行のみを表示):

Allow from 1.2.0.0/16

どちらも動作しません。次の作業も行われません このサイトでの回答が暗示しているように

Allow from 1.2

実際、次の作品でさえ機能しません。

Allow from 127.0.0.1

しかし、これはdoes動作します:

Allow from localhost

私はこれら2つは同等だと思っていましたが。明らかに、私の理解にはギャップがあります。

完全を期すために、これはifconfig | grep inet[^6]の出力です。

inet 127.0.0.1 netmask 0xff000000 
inet 1.2.70.59 netmask 0xffff0000 broadcast 1.2.255.255

何が間違っていますか?

2
Konrad Rudolph

解決策は、localhost/path/to/siteではなく1.2.70.59/path/to/site経由でWebサイトにアクセスしたことです。それを変更すると、うまくいきました。

2
Konrad Rudolph

まず、これらのディレクティブを.htaccessファイルまたはconfigファイルに追加しますか?後者の場合、Apacheを再起動する必要があります。

第二に、mod_authz_Hostが有効になっていますか? httpd.confには、次のような行があるはずです。

LoadModule authz_Host_module modules/mod_authz_Host.so

最後に、それが機能していないと確信していますか?つまり正しいパス/サーバーをテストしていますか?書き換えルールまたはカスタムエラーページでは、別のページが表示されていても、ページにアクセスしたように見えませんか?また、何が機能していないのですか?外部IPへのアクセスを許可していますか、または内部IPへのアクセスを拒否していますか?

アクセスログをクリア(ファイルを削除)し、サーバーを再起動して、もう一度URLをテストします。次に、アクセスログを調べて、記録されたIPアドレスと指定された応答コードを確認します。

他の方法もあります(例:mod_rewriteまたはSetEnvIf/Allow from env=)が、あなたがやっていることはうまくいくはずです。

1
Lèse majesté

.htaccessファイルに対してこれを試してください:

order allow,deny
#partial ip addresses blocking
deny from 192.168
deny from 219

#full ip addresses blocking
deny from 64.120.232.114
deny from 64.120.141.34
allow from all
0
ionFish