만쥬의 개발일기
article thumbnail
본 포스팅은 네트워크 엔지니어 흐르는 강물처럼 님의 방화벽 시리즈를 기반으로 요약/작성되었음을 미리 알립니다.

이번 포스팅에서는 네트워크 보안에서 가장 필수적이며, 가장 대표적인 장비인 방화벽(Firewall)에 대해 다뤄보겠습니다.

방화벽이란?

방화벽이란?
정보 시스템을 운영하는 환경에서는 필수적으로 사용되는 장비로써 미리 정의된 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 제어하는 보안 시스템이다.

인터넷을 사용하기 위해서는 라우터에 광케이블을 연결하고, KT, SKT 등의 ISP에서 제공하는 회선을 통해 서비스를 받습니다.

방화벽은 라우터에서 내부 네트워크로 연결되는 그 사이에 설치하게 됩니다.

위 그림과 같이 인터넷 회선(Untrust zone)을 받아서 연결하고, 내부 구역(Trust zone)완충구역(DMZ zone)으로 구분하여 각 구역을 연결시킵니다.

 

DMZ 구역은 한국인이라면 익숙한 용어겠지만, 완충지대를 의미합니다.

DMZ 구역이 필요한 이유는 외부와 내부 어디에서도 접근이 가능해야 하는 서버가 있을 곳이 필요하기 때문입니다.

DMZ 구역에 주로 올라가게 되는 서버는 다음과 같습니다.

  • DNS 서버
  • Web 서버
  • Mail Service 등

 

만약 이런 공개된 서버가 내부 Trust 구역에 설치되어 있다면, 해당 서버가 해킹당했을 때 같은 내부 구간에 있는 일반 PC 뿐 아니라 사내에서만 사용하는 서버까지 위험해집니다.

 

그러나 외부 공개 서버가 DMZ 구역에 위치해있다면, 같은 구역의 서버들은 공격당할지라도 최소한 방화벽으로 구역이 분리되어 있는 내부 전산자원으로의 침입은 방어가 가능해집니다.

 

이론적으로는 모든 서버 앞에 방화벽을 한 개씩 설치하면 좀 더 완벽한 방어가 가능하지만, 물리적인 방화벽의 도입이나 관리 문제로 불가능하였습니다. 그러나 이제는 VM 기술의 발전으로 가상 방화벽을 서버마다 설치하는 것도 가능해졌습니다.

 

그리고 이러한 설계 방식을 Micro-segmentation 이라고 하며, 퍼블릭 클라우드에서는 AWS의 ‘Security Group’이 이를 지원합니다.

 

방화벽의 보안 정책

방화벽의 주요 기능인 트래픽 제어를 위해서는 미리 보안 규칙을 정의해야하는데, 이러한 규칙을 보안정책(Security Policy) 라고 합니다.

 

방화벽의 보안 정책은 다음 내용으로 구성되어 있습니다.

위의 예제를 풀어서 보면 다음과 같습니다.

  1. 인터넷에서 DMZ 구역으로 가려는 트래픽입니다.
  2. 출발지, 즉 요청을 보낸 곳의 IP는 상관이 없습니다.
  3. 목적지 IP 주소는 10.10.10.10이고, TCP 80을 사용하는 웹서비스에 접속을 요청합니다.
  4. 위 조건들에 부합하면 접속 요청을 허가하여 트래픽을 서버로 전달해줍니다.

이러한 보안 정책은 웹 기반 서비스를 하기 위해 필요한 전형적인 보안 정책입니다.

보통 조직의 규모에 따라 보안 정책을 몇 백개씩 사용하기도 합니다.

 

웹 서비스 이외에도 DNS(UDP 53) , Mail(TCP 25, 110) , HTTPS(TCP 443) 등 다양한 보안정책 설정이 가능합니다.

위 구성도는 다음과 같은 규칙에 의해 구성되었습니다.

  1. 회사를 들어오는 인터넷 회선을 방화벽을 통해 제어가 가능해야 한다.
  2. 인터넷을 통한 서비스를 위해 DMZ와 Upload 구역을 만들어 공개되는 서버를 위치시켜야 한다.
  3. 방화벽 내부는 스위칭 허브를 통해 사내 서버 및 사무실 단말을 연결시켜야 한다.
  4. 지역 방송국, 외부 스튜디오, 재택 근무자, 현장 취재 기자들은 인터넷을 통해 공개된 서버 혹은 사내 서버에 접근이 가능해야 한다.

 

