[웹 보안의 정석 2편] 웹 애플리케이션 보안을 강조하는 이유

애플리케이션 보안

지난 글 “사이버 공격, 웹 보안이 핵심” 을 통하여 웹 보안의 중요성과 웹 위협의 유형을 살펴보았다.

한국인터넷진흥원 자료에 의하면 전체 해킹 시도 중 전체 70% 이상이 웹을 통해 이루어지고 있는 만큼 이제 웹 보안은 선택이 아닌 필수가 되었다.

하지만 웹 보안은 전문가라 하여도 안전한 웹 보안을 보장하기 어렵다. 웹 보안의 경우, 현재 표준화된 보안 대책이 없으며 기업마다 제각각 보안을 구축하고 있기 때문이다.

안전한 웹 보안을 위해서는 기업의 보안 담당자가 웹 보안에 대하여 충분한 이해하고, 자사의 IT 시스템에 맞는 웹 보안을 구축해야 한다. 이를 위하여 대부분의 기업들은 웹 보안 솔루션을 도입하고 있지만, 웹 보안을 이해하고 적재적소에 웹 보안 솔루션을 설치 및 운영하는 곳은 많지 않다.

이번 연재에서는 웹 보안을 쉽게 이해할 수 있도록 전반적인 IT 시스템의 구조를 살펴보고, 웹 보안이 이 IT 시스템에 어떻게 적용되는가를 살펴보는 시간을 갖고자 한다. IT 시스템에 대한 이해, 그리고 이에 맞는 웹 보안의 개요를 살펴보도록 하자.

클라이언트-서버 구조에 대한 이해

우리는 일반적으로 데스크탑 PC나 노트북, 모바일 기기를 통해 웹을 사용한다. 이걸 IT 용어로 보자면, 웹에 접속하기 위해 사용하는 PC나 노트북, 모바일 기기는 ‘클라이언트’, 웹사이트나 모바일앱 화면과 같은 웹 컨테츠를 저장하고 있다가 클라이언트가 접속을 하면 그 컨테츠를 보여주는 시스템을 ‘서버’ 라고 한다.(IT 시스템에서 서버가 전부 웹서버는 아니지만, 여기에서는 웹 보안을 논하는 자리이니 웹서버를 예로 들겠다.) 또 클라이언트와 웹서버를 연결해주는 연결망이 바로 ‘웹’이다.

보안의 관점에서 보자면, 일반적으로 클라이언트 보안은 개개인 시스템의 안전과 관련이 있고, 서버 보안은 기업 시스템의 안전과 관련이 있다. 물론 기업 내부에 있는 클라이언트 보안도 있을 수는 있겠지만, 여기에서는 기업내 웹보안의 핵심이 되는 서버 보안에 대해 살펴보려고 한다.

기업의 서버 시스템 구조

기업내 서버 시스템 구조를 이해하기 위해, IT 시스템 구조를 먼저 살펴보자.

위 그림에서 볼 수 있듯이, IT 시스템은 크게 네트워크, 시스템, 애플리케이션 이렇게 3개의 계층으로 구성되어 있다. OSI 7 계층, TCP/IP 계층과 같은 여러 가지IT 시스템 모델이 있지만, 이러한 계층적 분류에서 가장 공통적인 구조는 네트워크, 시스템, 애플리케이션 3가지 계층이다. 이 3계층은 서로 상호작용을 통하여 IT 시스템을 구축하고 있다.

네트워트 계층은 데이터의 송수신과 관련된 통신을 담당하는 역할을 하고, 시스템 계층은 우리가 흔히 알고있는 윈도우즈, 리눅스와 같은 운영 체제(O/S)가 하는 역할처럼 여러 애플리케이션이 동작할 수 있는 플랫폼 역할을 한다. 애플리케이션은 이 시스템 계층 위에서 여러가지 기능을 가지고 동작하는 프로토콜(HTTP, FTP등) 및 응용 서비스를 제공하는 역할은 한다.

서버의 시스템 구조도 이 IT 시스템 구조를 기본적으로 따르고 있기 때문에, 결국 안전한 서버 보안이란 이 IT 시스템의 세가지 계층의 보안, 즉 네트워크 보안, 시스템 보안, 애플리케이션 보안이 모두 안전하게 구축된 것을 의미한다.

