웹방화벽(Web Application Firewall, WAF) 은, 일반적인 네트워크 방화벽 (Firewall) 과는 달리 웹 애플리케이션 보안에 특화되어 개발된 솔루션입니다.
웹방화벽의 기본 역할은 그 이름에서도 알 수 있듯, SQL Injection, Cross-Site Scripting(XSS) 등과 같은 웹 공격을 탐지하고 차단하는 것입니다. 웹방화벽은 직접적인 웹 공격 대응 이 외에도, 정보 유출 방지 솔루션, 부정 로그인 방지 솔루션, 웹사이트 위변조 방지 솔루션 등으로 활용이 가능합니다.
정보 유출 방지 솔루션으로 웹방화벽을 이용할 경우, 개인 정보가 웹 게시판에 게시되거나 개인 정보가 포함된 파일 등이 웹을 통해 업로드 및 다운로드 되는 경우에 대해서 탐지하고 이에 대응하는 것이 가능합니다.
부정 로그인 방지 솔루션으로서는, 추정 가능한 모든 경우의 수를 대입하여 웹사이트에 로그인을 시도하는 경우와 같은 비정상적인 접근에 대한 접근 제어 기능을 합니다.
주로 해커가 해킹을 한 후에 과시하는 것이 목적인 웹사이트 위변조가 발생했을 경우, 이에 대해 탐지하고 대응하는 웹사이트 위변조 방지 솔루션의 역할을 합니다.
즉, 웹방화벽은 위에서 기술한 4 가지 웹 보안 기능을 제공하면서, 웹 애플리케이션이라는 [ 집 ]을 미처 예상하지 못했던 외부의 공격으로부터 지켜내고, 사전에 발견하지 못했던 내부의 위험 요소로부터 지켜내는 [ 울타리 ] 역할을 수행하는 존재라고 할 수 있습니다.
웹방화벽 개념과 원리
웹 방화벽(Web Application Firewall)을 알기 위해서는 먼저 Web Application에 대해 알아야 합니다. Web Application은 우리 생활에서 늘 접하는 것이라고 할 수 있습니다. 인터넷을 통해서 우리들이 사용하는 홈페이지나 대부분의 서비스들이 Web Application이라고 생각하면 됩니다. 사용자들이 사용하는 웹 사이트의 구조는 보통 아래와 같습니다.
웹 공격의 대부분은 Web Application을 구축할 때 생겨나는 취약점을 이용해서 Web Server를 공격하거나 DB 내용을 악용하는 방법이 대부분입니다. 공격자는 HTTP Request에 특정 공격 코드 또는 특정 Web Application만이 가지고 있는 취약점을 우회는 코드를 삽입하여 Web Server에 전송하게 된다. 결국 Web Application은 의도하지 않은 동작을 하게 되고, 그 결과를 HTTP Reply 통해 공격자게 다양한 정보들을 전송하게 되는 것입니다.
웹 방화벽에서 Web Server 쪽으로 전송되는 모든 HTTP Request Packet을 검사하여 Web Application에게 의도하지 않은 내용들은 전송되지 못하도록 하는 역할을 합니다. 또한 Web Server에서 통과하는 HTTP Reply Packet 내용을 감시하여 특정 정보의 유출을 막는 역할도 하게 됩니다.
웹 방화벽에서 Web Server 쪽으로 HTTP Request/Reply Packet을 검사한다고 했는데, 이것은 어떤 방법으로 가능한지 살펴보겠습니다. 중간에서 Packet을 검사하는 원리는 Proxy Server의 원리에서 가지고 온 것입니다. Proxy Server는 Client와 Server 간의 통신을 중계하고 Relay 하는 역할을 합니다.
웹 방화벽의 원리란 웹 서버로 들어오고 나가는 모든 Packet을 Proxy 원리를 적용하여 Packet의 내용을 검사하고 차단하는 것입니다.
웹방화벽의 진화
웹방화벽은 사용자의 필요와 요청에 의해 꾸준히 진화해 왔습니다.
웹방화벽의 동작 방식은 점점 발전, 또 진화 해왔고, 그 동작 방식의 세분화를 통해 세대(Generation)를 구분할 수 있습니다.
1세대 웹방화벽은 블랙리스트 방식과 더불어 안전한 접근에 대한 허용 리스트인 화이트리스트(White List)를 병행하는 방식을 사용하였습니다. 자동으로 온라인 업데이트 서비스를 제공하는 블랙리스트와는 달리 화이트리스트는 고객 환경에 따라 다르게 적용이 되기 때문에 관리자가 직접 생성 및 관리를 할 수밖에 없었고, 블랙리스트 역시 결국 최종 적용을 위한 검토는 관리자의 몫이었기 때문에 이는 관리자에게 매우 큰 관리 부담으로 다가왔습니다. 또한 공격 유형이 다양해짐에 따라 등록된 시그니처의 수가 늘어날수록 성능이 저하되는 문제마저 발생하였습니다.
2세대 웹방화벽은 보호 대상 웹 애플리케이션을 몇 주간의 모니터링을 통해 분석하여, 화이트리스트 생성을 자동으로 처리해 주는 것이 특징입니다. 하지만 이는 빠르게 변화하는 웹 환경에 적합하지 않았습니다. 또한, 생성된 화이트리스트 또한 적용을 위한 최종 검토 및 관리가 필요했기 때문에 관리자의 부담은 여전히 존재했으며, 웹 보안 환경에 존재하는 다양한 웹 공격 유형을 파악하지 못했기 때문에, 많은 성능 저하 및 오탐 이슈를 불러일으켰습니다.
그래서 등장하게 된 것이 3세대 웹방화벽인 ‘지능형 웹방화벽’입니다.
3세대 웹방화벽은 웹 공격 유형 별로 블랙리스트 탐지, 화이트리스트 탐지 및 웹 트래픽 콘텐츠 분석 등의 기법들을 로지컬 하게 결합하여 공격을 탐지하는 방식을 사용하였기 때문에, 1,2세대 웹방화벽 대비 오탐을 대폭 줄일 수 있었습니다. 또한 특정 공격 유형의 새로운 변종 공격이 발생할 경우, 로직 기반으로 판단하는 3세대 웹방화벽은 최소한의 시그니처의 추가 만으로 바로 변종 공격의 방어가 가능해졌습니다. 이로 써 1,2 세대의 지속적인 시그니처 등록으로 인한 성능 저하 문제를 해결할 수 있었습니다. 관리자가 리스트 관리보다는 공격 유형별 정책 관리에 집중할 수 있어, 훨씬 효율적인 관리가 가능해졌습니다.
웹 방화벽의 주요 기능
웹 방화벽은 HTTP의 Request/Response 메시지 내용을 분석, Positive 정책과 Negative 정책을 혼용하여 탐지 기능을 수행하게 됩니다. 먼저 Request 메시지를 이용한 탐지 기능을 알아보겠습니다.
가장 큰 특징이라고 할 수 있는 것은 URL 단위의 탐지 기능입니다. 해당 사이트는 서비스를 제공할 URL을 Positive 정책으로 설정하면, 등록된 URL 외의 다른 URL을 사용자가 요청할 경우 탐지하여 요청 거부 메시지를 보내는 것입니다. 이러한 경우에는 악의적인 사용자가 정상적인 URL 외의 다른 URL로 접근하는 것을 원천적으로 봉쇄할 수 있습니다. Negative 정책에서는 정상적인 URL에서 악의적인 공격 패턴(XSS, SQL Injection, OS Command Injection 등)을 검출해 내는 문자열 비교 정책을 추가할 수 있습니다.
Request Method(GET, POST, OPTION)까지도 Positive 정책에 설정할 수 있습니다. 특정 URL에서만 사용하는 Cookie/Hidden 필드나 Parameter 값들을 설정하여 보다 정교한 탐지 기능을 제공하게 됩니다.
파일 업로드 제어기능과 파일 검사 기능을 지원합니다. 사용자들이 웹 서버로 업로드하는 파일에 대해 파일의 종류에 따라 업로드를 허용 또는 차단 여부를 지정할 수 있습니다. 업로드 파일의 내용을 검사하여 악의적인 공격 형태의 파일들은 파일 필터를 통해 업로드가 차단됩니다. 이러한 기능은 웹 사이트를 악용하려는 사용자로부터 안전하게 보호하는 역할을 합니다.
앞의 탐지 기능이 Request 메시지를 이용한 것이라면, 이번에는 Response 메시지를 이용한 탐지 기능을 알아보겠습니다. 가장 대표적인 기능은 바로 웹 서버의 에러 또는 오류 정보를 차단하여, 악의적인 사용자가 웹 서버에 대한 정보를 알 수 없게 하는 것입니다. 그러나 요즘은 주요 정보를 차단하는데 더 많이 이용되고 있습니다. 사용자의 주민번호, 핸드폰 번호, 집 주소, E-mail 주소, 카드번호 등의 개인 정보들이 다른 사용자들에게 노출되는 것을 방지하는 것입니다.
부가적으로 웹 가속 기능이나, SSL 가속 기능, Cache 기능들을 지원합니다. 웹 방화벽 탐지 기술의 장점은 HTTP 프로토콜 속성값의 작은 단위까지도 디테일한 정책 설정이 가능하다는 점입니다. 웹 서비스 개발 시점에 미처 신경 쓰지 못했던 보안상의 문제점들을 보완할 수 있어 웹 서비스를 보다 안전하게 사용자들에게 제공할 수 있습니다.
[출처]
https://www.pentasecurity.com
http://www.boan.com