웹 애플리케이션 보안을 강조하는 이유

전문가 칼럼입력 :2013/11/12 10:25    수정: 2013/11/12 17:19

김덕수 펜타시큐리티시스템 CTO

지난 10월 8일 지디넷코리아에 기고한 글, '사이버 공격, 웹 보안이 핵심' 을 통해 웹 보안의 중요성과 웹 위협의 유형을 살펴보았다.

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

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

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

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

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

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

또 클라이언트와 웹서버를 연결해주는 연결망이 바로 ‘웹’이다.

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

기업 서버시스템 구조

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

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

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

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

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

네트워크 보안을 위해서는 안전하지 않은 IP나 포트(Port)에 대한 접근 제어가 필요하고, 허용한 IP나 포트로 들어온 트래픽에 대해서도 유해성 여부를 체크할 필요가 있다. 이를 위해 대부분의 기업은 방화벽(Firewall)과 침입탐지/방지시스템(IDS/IPS)를 구축한다.

하지만 방화벽의 경우 허용된 IP나 포트로부터의 공격은 막을 수 없고, 또 IDS/IPS에서 진행되는 네트워크 계층에서의 유해성 검사는 애플리케이션 계층에 대한 이해가 없이 이뤄져, 애플리케이션 취약성을 노린 공격에 대해서는 방어가 불가능하다는 한계가 있다.

시스템 보안은 대부분 OS 와 연관된 항목이 많다. 윈도, 리눅스, 유닉스 등 OS에 대한 개발 및 제공을 담당하는 제조업체들은 자사 시스템에 대한 주기적인 보안 업데이트 및 패치를 통해 알려진 웹 위협에 대비하고 있다.

기업 보안 담당자는 보안 업데이트 및 패치 뿐만 아니라, 주기적으로 시스템 악성코드 점검을 통해 시스템을 항상 안전한 상태로 유지해야 한다. 이를 위해 기업들은 주로 안티 바이러스 솔루션을 구축한다.

이번 글에서 네트워크 및 시스템 보안에 대한 설명을 보고 느꼈겠지만, 대부분의 기업이 네트워크나 시스템 보안은 이해하고 있고 이에 따른 보안을 구축하려고 노력한다. 하지만 애플리케이션 보안에 대해서는 그렇지 않다.

애플리케이션은 네트워크나 시스템 계층에 비해 다양화되어 있고, 애플리케이션 종류도 많기 때문에, 대부분의 보안 관리자들이 보안을 적용함에 있어 많은 어려움을 겪는다. 웹보안을 구축할 때도 마찬가지다.

웹보안에 있어 그 중요도가 가장 높은 것은 애플리케이션 보안이다. 우리가 일반적으로 이용하는 웹은 모두 애플리케이션으로 구성되어 있다. 웹사이트, 모바일 앱 등은 모두 애플리케이션으로 이뤄져 있고, 이를 타겟으로 공격하는 웹 공격 또한 애플리케이션 취약성을 이용한 공격이 대부분이다.

SQL 인젝션(Injection), XSS과 같은 유명 웹 공격도 결국 모두 웹 애플리케이션인 웹사이트의 취약성을 노린 공격이다. 웹쉘이라고도 불리는 웹 기반 악성코드 또한 php등으로 구성된 웹 애플리케이션이다.

웹보안 업계에서 유명한 OWASP(The Open Web Application Security Project)이 선정한 톱10 웹 취약점 역시 모두 웹 애플리케이션 공격이다. 즉, 현재 이루어지고 있는 웹공격의 90% 이상은 모두 웹 애플리케이션을 노린 공격이라고 해도 과언이 아니다. 결국 안전한 웹보안을 구축하고자 한다면 안전한 웹 애플리케이션 보안 구축이 필수다.

관련기사

웹보안에 있어 가장 중요도가 높은 애플리케이션 보안임에도 정작 그 애플리케이션 보안은 어떻게 보안을 구축해야 하는지에 대한 어려움 때문에 적절한 보안이 이루어지지 않고 있다.

다음 글에서는 이러한 어려움을 해결해주기 위해 애플리케이션 보안을 집중 분석하여, 안전한 웹 애플리케이션 보안을 구축하려면 어떻게 해야 하는지, 살펴보고자 한다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.