IPV6_PROTECTION_LEVEL

L'opzione socket IPV6_PROTECTION_LEVEL consente agli sviluppatori di applicare restrizioni di accesso ai socket IPv6. Tali restrizioni consentono a un'applicazione in esecuzione su una LAN privata di proteggersi in modo semplice e affidabile da attacchi esterni. L'opzione socket IPV6_PROTECTION_LEVEL estende o restringe l'ambito di un socket di ascolto, consentendo l'accesso senza restrizioni da utenti pubblici e privati quando appropriato o limitando l'accesso solo allo stesso sito, come richiesto.

IPV6_PROTECTION_LEVEL attualmente dispone di tre livelli di protezione definiti.

Livello di protezione Descrizione
PROTECTION_LEVEL_UNRESTRICTED
Usato dalle applicazioni progettate per operare su Internet, incluse le applicazioni che sfruttano le funzionalità di attraversamento NAT IPv6 integrate in Windows (ad esempio, Teredo). Tali applicazioni possono aggirare i firewall IPv4 e pertanto le applicazioni devono essere protette contro gli attacchi provenienti da Internet diretti alla porta aperta.
PROTECTION_LEVEL_EDGERESTRICTED
Usato dalle applicazioni progettate per operare su Internet. Questa impostazione non consente l'attraversamento NAT tramite l'implementazione di Windows Teredo. Tali applicazioni possono aggirare i firewall IPv4 e pertanto le applicazioni devono essere protette contro gli attacchi provenienti da Internet diretti alla porta aperta.
PROTECTION_LEVEL_RESTRICTED
Usato dalle applicazioni Intranet che non implementano scenari Internet. Queste applicazioni non sono in genere testate o protette da attacchi analoghi a quelli provenienti da Internet.
Questa impostazione limiterà il traffico ricevuto solo a quello locale rispetto al collegamento.

 

Nell'esempio di codice seguente vengono forniti i valori definiti per ognuno di essi:

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

Questi valori si escludono a vicenda e non possono essere combinati in una singola chiamata di funzione setsockopt . Altri valori per questa opzione socket sono riservati. Questi livelli di protezione si applicano solo alle connessioni in ingresso. L'impostazione di questa opzione socket non ha alcun effetto su pacchetti o connessioni in uscita.

In Windows 7 e Windows Server 2008 R2 il valore predefinito per IPV6_PROTECTION_LEVEL non è specificato e PROTECTION_LEVEL_DEFAULT è definito su -1, un valore non valido per IPV6_PROTECTION_LEVEL.

In Windows Vista e Windows Server 2008 il valore predefinito per IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_UNRESTRICTED e PROTECTION_LEVEL_DEFAULT è definito su -1, un valore non valido per IPV6_PROTECTION_LEVEL.

In Windows Server 2003 e Windows XP il valore predefinito per IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_EDGERESTRICTED e PROTECTION_LEVEL_DEFAULT è definito come PROTECTION_LEVEL_EDGERESTRICTED.

Nota

L'opzione socket IPV6_PROTECTION_LEVEL deve essere impostata prima dell'associazione del socket. In caso contrario, i pacchetti ricevuti tra le chiamate bind e setsockopt saranno conformi a PROTECTION_LEVEL_EDGERESTRICTED e possono essere recapitati all'applicazione.

 

Nella tabella seguente viene descritto l'effetto dell'applicazione di ogni livello di protezione a un socket di ascolto.

Livello di protezione

Traffico in ingresso consentito

Stesso sito

Esterno

Attraversamento NAT (Teredo)

PROTECTION_LEVEL_RESTRICTED

No

No

PROTECTION_LEVEL_EDGERESTRICTED

No

PROTECTION_LEVEL_UNRESTRICTED

 

Nella tabella precedente la colonna Same site è una combinazione delle seguenti:

  • Collegare indirizzi locali
  • Indirizzi locali del sito
  • Indirizzi globali noti per appartenere allo stesso sito (corrispondente alla tabella del prefisso del sito)

In Windows 7 e Windows Server 2008 R2 il valore predefinito per IPV6_PROTECTION_LEVEL non è specificato. Se nel computer locale non è installato alcun software firewall compatibile con l'attraversamento perimetrale (Windows Firewall è disabilitato o viene installato un altro firewall che ignora il traffico Teredo), si riceverà Teredo traffico solo se si imposta l'opzione socket IPV6_PROTECTION_LEVEL su PROTECTION_LEVEL_UNRESTRICTED. Tuttavia, Windows Firewall o qualsiasi criterio firewall compatibile con attraversamento perimetrale può ignorare questa opzione in base alle impostazioni dei criteri per il firewall. Impostando questa opzione socket su PROTECTION_LEVEL_UNRESTRICTED, l'applicazione comunica la finalità esplicita di ricevere il traffico perimetrale attraversato dal firewall host installato nel computer locale. Pertanto, se è installato un firewall host compatibile con attraversamento perimetrale, avrà la decisione finale sull'accettazione di un pacchetto. Per impostazione predefinita, senza un'opzione socket impostata:

  • o Se Windows Firewall è abilitato (o è installato un altro firewall host compatibile con l'attraversamento perimetrale) nel computer locale, indipendentemente dal fatto che venga applicato. Per impostazione predefinita, il firewall host con riconoscimento dell'attraversamento perimetrale blocca Teredo traffico. Pertanto, le applicazioni osserveranno il valore predefinito come se fosse PROTECTION_LEVEL_EDGERESTRICTED.
  • o Se Windows Firewall non è abilitato e nel sistema locale non è installato alcun altro firewall host compatibile con attraversamento perimetrale, il valore predefinito sarà PROTECTION_LEVEL_EDGERESTRICTED.

In Windows Vista e Windows Server 2008 il valore predefinito per IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_UNRESTRICTED. Tuttavia, il valore effettivo dipende dal fatto che Windows Firewall sia abilitato. Windows Firewall è compatibile con l'attraversamento perimetrale (Teredo compatibile), indipendentemente dal valore impostato per il IPV6_PROTECTION_LEVEL e ignora se IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_UNRESTRICTED. Il valore effettivo dipende quindi dai criteri del firewall. Quando Windows Firewall è disabilitato e non è installato alcun altro firewall compatibile con attraversamento perimetrale nel computer locale, il valore predefinito per IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_UNRESTRICTED.

In Windows Server 2003 e Windows XP il valore predefinito per IPV6_PROTECTION_LEVEL è PROTECTION_LEVEL_EDGERESTRICTED. A meno che non sia stata impostata l'opzione socket IPV6_PROTECTION_LEVEL su PROTECTION_LEVEL_UNRESTRICTED, non si riceverà alcun traffico Teredo.

A seconda del IPV6_PROTECTION_LEVEL, un'applicazione che richiede traffico non richiesto da Internet potrebbe non essere in grado di ricevere traffico non richiesto. Tuttavia, questi requisiti non sono necessari per ricevere traffico richiesto tramite l'interfaccia di Windows Teredo. Per altri dettagli sull'interazione con Teredo, vedere Ricezione di traffico richiesto tramite Teredo.

Quando i pacchetti o le connessioni in ingresso vengono rifiutati a causa del livello di protezione impostato, il rifiuto viene gestito come se nessuna applicazione fosse in ascolto su tale socket.

Nota

L'opzione socket IPV6_PROTECTION_LEVEL non comporta necessariamente restrizioni di accesso per i socket IPv6 o limita l'attraversamento NAT usando un metodo diverso da Windows Teredo o anche usando un'altra implementazione di Teredo da un altro fornitore.

 

getsockopt

Ricezione di traffico sollecitato su Teredo

Setsockopt