4계층 장비, 방화벽

GwanMtCat·2023년 9월 19일
0

방화벽?

네트워크 중간에 위치해, 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비를 말한다.

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

NAT 동작 방식과 유사하게 세션 정보를 장비 내부에 저장하는데,
패킷이 외부로 나갈 때 세션 정보를 저장하고, 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조해 들어오는 패킷이 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려낸다.

인터넷 방화벽에서의 기본 정책은 인터넷으로 나가는 모든 패킷은 허용하고, 들어오는 모든 패킷은 차단하는 것

세션 정보가 없을 때 패킷이 내부에서 시작한 것인지, 외부에서 시작한 것인지 인지할 수 없어 엄청나게 복잡한 정책관리가 필요하다.


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

세션 테이블은 메모리에 저장되므로 메모리 사용률을 적절히 유지하기 위해, 일정 시간만 세션 정보를 저장한다.

악의적인 공격자로부터 보호하기 위해 타임아웃값을 더 줄이기도 하고,
세션 장비는 세션 정보를 무제한으로 저장할 수 없고, 여러 가지 애플리케이션 통신을 관리하므로
일반적인 애플리케이션에 맞추어 적당한 세션 타임아웃값을 유지한다.

세션 장비의 세션 타임아웃값 보다 어플리케이션의 세션타임아웃 값이 짧으면 문제가 생길 수 있습니다.
세션 정보가 사라졌는데도 세션이 유지되고 있다면, ACK 플래그로 표시된 패킷이 들어오는 경우에 차단될 수 있다.


개발자 입장에서 확인해야 할 것

  • 애플리케이션에서 주기적인 패킷 발생 기능 추가

애플리케이션과 세션 장비의 세션 타임아웃 시간을 일치시키는 가장 좋은 방법은 애플리케이션에서 패킷을 주기적으로 발생 시키는 것이다.

중간에 통신이 없더라도, 일정 시간마다 양 단말 애플리케이션의 세션 상태 정보를 체크하는 더미 패킷을 보내는 기능을 추가하면, 세션 타임아웃이 발생하기 전에 세션을 유지할 수 있다.


  • 비대칭 경로 문제

네트워크의 안정성을 높이기 위해, 네트워크 회선과 장비를 이중화하는데 이때 패킷이 지나가는 경로가 2개 이상이므로 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있다.

인바운드 패킷과 아웃바운드 패킷이 같은 장비를 통과하는 것을 대칭 경로, 다른 장비를 통과하는 것을 비대칭 경로라고 부른다.

세션 장비는 세션 테이블을 만들어 관리하므로 패킷이 들어오고 나갈 때, 동일한 장비를 통과해야 한다.
네트워크 경로 이중화를 위해 세션 장비를 2대 이상 설치한 경우, 패킷이 들어올 때와 나갈 때 경로가 일정하게 유지되지 않으면 정상적인 서비스가 되지 않는다.

2,3 계층 네트워크 장비는 세션 고려가 필요없어 네트워크 엔지니어 대다수가 세션 장비의 이런 특징을 파악하지 못하고, 네트워크 효율성에만 초점을 맞추어 비대칭 경로를 사용하도록 네트워크를 디자인 하는 경우가 많다.

이를 해결하기 위해서는

세션 테이블을 패킷 응답시간보다 빠르게 동기화 시키는 것인데 응답시간이 빠를 수 있어 잘 사용하지 않는다.

다른 방법으로는

세션 장비에서 다양한 방법으로 이를 보정하는 것이다. 인바운드가 통과하지 않았는데 아웃바운드 패킷이 들어온 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정한다.

강제로 대칭 경로를 만들어주므로 비대칭 경로로 인한 문제를 해결할 수 있다.


하나의 통신에 2개의 세션이 사용될 때 (예로 FTP)

대표적인 FTP 프로토콜은 컨트롤 프로토콜과 데이터 프로토콜이 완전히 분리되어 있어, 통신 방법이 다른 2가지 모드를 사용한다.

서로 다른 두 세션이 하나의 통신을 위해 사용하고 있으므로 세션 장비도 이해 대해서 파악해야 한다.

두 통신 중 한쪽 세션이 끊겨 있거나, 세션 장비의 세션 테이블에서 삭제되면 단방향 통신만 가능하므로 통신하지 못할 수 있다. 문제가 있음을 쉽게 파악하지 못하는 경우가 많아 장애가 길어질 수 있으니 주의해야 한다.

Active 모드 인 경우에는 중간에 방화벽이나 세션 장비가 있으면, 동작 방식에 맞추어 (컨트롤 프로토콜 및 데이터 프로토콜의 방향이 반대) 방화벽의 반대 방향도 열어주어야 한다.

Passive 모드 인 경우, 클라이언트 쪽에 방화벽이나 세션 장비가 있으면, 특별한 작업 없이 동작할 수 있다는 장점이 있지만 서버 쪽에 방화벽이 있으면 데이터 다운로드를 위한 추가 포트를 열어주어야 한다.


참조한 책 및 사이트

IT 엔지니어를 위한 네트워크 입문

0개의 댓글