웹방화벽이란



웹방화벽의 필요성
웹방화벽이라는 솔루션이 처음 소개되었을 당시 많은 사람들이 그 존재에 대하여 의문과 회의적인 반응을 보였다.

첫 째 웹 보안은 개발을 잘하면 되는데 왜?
특히 보안 전문가들은 첫 번째 이유를 들어서 웹방화벽이라는 것에 대하여 강한 부정을 보였다사실 필자도 그 중 하나였지만 웹 진단 및 웹방화벽 관련된 업무를 해보니 실제 사이트에서 보안을 고려한 완벽한 개발은 어려운 난제라는 것을 알수가 있었다또한 후에 진단을 통하여 웹의 취약성을 발견하더라도 개발자가 사라지거나구조적으로 수정하기 어려워 대처가 불가능한 경우 있고게다가 혹시 수정이 가능하다고 하더라도 방대한 애플리케이션을 수정하는데많은 시간과 비용이 소모되는 경우가 발생하기도 했다.

결국 회의적인 생각은 웹방화벽은 방대한 웹 애플리케이션을 단일화된 보안 정책으로 관리 할 수 있는 시간과 비용관리적인 부분에 있어서 효율적인 솔루션이라는 결론에 다다르게 되었다.

둘 째 IPS하고 차이점은?
초기 웹방화벽에 대하여 많은 사람들이 가졌던 의문이다컨텐츠 레벨에서 문자열을 검사한다는 측면에서 기존 IPS와 차이점에 대하여 의문을 가질 수가 있다 IPS가 있는데 굳이 웹방화벽을 도입할 필요가 있느냐라는 것이 대부분 사람들의 공통된 의견이었다.
답부터 말하자면, IPS와 웹방화벽은 다르다.

DPI(Deep Packet Inspection) 방식의 IPS
아래와 같은 예에서 IPS와 웹방화벽이 어떤 방식으로 시그니처를 검사하는지 알아보자.
요청 URL: /test/php?query=select * from table
시그니처: select

위의 예는 SQL injection 공격을 가정한 형태이다이 공격은 파라메터 value에 SQL 구문을 입력하여 공격을 수행하게 된다.

                                        <IPS 시그니처 검사>

위 그림에서처럼 IPS는 데이터의 모든 문자열을 검사하여 시그니처를 검사하여 공격을 탐지 한다.
하지만 /test/php?select=1 이와 같은 데이터를 검사 할 경우 오탐이 발생하게 된다.
이러한 이유는 IPS에서는 사용하는 DPI 방식이 애플리케이션의 특성과 상관 없이 모든 문자열에 대하여 검사를 하기 때문이다.

그러면 같은 경우에 웹방화벽에서는 어떤 방식으로 검사하는지 알아보자.
 
                                 <웹방화벽 시그니처 검사>

URL은 위 그림과 같은 구조로 되어있는데, SQL 공격은 value 부분에서 발생한다이런 경우에 웹방화벽에서는 요청 URL 구조를 분석한 이후에 시그니처를 value 부분에서만 검사하게 된다즉 전체 URL에서 select * from table 부분만 검사한다.
따라서 /test/php?select=1와 같은 URL 요청과 같은 형태에 대하여 오탐이 발생하지 않는다.

Application Proxy 방식의 웹방화벽
                                         <HTTP Request 구조>

웹 공격은 URL, header, MIME 등 웹 프로토콜 구조의 각 부분의 취약성을 이용하여 공략한다또한 각각의 특성에 맞도록 공격도 특화되어 있다.
또한 직접적인 공격이 아니더라도웹에서 보내는 민감한 정보들을 외부로 노출시키지 않기 위하여 웹 서버의 응답 메시지에 대하여 적절한 보안을 유지해야 한다웹 공격 및 취약점의 이러한 특징 때문에 웹 프로토콜을 이해 하지 않으면 웹 보안을 구현 하기가 어렵다그래서 웹 방화벽은 반드시 프록시 방식으로 구현이 되어야만 한다.

웹 방화벽의 한계
웹방화벽이 웹 보안을 강력하게 해주는 도구는 맞지만 만능은 아니다.
웹 보안에서는 기본적으로 비정상적인 요청이나 응답을 제어 차단하는 도구이며공격이 반드시 비정상적인 요청으로 발생하는 것은 아니기 때문이다.
예를 들어 타인의 글을 읽었을 때 URL 요청이 아래 그림과 같을 경우.

read라는 변수의 값을 write로 수정하여 아래와 같이 타인의 글을 불법적으로 수정하는 것이 가능한 경우가 있다.

흔히 논리적인 취약점에 의한 인증 우회 기법으로 알려진 이 공격은 웹 서버에서 사용자 인증을 엄격하게 하지 않기 때문에 발생하는 문제이다또한 요청의 형태가 정상적이기 때문에 웹방화벽 입장에서 공격 여부를 판단할 수가 없게 된다.

이러한 종류의 논리적인 취약점을 보완하기 위해서는 웹사이트를 주기적으로 취약점 점검을 하고결과를 바탕으로 애플리케이션을 수정하여 보완해야만 한다.

따라서 효과적인 웹사이트 보안을 구축하기 위해서는 웹방화벽은 물론 취약점 점검 및 관리가 꾸준하게 필요하다고 할 수 있다.



댓글