Udostępnij za pośrednictwem


Kontrola dostępu (platforma filtrowania systemu Windows)

W przypadku platformy filtrowania systemu Windows (WFP) usługa podstawowego aparatu filtrowania (BFE) implementuje standardowy model kontroli dostępu systemu Windows na podstawie tokenów dostępu i deskryptorów zabezpieczeń.

Model kontroli dostępu

Deskryptory zabezpieczeń można określić podczas dodawania nowych obiektów WFP, takich jak filtry i warstwy podrzędne. Deskryptory zabezpieczeń są zarządzane przy użyciu funkcji zarządzania WFP Fwpm*GetSecurityInfo0 i Fwpm*SetSecurityInfo0, gdzie * oznacza nazwę obiektu WFP. Te funkcje są semantycznie identyczne z funkcjami Windows GetSecurityInfo i SetSecurityInfo.

Notatka

Funkcje Fwpm*SetSecurityInfo0 nie mogą być wywoływane z poziomu jawnej transakcji.

Notatka

Funkcje Fwpm*SetSecurityInfo0 można wywoływać tylko z poziomu sesji dynamicznej, jeśli są one używane do zarządzania obiektem dynamicznym utworzonym w ramach tej samej sesji.

Domyślny deskryptor zabezpieczeń silnika filtrującego (główny obiekt Silnika w poniższym diagramie) jest jak poniżej.

  • Przyznaj GENERIC_ALL (GA) prawa dostępu do grupy Administratorzy (wbudowanej).
  • Przyznaj GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) prawa dostępu operatorom konfiguracji sieci.
  • Przyznaj GRGWGX prawa dostępu do następujących identyfikatorów zabezpieczeń usługi (SSID): MpsSvc (Zapora systemu Windows), NapAgent (agent ochrony dostępu do sieci), PolicyAgent (agent zasad IPsec), RpcSs (zdalne wywołanie procedury) i WdiServiceHost (host usługi diagnostycznej).
  • Przyznaj wszystkim FWPM_ACTRL_OPEN i FWPM_ACTRL_CLASSIFY. (Są to prawa dostępu specyficzne dla programu WFP, opisane w poniższej tabeli).

Pozostałe domyślne deskryptory zabezpieczeń są uzyskiwane za pośrednictwem dziedziczenia.

Istnieją pewne kontrole dostępu, których nie można wykonać na poziomie pojedynczego obiektu, takie jak wywołania funkcji Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0. W przypadku tych funkcji istnieją obiekty kontenera dla każdego typu obiektu. W przypadku standardowych typów obiektów (na przykład dostawców, wywołań, filtrów) istniejące funkcje Fwpm*GetSecurityInfo0 i Fwpm*SetSecurityInfo0 są przeciążone, tak aby parametr null GUID identyfikował skojarzony kontener. W przypadku innych typów obiektów (na przykład zdarzeń sieciowych i skojarzeń zabezpieczeń IPsec) istnieją jawne funkcje do zarządzania informacjami o zabezpieczeniach kontenera.

BFE obsługuje automatyczne dziedziczenie wpisów listy kontroli dostępu (DACL - Discretionary Access Control List). BFE nie obsługuje wpisów kontroli dostępu w Systemowej Liście Kontroli Dostępu (SACL) ACE. Obiekty dziedziczą aces z ich kontenera. Kontenery dziedziczą ACEs z silnika filtrującego. Ścieżki propagacji są wyświetlane na poniższym diagramie.

Diagram przedstawiający ścieżki propagacji ACE, począwszy od

W przypadku standardowych typów obiektów BFE wymusza wszystkie ogólne i standardowe prawa dostępu. Ponadto WFP definiuje następujące określone prawa dostępu.

