pfSense의 정적 터널 주소: 선호인가 예약인가
클라이언트 재정의가 주는 것은 선호 주소이며 예약된 주소가 아니다. 동적 허용을 닫은 정적 전용 서버와, 규칙이 그것을 신뢰하기 전에 충족되어야 할 조건을 비교한다.
두 설계는 종이 위에서는 비슷해 보이지만 규칙이 그것에 의존하면 매우 다르게 동작한다. 하나는 클라이언트 재정의에 주소를 입력하고 그 주소를 신원으로 신뢰한다. 다른 하나는 동적 허용을 완전히 닫아서 엔드포인트가 고유 할당을 받거나 아니면 연결되지 않는다. 주소를 방어 가능한 정책 입력으로 바꾸는 것은 두 번째뿐이며, 방화벽 규칙을 하나도 쓰기 전에 이 차이를 이해할 가치가 있다.
재정의 주소가 실제로 약속하는 것
클라이언트별 재정의는 클라이언트별 옵션을 담고 그중에는 선호 터널 주소도 있다. Netgate는 그 주소를 예약이 아니라 선호라고 설명하므로 동적 풀이 그 주소를 다른 누구에게도 내주지 않는다.
보통은 이것으로 충분한데, 충돌은 드물고 클라이언트는 보통 요청한 것을 받기 때문이다. 그것은 편의에는 충분하고 권한 부여에는 부족하다. 편의와 권한 부여는 서로 다른 요구이며 충돌에서 살아남는 것은 둘 중 하나뿐이다.
서브넷 토폴로지에서는 이 필드가 클라이언트 주소와 서버 네트워크의 마스크를 함께 받으므로 10.90.0.0/24 터널 안의 주소는 10.90.0.10/24로 쓴다.
그 어느 것도 번호를 예약하지 않는다. 재정의가 일치하지 않는 클라이언트나 중복 세션은 풀의 다른 곳에 떨어질 수 있고, 주소를 기준으로 한 규칙은 그때 거기에 없는 사람을 서술한다.
범위가 한정된 기본값으로 동적 경로를 닫는다
대안은 정적 전용 서버로, 허용된 모든 엔드포인트가 자기 신원과 자기 고유 주소를 가지며 다른 것은 들어오지 않는다.
구현은 그 한 서버로 범위를 한정하고 연결 차단을 켠 DEFAULT 재정의다. 일치하는 재정의가 없는 클라이언트는 그러면 일반 동적 허용으로 되돌아갈 수 없다. 바로 그 한 줄이 선호를 닫힌 집합으로 바꾼다.
범위가 중요하다. 장비의 모든 VPN 인스턴스에 기본 재정의를 적용하면 무관한 터널까지 잠그게 되고, 그 실패는 정책 결정이 아니라 고장 난 서비스처럼 보인다. 허용 모델을 바꾸는 그 한 서버에 묶어야 한다. 그런 다음 다음 사람이 그것이 어느 터널에 속하는지 기억하지 못할 것이므로 변경 기록에 범위를 적어 두어야 한다.
그 뒤 허용 집합 전체를 감사한다. 기본 차단은 주소 없이 남은 이름 있는 재정의를 고치지 않으며, 그 엔드포인트는 이유에 대한 뚜렷한 단서 없이 그냥 연결에 실패한다.
서버가 실제로 쓰는 신원에 맞춘다
재정의는 무언가에 일치한다. 인증서의 공통 이름으로 대조하는 서버에서는 재정의 이름이 그 공통 이름이어야 하며 사람의 표시 이름이 아니다. 계정 목록이 아니라 인증서에서 복사한다.
사용자 이름을 공통 이름으로 쓰도록 구성된 서버는 전혀 다른 키로 대조하므로 인증서 이름을 딴 재정의는 결코 발동하지 않는다. 설정을 읽고 계정 목록이 보여 주는 것에서 추측하지 않는다.
배포가 요구하는 추가 인증 요소는 유지한다. 닫힌 주소 모델이 바꾸는 것은 누가 연결할 수 있고 어느 주소를 받는가이며, 인증서 검사나 두 번째 요소를 대체하지 않는다.
매핑이 튼튼해진 뒤에 접근 규칙을 쓴다
신원에서 주소로 가는 매핑이 닫히면 규칙은 주소를 사람인 척하지 않고 참조할 수 있다. 한 사람의 엔드포인트를 묶은 별칭은 특정 서비스에 닿고 다른 별칭은 다른 것에 닿는다. 별칭이 검토 가능한 객체가 되고 주소는 그 안의 구현 세부가 된다.
목적지와 포트를 명시적으로 유지한다. 터널 풀 전체에서 로컬 네트워크 전체를 허용하는 것은 이 연습이 대체하려던 바로 그 설계다.
플로팅, 그룹, 인터페이스 규칙은 앞선 넓은 통과가 뒤의 좁은 통과를 무력화하므로 실제 평가 순서로 읽는다. 클라이언트 간 내부 전달을 끄면 피어 트래픽이 그 규칙을 검토하는 경계에 머문다. 종이에만 있는 규칙은 집행이 아니다.
부정 사례를 시험한다
새 연결 네 가지를 시험한다. 이름 있는 엔드포인트, 재정의가 전혀 없는 엔드포인트, 도달할 수 있어야 하는 서비스, 도달해서는 안 되는 서비스다. 목록에 없는 엔드포인트가 중요한 사례이며 설계는 바로 그것을 막기 위해 존재하므로, 그것이 연결된다면 기본 차단이 제 역할을 하지 못하는 것이다.
IPv4 주소 정책은 두 번째 스택에 대해 아무 말도 하지 않으므로 IPv6는 따로 확인한다. 그다음 애플리케이션이 여전히 사용자를 권한 부여하는지, 그리고 터널 주소가 네트워크 사실이지 누가 키보드 앞에 있는지의 증거가 아닌지를 확인한다. 두 확인 모두 승인 기록에 들어가야 한다.
마지막으로 이전을 계획한다. 새 재정의와 좁은 규칙은 이미 수립된 세션을 소급해 바꾸지 않으므로 기존 상태는 만료되거나 의도적으로 지워져야 한다.