IUSR Builtin 계정과 익명 인증...

image

인증(Authentication)과 허가(Authorization)이 무엇인가요? 라는 질문을 받으시면 어떻게 답변하시겠습니까?

  • 인증 - 내가 누구인지를 확인하는 것... WHO AM I?
  • 허가 - 내가 가진 권한(Permission, Right)에 따라 어떤 작업의 할 수 있음, 없음이 결정되는 것

그렇다면, 한글에선 둘다 권한이라고 부르는 Right, Permission의 차이는 무엇일까요?

  • Right - 무엇인가를 어떻게 할 수 있는가? 예를 들어, 문을 열수 있음/없음, 컴퓨터를 키고 끌 수 있음/없음 - 결국 어떠한 행동에 관련된 것
  • Permission - 무엇인가를 어떻게 이용할 수 있는가? 예를 들어, 파일을 읽고, 쓸 수 있음/없음, 실행할 수 있음/없음 - 결국 어떠한 것에 대한 이용 형태에 관련된 것

오히려 한글로 쓰려니 조금 어려울 수 있겠네요. 오늘은 조금 보안에 대한 기술적인 이야기를 써보려고 합니다. 바로 인터넷 정보 서비스(IIS)에 대한 형태입니다.

웹 서버를 운영하시다보면, 위의 그림과 같은 인증창이 나타나는 경우를 많이 보실 수 있습니다. 인증 창이 나타난다는 것은 당신이 누구인지를 알려주고, 어떻게 이용할 수 있는지 판단하겠다는 의미입니다. 다시 말해, 현재 보안 권한 상으로는 이용할 수 없다라고 볼 수 있죠. 자신이 누구인지 인증을 받고, 이에 대한 허가를 받게 되면 해당 리소스를 이용할 수 있습니다.

IIS도 사용자가 접근할 때 인증을 하게 됩니다. 여기서 조금 난해하다고 보실 수 있는 것이 바로 익명(Anonymous) 인증이 이에 해당됩니다. 익명 인증은 그럼 인증을 안받고 들어오는 것일까요? 인증을 받지 않고 들어오니까 익명이라고 하지 않느냐?라고 반문하신다면, 아래의 내용을 살펴보시면 좋으실 것 같습니다.

IIS는 여러 형태의 인증 방식을 지원합니다. 익명 인증, 기본 인증, Windows 통합 인증등이 여기에 해당되죠.

image image

만약 해당 사이트가 익명 인증만 지원하도록 익명 액세스 가능만 체크되어져 있었다면, 바로 위 오른쪽 그림과 같이 페이지를 볼 권한이 없습니다라는 에러가 나타나게 됩니다. 그렇지만, 해당 사이트가 Windows 통합 인증도 지원하도록 되어져 있었기 때문에, 익명 인증이 권한이 없으니, Windows 통합 인증을 시도한 것입니다.

익명 액세스 가능이라는 체크박스 밑에 사용자 이름/암호가 입력되어져 있습니다. 이 부분이 상당히 중요합니다. 익명으로 접근하는 사용자의 경우, IIS가 IUSR_(컴퓨터이름)의 계정으로 다 대 1 맵핑을 하게 되고, 익명으로 접근한 사용자는 Windows의 입장에서는 모두 IUSR_(컴퓨터이름)으로 인증을 받은 것입니다. 그렇다면, 자연스럽게 IUSR_(컴퓨터이름)에 부여되어진 권한을 따라 서비스를 하게 되겠죠. 다시 말해, test.asp라는 파일이 IUSR_(컴퓨터이름)의 계정에게 읽기 거부를 해놓았다면 해당 익명 사용자는 test.asp를 서비스받을 수 없게 됩니다. 이런 후, IIS 인증 설정 상태에 따라, 인증 창이 뜨냐? 아님 바로 권한이 없다는 에러가 나느냐로 나누어집니다.

image

오늘 포스팅에서 가장 중요한 질문을 하나 던져보도록 하겠습니다. 해당 test.asp라는 파일은 다음과 같은 권한(Permission)이 부여되어져 있었습니다. 이는 IIS의 기본 설치 권한이기도 합니다.

