다음을 통해 공유


IPV6_PROTECTION_LEVEL

IPV6_PROTECTION_LEVEL 소켓 옵션을 사용하면 개발자가 IPv6 소켓에 액세스 제한을 적용할 수 있습니다. 이러한 제한을 통해 프라이빗 LAN에서 실행되는 애플리케이션은 외부 공격에 대해 간단하고 강력하게 강화할 수 있습니다. IPV6_PROTECTION_LEVEL 소켓 옵션은 수신 대기 소켓의 범위를 넓히거나 좁히며, 적절한 경우 퍼블릭 및 프라이빗 사용자로부터 무제한 액세스를 사용하거나 필요에 따라 동일한 사이트에 대한 액세스만 제한합니다.

IPV6_PROTECTION_LEVEL 현재 세 가지 보호 수준이 정의되어 있습니다.

보호 수준 묘사
PROTECTION_LEVEL_UNRESTRICTED
Windows(예: Teredo)에 기본 제공되는 IPv6 NAT 통과 기능을 활용하는 애플리케이션을 포함하여 인터넷을 통해 작동하도록 설계된 애플리케이션에서 사용됩니다. 이러한 애플리케이션은 IPv4 방화벽을 바이패스할 수 있으므로 열린 포트를 대상으로 하는 인터넷 공격에 대해 애플리케이션을 강화해야 합니다.
PROTECTION_LEVEL_EDGERESTRICTED
인터넷을 통해 작동하도록 설계된 애플리케이션에서 사용됩니다. 이 설정은 Windows Teredo 구현을 사용하는 NAT 통과를 허용하지 않습니다. 이러한 애플리케이션은 IPv4 방화벽을 바이패스할 수 있으므로 열린 포트를 대상으로 하는 인터넷 공격에 대해 애플리케이션을 강화해야 합니다.
PROTECTION_LEVEL_RESTRICTED
인터넷 시나리오를 구현하지 않는 인트라넷 애플리케이션에서 사용됩니다. 이러한 애플리케이션은 일반적으로 인터넷 스타일의 공격에 대해 테스트되거나 강화되지 않습니다.
이 설정은 수신된 트래픽을 링크-로컬로만 제한합니다.

 

다음 코드 예제에서는 각각에 대해 정의된 값을 제공합니다.

#define PROTECTION_LEVEL_UNRESTRICTED   10  /* for peer-to-peer apps */
#define PROTECTION_LEVEL_EDGERESTRICTED 20  /* Same as unrestricted, except for Teredo  */
#define PROTECTION_LEVEL_RESTRICTED     30  /* for Intranet apps     */

이러한 값은 상호 배타적이며 단일 setsockopt 함수 호출에서 결합할 수 없습니다. 이 소켓 옵션의 다른 값은 예약되어 있습니다. 이러한 보호 수준은 들어오는 연결에만 적용됩니다. 이 소켓 옵션을 설정해도 아웃바운드 패킷이나 연결에는 영향을 주지 않습니다.

Windows 7 및 Windows Server 2008 R2에서 IPV6_PROTECTION_LEVEL 기본값은 지정되지 않으며 PROTECTION_LEVEL_DEFAULT IPV6_PROTECTION_LEVEL 잘못된 값인 -1로 정의됩니다.

Windows Vista 및 Windows Server 2008에서 IPV6_PROTECTION_LEVEL 기본값은 PROTECTION_LEVEL_UNRESTRICTEDPROTECTION_LEVEL_DEFAULT IPV6_PROTECTION_LEVEL 잘못된 값인 -1로 정의됩니다.

Windows Server 2003 및 Windows XP에서 IPV6_PROTECTION_LEVEL 기본값은 PROTECTION_LEVEL_EDGERESTRICTEDPROTECTION_LEVEL_DEFAULTPROTECTION_LEVEL_EDGERESTRICTED정의됩니다.

메모

소켓이 바인딩되기 전에 IPV6_PROTECTION_LEVEL 소켓 옵션을 설정해야 합니다. 그렇지 않으면 바인딩setsockopt 호출 간에 수신되는 패킷은 PROTECTION_LEVEL_EDGERESTRICTED준수하며 애플리케이션에 배달될 수 있습니다.

 

다음 표에서는 각 보호 수준을 수신 대기 소켓에 적용하는 효과에 대해 설명합니다.

보호 수준

들어오는 트래픽 허용

동일한 사이트

외부

NAT 순회(테레도)

PROTECTION_LEVEL_RESTRICTED

아니요

아니요

PROTECTION_LEVEL_EDGERESTRICTED

아니요

PROTECTION_LEVEL_UNRESTRICTED

 