보안 정책 설정 예시

예시로서 위 처럼 방화벽 구성도가 있을 때, 고객의 요구사항에 따라 보안정책을 반영한 결과는 다음과 같습니다.

보안정책 표시는 (출발지 IP, 목적지 IP, 서비스 포트, 액션) 으로 설정합니다.

방화벽의 Stateful 트래픽 처리 방식

데이터를 전송한다는 것은 잘게 쪼개진 데이터 묶음으로 만들어진 패킷을 주고 받는 것을 말합니다.

패킷의 헤더에는 출발지, 목적지 IP 주소와 서비스 포트가 기록되어 있고, 패킷 헤더 정보를 확인해서 라우터에 설정된 필터 정보를 참조하여 들어온 패킷을 허용하거나 차단하는 방식으로 동작합니다.

기존에는 이 트래픽 제어를 라우터가 처리했으나, 필터가 증가하게 되면 라우터의 부하도 증가하고 패킷 전송 속도가 저하되는 현상이 발생합니다. 그리고 고정된 포트를 사용하지 않고 접속 시마다 서비스 포트가 변경되는 RPC, FTP 등의 서비스는 인식이 불가능한 문제도 발생하며 트래픽 제어를 위한 전용 장비의 필요성이 대두됩니다.

1세대 방화벽

이러한 문제점으로 인해 1세대 방화벽이 개발됩니다.

이 방화벽은 스테이트풀 인스펙션(Stateful Inspection) 기능이 추가됩니다. 이는 단순히 들어오는 패킷을 필터링하는 것이 아니라, 클라이언트와 서버 간 통신 상태를 모니터링하여 연결 테이블을 만들고 관리하면서 좀 더 세밀한 트래픽 제어를 하게됩니다.

위 그림에서 왼쪽 단말에서 오른쪽 웹 서버로 접속을 시도한다고 가정하겠습니다.

그리고 방화벽에는 다음 정책이 설정되어 있습니다.

방향 : 인터넷 ➡️ DMZ

출발지 : ANY

목적지 : 10.0.0.1

서비스 포트 : TCP 80

 

단말에서 서버로 웹 페이지 요청 트래픽이 도착하면, 방화벽은 해당 요청에 대해 보안 정책을 확인하여 해당 패킷을 웹 서버로 전달합니다.

 

서버는 단말의 요청에 응답하기 위해 단말을 목적지로 하는 패킷을 생성하여 전송합니다.

이 응답 패킷 또한 방화벽에서 보안정책을 참고하여 패킷을 허용할지 차단할지 결정합니다.

 

그러나 현재 방화벽에는 인터넷 ➡️ DMZ 정책은 있지만, DMZ ➡️ 인터넷 정책이 없어 응답 패킷을 보낼 수 없습니다. Stateful Inspection 이 바로 여기서 사용됩니다.

 

스테이트풀 인스펙션은 방화벽이 만들어서 관리하는 세션 테이블(Session Table)을 참조하여서, 들어오는 응답 패킷의 출발지, 목적지 IP 및 Port와 일치하는 세션 리스트가 있다면 해당 패킷은 응답 패킷으로 판단하여 보안 정책이 없더라도 해당 패킷을 클라이언트로 전달합니다.

 

그리고 이 세션 테이블은 데이터를 요청하는 트래픽이 들어왔을 때, 서버로 전달하면서 동시에 생성합니다.

위 세션 테이블은

출발지 IP 10.10.10.235에서 출발지 포트 50588을 사용하여 st0.511 인터페이스로 들어오고, 목적지 IP 172.70.1.13의 7001 번 포트로 패킷 수 6개, 456 byte 크기의 패킷이 보안 정책 untrust-to-trust에 적용되어 목적지로 전달하였습을 기록합니다. 그리고 Out에는 보안 정책 확인 없이 출발지와 목적지가 뒤집혀 패킷을 전달한 것을 확인할 수 있습니다.

 

따라서 관리자는 응답 패킷을 위해 보안정책을 따로 만들 필요 없이, 방화벽이 자동으로 응답 패킷에 대한 보안 정책을 생성했다가 연결이 종료되면 삭제하는 것처럼 동작합니다.

 

그리고 회사 내부에 있는 단말이 인터넷을 사용할 때도 동일하게 적용됩니다.

 

