로컬 네트워크에서만 Apache 가상 호스트에 대한 액세스 허용


19

Apache 2.2를 실행하는 관리하는 Linux 서버에 웹 페이지가 있습니다. 이 서버는 다른 서비스를 위해 외부에서 볼 수 있습니다.

지정된 가상 호스트가 로컬 네트워크 내부에서만 볼 수 있도록 Apache를 구성하고 싶습니다. 따라서 웹 응용 프로그램을 배포하여 조직의 다른 사람들로부터 피드백을받을 수 있습니다. 나는 이것이 Allow 지시문과 관련이 있다고 생각하지만 내 실험은 잘 진행되지 않습니다.

이를 위해 구성 파일을 어떻게 변경할 수 있습니까? 방화벽 구성도 변경해야합니까?


서버에 10.0.0.100과 같은 개인 (라우팅 할 수없는) IP 주소 또는 서버의 공용 (라우팅 가능한) IP 주소를 사용하고 있습니까?
closetnoc

서버에는 퍼블릭 IP 주소가 있으며 직장 네트워크 외부 (예 : 집)에서 연결할 수 있습니다. 동료의 컴퓨터에는 모두 10. *. *. * 유형의 로컬 IP 주소가 있습니다.
Btz

답변:


12

쉬운. 기본 구성 또는 가상 구성 내에서 다음과 같이 설정하십시오.

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

<Directory></Directory>문은 기본적으로이 디렉토리에 아무것도 이러한 규칙을 사용합니다 "라고 말한다. 그리고이 /var/www/path/to/your/web/documents예제에서 설정했지만 사이트의 로컬 디렉토리 경로와 일치하도록 변경해야하는 "이 디렉토리" 로 표시됩니다.

다음으로 <Directory></Directory>영역 내에서 기본 Apache 동작을 Allow모두 기본적으로 변경합니다 Order Deny,Allow. 다음 Deny from all으로 모든 사람의 액세스 거부 를 설정 합니다. 다음 Allow from127.0.0.1 ::1(localhost IP 주소), localhost(localhost 자체) 에서의 액세스를 허용 하는 명령문입니다 . 모든 것이 표준입니다. localhost많은 내부 시스템 프로세스에는 액세스 가 필요하기 때문입니다.

다음은 당신에게 중요한 것들입니다.

Allow from에 대한 192.168뿐만 아니라 같은 10하나에서 액세스를 허용 / 그 숫자에 의해 접두사 네트워크 범위 내의 모든 네트워크 주소.

따라서 192.168기본적으로 사용자에게 주소가 192.168.59.27있거나 192.168.1.123웹 사이트를 볼 수 있는지 여부 를 나타냅니다 .

마찬가지로 접두사에 Allow fromfor를 사용 10하면 누군가 IP 주소를 가지고 10.0.1.2있거나 심지어 10.90.2.3콘텐츠를 볼 수있게됩니다.

세계의 거의 모든 내부 네트워크는 192.168범위 또는 범위 내의 무언가를 사용합니다 10. 외부는 없습니다. 따라서이 콤보를 사용하면 외부 세계에 대한 액세스를 차단하고 로컬 네트워크 내에서만 액세스를 허용한다는 목표를 달성 할 수 있습니다.


무엇입니까 Satisfy Any이 경우 어떻게해야? 이 모든 것에 대해 아무것도 모르지만 시나리오에있을 <Location /path>때 외부 네트워크에서 페이지에 액세스 할 수있었습니다 . 그러나 그것을 제거하면 내 문제가 해결되었습니다. 규칙이 적용되어 있어도 페이지에 액세스 할 수 있다는 것이 약간 우려 되었기 때문에 이것이 왜 그런지 이해하는 것이 좋았습니다.
liamnichols

@liamnichols 바와 같이 여기에서 설명은 "모든 요구 사항이 충족되는 경우 요청 (인증 또는 접근) 할 수 있습니다."
JakeGould

14

이 답변에 착륙 한 사람들은 Apache 2.2에만 해당됩니다.

