호스팅 메모리 사용 관점에서 본 닷넷과 윈도우 호스팅의 차이점
페이지 정보
본문
메모리 사용 관점에서 본 닷넷과 윈도우 호스팅의 차이점.
닷넷과 함께 소개된 Windows 2003 서버의 특징 중 한가지는 개별 호스팅(사이트) 별로 응용프로그램 풀을 사용함으로 기존 Windows 2000의 응용 프로그램 모델과 비교해 안정성과 보안상의 강점을 가지고 있습니다.
하지만 이런 장점을 유지하기 위해서는 호스팅(사이트) 별로 응용프로그램 풀을 할당해야 하는데 이때 여러 사이트가 공유해서 하나의 응용프로그램 풀을 사용하는 것에 비해 대략 3배 이상의 메모리를 사용합니다. 다시 말해 한 웹 서버에서 각각의 사이트 별로 응용프로그램 풀을 할당한 경우 전체 사이트가 하나의 응용프로그램 풀을 공유해서 사용하는 경우에 비해 약 3분의 1정도의 사이트만 호스팅 할 수 있게 됩니다.
따라서 현실적으로 모든 사이트에 별도의 독립적인 응용프로그램 풀을 할당할 수는 없기 때문에 일반적으로 적당한 수의 응용프로그램 풀을 적당한 수의 사이트들이 공유해 사용합니다. 이렇게 일부 사이트를 공유해서 응용프로그램 풀을 할당한다고 하더라도, 이전 Windows 2000 의 웹 서비스보다는 훨씬 안정적인 웹 서비스가 가능합니다.
하지만 이렇게 응용프로그램 풀을 여러 사이트가 공유하는 방법은 윈도우 호스팅의 경우에는 별 문제가 없지만, 닷넷 호스팅의 경우에는 보안상의 심각한 취약성을 가지게 됩니다.
응용프로그램 풀을 공유하기 위해서는 해당 풀의 실행 권한을 네트워크서비스 권한으로 설정을 해 주어야 합니다. 각 사이트는 각 사용자 권한으로 동작하기 때문에 기본적으로 보안상의 문제가 될 것이 없지만, 닷넷 호스팅 환경에서는 웹 페이지와는 별도의 쓰레드를 생성할 수 있는데 이 쓰레드는 응용프로그램 풀의 실행 권한으로 동작하게 됩니다. 즉, 쓰레드는 해당 서버의 모든 자원을 네트워크서비스의 권한으로 이용할 수 있게 됩니다.
악의적인 목적을 가진 사용자라면 이 쓰레드를 이용해 서버내의 다른 고객들의 홈페이지 소스를 전부 열어 보는 것이 가능해 지는 것입니다.
따라서 이러한 문제를 막기 위해서는 응용프로그램 풀에 사용자 권한까지 밖에 줄 수 없고, 어플리케이션이 사용자 권한을 가지고는 여러 사이트의 공유가 불가능 하기 때문에 각 사이트별로 응용프로그램 풀을 할당해 줘야만 하는 것입니다.
이러한 보안상의 문제는 안정성의 문제와 달리 비용이 더 들더라도 타협의 여지가 없기 때문에 닷넷 호스팅의 경우 윈도우 호스팅에 비해 대략 3배 정도의 메모리를 사용하게 됩니다.
현재까지 저희가 확인한 바로는 웹 사이트에서 응용프로그램 풀 권한으로 쓰레드를 실행할 수 있는 것은 IIS의 보안상 취약점이 아니고 원래 그렇게 동작할 수 있도록 의도적으로 설계된 기능입니다. 추후 버전의 윈도우 서버에서 IIS 동작 방식이 바뀌게 된다면 다시 공지하도록 하겠습니다.
닷넷과 함께 소개된 Windows 2003 서버의 특징 중 한가지는 개별 호스팅(사이트) 별로 응용프로그램 풀을 사용함으로 기존 Windows 2000의 응용 프로그램 모델과 비교해 안정성과 보안상의 강점을 가지고 있습니다.
하지만 이런 장점을 유지하기 위해서는 호스팅(사이트) 별로 응용프로그램 풀을 할당해야 하는데 이때 여러 사이트가 공유해서 하나의 응용프로그램 풀을 사용하는 것에 비해 대략 3배 이상의 메모리를 사용합니다. 다시 말해 한 웹 서버에서 각각의 사이트 별로 응용프로그램 풀을 할당한 경우 전체 사이트가 하나의 응용프로그램 풀을 공유해서 사용하는 경우에 비해 약 3분의 1정도의 사이트만 호스팅 할 수 있게 됩니다.
따라서 현실적으로 모든 사이트에 별도의 독립적인 응용프로그램 풀을 할당할 수는 없기 때문에 일반적으로 적당한 수의 응용프로그램 풀을 적당한 수의 사이트들이 공유해 사용합니다. 이렇게 일부 사이트를 공유해서 응용프로그램 풀을 할당한다고 하더라도, 이전 Windows 2000 의 웹 서비스보다는 훨씬 안정적인 웹 서비스가 가능합니다.
하지만 이렇게 응용프로그램 풀을 여러 사이트가 공유하는 방법은 윈도우 호스팅의 경우에는 별 문제가 없지만, 닷넷 호스팅의 경우에는 보안상의 심각한 취약성을 가지게 됩니다.
응용프로그램 풀을 공유하기 위해서는 해당 풀의 실행 권한을 네트워크서비스 권한으로 설정을 해 주어야 합니다. 각 사이트는 각 사용자 권한으로 동작하기 때문에 기본적으로 보안상의 문제가 될 것이 없지만, 닷넷 호스팅 환경에서는 웹 페이지와는 별도의 쓰레드를 생성할 수 있는데 이 쓰레드는 응용프로그램 풀의 실행 권한으로 동작하게 됩니다. 즉, 쓰레드는 해당 서버의 모든 자원을 네트워크서비스의 권한으로 이용할 수 있게 됩니다.
악의적인 목적을 가진 사용자라면 이 쓰레드를 이용해 서버내의 다른 고객들의 홈페이지 소스를 전부 열어 보는 것이 가능해 지는 것입니다.
따라서 이러한 문제를 막기 위해서는 응용프로그램 풀에 사용자 권한까지 밖에 줄 수 없고, 어플리케이션이 사용자 권한을 가지고는 여러 사이트의 공유가 불가능 하기 때문에 각 사이트별로 응용프로그램 풀을 할당해 줘야만 하는 것입니다.
이러한 보안상의 문제는 안정성의 문제와 달리 비용이 더 들더라도 타협의 여지가 없기 때문에 닷넷 호스팅의 경우 윈도우 호스팅에 비해 대략 3배 정도의 메모리를 사용하게 됩니다.
현재까지 저희가 확인한 바로는 웹 사이트에서 응용프로그램 풀 권한으로 쓰레드를 실행할 수 있는 것은 IIS의 보안상 취약점이 아니고 원래 그렇게 동작할 수 있도록 의도적으로 설계된 기능입니다. 추후 버전의 윈도우 서버에서 IIS 동작 방식이 바뀌게 된다면 다시 공지하도록 하겠습니다.
댓글목록
등록된 댓글이 없습니다.