티스토리 뷰
여러분은 언론을 통해서 어떤 회사의 홈페이지가 공격을 당해 개인정보가 유출됐다는 뉴스를 한 번쯤은 접해 보셨을 겁니다. 그만큼 오늘날 가장 많은 형태의 공격 이슈가 불거지고 있는 분야가 바로 웹서버입니다. 웹서버는 보통 회사의 브랜드 광고나 고객과의 커뮤니케이션을 위해 만들어집니다. 그래서 추정이 불가능한 모든 연령대의 익명의 사용자가 이용할 수 있도록 구축됩니다. 즉 누구에게나 열려있는 서비스를 목적으로 웹 서버가 운영된다는 거죠. 그런데 이 말은 공격자에게도 열려있다고도 해석할 수 있습니다. 웹서버가 공격자에게 있어서 더할 나위 없이 좋은 공격 타깃이 되고 있는 이윱니다. 더군다나 최근에는 간단한 검색만으로도 웹 공격을 보다 쉽게 해주는 도구들을 손에 넣을 수 있는데요. 해킹과 관련된 기본적인 지식이 없어도 검색 몇 번 만으로도 공격을 간단히 수행할 수 있게 됐습니다. 그렇기에 웹서버 공격에 대한 이해는 그 어느 때보다도 중요한 화두가 되고 있는데요. 그래서 이번 포스팅에는 다양한 웹서버 공격 형태와 이런 공격으로부터 웹서버를 지킬 수 있는 방법에 대해 알아보도록 하겠습니다.
웹서버에서 목격되는 가장 빈번한 공격은 정보유출입니다. 공격자들은 웹서버에서 어떻게 정보를 유출시키는 걸까요? 회원정보 유출 프로세스를 예로 들어 보겠습니다. 웹에서 다루는 여러 정보들 중 회사는 고객 정보를 획득하기 위해 회원 가입이라는 절차를 진행하는데요. 이를 통해 모여진 정보들은 데이터베이스, DB라고 하는 또 다른 서버에 저장되고 관리됩니다. 결국 웹과 DB는 정보관리 측면에서 밀접하게 연관돼 구축되는 셈입니다. 여기서 공격자는 주요 정보가 보관되어 있는 DB를 공격하기 위해 다양한 방법을 모색하게 되는데요. 주로 회원 정보 페이지에서 비정상적인 정보를 입력해 DB로부터 정보를 빼내는 방법이 사용됩니다. 예컨대, 사용자가 아이디와 비밀번호를 입력하는 칸에 제대로 된 로그인 정보를 전송하게 되면요. 이 정보가 DB에 있는지 검색하게 되고, 해당 정보가 DB에 있다면 로그인이 되는 식인데. 이 입력 칸에 DB에 접근할 수 있는 컴퓨터 언어를 입력해 로그인을 성공시킨 후 DB정보들을 추출하는 겁니다. 이를 SQL인젝션이라고 부르는데요. 만일, 회원 정보가 포함되어 있는 정보들이 추출된다면, 뉴스에서 많이 접했던 계정 정보, 개인 정보 등의 유출이 일어나는 거죠.
웹서버에서 자주 보이는 또 다른 형태의 공격으로 서버 탈취를 꼽을 수 있습니다. 즉, 게시판 등에서 파일을 업로드하는 기능을 악용해 웹쉘이라고 불리는 비정상적인 파일을 업로드하고 이를 웹 서버에서 실행시키는 건데요. 웹쉘이 웹서버에 업로드되면 여기서 게재되는 다양한 정보들을 탈취하거나 변경시킬 수 있고, 방문하는 고객들에게 피해를 입힐 수도 있습니다. 결국 서버 구축과 지원에 드는 비용은 고스란히 회사의 몫이면서, 실제 서버 운영자는 공격자가 되어버리는 아이러니한 상황이 펼쳐지는 겁니다. 이렇듯 웹서버를 위협하는 다양한 공격 시도를 방어하려면 어떻게 해야 할까요? 우선 웹을 이용하는 사용자에 대한 신뢰부터 무너뜨려야 합니다. 모든 이용자는 잠재된 공격자라는 가정부터 시작하는 겁니다. 그리고 사용자가 입력하는 모든 정보에 대해서도 신뢰하지 않아야 하는데요. 즉 사용자가 회사가 원하는 형태의 정보를 기입하고 전송하는지 여부를 일일이 판별하여 검열하고, 유효화할 수 있는 정보들만 취할 수 있는 기반을 마련해야 한다는 뜻입니다. 이를 위해서는 무엇보다 웹 서버의 개발 단계서부터 보안을 고려한 형태로 구축되도록 인력, 시간, 비용이 충분히 투자되어야 합니다. 다만 웹 서비스의 특성상, 회사의 목표에 따라 웹 서버를 새롭게 구축할 필요가 있기도 하고, 때로는 대대적으로 수정해야 하는 경우도 생길 수 있는데요. 이럴 때마다 보안을 고려해 인력, 시간, 비용을 충분히 투자하기란 현실적으로 쉽지 않습니다. 이럴 경우, 웹 보안과 연계된 보안 설루션에 투자하는 것도 방법입니다. 예컨대 웹 방화벽과 같은, 웹에 특화된 보안 장비를 도입하는 거죠. 웹 방화벽은 홈페이지 같은 웹서버 앞단에 설치하는데요. 웹서버로 들어오는 다양한 데이터를 분석해 비정상적인 패턴이나 공격을 걸러내 웹 서버를 보호하는 역할을 합니다. 완벽한 보안을 이루기 위해서는 주기적으로 보안 정책에 대해 감사를 해야 합니다. 지속적으로 웹 위협으로부터 방어가 잘 되고 있는지 확인해 봐야 하는 것이죠. 이를 위해 정기적으로 실제 최신의 공격 기술을 바탕으로 모의 공격을 수행하고, 보안 실패 요소를 찾는 것이 무엇보다 중요합니다. 그와 동시에 발견된 문제점의 해결책을 모색하고 개선해 나가야 할 겁니다. 읽어주셔서 감사합니다.