인터넷 게스트 계정(IUSR_컴퓨터이름) - 쓰기 거부
Administrators, System - 모든 권한
IIS_WPG, Users - 읽기, 읽기 및 실행

이 경우, 익명의 사용자가 접근을 하게 되면, test.asp라는 파일에 대해 권한을 가지고 있을까요? 없을까요? (물론 나머지 Windows 설정은 모두 기본 값 그대로라고 보겠습니다.)

정답은 익명의 사용자가 인증을 받을 수 있습니다.

그렇다면, 반문을 하실 수 있겠죠. IUSR_(컴퓨터이름)이라는 계정은 쓰기 거부만 되어져 있는데, 어떻게 읽기를 받았고, 서비스를 받을 수 있느냐? IIS에는 조금 예외가 있는거 아니냐라는... Windows의 보안에는 구성 요소별로 예외가 절대 없습니다. 어떠한 사용자나 어떠한 서비스나, 어떠한 프로그램도 모두 인증과 허가 시스템을 통과해야 하며, IUSR_(컴퓨터이름)인 익명 인증 사용자도 어떠한 형태로 인증과 허가를 받았다는 것입니다. 일단 인증은 IIS 설정에서 익명 액세스시 IUSR_(컴퓨터이름)으로 맵핑해서 받게 되고, 이제 허가를 어떻게 받았냐라는 것입니다.

생각해보실 수 있는 것이 바로, USERS or IIS_WPG입니다. IIS_WPG는 IIS의 작업 프로세스에 대한 권한이므로, 사용자의 인증과는 무관합니다. 그렇다면 USERS가 고민 거리로 올라옵니다. 다시 질문을 드려볼까요?

IUSR_(컴퓨터이름) 계정이 Windows 기본 설치 후, USERS 그룹에 포함이 되나요?

정답은 됩니다. 그렇다면 어떻게 되느냐? 라는 것을 살펴보겠습니다. 비슷한 질문이 IIS.NET에도 포스팅된 적이 있더군요.

Windows에서 인증된 모든 사용자를 총칭하는 특별한 그룹이 있습니다. 바로 Authenticated Users라는 그룹입니다. Everyone에는 널 인증이 포함되기 때문에, 보안 관계상 Everyone 그룹을 쓰지말고 Authenticated Users를 사용하라는 권장이 있었죠. 기억나실 거라 생각합니다. IIS에서 익명으로 인증을 받은 모든 사용자는 IUSR_(컴퓨터이름)이라는 계정으로 인증을 받게 되고, 이 계정은 자연스럽게 Authenticated Users 특별 그룹에 포함되게 됩니다. 그리고 USERS라는 그룹안에는 기본적으로 Authenticated Users, Interactive 특별 그룹이 포함되어져 있습니다. 그렇기 때문에, 결국 해당 Test.asp 파일에 대해서 익명 사용자도 허가를 받게 되어 서비스를 받을 수 있게 됩니다.

image

만약 관리자가 Users 그룹에서 Authenticated Users를 제거하시게 되면, IUSR_(컴퓨터이름) 계정은 Users 권한을 가지지 못하게 되고, 권한이 없기 때문에, Test.asp 파일 접근시, 권한 없음 or 인증 창이 뜨게 되는 것이죠.

IIS의 경우에는 보안 토큰에 대해서 캐쉬를 하게 됩니다. 그러므로, 보안 그룹이 변경되었을 때는, 이러한 캐시를 없애기 위해서, IISReset을 해주셔야 합니다.

IIS뿐만 아니라, 보안에 대한 여러 생각을 하게 될 때는 인증과 허가를 꼭 고민해보셔야 하며, 이러한 인증과 허가에서 제일 중요한 것은 가장 기본적인 내용 - 계정, 그룹, 권한이지 않을까 싶습니다. 다음 번에 기회가 되면 Permission에 대해서도 한번 포스팅을 해보죠. 먼저 공부하시고 싶으신 분들께서는 https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032331389&EventCategory=2&culture=ko-KR&CountryCode=KR에 있는 웹캐스트를 들어보시길 강추합니다!