Firewall 이란?(방화벽이란?)

2022. 3. 8. 22:12Django/네트워크

일반적으로 건물안에서 화재가 발생할 경우 각 플로우마다 불이 번지는것을 막아주는 방지벽을 방화벽 이라고 표현한다. 하지만 네트워크에서는 조금 다르게 표현이 된다. 외부의 사용자들이 내부의 네트워크로 접근하여 발생되는 보안사고나, 자료를 빼돌리는 해킹의 위협 등의 경우를 막고 격리한다는 의미를 가지고있는 일종의 네트워크 방어 도구이다.

 

미리 정해진 보안 규칙에 따라서 네트워크 트레픽을 모니터링하고 제어하는 네트워크 보안 시스템 이라고 정의 내릴 수 있다.

 

router를 사용해 봤으면 어느정도 유사한 효과를 낸다는것을 알 수 있는데, 이는 라우터가 네트워크를 분리시키면서 특정 네트워크에서 다른 네트워크로 문제가 전파되는것을 막아주는 역할을 했기 때문이다.

 

현실의 방화벽과는 조금 달리 방화벽 자체를 기준으로 하여 양쪽 다(내부, 외부)를 정해진 보안 규칙에 따라서 결정할 수 있다. 즉 내부에서도 마음데로 못 나가게 할 수 있으며, 외부에서도 마음데로 못 들어오게 할 수 있다는 의미이다. 이때 보안규칙을 블렉리스트와 화이트리스트로 나눌 수 있다.

 

규칙 role
블랙리스트 특정 사용자 만 '차단'하고, 차단된 사용자를 제외하고는 전부 입장을 허락해 준다.
보통 직접적으로 위협이 될 만한것을 차단한다.
화이트리스트 특정 사용자 만 '입장'할 수 있도록 하고, 그 외는 전부 차단한다.
노력이 많이 들지만 그 만큼 확실한 보안성을 나타낼 수 있다.

방화벽의 주요 기능은 5가지로서 외부에서 내부 네트워크에 접속하는것을 통제하는 기능을 가진 접근 통제 기능, 침입 차단 시스템을 지나가는 트레픽에 대한 사용자의 신분증명을 하는 기능인 사용자 인증, 접근되는 모든 트레픽에 대한 정보와 네트워크 사용에 대한 통계 로그를 기록하는 감사 및 로그 기능, 클라이언트의 서비스 요청을 받아 실제 서비스를 수행하는 서버로 요청을 전달하고, 결과값을 사용자에게 다시 전달해 주는 프록시 기능, 마지막으로 취약보안점을 강화하기 위하여 방화벽을 통한 보안정책을 수립하는 보안정책 구현이 있다.

 

먼저 방화벽을 구성에 따라서 분류해 보도록 하자.

Screening Router(스크리닝 라우터)

스크리닝 라우터는 포트번호를 분석하여(IP,TCP,UDP 와 같은 헤더 부분에 포함된 내용) 동작하며, 내부 네트워크와 외부 네트워크 사이의 패킷 트래픽에 대해 허용, 거부를 규정하는 라우터이다. 응용프로그렘의 환경 변화에 무관하게 동작이 가능하며, 속도가 빠르다. 네트워크 수준의 ip 데이터 그램에서 출발~목적지 주소에 의해 스크린이 가능하다. tcp/udp 수준의 페킷에서는 포트번호와 프로토콜 스크린을 할 수 있다.

 

장점은 필터링 속도가 빠르고 비용이 적게든다. 또한, 클라이언트와 서버에 특별한 변화가 생길 필요가 없이 설치가 가능하며, 모든 네트워크에 동일한 보호를 해 준다.. 일반적으로 방화벽을 따로 설치하기 힘든 중소기업에서 많이 사용한다.

단점은 OSI3,4 계층에서만 동작하기 때문에 새부적인 규칙을 설정하기 힘들며, 필터링 규칙을 검증하기 어렵다. 패킷 내의 데이터는 차단 불가 및 로그 관리가 어렵다. 접속이 폭주할 경우 라우터에 부하를 주어 다운될 수 있다. 또한 라우터 통과, 거부에 대한 패킷 기록을 관리하기 어렵다.

 

