방화벽(Firewall)

네트워크/L4 2025. 5. 12. 14:48

[IT 엔지니어를 위한 네트워크 입문] 을 읽고 작성한 글입니다.

방화벽

트래픽을 사전에 정한 정책 조건에 맞춰 허용(Permit)하거나 차단(Deny)하는 장비를 말한다. 일반적으로 네트워크 3, 4계층에서 동작하고 세션을 인지, 관리하는 SPI(Stateful Packet Inspection)엔진을 기반으로 동작하는 장비를 방화벽이라고 부른다. 

방화벽은 NAT 동작 방식과 유사하게 세션 정보를 장비 내부에 저장한다. 패킷이 외부로 나갈 때 세션 정보를 저장하고 들어오거나 나갈 때 저장한 정보를 참조해 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려낸다. 세션 테이블을 이용하면 패킷의 인과 관계를 파악할 수 있다. 

4계층 장비를 통과할 때의 유의점 (세션 관리)

세션 테이블 정보를 이용해 패킷을 변경하거나 애플리케이션 성능을 최적화하고 보안을 강화하기 위해 패킷을 포워드(Forward)하거나 드롭(Drop)할 수 있다. 이런 기능을 충분히 활용하려면 애플리에케이션과 세션 장비 간 세션 정보를 동일하게 유지해주거나 애플리에키션을 제작할 때 네트워크 중간에 있는 세션 장비를 고려해 여러 가지 기능을 추가해야한다. 특히 애플리케이션의 세션 시간서비스 방향성을 고려하고 비대칭 경로를 피하는 것이 매우 중요하다. 

세션 테이블 유지, 세션 정보 동기화

세션 테이블은 통신이 없어라도 통신이 정상적으로 종료되지 않았다면 일정 시간 동안 유지한다. 메모리에 저장되므로 메모리 사용률을 위해 일정 시간만 세션 정보를 저장한다. 또한, 악의적인 공격자가 과도한 세션을 발생시켜 정상적인 세션을테이블 생성을 방해하는 세션 공격을 보호하기 위해 타임아웃값을 줄이기도 한다. 여러가지 이유로 세션 장비는 세션 정보를 무제한으로 저장할 수 없고 애플리케이션에 맞춰 적당한 세션 타임아웃값을 유지한다.

하지만 일부 애플리케이션은 세션을 한 번 연결하고 다음 통신이 시도될 때까지 끊기지 않도록 세션 타임아웃값을 길게 설정한다. 만약 세션 장비의 세션 타임아웃값이 애플리케이션의 세션 타임아웃값보다 짧으면 통신에 문제가 생긴다. 이 문제는 세션 장비 운영자와 애플리케이션 개발자 입장에서 각각 설정으로 해결할 수 있다. 

  • 세션 장비 운영자 입장
    • 세션 만료 시간 증가
    • 세션 시간을 둔 채로 중간 패킷을 수용할 수 있도록 방화벽 설정(세션 장비가 방화벽일 때)
    • 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보
  • 개발자 입장
    • 애플리케이션에서 주기적인 패킷 발생 기능 추가

비대칭 경로 문제

안정성을 위해 회선과 장비를 지우화하지만 이때 패킷이 지나가는 경로가 2개 이상이므로 인바운드 패킷과 아웃바운드 패킷 경로가 같거나 다를 수 있다.

이때,

같은 장비를 통과 → 대칭 경로(Symmetric Path)

다른 장비를 통과 → 비대칭 경로(Asymmetric Path)

라고 한다. 

대칭 경로와 비대칭 경로

세션 장비는 세션 테이블을 만들어 관리하므로 나가고 들어올 때 동일한 장비를 이용해야 한다. 오른쪽과 같이 나가고 들어오는 장비가 다를 경우 정상적인 서비스가 불가능하다. 

테이블 동기화 방법과 보정 방법

이런 문제를 해결하기 위한 방법

  1. 세션 테이블 동기화
    • 두 장비가 하나의 장비처럼 동작
  2. 세션 장비에서 다양한 방법으로 보정
    • 강제로 다른 방화벽으로 보내기 위해선 방화벽 간 통신용 링크가 필요하고 MAC 주소를 변경하는 MAC 리라이팅이나 기존 패킷에 MAC 주소를 한 번 더 인캡슐레이션하는 터널링 기법으로 경로를 보정