내 IP 변경은 다른 D 클래스를 수행하므로 범위를 설정하고 싶습니다.
123.123.123.xxx 여기서 마지막 세그먼트는 0-255입니다.
현재 아파치는 말한다 :
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
내 IP 변경은 다른 D 클래스를 수행하므로 범위를 설정하고 싶습니다.
123.123.123.xxx 여기서 마지막 세그먼트는 0-255입니다.
현재 아파치는 말한다 :
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
답변:
먼저, 게시 한 구문이 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
Require
Apache 2.2는 제한적으로 지원 하지만 Apache 2.2는 Require ip
또는을 지원하지 않습니다 <RequireAny>
. Apache HTTP Server 2.4의 새로운 기능 개요 에서 언급했듯이 "고급 권한 부여 논리는 이제 Require
지시문 및 관련 컨테이너 지시문 (예 :)을 사용하여 지정할 수 있습니다 <RequireAll>
." 전자는 Apache 2.4에 추가 된 개선 사항 중 하나입니다.
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::/48
과 Require ip 2a02:4126:2aa4::
? 둘 다 나를 위해 구문 오류를 생성하지 않지만 이전 작업 만 작동합니다.
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
지정된 전체 범위를 가져옵니다.
참고 : 다른 사람들이 혜택을 볼 수 있으므로 여기에 남겨두고 있습니다. 질문에 대한 직접적인 대답은 아닙니다.
예를 들면 다음과 같습니다.
IP 192.168.100.0/22 필요
작동하는 동안
ip 192.168.100.0/22 필요 #localnetwork
실패!
httpd 출력 재시작 :
제어 프로세스가 오류 코드와 함께 종료되어 httpd.service에 대한 작업이 실패했습니다. 자세한 내용은 "systemctl status httpd.service"및 "journalctl -xe"를 참조하십시오.
따라서 해당 줄에 의견이 허용되지 않는 것 같습니다 .
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