베스쳔 호스트와 듀얼 홈드 호스트

보호된 네트워크에서 유일하게 외부에 노출되는 내/외부의 연결점이다. 내부 네트워크 전면에 베스텬 호스트를 두어 내부 네트워크 전체의 보안을 책임진다. 이름에서 부터 알 수 있듯 하나의 성벽 역활을 하고 있으며 접근 제어를 기본으로 프록시 기능을 사용하며, 각종 로깅기능과 정보 생성, 관리에 굉장히 용이한 역할을 하고 있다.

 

조금 더 자세한 내용은 여기 를 참고하길 바란다.

 

장점으로는 방화벽 기능 외에는 유틸리티를 삭제한다. 스크린 라우터 방식보다 매우 안전하다.

단점은 보안관련이 이것 하나뿐이기에 베스쳔 호스트가 손상되면 내부 네트워크를 보호할 수 없으며, 로그인 정보가 유출될 경우 도 마찬가지로 보호할 수 없다. 2계층 공격을 통한 방화벽 우회 공격에 굉장히 취약하다.

 

듀얼 홈드 호스트는 2개의 렌카드(인터페이스)를 가진 배스천 호스트로서 하나의 렌카드는 내부 네트워크와 연결하고 다른 렌카드는 외부 네트워크와 연결한다

장점 :응용 서비스 종류에 조금 더 종속적이기 때문에 스크린 라우터보다 훨씬 안전하다. 또한  정보 지향적인 공격 방어가 가능하며, 로깅과 정보 생성 관리가 편리하다. 또한 설치와 유지-보수가 굉장히 편리하다.

단점 : 서비스의 규모가 커 질수록 구성이 힘들어질 수 있으며, 베스쳔호스트의 단점을 그대로 가지고 있다.

스크린드 호스트

스크린드 호스트는 2가지 방화벽을 합친 느낌으로, 내, 외부 네트워크에서 발생되는 페킷에 대한 통과유무를 결정하며, 유입된 트래픽은 베스쳔 호스트로 검사된 페킷을 전송하는 페킷 필터 라우터와, 내 외부 시스템에 대한 인증을 담당하는 베스쳔 호스트로 구성되어있다.

 

스크린드 서브넷

스크린드 호스트의 보안성 문제를 해결하여 만든 방화벽이다. 외부와 내부 사이에 최소 1개 이상의 경계 네트워크를 설치해 둔 내-외부간 분리하기 위한 구조이다. 일반적으론 2개의 스크리닝 라우터, 1개의 베스쳔 호스트로 구축되어 있다.

장점 : 스크린드 호스트의 장점을 그대로 유지하면서 안정성을 높였다.

단점 : 설치, 관리, 구축에 대해 많은 비용과 노력을 사용해야한다. 또한 서비스 속도가 느려질 수 있다.

 

이런 방화벽은 아래와 같이 다양하게 구분할 수 있다.

세대 기능
1세대(legacy firewall) 페킷 필터링 방식(ip헤더와 tcp 헤더를 체크하여 필터링)이며 OSI3,4계층에서 동작한다. 페킷 전체만 확인하며 네트워크 트레픽을 제어하는 역할을 가지고 있다. 방향성과 출발, 목적지, ip port를 바탕으로 검사하기 때문에 공격자의 ip와 port는 언제든지 변동이 가능하다는 단점이 있다. 즉 ip를 아무리 차단하더라도 지속적으로 공격을 받을 수 있다. 실질적으로 공격을 받는 계층은 7계층이기에 더더욱 어렵다.
2세대(statuefull inspection) TCP헤더에서 SYN값을 확인 후 세션처리를한다. 다양한 파생 세션을 모두 처리하지 못하기에 비 효율적인 방법이다.
3세대(unified threath management) 에플리케이션에 끼치는 영향을 분석하는 쪽으로 발달되었다. L7 switch, TCP데이터에서 각 에플리케이션의 헤더를 확인한다. 7계층의 정보를 확인할 수 있으며, 안티 스펨메일(스펨 차단), 웹 필터(웹 해킹기술)등과 같은 공격을 페킷 유무로 검사 후 차단할 수 있으며, 특정 도메인에 대한 접근을 차단할 수 도 있다. ips 악성코드 등 공격행위에 대한 전반적인 탐지와 차단을 제공해 준다.

