2013-06-17 2 views
2

Elastic Load Balancer 뒤에있는 Amazon EC2에있는 애플리케이션이 있습니다. 서버에는 지정된 IP 주소 목록 만 게시 할 수있는 특정 URL이 있습니다.AWS Elastic Load Balancer 뒤에서 클라이언트 IP별로 특정 페이지 보호

나는 나의하여 Web.config에 다음을 추가했습니다 :

<location allowOverride="false" path="mysecureurl"> 
<system.webServer> 
    <security> 
    <ipSecurity allowUnlisted="false"> 
     <add allowed="true" ipAddress="111.111.111.111" /> 
    </ipSecurity> 
    </security> 
</system.webServer> 
</location> 

내가 서버의 IP 주소, 허용 된 IP 주소에서 직접 게시, 그것을 제대로 작동합니다.

허용 된 IP 주소에서로드 밸런서를 통해 게시 할 때 실패합니다 (403 : 금지). 내 부하 분산 장치에 대한 내부 IP 주소가 IIS에서 내 클라이언트에 대한 것이 아니라고 가정합니다.

작동하려면 어떤 방법이 있습니까?

답변

1

결국 @ datasage의 대답에 따라 원하는대로 할 수 있습니다. 그러나 안전하지 않습니다. 응용 프로그램 계층에서 클라이언트 IP 주소를 확인하는 안정적이고 안전한 방법은 없습니다. 응용 프로그램 계층의 IP 주소를 기반으로 액세스를 제한하는 것도 나쁜 습관입니다. 자세한 내용은 this answer을 참조하십시오.

1

클라이언트 IP는 실제로 헤더 (X-Forwarded-For)를 통해 전달됩니다. 이 헤더에는 클라이언트 IP 외에 다른로드 밸런서 IP가 포함될 수 있습니다.

헤더를 기반으로 필터링을 구성 할 수 있다면 수행하려는 작업을 수행 할 수 있어야합니다.

+0

그래도 안전할까요? 공격자가 X-Forwarded-For를 스푸핑하는 것을 막기 위해 무엇이 필요합니까? ELB는 전달하기 전에 기존 헤더를 제거합니까? – NeilD

관련 문제