실제 현장에서 벌어지는, 실전 웹 보안
완벽한 웹 보안 3/3
앞선 두 편에서 웹 서비스 구축을 진행하기 전에 고려해야 할 이상적인 웹 보안 방법론의 요소에 대해 알아보았다. 하지만 이는 말 그대로 이상적인, 즉 원론적인 대응이라 이미 한창 웹 서비스를 하고 있는 개인이나 기업의 현실과는 다소간 괴리가 있을 수 있다. “뭐? 이제 와서 시큐어하게 코딩을 하라고?”대개 실제 현장에서는 이미 개발이 완료된 애플리케이션을 어떻게 하면 비교적 안전하게 보호할 수 있을지에 관심의 초점이 맞춰진다. 다시 말해, 집은 이미 완공된 상태인데 어떻게 하면 집 전체를 통째로 손보지 않고 외부의 침입 등으로부터 안전하게 보호할 수 있을까? 이게 관심의 초점인 것이다. 그렇기 때문에, 이미 웹 서비스를 제공하고 있는 현장에서는 우선 외부 공격 및 주요 자산 보호를 먼저 진행하고 그 이후에 집의 내부 및 외부를 점검하는 절차가 적절할 것이다.아래 그림과 같이, 울타리를 설치하는 단계에서부터 충분한 보안성을 가진 환경 구축을 시작할 수 있다. 관련 내용을 순서대로 하나하나 짚어 보자.
1. 우선 웹 방화벽 구축을 통해 개발 단계에서 미처 발견하지 못했던 애플리케이션 취약점이 외부에 노출되지 않도록 막아 보호한다.
2. 외부의 침입이나 공격을 막는 조치와 동시에 데이터 암호화를 통한 데이터 보호 조치가 필요하다. 만약 이미 내부에 들어와버린 위협 또는 새로 유입된 위협이 있어서 그 구멍을 통해 데이터가 유출되더라도 암호화 효과를 통해 더 큰 2차 피해를 방지할 수 있다. 이른바 ‘회복력’을 높이자는 뜻이다.
3. 웹 방화벽 구축과 데이터 암호화를 적용하면 외부 침입 방지 조치는 어느 정도 완비가 되었다고 보더라도 일단은 무방하다. 그러니 이젠 혹시 내부에 숨어 있는 침입자가 없는지 확인하고 외벽에 금 간 곳은 없는지 등 취약한 부분을 점검한다. 웹 서버 악성코드 탐지 및 웹 스캐너의 주기적이고 지속적인 관리의 필요.
4. 자, 이제 마지막으로 시큐어 코딩이 남았다. 이번엔 사정 상 이미 완공된 집에 대한 후발 조치를 취할 수 밖에 없었지만, 다음 집을 지을 때는 가능한 한 첫 설계 단계부터 보안을 고려하여 집을 지을 수 있게끔 제대로 된 보안정책을 수립한다. 물론, 설계부터 집이 완공되는 순간까지 모든 경우에 대한 보안성을 철저히 고려했다더라도 늘 새롭게 등장하는 침입에 대해서는 심기일전 새로운 마음으로 대비해야 하므로 울타리와 금고, 집 안팎의 점검 등 일상적 조치는 여전히 필요하다. 앞 편에서 살펴보았듯 울타리는 웹 방화벽, 금고는 데이터 암호화, 내부 점검은 악성코드 탐지, 외부 점검은 웹 취약점 스캐너.
작은 구멍 하나라고 대충 넘어갔다간 곧 큰 댐이 무너지고 그런다. 비일비재 흔히 벌어지는 일이다. 아주 넓은 범위에서 다양한 방법으로 막 벌어지는 공격 시도와 그에 따라 나날이 폭발적으로 늘어나는 피해 규모를 줄이기 위해서는 웹이라는 큰 댐에 작은 구멍 하나도 생기지 않도록 견고한 보안 시스템을 구축하는 수밖에 없다. 제발 좀 웹 보안에 대한 관심과 실질적인 투자가 많이도 안 바라고 딱 상식선에서라도 일어나길, 빈다. 어쩜 이리 허술한지, 불안해서 도저히 못 보겠다,,
지금껏 설명한 웹 보안 도구들을 각각의 계층에 따라 순서대로 한 장의 그림으로 정리해 보자.
짜잔! 이것이 바로 ‘완벽한 웹 보안’이다!
과연 진짜로 완벽한가? 설마 그럴 리가 있겠나,, 끝판에 배신하는 것 같아 굉장히 미안하긴 하나, 세상에 ‘완벽한 보안’ 뭐 그런 건, 없다. 최대한 완벽에 가까워지려는 부단한 노력이 있을 뿐이다. 위 그림은 대략 완벽에 가까운 구조이긴 하다. 하지만 그보다 더 중요한 것은, 관심과 집중 그리고 지속적 관리. 그러고 보면 세상만사 모든 일이 대개 다 그러하지 않던가. 결국 “잘해야” 하는.
오늘날 방화벽이나 IDS/IPS 등 네트워크 보안장치의 성능과 시스템 계층에 대한 취약점 및 공격에 대한 방어는 일정 수준 이상에 도달했다고 볼 수 있다. 그래서 역설적으로 현재 가장 심각한 정보보안 문제는 애플리케이션 계층 보안인 것이다. 환경이 웹이든 아니든.
하지만, 웹 보안에 있어 애플리케이션 보안이 가장 큰 비중을 차지한다는 건 틀림없는 사실이
지만, 이는 기본적으로 네트워크와 시스템 보안의 안정성이 바탕이 되어야만 이룰 수 있는 일이라는 점 역시 간과해서는 안 되고. (쓰면서도 “아니 뭐가 그리 꼭 필요한 것들이 많아?” 싶긴 하다,,)
‘본격 웹-시대’란 말은 그냥 괜히 한 번 해 보는 말이 아니다. 앞에 ‘본격’을 붙인 것도 왠지 멋져 보여서도 아니고 진짜로, 본격 웹-시대, 거듭 강조하는 바,
“보안은 쇠사슬이고, 그 사슬은 가장 약한 고리만큼 약하다.”
여러 보안 요소 중 가장 약한 부분이 해당 조직의 전체 보안 수준을 결정한다는 소리다. 한쪽으로 치우쳐져 있는 불균형한 보안은 굳이 그렇게 해야만 하는 몇몇 특수한 경우를 제외하고는 완전 쓸데없는 헛된 노력에 불과하다. 각 보안 계층에는 각기 나름대로 풀어야 할 보안 문제들이 있고, 보안 문제들 마다 적합한 솔루션들이 존재한다는 것을 한 번 더 되새겨 보자.
쓰고 보니 ‘이건 너무 큰 기업 이야기 아닌가?’란 자기반성 들어서 다음 편은,
“CMS+클라우드 사용자에게, 웹사이트란?”
웹 서버를 직접 운용하지 않는 개인 그리고 소규모 사업자는 웹 보안, 뭘 어떻게 해야 하나? 알아보겠습니다.