티스토리 툴바


방화벽2009/07/03 17:36

방화벽(防火壁, Firewall)이란 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다.



역할

방화벽의 기본 역할은 신뢰 수준이 다른 네트워크 구간들 사이에 놓여서 신뢰 수준이 낮은 네트워크로부터 오는 해로운 트래픽이 신뢰 수준이 높은 네트워크로 오지 못하게 막는 것이다. 흔히 네트워크 관리자의 입장에서 높은 신뢰도를 갖는 구간은 내부 네트워크 구간이라 하고, 낮은 신뢰도를 갖는 구간을 인터넷 구간 또는 외부 네트워크 구간이라고 한다. 이 밖에도 외부에 서비스를 제공하는 서버들을 위한 DMZ 구간이 있으며 인터넷으로부터 내부 네트워크로의 침입을 막는 동시에 내부 네트워크에서 인터넷과 자유롭게 통신할 수 있도록 도와 준다.

대부분의 방화벽은 정책 기반의 방화벽이며 다양한 수준의 정책으로 네트워크 간의 트래픽을 제어한다.

  • 일반 수준의 정책: 외부에서 내부로 전송되는 모든 트래픽을 차단하거나 허용

 

  • 고급 수준의 정책: "외부의 경쟁회사.com으로부터 내부 서버 가짜정보.net으로 오는 길이 500바이트 이상의 http 트래픽을 허용하되 로그를 남긴다."와 같은 복잡한 정책.


역사


1세대 방화벽 : 패킷 필터


패킷 자체만을 보고 미리 설정된 정책에 따라 허용 또는 거부를 결정하는 초창기 방화벽은 1세대 방화벽이라고 한다. 방화벽 내부에서 상태(세션)를 관리하지 않는 기본 형태의 방화벽이다. 이 방화벽은 특정한 IP를 허용 또는 거부하거나 특정한 포트를 허용 또는 거부하는 용도로 사용된다.


2세대 방화벽 : 스테이트풀 인스펙션


패킷 필터 방화벽은 매우 효율적이긴 하지만 다음과 같은 몇 가지 문제가 있다.

  • 모든 패킷이 모든 정책에 해당되는지 검사하므로 정책이 많아질수록 처리 속도가 느려진다.
  • 돌아오는 패킷을 허용하는 정책으로 인해 보안이 취약해질 수 있다.
  • FTP와 같이 파생 세션을 만드는 일부 프로토콜을 지원하기 위해 모든 포트를 다 열어야 될 수도 있다.


이러한 문제들을 해결하기 위해서 고안된 것이 패킷 단위의 검사가 아닌 세션 단위의 검사를 하는 스테이트풀 검사이다.


기본적인 스테이트풀 검사는 다양한 파생 세션을 모두 처리하지 못 하는 경우가 있는데, FTP의 능동적/수동적 데이터 세션등 복잡한 파생세션을 별도의 정책 추가 없이 모두 처리할 수 있는 확장된 스테이트풀 검사를 하는 방화벽도 있다.


3세대 방화벽 : 어플리케이션 방화벽


초창기에 네트워크를 기반으로 하던 공격 패턴이 점차 발달하여 일상적인 트래픽과 같은 특성을 가지면서 시스템을 공격하는 형태로 발전하게 되었다. 패킷 필터 기반의 방화벽으로는 이러한 공격을 방어하기 어려워지면서 패킷의 내용을 검사하고 더 나아가서는 어플리케이션에 어떠한 영향을 미칠지를 분석하는 방화벽이 출현하기 시작한다. IPS, WAF, UTM 등으로 불리는 네트워크 장비들이 어플리케이션 방화벽이라고 할 수 있다.



분류


기능과 구성에 따른 분류


패킷 필터


하나의 세션을 형성하는 패킷 자체를 검사하여 방화벽 기능을 수행하는 형태의 방화벽. 세션을 유지한 상태에서 패킷을 검사하는 방식이므로 흔히 커널 레벨에서 수행되고 프록시 방식에 비해 제한된 검사만을 수행하여 더 많은 트래픽을 처리할 수 있다는 장점이 있다.


프록시


세션에 포함되어 있는 정보의 유해성을 검사하기 위해서 방화벽에서 세션을 종료하고 새로운 세션을 형성하는 방식의 방화벽. 출발지에서 목적지로 가는 세션을 명시적으로 또는 암시적으로 가로채어서 출발지에서 방화벽까지의 세션과 방화벽에서 목적지까지의 두 세션으로 만든 다음 하나의 세션에서 다른 세션으로 정보를 넘겨주기 전에 검사를 수행하는 형태이다. 패킷 필터에 비해서 방화벽에 더 많은 부하를 주어서 속도는 느리지만 더 많은 검사를 수행할 수 있고, 프로토콜 변경 등 추가적인 기능을 수행할 수 있다.


네트워크 주소 변환


보안 목적이나 IP 주소의 고갈에 대한 해결 방법으로 내부 네트워크에서의 주소와 외부 네트워크에서의 주소를 다르게 유지하기도 한다. 일부 방화벽에서는 내부 네트워크의 주소를 가지는 컴퓨터가 외부 네트워크의 자원을 자유롭게 접근할 수 있도록 네트워크 주소 변환을 수행하기도 한다.


구현 방법에 따른 분류


소프트웨어 방화벽


흔히 구할 수 있는 CPU를 장착한 네트워크 장비(실제로는 PC와 같은 컴퓨터)에 순수하게 소프트웨어를 이용하여 방화벽 기능을 구현한 방화벽이다.


하드웨어 방화벽


네트워크가 복잡해지고 트래픽이 증가하면서 방화벽이 설치되는 네트워크 관문을 통과하는 네트워크 트래픽의 양은 순수 소프트웨어 방식의 방화벽으로 처리할 수 있는 한계를 넘어서기 시작했다. 하드웨어의 발전 속도보다 네트워크 트래픽의 증가 속도가 더 빠르기 때문이다. 이에 대한 해결법으로 사람들에 의해서 고안된 것이 ASIC 등을 이용하여 방화벽의 초당 패킷처리 수를 늘리는 것이다.


NPU 기반의 방화벽


소프트웨어 기반의 방화벽은 속도를 빠르게 하기 힘들고, 순수 하드웨어 기반의 방화벽은 유연성이 떨어지기 때문에 양쪽의 장점만을 취하는 방법이 발달하기 시작해다. 공통으로 사용되는 패킷처리 함수를 하드웨어로 구현하되 프로그래밍도 가능한 NPU가 그 중 하나이다.


NPU 기반의 방화벽이 뛰어난 성능에 유연성을 겸비하였으나, 많은 경우 너무 프로그래밍하기가 어렵다. 따라서, 제품 개발에 소요되는 시간이 제품의 전체 수명 주기의 많은 부분을 차지하게 되는 문제가 있다. 시장에서 흔하게 팔리고 있는 CPU와 같은 명령어를 가지고 있어서 개발자에게 익숙한 처리 단위(CPU의 코어)를 가지고 있어서 한 번에 많은 양의 패킷을 처리할 수 있게 한 것이 멀티코어 프로세서 기반의 방화벽이다.

저작자 표시 비영리 변경 금지

'방화벽' 카테고리의 다른 글

방화벽  (0) 2009/07/03
Posted by 정보보호