안전한 웹 보안에 대한 이해
웹 서버에 대한 이해
[그림1] 클라이언트-서버 구조
우리는 일반적으로 데스크탑 PC나 노트북, 모바일 기기를 통해 웹을 사용합니다.
이것을 IT용어로 정리하면, 웹에 접속하기 위해 사용하는 기기들은 [ 클라이언트 (Client) ], 웹사이트나 모바일앱 화면과 같은 웹 컨텐츠를 저장하고 있다가 클라이언트가 접속을 하면 그 컨텐츠를 보여주는 시스템을 [ 서버 (Server) ] 라고 합니다. (IT 시스템에서 서버가 전부 웹서버는 아니지만, 여기에서는 웹 보안을 논하는 자리이니 웹서버를 예로 들겠습니다.)
이 때 클라이언트와 웹서버를 연결해주는 연결 망이 바로 [ 웹 (Web) ]입니다.
보안의 관점에서 보자면, 일반적으로 클라이언트 보안은 개개인 시스템의 안전과 관련이 있고, 서버 보안은 기업 시스템의 안전과 관련이 있습니다. 여기에서는 기업 내 웹 보안의 핵심이 되는 서버 보안에 대해 살펴보려 합니다.
서버 보안에 대해 알기 위하여, 먼저 서버 시스템에 대하여 살펴보도록 하겠습니다.
기업 내 서버 시스템은 IT 시스템 구조를 기본적으로 따르고 있기 때문에, IT 시스템 구조를 알면 서버 시스템 구조를 파악할 수 있습니다.
[그림2] IT 시스템 구조
위 그림에서 볼 수 있듯이, IT 시스템은 크게 네트워크, 시스템, 애플리케이션 이렇게 3개의 계층으로 구성되어 있습니다. 이 3 계층은 서로 상호작용을 통하여 IT 시스템을 구축하고 있습니다.
네트워크 계층은 데이터의 송수신과 관련된 통신을 담당하는 역할을 하고, 시스템 계층은 우리가 흔히 알고 있는 Windows, Linux와 같은 운영 체제(O/S)가 하는 역할처럼 여러 애플리케이션이 동작할 수 있는 플랫폼 역할을 합니다. 애플리케이션은 이 시스템 계층 위에서 동작하는 프로토콜(컴퓨터 간에 정보를 주고받을 때의 통신 방법에 대한 규칙과 약속) 및 응용 서비스를 제공하는 역할을 하고 있습니다.
결국 안전한 서버 보안이란 이 IT 시스템의 세가지 계층의 보안, 즉 네트워크 보안, 시스템 보안, 애플리케이션 보안이 모두 안전하게 구축된 것을 의미합니다.
[그림3] IT 시스템 구조 각 계층별 웹 보안
이해를 좀더 돕기 웹보안과 관련된 IT 시스템의 각 계층별 보안이 실제로 어떻게 구축 되는지 살펴보도록 하겠습니다.
네트워크 보안을 위해서는 안전하지 않은 IP나 Port에 대한 접근 제어가 필요하고, 허용한 IP나 PORT로 들어온 트래픽(특정 전송로 상에서 일정 시간 내에 흐르는 Data의 양)에 대해서도 유해성 여부를 체크할 필요가 있습니다. 네트워크 보안을 위해 대부분의 기업은 방화벽 (Firewall) 과 침입 탐지/방지 시스템 (IDS/IPS) 를 구축합니다.
시스템 보안은 대부분 O/S 와 연관된 항목이 많습니다. Windows, Linux, Unix 등의 O/S에 대한 개발 및 제공을 담당하는 제조업체들은 자사의 시스템에 대한 주기적인 보안 업데이트 및 패치를 통하여 알려진 웹 위협에 대하여 대비하고 있습니다. 기업의 보안 담당자는 보안 업데이트 및 패치 뿐만 아니라, 주기적으로 시스템 악성코드 점검을 통하여 시스템을 항상 안전한 상태로 유지해야 합니다. 시스템 보안을 위해 기업들은 주로 안티 바이러스 솔루션을 구축합니다.
이렇듯, 대부분의 기업이 네트워크나 시스템 보안에 대해서는 이해를 하고 있고 이에 따른 보안을 구축하려고 노력합니다. 하지만 애플리케이션 보안의 상황은 그렇지 않습니다. 애플리케이션 계층은 네트워크 계층이나 시스템 계층에 비해 고도화 되어 있고, 애플리케이션의 종류도 다양하기 때문에, 대부분의 보안 관리자들이 보안을 적용함에 있어 많은 어려움을 겪습니다.
하지만 아이러니하게도, 웹 보안에 있어 그 중요도가 가장 높은 것은 애플리케이션 보안입니다.
우리가 일반적으로 이용하는 웹사이트, 모바일앱 등은 모두 애플리케이션으로 구성이 되어 있고, 이를 타겟으로 공격하는 웹 공격 또한 애플리케이션의 취약성을 이용한 애플리케이션 공격이 대부분입니다. 현재 이루어지고 있는 웹공격의 90% 이상은 모두 웹 애플리케이션을 노린 공격이라고 해도 과언이 아닙니다.
결국 안전한 웹 보안의 구축을 위해서는 안전한 웹 애플리케이션 보안 구축이 필수적입니다.
웹 애플리케이션 보안과 웹 보안 솔루션
애플리케이션 보안은 구축 초기인 개발 단계부터 구축 이후의 유지 보수에 이르기까지 모든 단계에 걸쳐 신경을 써야 합니다. 그러나 많은 사람들이 솔루션의 기능이나 도입 위치에 대한 정확한 이해 부족으로 인하여 웹 애플리케이션 보안 구축에 어려움을 느끼고 있는 것이 사실입니다.
하지만, 웹 애플리케이션 보안과 각각의 솔루션이 동작하는 위치를 집을 짓는 것에 비유한다면 쉽게 이해할 수 있습니다.
웹 애플리케이션 보안 솔루션 모식도
(웹 애플리케이션은 크게 “웹 애플리케이션 서버” 와 “DB”로 구성됩니다)
시큐어코딩 Secure Coding
개발 단계는 집을 짓는 과정이라고 생각할 수 있습니다. 집을 지을 때는 단단한 지반에 튼튼하고 안전한 벽돌로 집을 지어야 합니다. 이를 애플리케이션으로 생각하면, 취약성이 잔재할 수 있는 코드를 배제하고, 안전한 소스와 프로그램을 사용한 시큐어코딩과 같습니다.
시큐어코딩이란 개발 과정에서 개발자의 지식 부족이나 실수, 또는 각 프로그래밍 언어의 고유한 약점 등 다양한 원인으로 발생할 수 있는 취약점을 최소화 하기 위하여, 설계 단계부터 보안을 고려하여 코드를 작성하는 제작 방식을 의미합니다. 애플리케이션 개발에 있어서, 구축 속도보다는 안전하고 체계적으로 개발하는 것이 더욱 중요합니다. 안전하지 않은 개발 환경에 웹 보안 솔루션을 도입하는 것은 아랫돌 빼어 윗돌 괴는 것처럼 임시방편에 불과하기 때문입니다.
웹 스캐너 Web Scanner
집이 완성된 이후에 벽돌에 금이 가거나 집이 기울어 진 것을 체크하는 것과 같이 외부에서 애플리케이션을 점검하는 웹 스캐너를 주기적으로 실행할 필요가 있습니다. 웹 스캐너는 웹 취약점 점검 툴로 불리며, 웹 애플리케이션 외부에서 통신을 통하여 잠재적인 취약점이나 설계 상의 취약점을 분석하는 프로그램입니다.
시중에는 많은 종류의 웹 스캐너가 판매되고 있으며, 비상업적 용도로도 제공되는 다양한 웹 스캐너가 있습니다. 웹 스캐너의 성능은 다를 수 있지만, 핵심은 효과를 보기 위해서는 꾸준한 점검을 통하여 애플리케이션의 상태를 주기적, 지속적으로 확인해야 한다는 것입니다.
웹 서버 악성 코드 탐지 Web-Based Malware Detection
그 이후에 집안 내부에서도 비가 새는 것은 아닌지, 벌레가 숨어 들 수 있는 구멍은 없는지 체크할 필요가 있습니다. 이는 웹서버 악성 코드 탐지 솔루션을 통해 점검할 수 있습니다.
웹 스캐너와 동일하게 웹서버 악성 코드 탐지 솔루션도 주기적인 점검과 실행이 필수적입니다.
웹방화벽 Web Application Firewall
집을 짓고 나면 우리는 예상치 못한 외부의 접근으로부터 집을 지키고, 미처 발견하지 못한 내부의 위험 요소를 최종적으로 보완하고자 울타리나 담을 제작하게 됩니다. 애플리케이션 보안에서는 웹방화벽(Web Application Firewall) 이 울타리 역할을 하게 됩니다.
웹방화벽은 웹을 통한 외부의 침입이나 웹 공격을 탐지하고 대응하는 역할을 합니다. 웹방화벽은 웹 보안 취약점을 외부에 노출되지 않도록 보안해줄 뿐만 아니라, 타 솔루션들에게 공격이 다다르기 전에 외부에서 차단하는 역할을 수행합니다. 또한 웹 서버 악성 코드가 웹 서버로 업로드 되는 것 역시 막아줍니다. 이는 일반적인 방화벽(Firewall)과 다르게 웹방화벽이 웹 애플리케이션에 특화되어 개발되어 있기에 가능한 것입니다. 또한, 다른 솔루션과 달리 서버에 구축/적용하는 비용이 들지 않고, 외부에 편리하게 설치할 수 있습니다.
최신 웹방화벽의 경우, 광범위하고 다양한 웹 공격을 실시간으로 차단하고, 학습 모드를 통한 룰 적용이 가능한 특징이 있습니다.
데이터 보안 Data Security
마지막으로 집안에서 가장 중요한 현금, 통장과 같은 재산을 어떻게 보관할 지가 중요합니다. 애플리케이션에서 이러한 재산을 개인정보나 카드 정보, 계좌 정보와 같은 중요 데이터(Data)로 볼 수 있습니다. 일반적인 웹 애플리케이션 환경에서는 데이터베이스(DB)를 구축하여 데이터를 보관하고 관리합니다.
데이터를 안전하게 관리하기 위해서는 데이터 보안과 연관된 웹 보안 솔루션을 도입하여 안전하게 데이터를 관리하여야 합니다. 일반적으로 데이터를 암호화함으로써 해커가 최종적으로 노리는 데이터를 알아볼 수 없게 만드는 데이터 암호화 솔루션을 많이 도입하고 있습니다. 하지만 암호화로 끝나는 것이 아니라 누가 접근할 수 있고, 언제 접근하였는 지를 확인하는 접근 제어 와 감사 로그에 많은 주의를 기울어야 합니다. 또한 데이터 암호화에 있어서는 암호화된 데이터를 열어 볼 수 있는 키(Key) 관리가 매우 중요하기에, 키 관리에도 각별한 주의가 필요합니다.
웹보안의 완성
지금까지 언급한 웹 보안 솔루션을 각각의 계층에 맞게 정리하면 아래와 같은 한 장의 그림으로 그릴 수 있습니다.
웹 보안 3계층과 계층 별 보안 솔루션
각각의 보안 계층 별 특징을 이해하고, 적재 적소에 웹 보안 솔루션을 도입하여 안전한 웹 보안을 달성할 수 있도록 주의를 기울이는 것은 필수 입니다. 또한, 웹 보안에 있어서 애플리케이션 보안이 가장 큰 비중을 차지하고 있지만, 기본적으로 네트워크와 시스템 보안의 안정성이 바탕이 되어야 웹 보안을 보장할 수 있는 점도 간과해서는 안됩니다.
“An organization’s overall Security is only as strong as its weakest Link.”
라는 말이 있습니다.
여러 보안 요소 중 가장 약한 부분이 그 회사 전체의 보안 수준을 결정한다는 말입니다. 즉, 모든 보안 계층에 균형적으로 신경을 기울이고, 각 계층의 보안 문제들마다 적합한 솔루션을 도입하는 것이 보안 수준을 높일 수 있는 최선의 방안입니다.
웹 보안 솔루션 시장은 매년 증가하고 있습니다. 프로스트 앤 설리번이 2012년에 발표한 보고서에 따르면 아시아태평양지역 콘텐츠 보안 관리 시장은 2017년경, 15억 7천만 달러(약 1조 7천억원)에 달하고, 시장의 연간 성장률은 약 17.9%에 육박할 것으로 내다보았습니다. 일반적인 IT 산업 성장률인 7~9%에 비하면 이는 엄청난 성장률입니다.
시장의 증가에 따라 수많은 웹 보안 솔루션이 나오는 현재 그리고 미래에, 각각의 웹 보안 솔루션에 대하여 기능을 현명하게 판단하고, 정확한 위치에 웹 보안 솔루션을 배치할 수 있어야 안전한 웹보안을 달성할 수 있을 것입니다.