WAF가 웹 애플리케이션을 보호하는 방법

장세은·2024년 8월 13일
post-thumbnail

웹 애플리케이션의 수가 증가하게 되면서 해커의 주 공격 대상이 시스템과 네트워크 계층의 취약점에서 웹 보안 취약점으로 변하게 되었습니다.
그러나 기존 방화벽은 주로 네트워크 계층 공격에 대한 방어에 초점을 맞추고 있었기에 웹 애플리케이션을 보호하는 데 상대적으로 약할 수 밖에 없었는데요.

이런 문제점을 통해 나온 개념이 바로 WAF(Web Application Firewall)입니다. WAF는 간단하게 말하자면 웹 보안 방어에만 초점을 맞춘 애플리케이션 게이트웨이 방화벽의 한 유형입니다.

그렇다면 WAF와 기존 방화벽의 차이점은 무엇일까요? 그리고 WAF는 앞에서 말했던 웹 보안 취약점에 대한 보호를 어떻게 제공할까요?

WAF의 작동 모드

앞서 말했듯이, WAF의 본질은 "웹 보안에 초점을 맞춘 방화벽"이 되는 것인데요. 웹 보안은 애플리케이션 계층에서 HTTP 요청과 관련이 있습니다. 그렇기에 WAF의 분석 및 정책은 애플리케이션 계층에서 작동하게 됩니다.

WAF는 웹 보안 분야에서 기존 방화벽에 비해 어떤 개선점을 제공할까요? 이를 WAF의 세 가지 작동 모드를 살펴보며 시작해봅시다!

Transparent Proxy

Transparent Proxy 모드는 대부분의 기존 방화벽의 작동과 유사하게 작동하며 클라이언트와 서버 간의 통신을 변경하지 않고도 HTTP 트래픽을 가로채서 전달합니다. 이 과정에서 HTTPS 트래픽을 복호화 하기 위해 WAF는 HTTPS의 대칭 키를 서버와 동기화해야 합니다.

이 모드의 장점은 클라이언트나 서버를 변경할 필요가 없기 때문에 배포가 쉽다는 점입니다. 하지만 Transparent Proxy는 웹 서비스 자체가 아니므로 HTTP 요청에 대한 수정 및 응답을 할 수 없으며 요청이 허용되거나 거부되는지 여부만 제어할 수 있습니다. 결과적으로 웹 서비스에서 제공하는 인증이나 콘텐츠 필터링 같은 기능을 수행할 수 없게 되는 것이죠.

Reverse Proxy

Transparent Proxy와 달리 Reverse Proxy는 클라이언트가 서버 대신 WAF로 요청을 보내야 합니다. 그렇기에 Reverse Proxy 모드에서 서버가 수신한 요청은 실제로 WAF에서 시작됩니다. 이러한 특징 덕분에 Reverse Proxy WAF는 클라이언트와 서버 사이의 중재자 역할을 하며 이 격리를 더 철저하게 만들어 줍니다.

Reverse Proxy WAF는 본질적으로 웹 서비스이므로 HTTPS 인증서를 WAF에 직접 배포할 수 있고, 이 인증서를 통해 HTTPS 트래픽을 해독한 후 HTTP를 사용하여 내부 네트워크 내의 서버에 프록시 요청을 할 수 있습니다.
또한, 웹 서비스로 작동하기 때문에 Transparent Proxy와 다르게 HTTP 요청에 대한 추가적인 처리가 가능해집니다.

그렇다고 Reverse Proxy가 장점만 있는건 아닙니다. 먼저, HTTP 요청에 대한 추가적인 처리가 가능하여 기능이 많을수록 성능 오버헤드가 높아지므로 일반적으로 더 견고한 하드웨어를 요구합니다.
또한 클라이언트와 서버 사이의 중재자 역할을 하고 있기 때문에 만약 WAF가 다운되면 클라이언트 요청에 응답할 수 없어 서버가 계속 작동하더라도 사용자는 애플리케이션을 사용할 수 없게 됩니다.

Plugin