Apache 2.4는 이러한 지시문을 더 이상 사용하지 않습니다.

새로운 방법은 모듈 mod_authz_hostRequire지시문을 사용하는 것입니다 . ( 링크 )

아파치 2.4에서는

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

모든 Allow 지시문을 제거하십시오.


5

가상 호스트 지시문 안에이 섹션을 추가하십시오.

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

위의 IP를 교체하십시오. 재무 수준의 보안에 사용해서는 안됩니다.


-1

네트워크 설정 방법을 모르지만 더 나은 답변을 시도 할 것으로 가정합니다.

DSL 연결이 가능한 소규모 사무실이 있다고 가정 해 봅시다. 고정 공용 IP 주소 또는 회선, DSL 모뎀 및 방화벽에 지정된 주소 블록이 있습니다. 이런 일이 어떻게 일어나는지 자세하게 설명하지 않고 중요한 부분에 도달 할 것입니다.

NAT (네트워크 주소 변환)를 사용해야합니다. 이를 통해 퍼블릭 IP 주소가 네트워크의 WAN (인터넷)쪽에 상주하고 LAN 쪽의 네트워크 내에서 프라이빗 IP 주소 (예 : 10.0.0.100)를 사용할 수 있습니다. 이것은 표준 작동 절차입니다. 네트워크 내에서 웹 서버를 호스팅하는 경우 포트 전달 또는 기타 유사한 메커니즘을 사용하여 웹 트래픽이 웹 서버를 가리 키도록합니다.

이 표준 시나리오에서 내부 컴퓨터는 모두 개인 IP 주소를 사용합니다.

표준 네트워크 설정이 비슷하다고 가정하면 컴퓨터 IP 주소를 공용 IP 주소에서 개인 IP 주소로 변경합니다. 네트워크에 컴퓨터가 사용 가능한 IP 주소를 요청할 수있는 DHCP 설정이있을 수 있습니다. 즉, IP 주소를 지정하는 대신 DHCP를 사용하도록 선택하면 IP 주소가 할당됩니다. DHCP를 사용할 수 없으면 다른 컴퓨터에서 사용 가능한 개인 IP 주소 공간을 확인하고 사용되지 않는 공간 내에서 IP 주소를 선택해야합니다. 네트워크 설정에서이 사용하지 않는 IP 주소를 지정할 수 있습니다. 인터넷에서 시스템이 보이지 않도록해야합니다.


나는 그것에 대해 생각했지만 실용적인 해결책은 아닙니다. 해당 컴퓨터에는 외부에서 볼 수 있어야하는 서비스가 있으며 어떤 경우에도 며칠 동안 웹 응용 프로그램을 다시 표시 할 계획입니다. 며칠 동안 네트워크 레이아웃에 혁명을 일으키지 않습니다. 그러나 내가 할 수있는 일은 Apache 구성과 같은 것입니다.
Btz

방화벽이있는 경우 해당 IP 주소에 대한 일부 포트를 닫을 수 있습니다.
closetnoc

방화벽 설정을 사용할 수는 있지만 실제로 너무 과도합니다. Apache는 IP 주소 및 기타 관련 기준에 따라 거부하거나 허용하는 기능이 내장되어 있습니다. 자세한 내용은 내 답변을 참조하십시오.
JakeGould

@JakeGould 방화벽은 반드시 과도한 솔루션 일 필요는 없습니다. 나는 아파치를 정말로 잘 알고있다. 그러나 가장 훌륭한 방화벽에는 서버 자체에 부담을주지 않으면 서 HTTP 필터링 옵션이 있습니다. 또한 Apache는 훌륭하지만 결함이없는 것은 아닙니다. 또한 방화벽을 사용하여 대체 포트 액세스를 포함한 포트 액세스를 조작 할 수 있으므로 일부 웹 서비스는 공용으로 유지되고 다른 웹 서비스는 LAN 내에서만 액세스 할 수 있습니다.
closetnoc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.