Udostępnij przez


IPV6_PROTECTION_LEVEL

Opcja gniazda IPV6_PROTECTION_LEVEL umożliwia deweloperom wprowadzenie ograniczeń dostępu do gniazd IPv6. Takie ograniczenia umożliwiają aplikacji działającej w prywatnej sieci LAN proste i niezawodne wzmacnianie się przed atakami zewnętrznymi. Opcja gniazda IPV6_PROTECTION_LEVEL rozszerza lub zawęża zakres gniazda nasłuchiwania, umożliwiając nieograniczony dostęp od użytkowników publicznych i prywatnych, jeśli jest to konieczne, lub ograniczenie dostępu tylko do tej samej lokacji, co jest wymagane.

IPV6_PROTECTION_LEVEL obecnie ma trzy zdefiniowane poziomy ochrony.

Poziom ochrony Opis
PROTECTION_LEVEL_UNRESTRICTED
Używane przez aplikacje przeznaczone do obsługi w Internecie, w tym aplikacje korzystające z funkcji przechodzenia translatora adresów sieciowych IPv6 wbudowane w system Windows (na przykład Teredo). Te aplikacje mogą pomijać zapory IPv4, dlatego aplikacje muszą być wzmocnione przed atakami internetowymi skierowanymi na otwarty port.
PROTECTION_LEVEL_EDGERESTRICTED
Używane przez aplikacje przeznaczone do obsługi w Internecie. To ustawienie nie zezwala na przechodzenie translatora adresów sieciowych przy użyciu implementacji Teredo systemu Windows. Te aplikacje mogą pomijać zapory IPv4, dlatego aplikacje muszą być wzmocnione przed atakami internetowymi skierowanymi na otwarty port.
PROTECTION_LEVEL_RESTRICTED
Używane przez aplikacje intranetowe, które nie implementują scenariuszy internetowych. Te aplikacje zazwyczaj nie są testowane ani wzmacniane pod kątem ataków w stylu internetowym.
To ustawienie ograniczy odebrany ruch tylko do połączenia lokalnego.

 

Poniższy przykład kodu zawiera zdefiniowane wartości dla każdego z nich:

#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     */

Te wartości wzajemnie się wykluczają i nie mogą być łączone w jednym zestawockopt wywołanie funkcji. Inne wartości dla tej opcji gniazda są zarezerwowane. Te poziomy ochrony dotyczą tylko połączeń przychodzących. Ustawienie tej opcji gniazda nie ma wpływu na pakiety wychodzące lub połączenia.

W systemach Windows 7 i Windows Server 2008 R2 wartość domyślna dla IPV6_PROTECTION_LEVEL jest nieokreślona, a PROTECTION_LEVEL_DEFAULT jest zdefiniowana na -1, niedozwoloną wartość dla IPV6_PROTECTION_LEVEL.

W systemach Windows Vista i Windows Server 2008 wartość domyślna dla IPV6_PROTECTION_LEVEL jest PROTECTION_LEVEL_UNRESTRICTED, a PROTECTION_LEVEL_DEFAULT jest zdefiniowana na -1, niedozwoloną wartość dla IPV6_PROTECTION_LEVEL.

W systemach Windows Server 2003 i Windows XP wartość domyślna dla IPV6_PROTECTION_LEVEL jest PROTECTION_LEVEL_EDGERESTRICTED, a PROTECTION_LEVEL_DEFAULT jest definiowana jako PROTECTION_LEVEL_EDGERESTRICTED.

Nuta

Przed granicą gniazda należy ustawić opcję gniazda IPV6_PROTECTION_LEVEL. W przeciwnym razie pakiety odebrane między i zestawami setsockopt wywołania będą zgodne z PROTECTION_LEVEL_EDGERESTRICTEDi mogą być dostarczane do aplikacji.

 

W poniższej tabeli opisano efekt zastosowania każdego poziomu ochrony do gniazda nasłuchiwania.

Poziom ochrony

Dozwolony ruch przychodzący

Ta sama witryna

Zewnętrzny

Przechodzenie translatora adresów sieciowych (Teredo)

PROTECTION_LEVEL_RESTRICTED

Tak

Nie

Nie

PROTECTION_LEVEL_EDGERESTRICTED

Tak

Tak

Nie

PROTECTION_LEVEL_UNRESTRICTED

Tak

Tak

Tak

 

W powyższej tabeli kolumna Tej samej witryny jest kombinacją następujących elementów:

  • Łączenie adresów lokalnych
  • Adresy lokalne witryny
  • Adresy globalne znane do należenia do tej samej witryny (pasujące do tabeli prefiksów witryny)

