강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

NAT(Network Address Translation) 방화벽 설정#1

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

 

NAT(Network Address Translation) 방화벽 설정#1

 

 

 

 

서비스 중인 서버의 커널에 netfilter 기반의 iptables를 함께 설치하여 한 서버에서 서비스를 제공하면서 동시에 패킷을 필터링 하는 방법에 대해 알아보았다.

 

 

 

 

한 대의 리눅스 서버에서 서비스를 제공할 경우에는 그리 어렵지 않게 설치하고 운영할 수 있어 이 방법도 많이 사용되고 있다.

 

 

 

 

하지만 한 서버를 보호하는 것이 아니라 일정 서버군(여러 대의 서버)이나 Windows등 다른 운영체제를 사용하는 서버 또는 전체 네트워크에 방화벽을 설치하여 보호하고자 할 때에는 어떻게 하여야 할까? 이러한 경우에는 일종의 라우터나 스위치와 같이 서버나 네트워크의 앞단에 있는 별도의 장비에 방화벽을 설치하여야 한다.

 

 

 

 

따라서 앞에서 살펴본 바와 같이 서버에 직접 설치하는 방화벽의 경우 기존의 인터페이스에 별도 인터페이스 카드를 추가할 필요 없이 바로 사용할 수 있지만 지금부터 설명하려는 NAT 방식을 이용할 경우에는 기존의 인터페이스 외에 내부의 네트워크와 연동하기 위한 추가적인 인터페이스가 있어야 한다.

 

 

 

 

 

 

일반적으로 하나의 인터페이스(eth0)에는 공인 IP를 할당하여 외부의 네트워크와 통신하도록 하고, 두 번째 인터페이스(eth1)는 사설 IP를 할당하여 내부 네트워크와 외부 네트워크를 연동해 주는 일종의 게이트웨이 역할을 하게 된다.

 

 

 

 

가장 간단한 구조의 경우 게이트웨이 역할을 하는 방화벽에는 두 장의 인터페이스를 설치하여 eth0에는 공인IP(고정IP 또는 DHCP를 통해 할당받은 유동IP)를 할당하고, eth1에는 사설 IP를 설정하여 보호하려는 내부의 서버와 크로스 케이블로 직접 연동하는 방법이 있다.

 

 

 

 

물론 이때 내부 서버도 사설 IP 가 설정되어 있어야 하며 내부서버의 게이트웨이는 eth1에 설정된 IP이어야 한다.

 

 

 

 

그래야만 내부와 외부 간 통신 시 모든 트래픽이 방화벽을 통과하기 때문이다.

 

 

 

 

물론 이 경우 한 대의 서버에 대해서만 NAT를 하게 된다.

 

 

 

 

그러나 두 대 이상의 서버에 대해 NAT를 구성하려면 방화벽 서버의 eth1에서 크로스 케이블 등으로 직접 내부 서버로 연결하는 것이 아니라 허브나 스위치로 연결하여 통신하도록 하면 된다.

 

 

 

 

내부의 서버들 역시 사설 IP를 사용하여야 한다.

 

 

 

 

물론 네트워크의 특성과 규모에 따라 인터페이스가 3장 이상이거나 여러 방화벽이 함께 연동되어 구성되는 등 여러 가지 형태의 방화벽이 디자인 될 수 있지만 여기에서는 가장 기본적이면서도 가장 많이 사용되는 방화벽 구성 형태를 예로 들어 알아보도록 하자.

 

많은 사람들이 NAT를 구성할 때 방화벽 내부의 서버는 당연히 사설 IP를 사용하여야 한다고 알고 있다.

 

 

 

 

하지만 공인IP로 설정하면 문제가 될까?’ ‘NAT 자체가 구현 불가능할까?’라는 호기심이 발동하게 된다.

 

 

 

 

결론부터 이야기하면 공인이든 사설이든 관계없이 NAT 구현이 가능하다.

 

 

 

 

NAT는 단지 패킷의 소스나 목적지 IP 주소를 변환시켜주는 역할만 할 뿐 그것이 반드시 사설이든 공인이든 관계없기 때문이다.

 

 

 

 

예를 들어 살펴보자.

 

이를테면, NAT 내부의 서버에 해당 네트워크에 할당되지 않은 임의의 공인 IP, 이를테면 미국의 한 기관에 할당된 IP 대역으로 사용할 경우 다른 접속은 문제가 없지만 미국의 해당 기관에서 서버에 접속하면 내부 서버에서는 소스 IP를 로컬 네트워크의 IP로 인식하므로 자기 자신에게 응답하게 되어 결국 해당 기관에서는 서버에 접속하지 못하는 결과가 생기게 된다.

 

 

 

 

또한 네트워크에 할당된 다른 공인 IP를 사용할 경우에는 특별한 문제가 없이 바로 사용 가능하다.

 

 

 

 

그러나 내부 서버가 공인 IP라 하더라도 사설 IP와 마찬가지로 방화벽 내부의 공인 IP로 직접 접속할 수는 없다.

 

 

 

 

만약 내부의 공인 IP로 접속하기 위해서는 NAT 장비를 거쳐 가야 하므로 방화벽 앞단의 라우터에서 별도의 라우팅 설정을 해 주어야 한다.

 

 

 

 

 

 

이를테면 NAT 방화벽의 IP211.47.64.1이고, 내부의 서버는 211.47.65.0/24 대역을 사용한다면 211.47.65.0/24 대역을 목적지로 한 패킷은 211.47.64.1로 가도록 하여야 하므로 라우터에서 아래와 같이 추가 설정해 주어야 한다.

 

 

 

 

 

 

# ip route 211.47.65.0 255.255.255.0 211.47.64.1

 

, 이 경우는 방화벽 IP211.47.64.1로 접속하여 내부의 211.47.65.0/24 대역의 서버에 접속했다면 NAT이지만, 211.47.65.0/24 대역의 서버로 직접 접속했다면 주소 변환이 이루어지지 않았으므로 NAT가 아니라 단순한 라우팅이라 할 수 있을 것이다.

 

 

 

 

이렇듯 NAT 내부를 공인 IP로 사용할 경우에는 고려해야 할 점도 많고 몇 가지 문제가 있는 것을 알았다.

 

 

 

 

따라서 굳이 내부 서버에 공인 IP를 할당하여 사용할 필요가 없으며 만약 사용하고자 할 경우에는 7.5절에서 살펴볼 브리지(bridge 또는 transparent 또는 TP모드) 방화벽을 이용하면 쉽게 해결된다.

 

 

 

 

 

 

실제로 최근에는 서버에서 공인 IP를 그대로 사용하면서도 방화벽 사용이 가능한 브리지 방식의 방화벽이 많이 사용되고 있다.

 

 

 

 

참고로 브리지 방식은 라우팅 방식의 NAT와 달리 패킷의 IP 정보 등을 변경하지 않고 마치 스위치와 같이 패킷을 그대로 통과 또는 걸러내는 역할을 한다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,845 개
  • 현재 접속자 :  77 명