웹 보안의 핵심 = 애플리케이션 보안


그럼 이해를 좀더 돕기 위해 이론적인 얘기에서 현실로 돌아가 웹보안과 관련된 IT 시스템의 각 계층별 보안이 실제로 어떻게 구축 되는지 살펴보자.

네트워크 보안을 위해서는 안전하지 않은 IP나 Port에 대한 접근 제어가 필요하고, 허용한 IP나 PORT로 들어온 트래픽에 대해서도 유해성 여부를 체크할 필요가 있다. 이를 위해 대부분의 기업은 방화벽(Firewall)과 침입탐지/방지시스템(IDS/IPS)를 구축한다. 하지만 방화벽의 경우 허용된 IP 나 Port 로부터의 공격은 막을 수 없고, 또 IDS/IPS에서 이루어지는 네트워크 계층에서의 유해성 검사는 애플리케이션 계층에 대한 이해가 없이 이루어지기에 애플리케이션 취약성을 노린 공격에 대해서는 방어가 불가능하다는 한계가 있다.

시스템 보안은 대부분 O/S 와 연관된 항목이 많다. Windows, Linux, Unix 등의 O/S에 대한 개발 및 제공을 담당하는 제조업체들은 자사의 시스템에 대한 주기적인 보안 업데이트 및 패치를 통하여 알려진 웹 위협에 대하여 대비하고 있다. 기업의 보안 담당자는 보안 업데이트 및 패치뿐만 아니라, 주기적으로 시스템 악성코드 점검을 통하여 시스템을 항상 안전한 상태로 유지해야 한다. 이를 위해 기업들은 주로 안티 바이러스 솔루션을 구축한다.
여기까지의 네트워크 및 시스템 보안에 대한 설명을 보고 느꼈겠지만, 대부분의 기업이 네트워크나 시스템 보안에 대해서는 이해를 하고 있고 이에 따른 보안을 구축하려고 노력한다. 하지만 애플리케이션 보안으로 들어가보면 상황은 그렇지 않다. 애플리케이션 계층은 네트워크 계층이나 시스템 계층에 비해 다양화 되어 있고, 애플리케이션의 종류도 많기 때문에, 대부분의 보안 관리자들이 보안을 적용함에 있어 많은 어려움을 겪는다. 이는 웹보안을 구축함에 있어서도 마찬가지이다. 하지만 아이러니하게도, 웹보안에 있어 그 중요도가 가장 높은 것은 애플리케이션 보안이다.

우리가 일반적으로 이용하는 웹은 모두 애플리케이션으로 구성이 되어 있다. 웹사이트, 모바일앱 등은 모두 애플리케이션으로 구성이 되어 있고, 이를 타겟으로 공격하는 웹 공격 또한 애플리케이션의 취약성을 이용한 애플리케이션 공격이 대부분이다. SQL Injection, XSS과 같은 유명한 웹 공격도 결국 모두 웹 애플리케이션인 웹사이트의 취약성을 노린 공격이고, 웹쉘이라고도 불리는 웹 기반 악성코드 또한 php등으로 구성된 웹 애플리케이션이다. 웹보안 업계에서 유명한 OWASP(The Open Web Application Security Project)에서 선정한 Top 10 웹취약점 또한 모두 웹 애플리케이션 공격이다. 즉, 현재 이루어지고 있는 웹공격의 90% 이상은 모두 웹 애플리케이션을 노린 공격이라고 해도 과언이 아니다. 결국 안전한 웹보안을 구축하고자 한다면 안전한 웹 애플리케이션 보안 구축이 필연적이다.

웹보안에 있어 가장 중요도가 높은 애플리케이션 보안임에도 정작 그 애플리케이션 보안은 어떻게 보안을 구축해야 하는지에 대한 어려움 때문에 적절한 보안이 이루어지지 않고 있다.
다음 글에서는 이러한 어려움을 해결해주기 위해 애플리케이션 보안을 집중 분석하여, 안전한 웹 애플리케이션 보안을 구축하려면 어떻게 해야 하는지, 살펴보고자 한다.