1 IP 대신 IP 범위를 어떻게 요구합니까?


20

내 IP 변경은 다른 D 클래스를 수행하므로 범위를 설정하고 싶습니다.

123.123.123.xxx 여기서 마지막 세그먼트는 0-255입니다.

현재 아파치는 말한다 :

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

답변:


22

먼저, 게시 한 구문이 2.4이므로 "apache-2.2"태그에도 불구하고 Apache 2.4를 의미한다고 가정하겠습니다.

아파치 문서에서 :

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

개인적으로, 나는 마지막이 첫 번째보다 모호하고 덜 읽기 쉽습니다.

설명서의이 섹션이 유용 할 수 있습니다. http://httpd.apache.org/docs/2.4/howto/access.html#host


그래서 이것은 Apache 2.2에서 작동하지 않습니까? phpMyAdmin은 2.2와 2.4에서 작동
하며이

무언가를 지원하기 위해 백 포트되지 않은 경우 2.2 구성 파일에서 해당 구문을 본 적이 없습니다.
fukawi2

@ fukawi2-네, 물론 맞습니다. user281497의 경우 : RequireApache 2.2는 제한적으로 지원 하지만 Apache 2.2는 Require ip또는을 지원하지 않습니다 <RequireAny>. Apache HTTP Server 2.4의 새로운 기능 개요 에서 언급했듯이 "고급 권한 부여 논리는 이제 Require지시문 및 관련 컨테이너 지시문 (예 :)을 사용하여 지정할 수 있습니다 <RequireAll>." 전자는 Apache 2.4에 추가 된 개선 사항 중 하나입니다.
Colt

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 habbits"를 파악할 수있는 편안한 방법입니다.


차이 무엇 Require ip 2a02:4126:2aa4::/48Require ip 2a02:4126:2aa4::? 둘 다 나를 위해 구문 오류를 생성하지 않지만 이전 작업 만 작동합니다.
Geremia

3
2a02 : 4126 : 2aa4 :: = 2a02 : 4126 : 2aa4 : 0000 : 0000 : 0000 : 0000 : 0000 인 반면 2a02 : 4126 : 2aa4 :: / 48은 2a02 : 4126 : 2aa4로 시작하는 모든 주소와 일치하기 때문입니까?
Geremia

1

Apache 2.2 사용을 확인 했으므로 Apache 2.2는 Require ip또는을 지원하지 않습니다 <RequireAny>. Apache HTTP Server 2.4의 새로운 기능 개요 에서 언급했듯이 "고급 권한 부여 논리는 이제 Require지시문 및 관련 컨테이너 지시문 (예 :)을 사용하여 지정할 수 있습니다 <RequireAll>." 전자는 Apache 2.4에 추가 된 개선 사항 중 하나입니다.

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 주소를 기반으로 서버에 대한 액세스를 제어 할 수 있습니다. 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보다 세분화 된 서브넷 제한.

네트워크 / nnn CIDR 사양 :

Require ip 10.1.0.0/16

넷 마스크가 nnn 상위 1 비트로 구성된다는 점을 제외하면 이전의 경우와 유사합니다.

위의 마지막 세 가지 예는 정확히 동일한 호스트 세트와 일치합니다.

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.