NAT(network address translation)는 외부와 라우팅이 불가능한 사설 IP주소를 공인 IP주소로 변환하여 외부와 통신이 가능하게 만들거나 조직 내부의 주소가 외부로 공개되지 않도록 하여 보안을 강화하기 위한 목적으로 만들어졌다.
NAT는 IP 패킷의 출발지 혹은 목적지 IP 주소를 다른 IP 주소로 변환 할 수 있으며, 설정에 따라 전송 계층의 TCP/UDP 포트 번호도 변환할 수 있다.
- NAT 사용 목적
기본적으로 NAT가 설정된 장비는 네트워크 출구에 위치하며, 설정에 따라 적절한 주소 변환이 이루어져 다음과 같은 사용 목적을 만족시킨다.- IPv4에서 공인 IP주소 부족 문제로 사설 IP 주소를 사용할 때, 사서 IP주소를 사진 호스트가 인터넷과 통신하려면 경계 라우터에서 NAT기 기능을 설정한다.
- 외부에 알려줄 IP가 변경되었을 떄, 내부망 모든 장비의 IP 주소를 변경하려면 상당한 시간이 소요되기 떄문에 NAT 설정만으로 변경된 IP를 통해 통신할 수 있게 한다.
- 보안의 목적으로 주소 변환 기능을 사용하면 내부 IP 주소가 외부에 알려지지 않기 때문에, 외부로부터 직접적인 공격을 막을 수 있다.
- NAT 관련 용어
NAT 설정은 다음의 두 가지 유형이 가능하다. 하나는 도메인 기반의 NAT이고, 다른 하나는 NVI(NAT Virtual Interface) 기반의 NAT이다.
도메인 기반의 NAT 설정에서는 NAT 장비를 기준으로 inside, outside 도메인이 존재해야만 주소 변환이 동작한다. 따라서 다음 그림과 같이 inside, outside 도메인이 존재해야만 주소 벼노한이 동작한다. 따라서 다음 그림과 같이 inside, outside로 선언될 각각의 인터페이스가 적어도 1개 이상 필요하다.
- Inside
: 관리자가 제어하는 네트워크로 보통 내부망이라고 한다. NAT 설정 장비에서 내부망으로 연결된 인터페이스를 Inside 도메인으로 선언한다. - Outside
: 인터넷과 같은 외부 네트워크를 말한다. NAT 설정 장비에서 외부망으로 연결되는 인터페이스를 Outside 도메인으로 선언한다. - Local Address
: 내부망에서 패킷을 캡쳐했을 때 설정된 패킷의 출발지 및 목적지 IP 주소를 Local address라고 한다.
내부망에서 외부망으로 전송되는 패킷을 내부망에서 캡쳐했을 때, 출발지 주소를 Inside Local address라고 하고, 목적지 주소를 Outside Local address라고 한다. 또 외부망에서 내부망으로 전송되는 패킷을 내부망에서 캡쳐했을 떄, 출발지 주소를 Outside Local address라고 하고, 목적지 주소를 Inside Local address라고 한다. 하여튼 내부망의 패킷에 설정된 주소는 모두 Local address이다.
보통, Inside Local address는 내부망의 PC나 서버 등에 설정된 사설 IP 주소이다. 그러나 경우에 따라서 공인 IP 주소를 사용할 수도 있다. 또 Outside Local address는 NAT 장비의 외부 인터페이스에 설정된 공인 IP 주소인 경우가 많다. 그러나 사설 IP 주소를 사용할 수도 있다. - Global address
: 외부망에서 패킷을 캡쳐했을 떄 설정된 패킷의 출발지 및 목적지 IP 주소를 Global address라고 한다.
이때, 내부망에서 외부망으로 전송되는 패킷의 출발지 주소를 Inside Global address라고 하고, 목적지 주소를 Outside Global address라고 한다. 또 외부망에서 내부망으로 전송되는 패킷의 출발지 주소를 Outside Global address라고 하고, 목적지 주소는 Inside Global address라고 한다. 하여틍 외부망의 패킷에 설정된 주소는 모두 Global address이다.
보통 Inside Global address는 NAT 장비의 외부 인터네이스에 설정된 공인 IP 주소인 경우가 많다. 또, Outside Global address는 인터넷의 목적지 주소이다. 대부분의 경우 모든 Global 주소는 공인 IP 주소이며, 이넡넷엣 라우팅이 가능해야 한다.
- Inside
- NAT 관련 용어
- Inside
- Local address : Inside 도메인에서만 사용하는 비공식적인 주소이다.
- Global address : Inside local 주소를 대신하여 외부로 알려지는 주소이다.
- Outside
- Local address : Inside 도메인에서 Outside 도메인으로 나갈 때 목적지로 사용되는 주소이다.
- Global address : Outside 도메인에서 사용되는 공식적인 주소이다. 예를 들어 다른 조직이 외부에서 사용하는 공인 IP 주소이다.
- Inside
- NAT의 동작 방식
NAT는 액세스 리스트처럼 지정된 조건에 부합될 경우, 설정된 정책에 따라 IP주소를 변환한다.
예를 들어, 1.1.1.0 대역의 네트워크를 인터넷에서 라우팅 불가능한 주소라고 가정한다면, 호스트가 서버로 통신하기 위해서는 NAT 설정이 필요하다.
NAT 장비인 R1에서 패킷의 출발지 주소가 1.1.1.1일 경우 2.2.2.225로 변환하도록 NAT 정책을 설정한다면, 출발지가 1.1.1.1인 패킷들은 R1을 통과하면서 출발지 주소가 2.2.2.225로 변경되어 목적지로 전송된다.
되돌아오는 패킷을 호스트로 전송하기 위해 NAT 장비에서 주소 변환을 할 때 생성한 NAT 테이블에 기록된 정보를 참조한다. 서버가 전송한 IP 패킷의 목적지 주소를 호스트에 설정한 IP 주소로 변환한다. - NAT의 동작 시점
트래픽 방향에 따라 NAT가 동작하는 시점이 달라진다. 트래픽이 Inside에서 Outside 방향으로 이동할 때, NAT 장비에서 주소 변환과 그 밖의 기능을 처리하는 순서는 다음과 같다.
1) 패킷의 출발지와 연결된 인터페이스에 Inbound ACL이 설정되어 있다면, 해당 ACL을 먼저 체크한다.
2) 체크가 끝났다면 폴리시 라우팅(Policy-routing) 대상 패킷인지 확인한다
3) 라우팅 테이블을 참조하여 출구 인터페이스를 찾는다.
4) NAT 정책에 부합하는지 확인하여 주소 변환을 실시한다.
5) CBAC이 설정되어 있다면 CBAC의 검사(Inspect)를 수행한다.
6) 출구 인터페이스에 적용되어 있는 Outbound ACL 체크를 마지막으로 패킷은 주소를 변환한채 목적지를 향해 전송된다.
트래픽이 Outside에서 Inside 방향으로 이동할 때는 주소 변환 이후에 라우팅이 이루어진다.
출처 - 한권으로 끝내는 FIREWALL 네트워크 보안 방화벽 by 피터전, 최치원, 하예성, 윤석훈 공저
'Computer Science > Knowledge for Pentester' 카테고리의 다른 글
Pentest : 테스트 도구 및 기법 참고 사이트 (0) | 2021.07.12 |
---|---|
TCP/IP (0) | 2021.05.17 |
네트워크 개념 (0) | 2021.05.17 |
네트워크 개론 (0) | 2021.05.17 |
네트워크망 (0) | 2021.05.17 |