세 사람이 같은 말로 같은 것을 요청합니다: 한 서비스 이름에 대한 접근을 차단하는 것입니다. 한 사람은 브라우저가 사이트를 열지 않아야 한다는 뜻이고, 다른 사람은 데스크톱 음성 클라이언트가 자기 서버에 도달하지 않아야 한다는 뜻이며, 세 번째는 계약자 그룹이 특정 내부 애플리케이션을 쓰지 않아야 한다는 뜻입니다. 문장은 동일하지만 집행 방식은 거의 공통점이 없습니다.

계층은 그 계층이 실제로 볼 수 있는 식별자를 기준으로 고르고, 다음으로 그 계층이 포괄하는 클라이언트를 기준으로 고르십시오. 이미 아는 방화벽 명령에서 시작하는 것이 규칙이 결국 아무것도 차단하지 않거나 너무 많이 차단하게 되는 경로입니다.

이름은 모든 계층이 확인할 수 있는 정체성이 아니다

Netfilter와 비슷한 패킷 필터는 주소, 프로토콜, 포트를 봅니다. 호스트 이름은 보지 못하며, 패킷이 그곳에 도달할 때 이름은 이미 해석된 뒤입니다. 주소를 대상으로 쓴 규칙은 사용자가 그곳에 도달하려고 어떤 이름을 입력했든 그 주소에 관한 규칙입니다.

DNS 정책은 경로에서 더 앞에 위치하며, 뒤따르는 연결과 다른 객체인 질의를 봅니다. 통제된 리졸버가 돌려주는 응답을 다스리며, 이미 열려 있던 연결이나 그 리졸버를 우회하도록 설정된 클라이언트를 다스리지는 않습니다. 해석된 주소는 정책 검토와 다음 요청 사이에도 바뀔 수 있으므로 DNS 응답은 지속되는 권한 부여 진술이 아닙니다.

상위 계층은 더 많은 맥락을 보지만 더 적은 클라이언트를 포괄합니다. 이 맞교환이 주제 전체이며, 표의 어느 한 행도 결코 정답이 아닌 이유입니다. 정책이 실제로 다루는 식별자를 보는 행을 고르십시오. 그런 다음 그 행이 함축하는 범위를 받아들이십시오.

각 계층이 식별할 수 있는 것

표를 가운데 열에서 바깥으로 읽으면, 계층이 볼 수 있는 식별자가 그 계층이 정직하게 집행할 수 있는 정책을 정합니다.

LayerIdentifier it seesWhat it cannot see
Packet filteraddress, protocol, portthe name, or which other services share that address
DNS policythe queried name and the answer handed backconnections made by clients that ignore the resolver
Managed browsersupported URL patterns on managed profilesnon-browser clients, or unmanaged devices
CONNECT proxyhost and port for tunnelled requeststhe path inside an encrypted request

계층이 정책에 속하는 것은 그 계층이 보는 식별자가 통제하는 식별자와 일치할 때뿐입니다. 표는 또한 한 계층에서 쓴 규칙이 무엇을 보호하는지 다시 정하지 않고 다른 계층으로 옮겨가는 일이 드문 이유를 설명합니다.

뻔한 규칙이 실패하는 지점

주소 규칙은 통제하는 전용 주소를 가진 서비스에는 정확히 맞으며, 그 소유권은 정책에 적어야 합니다. 공유 콘텐츠 전달 주소 뒤에 있는 무엇에도 정확히 틀리며, 거기서는 같은 규칙이 무관한 서비스를 건드리고 갱신된 DNS 응답이 규칙을 호스트 이름 권한 부여로 바꾸지 않습니다.

관리되는 브라우저 정책은 복사한 주소 목록보다 웹 제한을 더 직접적으로 표현하지만, 관리 시스템이 통제하는 브라우저와 프로필에만 적용됩니다.

그 브라우저 규칙은 다른 호스트로 UDP를 보내는 음성 클라이언트에는 아무것도 하지 않으며, 그 패턴은 다른 곳에서 빌려온 와일드카드 관례가 아니라 그 제품이 정의합니다. CONNECT 프록시도 터널링된 요청에 대해 호스트와 포트를 받지만 암호화된 세션 안의 경로는 읽을 수 없습니다. 규칙은 프로토콜이 드러내는 것에 맞춰 설계하십시오. 그다음 그 틈이 다음 요청이 오는 곳이므로 무엇을 덮지 않은 채 남기는지 적어 두십시오.

명령이 아니라 클라이언트로 고르십시오

정책이 포괄해야 하는 클라이언트와 놓아도 되는 클라이언트를 물으십시오. 관리되는 브라우저 정책은 관리 시스템이 닿는 범위를 포괄하고 브라우저 경계에서 멈춥니다. 리졸버 정책은 여러분의 리졸버를 쓰는 모든 것을 포괄하며 더 넓은 집합이고, 쓰지 않는 사람에게는 열린 채로 실패합니다.

직접 운영하는 서비스라면 경로가 아니라 계정을 따르므로 애플리케이션에서의 권한 부여가 어떤 네트워크 경계보다 강합니다. VPN 경로는 도달 가능성일 뿐입니다: 서비스에 패킷을 보낼 수 있다는 것이 그것을 쓸 권한은 아닙니다. 중요한 식별자가 사용자나 채널 권한이라면 그곳에서 집행하고 네트워크 규칙은 두 번째 계층으로 다루십시오.

규칙을 자원의 용어로 쓰십시오

변호 가능한 정책은 자원, 정체성, 범위 안의 애플리케이션, 그리고 그것들을 나르는 경로를 명시하며, 사용 중인 두 주소 체계를 모두 포함합니다. 또한 규칙이 부수적으로 영향을 줄 공유 인프라에 무슨 일이 일어나는지도 밝힙니다.

그 표현은 나중에 누군가 감사할 수 있는 결정을 만듭니다. 오늘 해석된 주소로 정당화된 규칙은 주소가 처음 바뀔 때 사고를 만들며, 그 차단이 언제 한 번 옳았는지 아무도 설명하지 못할 것입니다.

관련 글