방화벽의 성능 지표

이처럼 세션 테이블을 생성하기 때문에 방화벽은 단순히 트래픽을 처리하는 성능도 중요하지만, 세션을 관리하는 능력도 중요합니다.

 

따라서 방화벽의 성능 지표는 크게 다음 두 가지가 있습니다.

  1. 초당 세션 생성률(CPS - Connection per seconds) : 1초 동안 신규로 세션을 생성하는 능력입니다. 이는 트래픽이 급증하는 경우(수강신청 등) 대응할 때 중요한 성능 지표입니다.
  2. 최대 동시 세션 관리수(Maximum Concerent Session) : 장비가 동시에 관리할 수 있는 연결 최대수입니다. 이는 방화벽을 통해 연결되는 최대 연결수를 얼마나 지원하는지를 판단합니다. 이 성능은 얼마나 많은 서버와 일반 유저의 트래픽을 처리할 수 있는지 판단하는 기준이 됩니다.

 

ACL

지금까지 본 방화벽과 같은 Stateful 방식의 장비가 아닌, 세션을 관리하지 않는 장비들은 Stateless 장비라고 부르고, 여기에는 스위치, 라우터 등 단순히 패킷을 전달하는 장비들이 있습니다.

이러한 장비들은 트래픽 제어를 위해 ACL(Access List) 를 사용합니다.

 

방화벽은 세션을 관리하기 때문에 동시에 관리 가능한 세션 수를 초과하게 되면 장애가 발생합니다.

DDoS 공격이 바로 이런 방화벽의 취약점을 노린 공격입니다.

 

따라서 방화벽 앞단에 있는 라우터의 ACL 필터를 생성해서, 공격을 수행하는 출발지 IP를 식별하고 방화벽 앞단에서 공격을 차단한다면 서비스의 중단을 막을 수 있습니다.

 

2세대 방화벽, NGFW란?

2세대 방화벽은 보통 차세대(Next Generation) 방화벽이라 하고, 통상 NGFW(Next-Generation Firewall)이라 칭합니다.

 

차세대 방화벽(NGFW)이란?
네트워크 트래픽을 처리하고 잠재적으로 위험한 트래픽을 차단하는 규칙을 적용하는 보안 장치입니다.

 

NGFW와 1세대 방화벽과의 차이점은 단말이 사용하는 응용 프로그램을 인식해서 선별적으로 차단이 가능하다는 점입니다. 1세대 방화벽은 4 계층까지만 모니터링이 가능하므로 포트 넘버로만 트래픽을 구분하기 때문에, TCP80을 사용하는 트래픽은 모두 차단하거나 허용해야만 합니다.

 

따라서 1세대 방화벽은 선택적으로 인터넷은 허용하되 메신저나 다운로드 트래픽 등을 차단한다거나 인터넷에서도 유튜브, 인스타그램 등만 선별적으로 차단하는 보안정책은 불가능했습니다.

 

그러나 NGFW는 7계층인 Application 계층까지 모니터링이 가능하므로, 같은 서비스 포트를 사용하는 프로그램이더라도 구분이 가능합니다.

 

NGFW의 기능

NGFW의 주요 기능은 다음과 같습니다.

  • 패킷 필터링: 데이터의 개별 패킷을 검사하고, 이러한 패킷에는 네트워크에 유입되는 콘텐츠가 포함되므로 이를 검사하여 위험하거나 예상되지 않은 패킷을 차단합니다.
    패킷 필터링은 각 패킷과 관련된 소스 및 대상 IP 주소, 포트, 프로토콜 등을 검사하여 작동합니다.
  • 심층 패킷 검사(DPI): NGFW는 패킷 필터링 대신 DPI를 수행하여 패킷 필터링을 개선합니다. DPI는 패킷 필터링과 마찬가지로 패킷의 계층 3 및 계층 4 헤더의 소스 및 대상 IP 주소, 대상 포트 등을 확인합니다. 하지만 DPI는 패킷의 본문도 검사하여 패킷의 내용을 알려진 악의적인 공격의 내용과 비교합니다.
  • VPN 인식: 방화벽에서는 암호화된 VPN 트래픽을 식별하여 통과하도록 허용할 수 있습니다.

 