기능별 방화벽

기능 정의 주요 공격 장점 단점
패킷필터
(packet filtering)
각 페킷별로 permit or deny을 하는 필터링 기술이다.
tcp/ip 모델에서 동작하며 in/out 패킷을 개별적으로 통과하거나 차단시킨다.
tcp haeder공격
블랙리스트와 화이트리스트의 허점 공격
매우 간단하며 구현하기가 쉽다. 헤더정보만 모니터링하여 필터링 규칙과 비교할 수 있다. 즉 빠르게 처리 가능하다. 최대 3계층 정도의 동작으로 기존 응용 sw와 연동하기 쉬도 쉽다. 응용계층(메일 등)에 대한 공격은 차단하기 어려움이 있다. 사용자인증 개념이 없기에 사용자 단위로 필터링 할 수 없으며, 차단규칙의 갯수, 순서에 따라 장비 부하 증가가 일어난다. stateful inspection(상태반영검사)기능이 없어 UDP, ICMP등에 대한 효과적 제어가 불가능해진다.
상태 기반 패킷 검사
(stateful packet inspection)
한번에 하나씩 처리한다. tcp와 같이 여러 패킷으로 분할되어 목적지 도착전까지 보안 공격 여부를 알 수 없다. 이것을 막기위해 페킷사이 순서와 조건 등 계속 추적하는 검사다. ip address spoofing
스푸핑 (페킷위조)

source routing attack
출발지 ip주소 변경 이후 접근, 라우팅 옵션

packet fragmentaion attack
헤더 정보를 방화벽이 판단할 수 없게 쪼개서 정보 미재공
서비스별로 특정 통신상태를 관리할 수 있다. 동적으로 접근하여 접근 role을 생성할 수 있다. 데이터 내부에 자체적으로 해킹툴을 설치한다면 이에 대한 프로토콜적인 대응이 어렵다. 
애플리케이션 게이트웨이
(Application Gateway)
애플리케이션 계층에서 동작하는 방화벽이기 때문에 많은 정보를 얻을 수 있다. 해당 정보를 바탕으로 사용자가 어떤 IP, Port로 접근했는지 접근해서 뭘 했는지 등을 알 수 있으며 해당 정보들을 통하여 악의적인 사용자에 대한 행동을 분석하고 어떤 피해를 당했는지 등 사고 분석을 할 수 있다.   외부의 네트워크와 내부 네트워크가 proxy를 통해서 연결이 허용되기 때문에 내부 ip를 숨길 수 있다. 내부 네트워크에 대한 경계선 방어 및 정보를 숨길 수 있다. 다양한 정보를 얻을 수 있기에 구체적인 정책을 세워 우수한 보안을 자랑한다. 각 서비스별로 프록시 데몬이 존재한다

응용 계층에서 동작하기에 네트워크에 과부화를(프록시를 거쳐 오기에 여러 작업이 실행된다.) 줄 수 있다.
특정 서비스에 대해 투명성을 제공하기 힘들며, 하드웨어에 굉장히 의존적이다. 새로운 서비스를 제공하기 위해서는 세로운 데몬이 필요하다. 즉 유연성이 떨어진다.
서킷 게이트웨이(Circuit Gateway) 5~7계층 사이에서 동작을 한다. 에플리케이션 게이트웨보다 좀 더 수월한 관리를 위해 사용되며, 어느 어플리케이션도 이용가능한 일반적인 프록시가 있다. 프록시를 인식할 수 있는 프로그렘이 있어야 하며, 이 프로그렘이 설치된 클라이언트만 회선이 생성되어 통신이 된다.   내부의 IP주소를 숨길 수 있으며 투명한 서비스를 제공한다.관리가 수월하다.
각 서비스별로 프록시가 존재하지 않는다.
첫 패킷 검사 후 다음 페킷부터는 전달만 한다.
SOCKS(프록시와 클라이언트를 연결해주는 프로그램)와 같은 수정된 클라이언트가 반드시 필요하다. 비표준 포트로 우회하여 접근을 할 경우 방어가 불가능하다는 점이 있다.