1 IPではなくIP範囲を要求するにはどうすればよいですか?


20

私のIPの変更は異なるDクラスを行うので、範囲を設定したい:

123.123.123.xxx。最後のセグメントは0〜255です。

現在、Apacheは次のように述べています。

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

回答:


22

まず、「apache-2.2」タグにもかかわらず、あなたが投稿した構文は2.4のものであるため、Apache 2.4を意味すると仮定します。

Apacheドキュメントから:

ip.addressは、IPアドレス、部分IPアドレス、ネットワーク/ネットマスクのペア、またはネットワーク/ nnn CIDR指定です。

クラスDはマルチキャストアドレスであり、クラスフルネットワーキングは90年代に消滅したため、/ 24を許可したいと考えていると思います。/ 24を許可するには、次のいずれかを使用できます。

Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24

個人的には、最後のものは最初のものよりも曖昧さが少なく、2番目のものよりも読みやすいと思います。

ドキュメントの次のセクションが役立つ場合があります:http : //httpd.apache.org/docs/2.4/howto/access.html#host


だから、これはApache 2.2では動作しませんか?phpMyAdminは2.2と2.4の両方で動作し、このサーバーが何を実行しているかを確認したところ、2.2
user281497

それを有効にするためにバックポートされたものがない限り、2.2構成ファイルでその構文を見たことはありません。
fukawi2

@ fukawi2-はい、もちろん正しいです。user281497の場合:一方RequireのApache 2.2のサポートが制限され、Apacheの2.2のいずれかをサポートしていませんRequire ip<RequireAny>Apache HTTPサーバー2.4の新機能概要で説明したように、「高度な承認ロジックは、Requireディレクティブや関連するコンテナディレクティブなどを使用して指定できるようになりました<RequireAll>。」前者は、Apache 2.4に追加された改善の1つです。
コルト

14

Apache 2.2以前では、次のものを使用できます。

Order deny,allow
Deny from all
Allow from 24.18    # allow access from home
Allow from 162.12   # allow access from work

.htacessで、ベースレベルで直接(内ではない<directive>)。

Apache 2.4以降では、次のようになります。

<RequireAny>
    #IPv4 range at my work
    Require ip 207.100
    #IPv4 range I usually get through my mobile provider
    Require ip 29.11
    #IPv6 from home
    Require ip 2a02:4126:2aa4::/48  
</RequireAny>

(すべての数字は架空のもので、心配はありません;-)。

潜在的なユーザーの99%に対してバックエンドフォルダーを保護するために、これを何年も使用しています。(旅行中に熱心なブロガーでない限り、非常にうまく機能します。Gmailユーザーの場合:「最後のアカウントアクティビティ」一番下のリンクは、独自の「IPハビット」を見つけるための快適な方法です)。


違いは何だRequire ip 2a02:4126:2aa4::/48とはRequire ip 2a02:4126:2aa4::?どちらも私にとって構文エラーを生成しませんが、前者だけが機能します。
ジェレミア

3
2a02:4126:2aa4 :: = 2a02:4126:2aa4:0000:0000:0000:0000:0000、2a02:4126:2aa4 :: / 48は2a02:4126:2aa4で始まるすべてのアドレスに一致するためですか?
ジェレミア

1

Apache 2.2を使用して確認したことに注意してください。Apache2.2はRequire ipまたはをサポートしていません<RequireAny>Apache HTTPサーバー2.4の新機能概要で説明したように、「高度な承認ロジックは、Requireディレクティブや関連するコンテナディレクティブなどを使用して指定できるようになりました<RequireAll>。」前者は、Apache 2.4に追加された改善の1つです。

Apache 2.2でこれに対処するには、おそらく次のようなことを行う必要があります。

Order allow,deny
Allow from 123.123.123    

指定された範囲全体を取得します。


1

注:他の人が恩恵を受ける可能性があるため、ここに残します。それは質問に対する直接的な答えではありません。

例えば:

IP 192.168.100.0/22が必要

動作しながら

IP 192.168.100.0/22 #localnetworkが必要

失敗!

httpd出力の再起動:

制御プロセスがエラーコードで終了したため、httpd.serviceのジョブが失敗しました。詳細については、「systemctl status httpd.service」および「journalctl -xe」を参照してください。

そのため、その行ではコメントが許可されてないようです。


1
設定行内のコメントは許可されません。httpd.apache.org / docs / 2.4 / configuring.htmlを参照してください。「ハッシュ文字「#」で始まる行はコメントと見なされ、無視されます。コメントは含まれない場合があります。設定ディレクティブと同じ行。 "
Patrick Mevzek

0

ApacheのRequireディレクティブは、ユーザーがリソースへのアクセスを許可または拒否されるようにするために、承認フェーズで使用されます。mod_authz_hostは、ip、host、forward-dns、およびlocalを使用して許可タイプを拡張します。他の認証タイプも使用できますが、追加の認証モジュールをロードする必要があります。

これらの承認プロバイダーは、どのホストがサーバーの領域にアクセスできるかに影響します。アクセスは、ホスト名、IPアドレス、またはIPアドレス範囲によって制御できます。

v2.4.8以降、はホストrequireディレクティブ内でサポートされます。IPが必要

IPプロバイダーを使用すると、リモートクライアントのIPアドレスに基づいてサーバーへのアクセスを制御できます。Require ip ip-addressが指定されている場合、IPアドレスが一致する場合、リクエストはアクセスを許可されます。

完全なIPアドレス:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

アクセスが許可されたホストのIPアドレス

部分的なIPアドレス:

Require ip 10.1
Require ip 10 172.20 192.168.2

サブネット制限のためのIPアドレスの最初の1〜3バイト。

ネットワーク/ネットマスクのペア:

Require ip 10.1.0.0/255.255.0.0

ネットワークabcd、およびネットマスクwxyzより細かなサブネット制限用。

network / nnn CIDR仕様:

Require ip 10.1.0.0/16

ネットマスクがnnn個の高位1ビットで構成されていることを除き、前のケースと同様です。

上記の最後の3つの例は、まったく同じホストのセットに一致することに注意してください。

IPv6アドレスとIPv6サブネットは、次のように指定できます。

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48

注:IPアドレスは起動時に解析されるため、式はリクエスト時に評価されません。

ソース:https : //httpd.apache.org/docs/trunk/mod/mod_authz_host.html


5
他の人の作品をコピー&ペーストしないでください。これは盗作と呼ばれます。
ジェラルドシュナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.