방화벽

1 minute read

방화벽

방화벽이란 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞춰 허용 또는 차단하는 장비를 의미합니다. 네트워크에서 보안을 제공하는 장비들을 광의의 의미로 방화벽이라고 말하기도 합니다. 하지만 일반적으로 네트워크에서의 방화벽은 L3, L4에서 동작하며 세션을 인지하는 SPI(상태 기반 엔진,stateful packet inspection)으로 동작합니다.

초기 방화벽은 패킷의 인과관계를 무시하고 방화벽에 등록된 정책만으로만 패킷을 필터링했습니다. 이러한 순수 정책으로만 동작하는 방화벽을 stateless 방화벽, 또는 패킷 필터 방화벽이라고 부릅니다. 초기 방화벽은 패킷이 장비에 들어오면 해당 패킷이 정책에 일치하는지 확인하는데 3,4계층의 Source IP, Destination IP, Protocol No, Source Port, Destination Port를 확인합니다. 앞서 말한 5가지 조건들을 5-Tuple이라고 부릅니다. 만약 방화벽에 일치하는 정책이 있으면 해당 정책에 따라 패킷을 허용 또는 차단합니다. 이러한 초기 방화벽은 3,4계층 헤더를 변조해서 공격하면 적절한 방어가 힘들고 불특정 다수 기반의 정책을 정의할 때는 정책이 복잡해지고 보안이 약해진다는 단점이 있지만 부하가 적고 간단히 동작한다는 장점이 있어 현대 네트워크 장비에서 일부 기능 구현을 위해 계속 쓰이고 있습니다. 블랙리스트 방어에 잘 쓰입니다.

현대적 방화벽은 상태기반 방화벽을 의미하고 이 상태기반 방화벽은 상태기반엔진(SPI)를 탑재하고 있습니다. SPI는 패킷의 인과관계를 파악하여 보안성을 높였습니다. SPI엔진은 패킷의 인과관계와 방향성을 파악해 정책을 적용할 수 있어서 내부 네트워크와 인터넷의 통신에서 유용하게 활용됩니다.

현대 방화벽이 패킷을 처리하는 방식은 다음과 같습니다.

스크린샷 2021-08-09 오전 10 43 31

우선 순서대로 보면 장비에 패킷이 들오오고 난 후 세션 상태 테이블을 확인합니다. 그 다음 조건에 맞는 세션 정보가 세션 테이블에 있을 경우에는 포워딩 테이블을 확인하고 그렇지 않을 경우에는 방화벽 정책을 확인합니다. 방화벽 정책과 맞지 않는 경우 패킷을 차단하고 정책과 일치하는 경우 세션 테이블에 기록하여 포워딩 테이블을 확인합니다. 조건에 맞는 정보가 포워딩 테이블에 있으면 패킷을 포워딩하고 그렇지 않으면 패킷을 폐기합니다.

현대 방화벽은 세션 인지기능을 이용해 앞서 말한 5-튜플 조건 뿐 만아니라 L3,L4의 세부적인 필드도 함께 확인합니다.그 결과 세션을 추가로 인지하고 세션 테이블에 저장하여 세션을 로깅하기쉽고 보안사고가 일어날 경우 로그를 확인하기 쉽습니다 또한 세션 탈취 공격을 방어할 수 있습니다.

하지만 일부 통신 프로토콜의 경우 현대 방화벽으로 인해 통신하지 못하는 경우가 발생합니다. FTP가 그중에 가장 대표적인 프로토콜입니다. 이러한 특정 프로토콜들의 통신을 허가해주기 위해 ALG(Application Layer Gateway)기술이 현대 방화벽에서 존재합니다. ALG기능은 프로토콜을 확인하고 세션을 인지해서 포트를 자동으로 열어줍니다.

출처: IT엔지니어를 위한 네트워크 입벽

Leave a comment