1. 웹은 보안에 취약하다? 왜???
우리는 흔히 이런 말을 자주 듣곤 또는 하곤 합니다.
웹은 보안에 취약해!!!
너무나도 일반화 되어 있는 이 말은 역으로 생각해보면 웹이 보안에 취약한 구조를
지녔기에 이런 말이 일반화 되었다고 봐도 될 터입니다.
그럼 도대체 왜 웹은 보안에 취약할까요?
막연히 공개된 포트(80)을 사용하기 때문인가요?
그렇다면 웹이 아닌 다른 통신 응용프로그램이 사용하는 포트(80 이 아닌)는
왜 웹하고 다르나요?
어차피 서비스를 하려면 이 포트도 열려야 하는데..?
그리고 공개된 포트(80)를 통해 어떤 공격을 하나요?
도대체 어떤 형식의 공격이 유독 웹 응용프로그램의 보안성을 취약하게 하나요?
이제부터 이 모든 것을 시원히 답하기 위해 하나하나 짚어 볼 것입니다
우리 개발자들은 웹 응용프로그램을 아주 이쁘게(?) 만드는 기술도 있어야 하겠지만,
보안에 대한 이슈도 정확히 알고 있어야 합니다.
더 이상 간과해서는 안 되는 웹보안!! 지금부터 정복합니다
==========================================================================================
우선 웹의 흐름을 살펴 봅니다.
다들 잘 아시는 것처럼 클라이언트와 웹 서버는 잘 알려진 프로토콜인 HTTP 와
공개된 포트인 80 또는 443(SSL 통신 포트)을 이용해서 통신을 합니다.
위 그림처럼 웹 서버의 앞 단에 방화벽이 있습니다.
이 방화벽에서는 원활한 웹 서비스를 위해 HTTP 프로토콜과 80 포트는 막지
않는 것이 일반적입니다.
바로 이것이 첫 번째 이유가 됩니다. 하나 짚고 넘어 갑시다
웹이 보안에 취약한 이유 1> 방화벽에서 조차 막지 못하는 HTTP 80 포트로 통한
악의적인 공격은 그대로 웹 서버에게 전달 된다.
즉, 허용 또는 오픈 된 포트로의 공격 시도가 문제 입니다
우선 하나 해결 했습니다 ^.^;
그렇다면 과연 80포트로 무엇이 들어오기에 보안에 취약할까요..
이것을 짚고 넘어 가기 전에 방화벽과 같은 침입감시,탐지,제어 시스템에 대해
간략히 알아 봅니다.
아래에는 클라이언트가 서버로 보내는 패킷의 구조를 나타냅니다.
위 그림처럼 클라이언트에서 서버로 전달되는 패킷에는 자신의 IP , Port 및
목적지 IP, Port 그리고 Data 가 포함됩니다.
(이외에도 여러 정보들이 있습니다. TCP 통신관련 서적을 참고 하세요)
자.. 그럼 알려진 침입감시,탐지,제어 시스템으로는 방화벽,IDS,IPS 등의 보안제품이
있는데 이 들은 과연 무얼 탐지 할까요?
위 그림에 빨간 직선으로 표시된 것처럼 이들은 일반적으로 소스 IP,Port, 그리고
목적지 IP,Port 에 대한 탐지 및 제어를 합니다.
즉, 방화벽과 IDS, IPS 등의 보안 제품은 주로 네트워크 계층에서의 감시,방어를
수행하는 것입니다. 즉 Data 부분은 보지 않는다는 것입니다.
단, 이들 보안 제품에서 위 패킷 중 Data 를 감지 하도록 할 수도 있긴 합니다.
방화벽의 경우 Data를 보게 하기 위해 프로토콜 별로 Application Gateway 를
따로 붙이면 됩니다. (ex: HTTP – TCP 80 , FTP – TCP 25 등)
그러나 여기에도 한계는 있습니다.
Application Gateway가 설정되었더라 해도 Data 를 검사할 때 바이러스 코드, 웜과 같은
유해 코드들만 감지하고 차단 시킵니다.
(각 장비들은 자신만의 유해 트래픽 DB 를 가지고 있습니다)
즉, 이런 유해 코드가 아닌 정상적인 값들은 탐지 하지 않는다는 것입니다.
웹으로 전달되는 웹 용 악성 코드(?)는 일반적인 바이러스나 웜과 같은 유해 코드가
절대로 아닙니다. 이들 보안 장비에서 판단하기에는 웹 용 악성코드는 지극히
정상적인 값으로 인식합니다.
(참고 : 일부 IPS 제품은 웹 방화벽 역할을 하는 것도 있습니다 – 판매회사에 문의 하세요^^)
잘 알려진 SQL 인젝션이나 쿠키변조, XSS 등의 대표 웹 공격패턴에 실려 오는
데이터는 유해코드도 아니며 잘못된 값도 아닙니다.
여기서 또 하나 짚고 넘어 갑시다.
웹이 보안에 취약한 이유 2> 방화벽 , IDS, IPS 와 같은 보안 장비를 이용한 네트워크
계층에서의 보안으로는 어플리케이션 계층에 대한 공격을 차단할 수 없다.
아래 그림은 지금까지 설명한 내용을 도식화 한 것입니다.
결론적으로 말하자면 웹 환경은 오픈 된 프로토콜과 포트상에서 통신이 이루어 지며
네트워크계층의 보안으로는 웹 응용프로그램 영역의 공격에는 의미가 없다는 것입니다.
그렇다면 과연 네트워크 보안 장비가 정상이라고 판단하는 Data 중 어떤 Data 가
웹 공격용 Data 로 사용되는 것일까요??
이 것을 알면 웹이 보안에 취약한 정확한 이유를 알 수 있을 것입니다.
[웹 보안 시리즈] 1~7 출처 : http://www.mkex.pe.kr