W systemach Windows 7 i Windows Server 2008 R2 wartość domyślna dla IPV6_PROTECTION_LEVEL jest nieokreślona. Jeśli na komputerze lokalnym nie zainstalowano oprogramowania zapory obsługującego przechodzenie brzegowe (zapora systemu Windows jest wyłączona lub zainstalowano inną zaporę, która ignoruje ruch Teredo), otrzymasz ruch Teredo tylko wtedy, gdy ustawisz opcję gniazda IPV6_PROTECTION_LEVEL na wartość PROTECTION_LEVEL_UNRESTRICTED. Jednak zapora systemu Windows lub wszystkie zasady zapory obsługujące przechodzenie brzegowe mogą ignorować tę opcję na podstawie ustawień zasad zapory. Ustawiając tę opcję gniazda na PROTECTION_LEVEL_UNRESTRICTED, aplikacja komunikuje jawną intencję odbierania ruchu przechodzącego przez krawędź przez zaporę hosta zainstalowaną na komputerze lokalnym. Jeśli więc jest zainstalowana zapora hosta obsługującego przechodzenie brzegowe, będzie miała ostateczną decyzję o zaakceptowaniu pakietu. Domyślnie bez żadnego zestawu opcji gniazda:

  • o Jeśli zapora systemu Windows jest włączona (lub jest zainstalowana inna zapora hosta obsługującego przechodzenie brzegowe) na komputerze lokalnym, niezależnie od tego, co będzie wymuszane. Typowa zapora hosta obsługującego przechodzenie brzegowe domyślnie zablokuje ruch Teredo. W związku z tym aplikacje będą obserwować wartość domyślną tak, jakby była PROTECTION_LEVEL_EDGERESTRICTED.
  • o Jeśli zapora systemu Windows nie jest włączona, a w systemie lokalnym nie jest zainstalowana żadna inna zapora hosta obsługującego przechodzenie do krawędzi, wartość domyślna będzie PROTECTION_LEVEL_EDGERESTRICTED.

W systemach Windows Vista i Windows Server 2008 wartość domyślna dla IPV6_PROTECTION_LEVEL to PROTECTION_LEVEL_UNRESTRICTED. Jednak efektywna wartość zależy od tego, czy zapora systemu Windows jest włączona. Zapora systemu Windows jest świadoma przechodzenia przez krawędź (rozpoznawanie teredo), niezależnie od tego, jaka wartość jest ustawiona dla IPV6_PROTECTION_LEVEL i ignoruje, jeśli IPV6_PROTECTION_LEVEL jest PROTECTION_LEVEL_UNRESTRICTED. Dlatego efektywna wartość zależy od zasad zapory. Gdy zapora systemu Windows jest wyłączona i na komputerze lokalnym nie jest zainstalowana żadna inna zapora z obsługą przechodzenia przez przeglądarkę brzegową, wartość domyślna dla IPV6_PROTECTION_LEVEL jest PROTECTION_LEVEL_UNRESTRICTED.

W systemach Windows Server 2003 i Windows XP wartość domyślna dla IPV6_PROTECTION_LEVEL to PROTECTION_LEVEL_EDGERESTRICTED. Jeśli nie ustawiono opcji gniazda IPV6_PROTECTION_LEVEL na PROTECTION_LEVEL_UNRESTRICTED, nie otrzymasz żadnego ruchu Teredo.

W zależności od IPV6_PROTECTION_LEVEL aplikacja, która wymaga niepożądanego ruchu z Internetu, może nie być w stanie odbierać niepożądanego ruchu. Jednak te wymagania nie są niezbędne do odbierania żądanego ruchu przez interfejs Teredo systemu Windows. Aby uzyskać więcej informacji na temat interakcji z aplikacją Teredo, zobacz Odbieranie niepożądanego ruchu przezTeredo.

Gdy pakiety przychodzące lub połączenia są odrzucane ze względu na ustawiony poziom ochrony, odrzucenie jest obsługiwane tak, jakby żadna aplikacja nie nasłuchuje w tym gniazdie.

Nuta

Opcja gniazda IPV6_PROTECTION_LEVEL nie musi stosować ograniczeń dostępu do gniazd IPv6 ani ograniczać przechodzenia nat przy użyciu innej metody niż Windows Teredo, a nawet przy użyciu innej implementacji Teredo przez innego dostawcę.

 

getsockopt

odbieranie żądanego ruchu przez Teredo

setsockopt