Plugin 모드에서 WAF는 더 이상 네트워크에서 독립적인 보안 제품이 아니라 웹 서버 자체 내에 플러그인으로 통합되어 웹 보안 보호를 제공합니다.
어떻게 서버 로직에 WAF를 임베드 할 수 있을까요? 이를 위해 일반적으로 사용되는 기술은 AOP로 서버 로직에 Aspect로 삽입될 수 있습니다.

서버 자체 내에 구현하는 만큼 WAF를 배포가 매우 간단해지는 장점을 가지고 있는데요. 그러나 서버와 WAF가 긴밀하게 결합되는 만큼 발생하는 문제들이 또 있습니다.
먼저 WAF를 서버와 함께 실행하기 때문에 추가적인 서버 리소스가 소모되어 웹 서비스 자체의 성능에 영향을 미칠 수 있고, 서버와 긴밀한 결합을 가지고 있어 WAF에 대한 모든 변경 사항이 서버에 직접 영향을 미치기 때문에 WAF 변경 시 테스트 하는 과정에서 추가 작업 부하가 발생하는 등의 문제들이 생기게 됩니다.

WAF 기능

위에서 WAF의 모드에 대해서 알아보았는데요. WAF는 다양한 모드 제공을 통해 기존 방화벽에 비해 배포에 있어 더 큰 유연성을 제공한다는 것을 알게 되었습니다. 즉, 다양한 요구에 따라 다양한 형태로 웹 서비스를 보호할 수 있습니다.
기능 측면에서도 마찬가지로 WAF는 HTTP 데이터 구문 분석 및 HTTPS 트래픽 복호화와 같이 HTTP 요청에 특정한 특정 보안 기능을 구현할 수 있습니다.

HTTP 파싱

WAF는 웹 보안에 초점을 맞추므로 HTTP 요청 구문 분석은 기본적인 기능입니다. 기본적인 콘텐츠 분석 외에도 특정 공격 시그니처는 전체 JSON 콘텐츠를 통해 감지할 수 없는 JSON 필드와 같이 깊이 내장되어 있을 수 있어 해당 키와 값을 이해하기 위해 XML, JSON 및 기타 RPC 프로토콜을 분석해야 합니다.

WAF는 단순히 콘텐츠를 파싱하는 것 외에도 HTTP 콘텐츠를 적절하게 처리해야 하는데요. 이유는 다음과 같습니다.
1. HTTP 콘텐츠는 UrlEncode와 같은 방법을 사용해 인코딩 될 수 있으므로 공격 시그니처가 인코딩을 통해 감지를 우회하는 것을 방지하기 위한 디코딩 기능이 필요합니다.
2. HTTPS에서 암호화된 콘텐츠를 보려면 WAF가 HTTPS 요청을 해독해야 합니다. 투명 프록시 모드에서 WAF는 HTTPS 키를 서버와 동기화하여 요청을 해독합니다. 역방향 프록시 모드에서 WAF는 인증서로 직접 해독할 수 있으며, 플러그인 모드에서 WAF는 HTTP 콘텐츠를 구문 분석하기 전에 서버에 의존하여 요청을 해독합니다.

웹 보안 보호

WAF는 HTTP 요청을 구문 분석하고 인코딩된 콘텐츠를 디코딩하고 HTTPS를 복호화한 후 전체 HTTP 요청 콘텐츠를 분석하여 웹 서비스에 대한 보안을 제공할 수 있습니다.

감사 및 경고

WAF의 또 다른 중요한 기능은 웹 보안과 관련된 감사 및 알림을 제공하는 것입니다. 웹 보안 감사에는 공격 시간, 경로 및 빈도와 같은 정보가 포함되어 있어 개발자가 관련 방어를 개선하는데 도움이 될 수 있습니다.
또한 WAF는 모든 HTTP 요청 콘텐츠를 구문 분석할 수 있으므로 감사에 필요한 로깅 필드를 제공할 수 있어 이를 사용해 WAF를 통계 분석 도구로도 사용할 수 있습니다.

배운 점

  • WAF의 작업 모드와 주요 기능에 대해 알게 되었습니다.
  • WAF는 다양한 모드 제공을 통해 기존 방화벽에 비해 배포에 있어 더 큰 유연성을 제공한다는 것을 알게 되었습니다

출처 : https://medium.com/the-first-digit/how-waf-protects-vulnerable-web-applications-ac7d0947d3d4

0개의 댓글