Prawo dostępu do WFP Opis
FWPM_ACTRL_ADD
Wymagane do dodania obiektu do kontenera.
FWPM_ACTRL_ADD_LINK
Wymagane do utworzenia skojarzenia z obiektem. Aby na przykład dodać filtr odnoszący się do wywołania, osoba wywołująca musi mieć dostęp typu ADD_LINK do tego wywołania.
FWPM_ACTRL_BEGIN_READ_TXN
Wymagane do rozpoczęcia jawnej transakcji odczytu.
FWPM_ACTRL_BEGIN_WRITE_TXN
Wymagane do rozpoczęcia jawnej transakcji zapisu.
FWPM_ACTRL_CLASSIFY
Wymagane jest klasyfikowanie względem warstwy trybu użytkownika.
FWPM_ACTRL_ENUM
Wymagane do wyliczenia obiektów w kontenerze. Jednak moduł wyliczający zwraca tylko obiekty, do których obiekt wywołujący ma dostęp FWPM_ACTRL_READ.
FWPM_ACTRL_OPEN
Wymagane do otwarcia sesji z BFE.
FWPM_ACTRL_READ
Wymagane do odczytania właściwości obiektu.
FWPM_ACTRL_READ_STATS
Wymagane do odczytu statystyk.
FWPM_ACTRL_SUBSCRIBE
Wymagane do subskrybowania powiadomień. Subskrybenci otrzymają tylko powiadomienia dotyczące obiektów, do których mają dostęp FWPM_ACTRL_READ.
FWPM_ACTRL_WRITE
Wymagane do ustawienia opcji silnika.

Funkcja BFE pomija wszystkie kontrole dostępu dla wywołań w trybie jądra.

Aby uniemożliwić administratorom zablokowanie się z BFE, członkowie wbudowanej grupy administratorów są zawsze przyznawani FWPM_ACTRL_OPEN do obiektu silnika. W związku z tym administrator może odzyskać dostęp za pomocą poniższych kroków.

  • Włącz uprawnienia SE_TAKE_OWNERSHIP_NAME.
  • Wywołaj FwpmEngineOpen0. Wywołanie powiedzie się, ponieważ obiekt wywołujący jest członkiem grupy Wbudowani Administratorzy.
  • Przejmij własność obiektu silnika. Działa to, ponieważ wywołujący ma uprawnienia SE_TAKE_OWNERSHIP_NAME.
  • Zaktualizuj DACL. Powodzenie tego jest możliwe, ponieważ właściciel zawsze ma dostęp do WRITE_DAC.

Ponieważ BFE obsługuje własne niestandardowe inspekcje, nie generuje ogólnych inspekcji dostępu do obiektów. W związku z tym SACL jest ignorowany.

Wymagane prawa dostępu WFP

W poniższej tabeli przedstawiono prawa dostępu wymagane przez funkcje WFP w celu uzyskania dostępu do różnych obiektów platformy filtrowania. Funkcje FwpmFilter* są wyświetlane jako przykład uzyskiwania dostępu do obiektów standardowych. Wszystkie inne funkcje, które uzyskują dostęp do obiektów standardowych, są zgodne z modelem dostępu funkcji FwpmFilter*.

Funkcja Sprawdzono obiekt Wymagany dostęp
FwpmEngineOpen0 Silnik FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Silnik FWPM_ACTRL_READ
FwpmEngineSetOption0 Silnik FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Silnik FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Silnik FWPM_ACTRL_BEGIN_READ_TXN & FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Dostawca kontenerów
Warstwa
Sub-Layer
Objaśnienie
Kontekst dostawcy
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filtr DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
Filtr FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Filtr kontenera
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Kontener FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Kontener FWPM_ACTRL_READ
IPsecGetStatistics0 IPsec SA DB FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
Baza danych SA IPsec FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
Baza danych SA IPsec USUŃ
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
IkeextGetStatistics0 Baza danych IKE SA FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 Baza danych IKE SA USUŃ
IkeextSaGetById0 Baza danych IKE SA FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 Baza danych IKE SA FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Kontener FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Brak dodatkowych kontroli dostępu poza tymi dla poszczególnych filtrów i kontekstów dostawcy