두 호스트 사이의 IPsec: 보호가 시작되는 곳과 끝나는 곳
호스트 쌍은 게이트웨이 없이도 선택한 흐름을 보호할 수 있다. 엔드포인트, 트래픽을 선택하는 정책, 그리고 분리된 채로 남아야 하는 권한을 정의한다.
호스트 쌍에서의 보호는 보안 연관이 종단되는 지점에서 시작되며, 바로 이 점을 게이트웨이 중심의 직관이 가장 자주 놓친다. 애플리케이션 서버와 그 데이터베이스 서버는 경로에 원격 접속 집선기가 없어도 자기들끼리의 대화를 직접 보호할 수 있고, 그때 보호 경계는 방화벽이 아니라 각 호스트 내부에 놓인다. 그것이 주는 것은 선택한 흐름에 대한 종단 간 보호이다. 그것이 주지 않는 것은 누가 어느 행을 읽어도 되는지에 대한 결정이다.
경계는 SA가 종단되는 곳이다
RFC 4301은 전송 모드 보안 연관을 호스트 쌍 사이에서 종단 간 보호에 흔히 쓰이는 구성으로 설명한다. 그 두 호스트가 키를 보유하고, 각자 자기 패킷 중 무엇이 연관에 들어갈지 정한다. 게이트웨이 터널은 전혀 다른 곳에서 종단되어 추가적인 내부 구간을 거쳐 호스트에 도달하므로, 패킷이 여정의 대부분에서 암호화되어 있더라도 그것은 다른 신뢰 경계이다.
그렇지만 호스트 간과 전송 모드가 동의어는 아니다. 두 호스트 사이에 터널 모드 연관을 만드는 것도 똑같이 옳은 선택이므로, 모드를 먼저 고르고 그다음에 엔드포인트를 기술한다. 모드만 아는 검토자는 다른 쪽을 전제하게 되므로, 피어 주소 옆의 설계 메모에 두 가지를 모두 적어 둔다.
보호는 SPD가 정하고 방향은 라우트가 정한다
라우팅 테이블은 패킷이 어디로 가는지를 답한다. 보안 정책 데이터베이스는 선택된 트래픽이 어떻게 보호 경계를 넘는지를 답하며, 방향별로 자체 선택자를 사용해 답한다. 이 분리가 있기 때문에 데이터베이스로 가는 경로가 동작한다는 사실은 요청이 보호되었는지를 전혀 증명하지 못하며, 또한 이미 성립된 협상이 있다는 것 은 이 특정 애플리케이션이 그것에 매칭되었음을 전혀 증명하지 못한다. 카운터는 거기까지 도달한 흐름만 설명하므로, 카운터를 비교하기 전에 선택자를 비교해야 한다.
Linux에서 ip xfrm policy는 그 항목들을 방향, 우선순위, 선택자, 그리고 allow, block, trap 중 하나의 동작과 함께 출력하고, ip xfrm state는 그 결과로 생긴 연관과 그 카운터를 보여 준다. 둘을 함께 읽어야 더 넓은 allow 항목이 먼저 매칭되어 조용히 터널을 우회한 흐름을 찾을 수 있다.
우선순위 순서는 구현 세부 사항이 아니라 정책의 일부이다. 데이터베이스 포트를 보호해야 하는 좁은 항목이 더 높은 우선순위의 넓은 항목에 밀리며, 그 장애는 정책이 아예 조회되지 않은 것처럼 보인다.
전송 모드가 덮는 것은 다음 계층이며 IP 헤더가 아니다
| Transport mode | Tunnel mode | |
|---|---|---|
| Original IP header | kept for routing the flow | replaced by an outer header |
| What ESP protects | the carried next-layer payload | the whole inner IP packet |
| Where it terminates | commonly the two hosts | gateway pair, or a host pair |
전송 모드에서 ESP 헤더는 IP 헤더와 페이로드 사이에 놓이고, 그 헤더의 주소 필드는 경로상의 모든 장치에 그대로 보인다. 주소가 비밀이 아니고 페이로드가 비밀일 때는 그것으로 충분하다. 내부 토폴로지까지 숨겨야 한다면 그것은 잘못된 선택인데, 원래 헤더를 새 헤더 안에 감싸는 것은 터널 모드뿐이기 때문이다.
두 모드 모두 여러 다음 계층 프로토콜을 실을 수 있고, ESP는 호스트가 보내는 모든 것이 아니라 선택자가 매칭한 것을 보호한다.
선택 범위는 연결보다 좁다
하나의 연관이 여러 흐름을 실을 수 있지만, 실을 수 있는 것은 정책이 선택한 것뿐이다. 의도한 관계에 대해 피어 신원, 출발지와 목적지 주소, 프로토콜, 서비스 범위를 기록하고, 그와 별도로 매칭되지 않는 트래픽이 평문으로 나가도 되는지, 반드시 보호되어야 하는지, 연관을 사용할 수 없을 때 버려야 하는지를 정한다. 마지막 결정이 뜻밖의 결과를 낳는 이유는, 잘못된 출발지에 보호를 요구하는 규칙이 침입자를 막는 것만큼 확실하게 자신의 관리 접근도 막기 때문이다.
적용 방식을 바꾸는 동안에는 승인된 대역 외 경로를 유지하고, 두 호스트가 모두 도달 불가가 된 뒤가 아니라 필요해지기 전에 시험해 둔다.
기계 신원은 애플리케이션 권한이 아니다
IPsec은 설정된 피어를 인증하고 선택된 패킷을 보호한다. 사람이 어느 데이터베이스 레코드를 편집해도 되는지 정하지 않으며, 신뢰된 서버 신원을 모든 애플리케이션 권한의 부여로 바꾸지도 않는다. 애플리케이션 계정과 역할과 권한 부여는 있던 자리에 그대로 남고, 애플리케이션 수준의 TLS 요구 사항은 네트워크 경로가 이미 보호되어 있더라도 자기 목적을 그대로 지닌다.
설계는 의도한 출발지에서의 작업 하나와 거부되어야 하는 작업 하나로 승인하고, 필요한 연관을 수립할 수 없을 때 무슨 일이 일어나는지도 포함한다. 평범한 도달 가능성 시험은 패킷이 움직인다는 것만 알려 줄 뿐, 작성한 정책 아래에서 움직였다는 것은 알려 주지 않는다.