1세대 방화벽에 이어 NGFW에 새롭게 추가된 기능은 다음과 같습니다.

  • 애플리케이션 인식 및 제어: NGFW는 계층 7에서 트래픽을 분석하여 잠재적으로 위험한 Application을 차단합니다. 이 기능과 침입 방지는 모두 DPI의 요소입니다.
  • 침입 방지: NGFW에는 DPI 기능의 일부로 IPS(침입 방지 시스템)이 포함됩니다. IPS는 다음 방법들로 위협을 감지합니다.
    • 시그니처 감지: 수신 패킷 내의 정보를 스캔하여 알려진 위협과 비교합니다.
    • 통계적 이상 감지: 트래픽을 스캔하여 기준선과 비교하여 비정상적인 행동 변화를 감지합니다
    • 상태 기반 프로토콜 분석 감지: 통계적 이상 징후 감지와 유사하지만, 사용 중인 네트워크 프로토콜에 초점을 맞추고 일반적인 프로토콜 사용량과 비교합니다.
  • 위협 인텔리전스: 잠재적 공격에 대한 정보입니다. NGFW는 외부 소스에서 위협 인텔리전스 피드를 수신하고, 이에 따라 조치를 취할 수 있습니다. 또한 IP 평판 정보를 제공해 공격이 자주 발생하는 IP 주소를 식별합니다.

 

NGFW가 애플리케이션을 구분하는 방법

출처: 팔로알토 네트웍스

NGFW는 패킷이 들어오면 포트 넘버를 먼저 확인합니다.

이후 패킷의 L7 계층에 있는 데이터를 읽어서 방화벽이 가지고 있는 트래픽 패턴 정보와 동일한 패턴이 발견되는지를 확인하여 애플리케이션을 식별하고, 식별이 되지 않으면 프로토콜 디코더라는 패킷 해석기를 이용해 주고받는 내용의 특성을 분석하고 트래픽을 판별합니다.

 

이 단계에서도 판별이 되지 않으면 휴리스틱 기법을 이용해 정확하게 패턴이 일치하지 않아도 통계적인 기법으로 80~90% 이상의 유사도가 확인되면 특정 애플리케이션 트래픽으로 판별합니다.

 

트래픽 예시

출처 : 팔로알토 네트웍스

위 사진은 카카오톡 트래픽 식별 목록입니다.

채팅과 파일 전송, 영상 등의 트래픽이 모두 다르게 식별되므로, 원하는 기능만을 차단할 수 있습니다.

ex) 채팅만 가능하도록 허용

 

굉장히 편리한 기능이지만, 대부분의 벤더의 NGFW는 애플리케이션 탐지 기능을 기본 기능으로 제공하지 않으므로 별도의 서비스 라이선스를 구매해야 사용 가능하게 하고 있습니다.

 

웹 방화벽(Web Application Firewall)

웹 방화벽이란?
WAF라고도 불리는 웹 방화벽은 모든 트래픽에 대해 L7 계층을 모니터링하고 제어하는 NGFW와 달리 http,https 트래픽만 집중하여 웹서버 해킹을 방지하는 목적의 장비이다.
http method와 같은 세부적인 옵션에 따라 임계치를 설정해 웹 기반 공격을 전문적으로 탐지, 차단한다.

 

웹 방화벽의 등장 배경

기존에는 OS를 설치하면 기본적으로 파일 공유, 원격 접속등의 포트가 기본으로 오픈되며 보안에 문제가 있는 경우가 많았습니다.

 

그러나 방화벽이 보급되며 서비스하는 포트 외에는 인터넷 접근이 불가능해졌고, 결국 웹 서버를 위해 반드시 개방하는 HTTP, HTTPS 포트에 대한 공격이 집중되게 되었습니다.

 

이렇게 웹 기반 공격이 발전되고 다양화되다보니 웹 방화벽이라는 신기술이 나오게 되었습니다.

 

웹 방화벽의 동작 방식

웹 기반 공격 중 가장 빈번하게 발생하는 Injection 공격 중 SQL Injection을 예시로 보겠습니다.

출처: 안랩

위 사진에서는 1번과 같이 ID와 PW가 일치하면 사용자 정보를 반환합니다.

그러나 3번처럼 ID에 ' OR 1=1 — 를 입력함으로써 ID는 항상 TRUE이고 PW를 검증하는 부분은 주석처리 되어서, 결과적으로 모든 유저의 정보를 불러오게 됩니다.

 

