다음을 통해 공유


액세스 제어(Windows 필터링 플랫폼)

WFP(Windows 필터링 플랫폼)에서 BFE(기본 필터링 엔진) 서비스는 액세스 토큰 및 보안 설명자에 따라 표준 Windows 액세스 제어 모델 구현합니다.

액세스 제어 모델

필터 및 하위 계층과 같은 새 WFP 개체를 추가할 때 보안 설명자를 지정할 수 있습니다. 보안 설명자는 Fwpm*GetSecurityInfo0 Fwpm*SetSecurityInfo0 WFP 관리 함수를 사용하여 관리됩니다. 여기서 * WFP 개체의 이름을 의미합니다. 이러한 함수는 Windows GetSecurityInfoSetSecurityInfo 함수와 의미상 동일합니다.

메모

Fwpm*SetSecurityInfo0 함수는 명시적 트랜잭션 내에서 호출할 수 없습니다.

메모

Fwpm*SetSecurityInfo0 함수는 동일한 세션 내에서 만든 동적 개체를 관리하는 데 사용되는 경우에만 동적 세션 내에서 호출할 수 있습니다.

필터 엔진의 기본 보안 설명자(아래 다이어그램의 루트 엔진 개체)는 다음과 같습니다.

  • 기본 제공 Administrators 그룹에 GA(GENERIC_ALL) 액세스 권한을 부여합니다.
  • 네트워크 구성 운영자에게 GENERIC_READ(GR) , GENERIC_WRITE(GW) , GENERIC_EXECUTE(GX) 액세스 권한을 부여합니다.
  • 다음 서비스 보안 식별자(SSID)에 GRGWGX 액세스 권한을 부여합니다: MpsSvc(Windows 방화벽), NapAgent(네트워크 액세스 보호 에이전트), PolicyAgent(IPsec 정책 에이전트), RpcSs(원격 프로시저 호출), WdiServiceHost(진단 서비스 호스트).
  • 모든 사람에게 FWPM_ACTRL_OPENFWPM_ACTRL_CLASSIFY를 부여하십시오. (아래 표에 설명된 WFP 관련 액세스 권한입니다.)

나머지 기본 보안 설명자는 상속을 통해 파생됩니다.

Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 함수 호출과 같은 일부 액세스 검사는 개별 개체 수준에서 수행할 수 없습니다. 이러한 함수의 경우 각 개체 형식에 대한 컨테이너 개체가 있습니다. 표준 개체 형식(예: 공급자, 설명선, 필터)의 경우 기존 Fwpm*GetSecurityInfo0Fwpm*SetSecurityInfo0 함수가 오버로드되어 null GUID 매개 변수가 연결된 컨테이너를 식별합니다. 다른 개체 형식(예: 네트워크 이벤트 및 IPsec 보안 연결)의 경우 컨테이너의 보안 정보를 관리하기 위한 명시적 함수가 있습니다.

BFE는 DACL(임의 액세스 제어 목록) ACE(액세스 제어 항목)의 자동 상속을 지원합니다. BFE는 SACL(시스템 액세스 제어 목록) ACE를 지원하지 않습니다. 개체는 해당 컨테이너에서 ACE를 상속합니다. 컨테이너는 필터 엔진에서 ACE를 상속합니다. 전파 경로는 아래 다이어그램에 나와 있습니다.

'엔진'으로 시작하는 ACE 전파 경로를 보여 주는 다이어그램

표준 개체 형식의 경우 BFE는 모든 제네릭 및 표준 액세스 권한을 적용합니다. 또한 WFP는 다음과 같은 특정 액세스 권한을 정의합니다.

