네트워크

방화벽::4계층 장비

우잉~ 2024. 12. 4. 19:23

방화벽(Firewall)

트래픽이 들어왔을 때 사전에 등록한 정책 조건에 맞춰 트래픽을 허용하거나 차단하는 장비

네트워크 3, 4계층에서 동작하고 세션을 인지하고 관리하는 엔진(Stateful Packet Inspection, SPI)을 기반으로 동작하는 장비이다.

 

하지만 초기에는 이러한 SPI 엔진이 존재하지 않았다.

단순하게 사전에 주어진 정책 조건에 맞춰 허용/차단하기만 했다. 이를 패킷 필터링 방화벽, Stateless(스테이트리스) 방화벽이라고 한다. 

패킷이 방화벽에 들어오게 되면 설정 정책에 일치되는 것이 있는지 확인하고, 이에 따라 패킷을 허용하거나 차단한다.

 

 

++++ 패킷이 방화벽에 들어왔을 때 참고하는 조건이 5가지 정도 되는데, 이를 5-Tuple(5-튜플)이라고 한다.

 

[5-Tuple 목록]

  • Source IP(출발지 IP)
  • Source Port(출발지 Port)
  • Destination IP(목적지 IP)
  • Destination Port(목적지 Port)
  • Protocol Number(프로토콜 번호)

 

아래의 사진은 출발지가 10.10, 목적지가 20.20인 HTTPS 패킷만 허용하는 방화벽 정책을 가지고 있다.

따라서 20.20에서 10.10으로 가는 SSH 패킷은 방화벽 정책에 의해 차단된다.

패킷 필터링 방화벽

 

 

간단한 통신에서는 쉽게 정책만 지정하면 편리하게 사용될 수도 있지만, 인터넷 통신과 같이 다수의 정책을 정의할 때는 복잡하고 보안이 약화되는 문제가 생기게 된다. → 패킷 헤더 변조하여 공격하면 방화벽은 쉽게 뚫릴 수 있음

 

그래서 현대에 쓰이고 있는 방화벽은 패킷 기반이 아니라 상태 기반 방화벽이다. 세션을 기반으로 동작하는 엔진을 탑재하고 있다.

현대의 방화벽은 세션을 인지하고 관리할 수 있다. 즉, 세션 테이블을 가지고 있다는 뜻이 된다.

세션 정보를 장비 내부에 저장하여 관리하기 때문에 방화벽은 패킷이 밖에서 들어온 건지, 안에서 나가는 건지 파악할 수 있다.

SPI 방화벽

 

들어오는 패킷은 정책을 참조하고, 허용된 패킷의 정보를 세션 테이블에 저장한다.

이후 내부에서 외부로 나가는 패킷에 대해서는 세션 테이블을 참조하게 된다.

정책 + 세션 테이블을 통해 들어오는 패킷, 나가는 패킷을 구분할 수 있게 된다.

 

 

** 방화벽의 기본 정책은 나가는 패킷: 모두 허용 들어오는 패킷: 모두 차단이다. 이렇게 하는 이유는 세션 정보가 없을 경우에 패킷이 외부에서 시작한 건지 내부에서 시작한 건지 인지할 수 없기 때문이다.

 

방화벽의 패킷 처리 순서

!!! 하지만 제조사별로 동작 방식이 다양하기 때문에 방화벽을 운영하기 전에 제조사가 제공하는 패킷 프로세싱 플로우 문서를 확인해야 한다~~!

패킷 확인 순서

 

1 장비에 패킷이 들어오면 우선 세션 상태 테이블을 확인합니다.
2 조건에 맞는 세션 정보가 세션 테이블에 있을 때, 포워딩 테이블을 확인합니다(라우팅, ARP 포함).
3 조건에 맞는 세션 정보가 세션 테이블에 없을 때, 방화벽 정책을 확인합니다
4 방화벽 정책은 맨 위의 정책부터 확인해 최종 정책까지 확인한 후 없을 때 암시적인 거부(Implicit Denial) 규칙을 참고해 차단됩니다.
5 허용 규칙이 있으면 그 내용을 세션 테이블에 적어 넣습니다.
6 포워딩 테이블을 확인합니다(라우팅, ARP 포함).
7 조건에 맞는 정보가 포워딩 테이블에 있을 때, 적절한 인터페이스로 패킷을 포워딩합니다.
8 조건에 맞는 정보가 포워딩 테이블에 없을 때, 패킷을 폐기합니다.