이러한 공격을 웹 방화벽은 다음과 같이 막습니다.

  1. 패킷의 L7 계층을 확인해 정상적인 HTTP 구문인지 확인합니다.
  2. URI를 식별해 적용된 정책을 확인하고 어떤 공격 탐지 rule을 적용하여 검사할지 판단합니다.
  3. 적용된 rule에 따라 여러 공격을 탐지합니다.
  4. 블랙리스트를 이용해 사용할 수 없는 구문이나 패턴을 먼저 차단합니다.
  5. 화이트 리스트를 이용해 허용된 구문 또는 패턴을 통과시킵니다.
  6. 정상적인 시도라도 임계치 설정을 통해 짧은 시간 동안 여러 번의 시도가 있으면 차단시킵니다.
  7. 서버에서 응답하는 웹 페이지가 변조되어 있는지 에러 코드 반환을 통해 공격자에게 정보를 제공하는지 확인하고, 관리자에게 경보를 알리거나 반환 값을 숨깁니다.

 

방화벽 가상화

글의 핵심인 방화벽 가상화입니다.

서버의 VM처럼 네트워크 장비에 있는 방화벽 또한 가상화를 하는 기술이 발전하면서, NFV(Network Function Virtualization : 네트워크 기능 가상화) 기술이 등장합니다.

 

VM을 사용 중이라면 누구나 기초적인 NFV 기술을 사용하고 있다고 볼 수 있습니다.

여러 대의 VM들이 하나의 서버에서 작동하게 되면, 같은 서버 내의 VM 간의 통신 뿐 아니라 서버 외부의 다른 서버와의 통신도 필요합니다.

 

이를 위해 하이퍼바이저 내에는 ‘vSwitch’ 라는 가상의 스위치가 존재합니다.

NFV 기술에서는 물리적인 스위치 대신에 가상의 스위치인 vSwitch를 이용하기 때문에 사용 포트 수의 제한이나, 물리적인 케이블의 연결이 필요 없어지게 됩니다.

위 그림은 한 서버의 총 4개의 VM이 있고, 각각 vNIC라는 가상의 네트워크 카드를 통해 vSwitch에 가상으로 연결되어 있습니다. 가장 왼쪽 VM은 방화벽 프로그램을 구동시켜 방화벽으로 동작 중이고, 서버 VM에 연결된 vSwitch를 통해 오른쪽 3개의 VM과 연결되어 있습니다.

즉 서버 외부에서 들어오는 패킷은 모두 방화벽 VM을 거쳐서 내부 VM 서버들로 전달되게 됩니다.

 

이를 물리적인 실제 장비들로 구성하면 오른쪽 그림과 같아집니다.

이처럼 일반적인 웹, DB 대신 방화벽, 라우터, 스위치 등을 VM으로 동작시키는 것을 NFV 라고 합니다.

 

이러한 가상화 기술을 통해 다음과 같은 이점들을 가집니다.

  • 물리적인 장비를 사용하지 않음으로써 공간적 이점
  • 감소된 전력량
  • 감소된 발열로 인한 냉각 비용 절감
  • 소프트웨어로 논리적인 단위로 연결되어, 복제와 확장의 용이성

 

클라우드의 가상 방화벽

네트워크 장비를 앞선 NFV 기술로 구현하게 되면, 하이퍼바이저의 종류 및 VM에 할당하는 코어와 메모리 개수에 따라 큰 처리 성능 차이를 보입니다.

 

보통은 벤더에서 제공하는 하이퍼바이저 별로 VM 이미지 파일을 내려받아 사용하게 되는데, 많은 수의 VM을 사용할 경우 VM을 서비스 종류 별로 그룹 지어 방화벽 뒤에 배치하여 사용할 수 있습니다.

 

최근에는 퍼블릭 클라우드에서도 이러한 가상 방화벽을 사용할 수 있도록 서비스하고 있습니다.

대표적으로 AWS는 VM의 하드웨어 스펙에 따라 가격을 차등 적용해 구매 후 사용이 가능합니다.

퍼블릭 클라우드에서는 L4 스위치, 방화벽등을 서비스로서 제공하지만, 기본적인 기능만을 지원하고 좀 더 다양한 기능이나 고성능을 위해서는 기존의 네트워크 벤더에서 개발한 가상화 장비를 사용해야 합니다.

따라서 결국 기업은 하이브리드 클라우드 아키텍쳐로 발전하게 됩니다.

 

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!