PowerShell Remoting은 Windows Server 2012(이후 버전)에서 기본 제공으로 활성화되어 있으며, 많은 IT 조직에서는 이를 잠재적인 보안 위험으로 보기도 하지만, 모범 사례를 따르면 PowerShell은 서버를 관리하는 가장 안전한 방법 중 하나입니다. 이 글에서는 Windows Server 2012 R2를 구성하여 특정 사용자 그룹에서만 원격 PowerShell 연결을 허용하는 방법과 실행할 수 있는 cmdlet을 어떻게 제한하는지 보여드리겠습니다.
제한된 엔드포인트란 무엇인가요?
원격 엔드포인트는 PowerShell Remoting으로 장치에 연결할 수 있는 사용자를 결정하며, 인증이 완료된 후 사용자가 수행할 수 있는 작업도 결정합니다. 기본 PowerShell 엔드포인트는 기본 제공 Administrators 및 Remote Management Users 그룹에 속한 사용자가 원격으로 연결할 수 있게 하며, 해당 장치에서 사용 가능한 모든 cmdlet과 함수를 노출합니다.
좋은 소식은 직접 constrained 엔드포인트를 만들고 사용자가 수행할 수 있는 작업을 제한할 수 있다는 점입니다. 이를 통해 관리 목적으로 PowerShell Remoting을 허용할 때 발생할 수 있는 위험을 최소화할 수 있습니다.
Windows Server 2012 R2에서 제약된 엔드포인트(Constrained Endpoints) 만들기
Windows Server 2012 R2에서 직접 제약된 엔드포인트를 만들어 보겠습니다. 로컬 관리자 권한으로 로그인한 다음, 데스크톱 작업 표시줄에 있는 파란색 PowerShell 아이콘을 클릭하세요.
- 서버에 있는 기존 엔드포인트를 보려면 PowerShell 프롬프트에서
Get-PSSessionConfiguration를 입력하고 ENTER 를 누르세요. - PowerShell 콘솔에서 기본 엔드포인트 4개가 표시되어야 합니다.
제한된 엔드포인트에 연결할 때 사용자가 실행할 수 있는 cmdlet과 함수를 제한하려면 구성 파일을 만들어야 합니다. PowerShell 콘솔에서 아래에 표시된 cmdlet을 입력한 다음 ENTER 를 누르세요. New-PSSessionConfigurationFile 은 PrintAdmin.pssc 라는 새 구성 파일을 만들고, 원격 사용자를 PrintManagement PowerShell 모듈의 일부인 함수로 제한하는 등의 제한 사항을 설정합니다.
New-PSSessionConfigurationFile – Path PrintAdmin.pssc – SessionType RestrictedRemoteServer -LanguageMode NoLanguage – ExecutionPolicy Restricted – ModulesToImport PrintManagement -VisibleFunctions Get-Printer
NoLanguage 은 사용자를 cmdlet과 함수만 실행하도록 제한합니다. 즉, 스크립트 블록, 변수 또는 연산자를 사용할 수 없습니다. –SessionType 값 RestrictedRemoteServer 은 사용자를 다음 프록시 함수로만 제한합니다: Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default, 그리고 Select-Object 입니다. Restricted 값( –ExecutionPolicy 매개변수 )도 스크립트 실행을 방지합니다. 또한, 가져오려는 모듈에 cmdlet이 포함되어 있는 경우 사용할 수 있는 –VisibleCmdlets 매개변수도 있습니다.
이제 구성 파일이 있으니, Helpdesk 라는 새 엔드포인트를 등록할 수 있습니다:
Register-PSSessionConfiguration -Name Helpdesk -Path PrintAdmin.pssc –ShowSecurityDescriptorUI
새 엔드포인트를 구성하려는지, WinRM 서비스를 다시 시작할지, 그리고 해당 엔드포인트에 대한 액세스 권한을 구성할지 확인하라는 메시지가 표시됩니다. 이 예에서는 Helpdesk 라는 그룹에 새 엔드포인트에 대한 ‘Execute (Invoke)’ 권한을 부여하겠습니다. 또한 원격 장치에서 프린터를 관리할 수 있도록 Helpdesk 그룹에 권한을 주는 것도 잊지 마세요. 그렇지 않으면 get-printer 가 실패합니다.
다시 Get-PSSessionConfiguration 를 실행하면, 새 엔드포인트가 목록에 표시되는 것을 확인할 수 있습니다.
제한된 엔드포인트에 연결하기
이제 원격 컴퓨터에서 엔드포인트에 연결합니다. Helpdesk 그룹 또는 엔드포인트에 대해 권한을 할당한 그룹에 속한 사용자로 Windows 8에 로그인하세요. PowerShell 프롬프트를 열고 아래 명령을 실행하되, contososrv1 을 원격 서버의 이름으로 바꿉니다:
Enter-PSSession -ComputerName contososrv1 -ConfigurationName Helpdesk
원격 서버에 연결되면 프롬프트가 이에 맞게 변경되어 원격 장치에서 작업 중임을 나타냅니다. get-command 를 입력하고 ENTER 를 누르세요. 그러면 사용할 수 있는 함수와 cmdlet 목록이 엔드포인트에 의해 제한된 것을 확인할 수 있습니다. 이 예에서는 RestrictedRemoteServer 세션 유형에서 허용된 7개의 프록시 함수와, 엔드포인트 구성 파일에 지정된 get-printer 함수만 남습니다.
공유하기
더 알아보기
저자 소개
Russell Smith
IT 컨설턴트
관리 및 보안 기술을 전문으로 하는 IT 컨설턴트이자 저자입니다. Russell은 IT 분야에서 15년 이상의 경력을 보유하고 있으며, Windows 보안에 관한 책을 집필했고 Microsoft의 Official Academic Course (MOAC) 시리즈를 위한 저술에 공동 저자로 참여했습니다.