Devin.KR

NAT와 접근 통제 구분

65분 안팎

학습 목표

주소 변환 성공과 방화벽 허용의 차이 및 포트 전달 위험을 학교 정책 초안에 기록합니다.

개념

변환 성공 뒤 남는 질문

학생이 가상 외부 웹 본문을 받았다고 해서 학교 보안 정책이 완성된 것은 아닙니다. SNAT는 패킷의 출발지 주소를 바꾸는 기능이고 접근 통제는 누가 어느 서비스와 통신할 수 있는지를 결정하는 기능입니다. 이번 레슨에서는 성공한 변환 증거의 범위를 설명하고 포트 전달 요구가 들어왔을 때 확인할 조건을 정책 초안으로 작성합니다. 실제 필터 적용은 다음 정책 모듈에서 다룹니다.

서로 다른 두 검토 축

변환 표에는 내부 끝점과 외부 끝점의 대응을 적습니다. 정책 표에는 출발 역할, 목적지, 전송 프로토콜, 목적지 포트, 허용 또는 차단, 판단 근거를 적습니다. 같은 .1로 나갔다는 사실은 학생과 교직원이 같은 권한이라는 뜻이 아닙니다. 외부 로그에서 주소가 합쳐진 만큼 내부 역할 자료와 경계 기록을 연결하여 정책 대상이 누구인지 유지해야 합니다.

현재 규칙의 범위를 해석합니다

nat.nft는 학생과 교직원의 .2:8080 요청만 변환합니다. guest가 조건에 없는 것은 변환을 하지 않는다는 뜻입니다. 별도 학교 반환 경로가 생기면 guest 통신 결과도 달라질 수 있습니다. 따라서 guest 차단을 보장하려면 필터 정책과 실제 차단 시험이 필요합니다. NAT 일치 조건을 허용 목록이라고 부르지 말고 변환 대상 목록이라고 기록합니다.

학교 정책 초안 만들기

학생과 교직원은 가상 외부 웹 TCP 8080을 업무 실습 목적으로 허용할 후보입니다. guest와 서버의 외부 요청은 요구사항 확인 전에는 승인하지 않는 후보로 적습니다. DNS 같은 다른 서비스 요구는 별도 행으로 다룹니다. 승인 여부와 현재 구현 여부를 각각 적으면 아직 적용하지 않은 필터를 적용했다고 보고하는 오류를 막을 수 있습니다. 초안은 최종 운영 정책이 아닙니다.

DNAT 요구를 받았을 때

외부에서 학교 서버를 열어 달라는 요청은 외부 주소·포트에 도착한 패킷의 목적지를 내부 주소·포트로 바꾸는 DNAT 요구일 수 있습니다. SNAT 성공 자료만으로 이 구성을 승인하지 않습니다. 어떤 외부 주체가 접속하는지, 어떤 내부 서비스가 필요한지, 인증과 TLS가 준비됐는지, 누가 변경 책임을 맡는지 먼저 질문합니다. 이 레슨에서는 실제 DNAT 규칙을 추가하지 않습니다.

포트 전달은 서비스 노출입니다

경계 8080을 내부 서버 8080으로 전달하면 내부 서비스가 외부 접속 시도의 대상이 될 수 있습니다. 주소를 숨긴다는 설명으로 노출 위험을 지우지 않습니다. 애플리케이션의 인증, 업데이트, 접근 제한, 로그, 요청량 제어를 함께 검토합니다. 내부 관리 포트를 편의를 위해 그대로 열자는 요구에는 필요한 출발지 범위와 더 좁은 대체 경로를 확인한 뒤 변경 계획을 작성합니다.

응답 상태와 새 요청을 나눕니다

학생이 시작한 연결의 응답이 내부로 돌아오는 동작과 외부에서 새 연결을 시작하는 동작은 다릅니다. 상태 기반 필터는 기존 흐름의 응답을 허용하도록 구성할 수 있지만 모든 새 외부 연결을 허용할 필요는 없습니다. NAT의 대응 상태와 필터의 허용 판단이 함께 쓰이더라도 역할은 구분합니다. 새 연결과 응답을 같은 시험 한 건으로 묶으면 정책 빈틈을 놓치게 됩니다.

NAT는 암호화가 아닙니다

출발지 IP와 포트가 바뀌어도 평문 HTTP 내용이 TLS처럼 암호화되는 것은 아닙니다. 학교 밖에서 개인 정보가 오가는 서비스라면 전송 보호를 별도로 검토합니다. 이번 .2:8080은 가상 웹 시험 본문만 전달합니다. 실제 계정이나 개인 자료를 넣지 않습니다. 주소 변환 성공으로 도청 방지나 서버 신원 인증을 확인했다고 적지 않습니다.

NAT 없이도 경로는 가능합니다

