보안

1. 웹은 보안에 취약하다? 왜???

적외선 2010. 11. 23. 18:57

우리는 흔히 이런 말을 자주 듣곤 또는 하곤 합니다.

 

웹은 보안에 취약해!!!

 

너무나도 일반화 되어 있는 이 말은 역으로 생각해보면 웹이 보안에 취약한 구조를

지녔기에 이런 말이 일반화 되었다고 봐도 될 터입니다.

 

그럼 도대체 왜 웹은 보안에 취약할까요?

 

막연히 공개된 포트(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