WFP 액세스 권한 묘사
FWPM_ACTRL_ADD
컨테이너에 개체를 추가하는 데 필요합니다.
FWPM_ACTRL_ADD_LINK
개체에 대한 연결을 만드는 데 필요합니다. 예를 들어 설명선 참조 필터를 추가하려면 호출자에게 설명선에 대한 ADD_LINK 액세스 권한이 있어야 합니다.
FWPM_ACTRL_BEGIN_READ_TXN
명시적 읽기 트랜잭션을 시작하는 데 필요합니다.
FWPM_ACTRL_BEGIN_WRITE_TXN
명시적 쓰기 트랜잭션을 시작하는 데 필요합니다.
FWPM_ACTRL_CLASSIFY
사용자 모드 계층에 대해 분류하는 데 필요합니다.
FWPM_ACTRL_ENUM
컨테이너의 개체를 열거하는 데 필요합니다. 그러나 열거자는 호출자가 FWPM_ACTRL_READ 액세스 권한이 있는 개체만 반환합니다.
FWPM_ACTRL_OPEN
BFE를 사용하여 세션을 여는 데 필요합니다.
FWPM_ACTRL_READ
개체의 속성을 읽는 데 필요합니다.
FWPM_ACTRL_READ_STATS
통계를 읽는 데 필요합니다.
FWPM_ACTRL_SUBSCRIBE
알림을 구독하는 데 필요합니다. 구독자는 액세스 권한이 FWPM_ACTRL_READ 개체에 대한 알림만 받습니다.
FWPM_ACTRL_WRITE
엔진 옵션을 설정하는 데 필요합니다.

BFE는 커널 모드 호출자에 대한 모든 액세스 검사를 건너뜁니다.

관리자가 BFE에서 본인에게 접근 권한을 차단하지 않도록 기본 제공 관리자 그룹의 구성원은 엔진 객체에 FWPM_ACTRL_OPEN을 항상 부여받습니다. 따라서 관리자는 다음 단계를 통해 액세스 권한을 다시 얻을 수 있습니다.

  • SE_TAKE_OWNERSHIP_NAME 권한을 활성화합니다.
  • FwpmEngineOpen0호출합니다. 호출자가 기본 제공 관리자의 구성원이기 때문에 호출이 성공합니다.
  • 엔진 개체의 소유권을 가져옵니다. 호출자에게 SE_TAKE_OWNERSHIP_NAME 권한이 있기 때문에 이 작업이 성공합니다.
  • DACL을 업데이트합니다. 소유자에게 항상 WRITE_DAC 액세스 권한이 있기 때문에 이 작업이 성공합니다.

BFE는 자체 사용자 지정 감사를 지원하므로 일반 개체 액세스 감사를 생성하지 않습니다. 따라서 SACL은 무시됩니다.

WFP 필수 액세스 권한

아래 표에서는 다양한 필터링 플랫폼 개체에 액세스하기 위해 WFP 함수에 필요한 액세스 권한을 보여 줍니다. FwpmFilter* 함수는 표준 개체에 액세스하기 위한 예제로 나열됩니다. 표준 개체에 액세스하는 다른 모든 함수는 FwpmFilter* 함수 액세스 모델을 따릅니다.

기능 개체 확인됨 액세스 필요
FwpmEngineOpen0 엔진 FWPM_ACTRL_OPEN
FwpmEngineGetOption0 엔진 FWPM_ACTRL_READ (읽기 권한)
FwpmEngineSetOption0 엔진 FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 엔진 FWPM_ACTRL_ENUM
FwpmTransactionBegin0 엔진 FWPM_ACTRL_BEGIN_READ_TXN & FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 컨테이너 공급자

Sub-Layer
주석
공급자 컨텍스트
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
필터 DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
필터 FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 컨테이너 필터
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 컨테이너 FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 컨테이너 FWPM_ACTRL_READ
IPsecGetStatistics0 IPsec 보안 연결 데이터베이스 (SA DB) FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA DB FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA DB 삭제
IPsecSaContextGetById0 IPsec 보안 연결 데이터베이스 (SA DB) FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA 데이터베이스 (DB) FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA DB FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA DB 삭제
IkeextSaGetById0 IKE SA DB FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 컨테이너 FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
개별 필터 및 공급자 컨텍스트에 대한 추가 액세스 확인이 없습니다.