외부 서버에 학교망으로 돌아가는 정적 경로를 추가하면 이 격리 실습의 사설 주소 사이에도 왕복 통신을 구성할 수 있습니다. 사설 주소라는 이름 자체가 패킷 차단 장치인 것은 아닙니다. 인터넷에서는 사설 주소를 전역 고유 주소처럼 사용할 수 없다는 주소 운영 조건과 격리 망의 라우팅 가능성을 구분합니다. 이번 미션은 그 경로를 일부러 넣지 않아 변환의 역할을 보여 줍니다.

변경 후 기존 연결을 경계합니다

SNAT 규칙을 제거하고 오래 열린 연결을 재사용하면 기존 대응 상태 때문에 예상과 다른 결과가 나올 수 있습니다. 검증 계획에는 새 출발지 포트와 새 연결을 적습니다. 상태를 전부 지우는 작업은 다른 연결에 영향을 줄 수 있으므로 이번 실습은 작은 격리 망에서 새 흐름으로 비교합니다. 실제 운영 절차를 쓰게 된다면 영향 범위와 복구 계획을 담당자에게 설명해야 합니다.

외부 주소 하나로 사용자를 판단하지 않습니다

학교 전체가 같은 주소로 보이면 외부 IP 차단이나 속도 제한이 여러 사용자에게 함께 영향을 줄 수 있습니다. 한 요청의 외부 출발지를 특정 학생의 신원으로 확정하지 않습니다. 로그 연계에는 시간, 전송 방식, 양쪽 끝점과 애플리케이션의 인증 기록이 필요합니다. 필요한 기록만 보관하며 목적 없는 장기 수집을 정책 초안의 기본값으로 삼지 않습니다.

검증 행을 먼저 설계합니다

허용 행은 대상 클라이언트에서 해당 서비스 응답을 받아야 하고 차단 행은 동일 조건의 새 요청이 허용되지 않는지 확인해야 합니다. 서버 미기동으로 실패한 결과는 정책 차단의 증거가 아닙니다. 먼저 허용된 출발지에서 서버 준비를 확인하고 차단 출발지 시험을 연결합니다. 이 모듈에서는 시험 계획을 제출하며 아직 적용하지 않은 필터의 차단 결과는 미확인으로 적습니다.

리뷰에서 자주 나오는 잘못된 문장

NAT가 있으니 외부 요청은 안전하다는 문장은 삭제합니다. NAT 규칙에서 guest를 빼서 guest를 차단했다는 문장도 수정합니다. guest는 변환 대상에서 제외되었고 접근 차단은 별도 검증 예정이라고 쓰는 편이 정확합니다. 외부 웹 200은 그 요청의 HTTP 응답 성공이며 모든 목적지와 포트가 정상이라는 보고는 아닙니다. 결과마다 관측 조건을 한 문장으로 덧붙입니다.

제출물과 사람의 검토 기준

policy-draft.md에는 역할별 외부 통신 네 행, SNAT와 필터의 책임 구분, 포트 전달 요청에 대한 검토 질문 세 가지, 허용·차단 시험 계획과 복구 조건을 적습니다. 각 행은 목적지 주소와 프로토콜·포트를 빠뜨리지 않습니다. 판단 근거는 편의보다 학교 요구사항에 연결합니다. 자동 채점이 없는 설계 실습이므로 동료에게 어떤 증거가 아직 없고 다음 모듈이 무엇을 검증해야 하는지 설명합니다.

따라하기

증거의 범위 표시

m06 nat.csv와 negative.txt를 읽고 확인된 변환·왕복과 아직 미확인인 접근 차단을 두 문장으로 구분합니다.

정책 행 작성

policy-draft.md에 학생·교직원·guest·서버의 가상 외부 TCP 8080 통신을 한 행씩 씁니다. 출발 역할, 목적지, 프로토콜, 포트, 승인 후보, 근거, 현재 구현 상태를 포함합니다.

포트 전달 리뷰

관리 포트 공개 요구에 대해 출발지 제한, 인증·TLS, 책임자·복구 조건 질문을 작성합니다. SNAT 성공으로 승인하지 않습니다.

다음 모듈 검사 계획

서버 준비 확인, 허용된 요청의 응답, 차단 대상의 새 요청, 변경 복구 후 재시험을 연결합니다. 실제 필터 적용 전 결과는 미확인으로 적습니다.

확인 문제

실습

policy-draft.md를 제출합니다. 역할별 통신 네 행, NAT와 필터의 책임 구분, DNAT 검토 질문 세 가지, 허용·차단 시험 조건, 복구 조건을 포함합니다. 리뷰 기준은 서비스 끝점의 구체성, 승인 근거, 계획과 관측의 구분입니다.

더 읽기

면접 질문

  • NAT 전후 패킷 주소의 차이를 설명합니다.
  • 방화벽 정책을 검증하는 실습 방법을 설명합니다.