위의 표에서 동일한 사이트 열은 다음의 조합입니다.

  • 로컬 주소 연결
  • 사이트 로컬 주소
  • 동일한 사이트에 속하는 것으로 알려진 전역 주소(사이트 접두사 테이블과 일치)

Windows 7 및 Windows Server 2008 R2에서는 IPV6_PROTECTION_LEVEL 기본값이 지정되지 않습니다. 로컬 컴퓨터에 에지 통과 인식 방화벽 소프트웨어가 설치되어 있지 않거나(Windows 방화벽이 비활성화되거나 Teredo 트래픽을 무시하는 다른 방화벽이 설치된 경우) IPV6_PROTECTION_LEVEL 소켓 옵션을 PROTECTION_LEVEL_UNRESTRICTED설정해야만 Teredo 트래픽이 수신됩니다. 그러나 Windows 방화벽 또는 에지 통과 인식 방화벽 정책은 방화벽에 대한 정책 설정에 따라 이 옵션을 무시할 수 있습니다. 이 소켓 옵션을 PROTECTION_LEVEL_UNRESTRICTED설정하여 애플리케이션은 로컬 컴퓨터에 설치된 호스트 방화벽을 통해 에지 트래버스 트래픽을 수신하려는 명시적 의도를 전달합니다. 따라서 에지 통과 인식 호스트 방화벽이 설치된 경우 패킷 수락에 대한 최종 결정이 내려집니다. 기본적으로 소켓 옵션 집합이 없습니다.

  • o 로컬 컴퓨터에서 Windows 방화벽을 사용하도록 설정(또는 다른 에지 통과 인식 호스트 방화벽이 설치되어 있는 경우)하는 경우 적용하는 모든 항목이 관찰됩니다. 일반적인 에지 통과 인식 호스트 방화벽은 기본적으로 Teredo 트래픽을 차단합니다. 따라서 애플리케이션은 PROTECTION_LEVEL_EDGERESTRICTED것처럼 기본값을 준수합니다.
  • o Windows 방화벽을 사용하도록 설정하지 않고 로컬 시스템에 다른 에지 트래버스 인식 호스트 방화벽이 설치되지 않은 경우 기본값은 PROTECTION_LEVEL_EDGERESTRICTED.

Windows Vista 및 Windows Server 2008에서 IPV6_PROTECTION_LEVEL 기본값은 PROTECTION_LEVEL_UNRESTRICTED. 그러나 유효 값은 Windows 방화벽을 사용할 수 있는지 여부에 따라 달라집니다. Windows 방화벽은 IPV6_PROTECTION_LEVEL 대해 설정된 값에 관계없이 에지 통과 인식(Teredo 인식)이며 IPV6_PROTECTION_LEVEL PROTECTION_LEVEL_UNRESTRICTED경우 무시합니다. 따라서 유효 값은 방화벽 정책에 따라 달라집니다. Windows 방화벽이 비활성화되고 로컬 컴퓨터에 다른 에지 통과 인식 방화벽이 설치되지 않은 경우 IPV6_PROTECTION_LEVEL 기본값은 PROTECTION_LEVEL_UNRESTRICTED.

Windows Server 2003 및 Windows XP에서 IPV6_PROTECTION_LEVEL 기본값은 PROTECTION_LEVEL_EDGERESTRICTED. IPV6_PROTECTION_LEVEL 소켓 옵션을 PROTECTION_LEVEL_UNRESTRICTED설정하지 않으면 Teredo 트래픽이 수신되지 않습니다.

IPV6_PROTECTION_LEVEL 따라 인터넷에서 원치 않는 트래픽이 필요한 애플리케이션은 원치 않는 트래픽을 수신할 수 없습니다. 그러나 이러한 요구 사항은 Windows Teredo 인터페이스를 통해 요청된 트래픽을 수신하는 데 필요하지 않습니다. Teredo와의 상호 작용에 대한 자세한 내용은 Teredo통해 요청된 트래픽 수신을 참조하세요.

설정된 보호 수준으로 인해 들어오는 패킷 또는 연결이 거부되면 해당 소켓에서 수신 대기 중인 애플리케이션이 없는 것처럼 거부가 처리됩니다.

메모

IPV6_PROTECTION_LEVEL 소켓 옵션은 반드시 IPv6 소켓에 액세스 제한을 두거나 Windows Teredo 이외의 다른 방법을 사용하거나 다른 공급업체가 Teredo의 다른 구현을 사용하는 NAT 통과를 제한하는 것은 아닙니다.

 

getsockopt

테레도 통해 요청된 트래픽 수신

setsockopt