본문 바로가기
정보보호 (Security)

방화벽에 사용할 RPC 동적 포트 할당을 구성하는 방법

by 날으는물고기 2009. 4. 29.

방화벽에 사용할 RPC 동적 포트 할당을 구성하는 방법

RPC(원격 프로시저 호출) 동적 포트 할당은 DHCP(동적 호스트 구성 프로토콜) 관리자, Windows WINS(인터넷 이름 서비스) 관리자 등 원격 관리 응용 프로그램에서 사용합니다. RPC 동적 포트 할당은 RPC 프로그램에 1024보다 큰 특정 임의 포트를 사용하도록 지시합니다.

방화벽을 사용하는 고객은 TCP(전송 제어 프로토콜) 포트만 전달하게 방화벽 라우터를 구성할 수 있도록 RPC가 사용하는 포트를 제어할 수 있습니다.

다음 레지스트리 항목은 Windows NT 4.0 이상에만 적용되고 이전 버전의 Windows NT에는 적용되지 않습니다. 서버와 통신하기 위해 클라이언트가 사용하는 포트를 구성할 수 있지만 클라이언트는 실제 IP 주소로 서버에 연결할 수 있어야 합니다. 클라이언트가 방화벽에서 서버의 실제 주소인 192.100.81.101에 투명하게 매핑하는 가상 주소 198.252.145.1에 연결하는 경우와 같이 주소 변환을 수행하는 방화벽을 통해서는 DCOM을 사용할 수 없습니다. 그 이유는 DCOM이 인터페이스 마샬링 패킷에 원시 IP 주소를 저장하며 클라이언트가 패킷에 지정된 주소에 연결할 수 없는 경우 동작하지 않기 때문입니다.

자세한 내용은 Microsoft 백서 방화벽에 DCOM 사용을 참조하십시오. 이 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://uk.builder.com/whitepapers/0,39026692,60016023p-39000882q,00.htm (http://uk.builder.com/whitepapers/0,39026692,60016023p-39000882q,00.htm) (영문)


아래에서 설명하는 값(및 인터넷 키)은 레지스트리에 나타나지 않으며 레지스트리 편집기를 사용하여 수동으로 추가해야 합니다. 또한 Regedit.exe 대신 Regedt32.exe를 사용하여 REG_MULTI_SZ 값을 추가해야 합니다.

경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하는 경우 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 문제에 대해 해결을 보증하지 않습니다. 레지스트리의 수정에 따른 모든 책임은 사용자에게 있습니다.

레지스트리 편집기를 사용하여 RPC에 대한 다음 매개 변수를 수정할 수 있습니다. 아래에서 설명하는 RPC 포트 키 값은 모두 레지스트리의 다음 키에 있습니다.

HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\ Key Data Type

Ports REG_MULTI_SZ
인터넷에서 사용할 수 있는 모든 포트 또는 인터넷에서 사용할 수 없는 모든 포트로 구성되는 IP 포트 범위의 집합을 지정합니다. 각 문자열은 단일 포트 또는 포트 집합을 나타냅니다. 예를 들어, 단일 포트는 5984로 나타낼 수 있으며 포트 집합은 5000-5100으로 나타낼 수 있습니다. 항목이 0-65535 범위 밖에 있거나 문자열을 해석할 수 없는 경우 RPC 런타임은 전체 구성을 잘못된 것으로 취급합니다.
PortsInternetAvailable REG_SZ Y 또는 N(대/소문자 구분 없음)
Y인 경우 포트 키에 나열된 포트는 모두 해당 컴퓨터에서 인터넷에 사용할 수 있는 포트입니다. N인 경우 포트 키에 나열된 포트는 모두 인터넷에 사용할 수 없는 포트입니다.
UseInternetPorts REG_SZ Y 또는 N(대/소문자 구분 없음)
시스템 기본 정책을 지정합니다.
Y인 경우 기본값을 사용하는 프로세스에는 앞에서 정의된 대로 인터넷에 사용할 수 있는 포트 집합의 포트가 할당됩니다.
N인 경우 기본값을 사용하는 프로세스에는 인트라넷 전용 포트 집합의 포트가 할당됩니다.
예:
  1. 다음 키 아래에 인터넷 키를 추가합니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
  2. 인터넷 키 아래에 값 "Ports" (MULTI_SZ), "PortsInternetAvailable" (REG_SZ) 및 "UseInternetPorts" (REG_SZ)를 추가합니다.

    이 예제에서 포트 5000-5100은 새 레지스트리 키를 구성하는 방법을 보여주기 위해 임의로 선택되었습니다. 예를 들어, 새 레지스트리 키는 다음과 같이 나타납니다.
    Ports: REG_MULTI_SZ: 5000-5100
    PortsInternetAvailable: REG_SZ: Y
    UseInternetPorts: REG_SZ: Y
  3. 서버를 다시 시작합니다. RPC 동적 포트 할당을 사용하는 모든 응용 프로그램은 포트 5000-5100을 사용합니다. 대부분의 환경에서 여러 시스템 서비스가 이러한 RPC 포트를 사용하여 서로 통신하기 때문에 포트를 최소한 100개 열어야 합니다.
포트 5000 이상의 포트 범위를 열어야 합니다. 5000 아래의 포트 번호는 다른 응용 프로그램에서 이미 사용 중일 수 있으며 DCOM 응용 프로그램과 충돌을 일으킬 수 있습니다. 또한 이전 환경에서는 여러 시스템 서비스가 이러한 RPC 포트를 사용하여 서로 통신하기 때문에 포트를 최소한 100개 열어야 한다는 것을 보여 줍니다.

참고 최소 포트 수는 컴퓨터마다 다를 수 있으며 컴퓨터 구성에 따라 다릅니다.


자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
167128  (http://support.microsoft.com/kb/167128/ ) SMS: 원격 헬프데스크 기능에서 사용하는 네트워크 포트
179442  (http://support.microsoft.com/kb/179442/ ) 도메인 및 트러스트를 위한 방화벽을 구성하는 방법
263293  (http://support.microsoft.com/kb/263293/ ) Windows 2000 NAT가 Netlogon 트래픽을 변환하지 않는다
172227  (http://support.microsoft.com/kb/172227/ ) 네트워크 주소 변환(NAT)이 Netlogon 트래픽을 차단할 수 있다
319553  (http://support.microsoft.com/kb/319553/ ) 특정 정적 포트로 FRS 복제 트래픽을 제한하는 방법
224196  (http://support.microsoft.com/kb/224196/ ) 특정 포트로 Active Directory 복제 트래픽 및 클라이언트 RPC 트래픽 제한
Windows Server 2003을 사용하는 경우 Windows Server 2003 Resource Kit의 RPC 구성 도구(RPCCfg.exe)로 이 문서에서 설명하는 프로세스를 수행할 수 있습니다. RPC 구성 도구를 구하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://www.microsoft.com/downloads/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=en) (영문)


RPC에서 특정 포트를 사용하도록 구성하는 방법과 IPsec을 사용하여 이러한 포트를 보호하는 방법


RPC 포트를 재할당하고 포트 수를 줄이고 액세스를 제한하려면 여러 가지 구성 작업을 수행해야 합니다.

먼저 방화벽이나 IPsec 정책을 사용하여 쉽게 차단할 수 있도록 RPC 동적 포트 범위를 관리가 용이한 보다 작은 범위로 제한해야 합니다. 기본적으로 RPC는 수신할 포트를 지정하지 않은 종점에 대해 1024 ~ 5000 범위의 포트를 동적으로 할당합니다.

참고 이 문서에서는 5001~5021의 포트 범위를 사용하여 임시 포트가 소모되지 않도록 하고 RPC 종점에서 사용할 수 있는 포트 수를 3,976개에서 20개로 줄입니다.

그런 다음 이 포트 범위에 대한 액세스를 제한하기 위한 IPsec 정책을 만들어 네트워크의 모든 호스트에 대한 액세스를 거부해야 합니다.

마지막으로 IPsec 정책을 업데이트하여 차단된 RPC 포트에 대한 액세스 권한을 특정 IP 주소나 네트워크 서브넷에 부여하고 다른 모든 IP 주소나 네트워크 서브넷은 제외시킬 수 있습니다.

RPC 동적 포트 범위를 다시 구성하는 작업을 시작하려면 RPC Configuration Tool(RPCCfg.exe)을 다운로드한 다음 이를 다시 구성할 워크스테이션이나 서버에 복사합니다. 이렇게 하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://www.microsoft.com/downloads/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=en) (영문)
IPsec 정책을 만드는 후속 작업을 수행하려면 인터넷 프로토콜 보안 정책 도구(Ipsecpol.exe)를 다운로드한 다음 이를 다시 구성할 워크스테이션이나 서버에 복사합니다. 이렇게 하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7D40460C-A069-412E-A015-A2AB904B7361 (http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7D40460C-A069-412E-A015-A2AB904B7361) (영문)
참고 Microsoft Windows XP 이상 버전의 Windows 운영 체제에서 사용할 IPsec 정책을 만들려면 Ipseccmd.exe를 사용하십시오. Ipseccmd.exe는 Windows XP 지원 도구 중 하나입니다. IPseccmd.exe의 구문 및 사용법은 Ipsecpol.exe의 구문 및 사용법과 동일합니다. Windows XP 지원 도구에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
838079  (http://support.microsoft.com/kb/838079/ ) Windows XP 서비스 팩 2 지원 도구

RPCCfg.exe를 사용하여 RPC 동적 포트 범위 재할당 및 줄이기

RPCCfg.exe를 사용하여 RPC 동적 포트 범위를 재할당하고 줄이려면 다음과 같이 하십시오.
  1. RPCCfg.exe를 구성할 서버에 복사합니다.
  2. 명령 프롬프트에서 rpccfg.exe -pe 5001-5021 -d 0을 입력합니다.
    참고 이 범위의 포트는 다른 응용 프로그램용으로는 거의 할당되지 않으므로 RPC 종점에 이 포트 범위를 사용하는 것이 좋습니다. 기본적으로 RPC에서는 종점에 포트를 할당할 때 1024부터 5000까지의 포트 범위를 사용합니다. 그러나 이 범위의 포트는 Windows 운영 체제에서 Windows 소켓 응용 프로그램에도 동적으로 할당되므로 원격 시스템으로 나가는 호출이 많은 터미널 서버와 중간 계층 서버와 같이 사용량이 많은 서버에서는 소모될 수 있습니다.

    예를 들어, Internet Explorer는 웹 서버의 포트 80에 연결할 때 해당 서버로부터의 응답을 1024-5000 범위의 포트에서 수신 대기합니다. 다른 원격 서버로 호출을 내보내는 중간 계층 COM 서버에서도 이 범위의 포트를 사용하여 해당 호출에 대해 들어오는 회신을 받습니다. RPC가 종점에 사용하는 포트 범위를 5001 포트 범위로 이동하면 다른 응용 프로그램에서 이러한 포트를 사용할 가능성을 줄일 수 있습니다.
    Windows 운영 체제에서 임시 포트를 사용하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

IPsec 또는 방화벽 정책을 사용하여 영향을 받는 호스트의 취약한 포트에 대한 액세스 차단

RPC 동적 포트 범위를 제한하는 단계를 수행하면 사용할 수 있는 새 RPC 동적 포트 범위는 5001-5021이 됩니다. IPsec 또는 방화벽 정책을 통해 TCP 135를 차단해야 합니다. 또한 외곽 또는 호스트에서 이 포트 범위를 차단하거나 필터링해야 합니다. 이 포트 범위를 IPsec 정책으로도 필터링해야 합니다.
다음 절의 명령에서 백분율 기호(%) 사이에 있는 텍스트는 IPsec 정책을 만드는 사용자가 입력해야 하는 명령 텍스트를 나타냅니다. 예를 들어, "%IPSECTOOL%" 텍스트가 나타나면 IPsec 정책을 만드는 사용자는 해당 텍스트를 다음과 같이 대체해야 합니다.
  • Windows 2000의 경우 "%IPSECTOOL%"를 "ipsecpol.exe"로 대체합니다.
  • Windows XP 이상 버전의 Windows의 경우 "%IPSECTOOL%"를 "ipseccmd.exe"로 대체합니다.
IPsec을 사용하여 포트를 차단하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
813878  (http://support.microsoft.com/kb/813878/ ) IPSec을 사용하여 특정 네트워크 프로토콜 및 포트를 차단하는 방법

모든 IP 주소의 RPC 종점 매퍼에 대한 액세스 차단

모든 IP 주소의 RPC 동적 포트 범위에 대한 액세스를 차단하려면 다음 구문을 사용합니다.

참고 Windows XP 이상의 운영 체제에서는 Ipseccmd.exe를 사용하고, Windows 2000에서는 Ipsecpol.exe를 사용합니다.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
참고 이 명령에 "%IPSECTOOL%"를 입력하지 마십시오. "%IPSECTOOL%"는 사용자 지정해야 하는 명령 부분을 나타내기 위한 것입니다. 예를 들어, Windows 2000의 경우 TCP 135로 들어오는 모든 액세스를 차단하려면 Ipsecpol.exe가 들어 있는 디렉터리에서 다음 명령을 입력하십시오.
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
Windows XP 이상의 운영 체제의 경우 TCP 135로 들어오는 모든 액세스를 차단하려면 Ipseccmd.exe가 들어 있는 디렉터리에서 다음 명령을 입력하십시오.
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK

모든 IP 주소의 RPC 동적 포트 범위에 대한 액세스 차단

모든 IP 주소의 RPC 동적 포트 범위에 대한 액세스를 차단하려면 다음 구문을 사용합니다.

참고 Windows XP 이상의 운영 체제에서는 Ipseccmd.exe를 사용하고, Windows 2000에서는 Ipsecpol.exe를 사용합니다.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP %PORT% Rule" -f *=0:%PORT%:TCP -n BLOCK
참고 이 명령에 "%IPSECTOOL%" 또는 "%PORT%"를 입력하지 마십시오. "%IPSECTOOL%" 및 "%PORT%"는 사용자 지정해야 하는 명령 부분을 나타내기 위한 것입니다. 예를 들어, Windows 2000 호스트의 경우 TCP 5001로 들어오는 모든 액세스를 차단하려면 다음 명령을 입력하십시오.
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
Windows XP 호스트나 그 이상 버전의 Windows 운영 체제 호스트의 경우 TCP 5001로 들어오는 모든 액세스를 차단하려면 다음 명령을 입력하십시오.
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
이 명령에 나열된 포트 번호를 변경하여 차단해야 하는 각 RPC 포트에 대해 이 명령을 반복합니다. 차단해야 하는 포트는 5001-5021 범위에 있는 포트입니다.

참고 규칙 이름(-r 스위치)과 필터(-f 스위치)의 포트 번호를 변경해야 합니다.

선택적: 액세스가 필요한 경우 특정 서브넷에 RPC 종점 매퍼에 대한 액세스 권한 부여

특 정 서브넷에 제한된 RPC 포트에 대한 액세스 권한을 부여해야 하는 경우에는 먼저 이전에 차단한 RPC 종점 매퍼에 대한 액세스 권한을 해당 서브넷에 부여해야 합니다. 특정 서브넷에 RPC 종점 매퍼에 대한 액세스 권한을 부여하려면 다음 명령을 사용합니다.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP 135 from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:135:TCP -n PASS
참고 이 명령은 다음과 같이 적용합니다.
  • "%IPSECTOOL%"는 사용할 명령을 나타냅니다. 이 명령에는 구성 중인 운영 체제에 따라 "ipsecpol.exe"나 "ipseccmd.exe"를 사용합니다.
  • "%SUBNET%"는 액세스 권한을 부여할 원격 IP 서브넷을 나타냅니다(예: 10.1.1.0).
  • "%MASK%"는 사용할 서브넷 마스크를 나타냅니다(예: 255.255.255.0).

    예를 들어, 다음 명령을 사용하면 10.1.1.0/255.255.255.0 서브넷의 모든 호스트가 포트 TCP 135에 연결할 수 있습니다. 다른 모든 호스트의 연결은 이전에 이 포트에 대해 만든 기본 차단 규칙에 의해 거부됩니다.
    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 135 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:135:TCP -n PASS

선택적: 액세스가 필요한 경우 특정 서브넷에 새 RPC 동적 포트 범위에 대한 액세스 권한 부여

또한 이전에 RPC 종점 매퍼에 대한 액세스 권한이 부여된 각 서브넷에 새 RPC 동적 포트 범위(5001-5021)에 있는 모든 포트에 대한 액세스 권한을 부여해야 합니다.

서브넷에서 RPC 종점 매퍼에 연결할 수 있도록 하되 동적 포트 범위에는 연결할 수 없도록 하면 응용 프로그램 응답이 중지되거나 다른 문제가 발생할 수 있습니다.

다음 명령은 새 RPC 동적 포트 범위에 있는 포트에 대한 액세스 권한을 특정 서브넷에 부여합니다.
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP %PORT% from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:%PORT%:TCP -n PASS
참고 이 명령은 다음과 같이 적용합니다.
  • "%IPSECTOOL%"는 사용할 명령을 나타냅니다. 이 명령에는 구성 중인 운영 체제에 따라 "ipsecpol.exe"나 "ipseccmd.exe"를 사용합니다.
  • "%PORT%"는 액세스 권한을 부여할 해당 동적 포트 범위의 포트를 나타냅니다.
  • "%SUBNET%"는 액세스 권한을 부여할 원격 IP 서브넷을 나타냅니다(예: 10.1.1.0).
  • " "%MASK%"는 사용할 서브넷 마스크를 나타냅니다(예: 255.255.255.0).

    예 를 들어, 다음 명령을 사용하면 10.1.1.0/255.255.255.0 서브넷의 모든 호스트가 포트 TCP 5001에 연결할 수 있습니다. 다른 모든 호스트의 연결은 이전에 이 포트에 대해 만든 기본 차단 규칙에 의해 거부됩니다.
    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 5001 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:5001:TCP -n PASS
참고 각 서브넷과 새 RPC 동적 포트 범위의 포트에 대해 이 명령을 반복해야 합니다.

IPsec 정책 할당

참고 이 절의 명령은 즉시 적용됩니다.

구성된 RPC 포트에 대한 차단 규칙과 선택적 허용 규칙을 모두 만든 후에는 다음 명령을 사용하여 해당 정책을 할당합니다.
%IPSECTOOL% -w REG -p "Block RPC Ports" –x
참고 정책을 즉시 할당 해제하려면 다음 명령을 사용하십시오.
%IPSECTOOL% -w REG -p "Block RPC Ports" –y
참고 레지스트리에서 정책을 삭제하려면 다음 명령을 사용하십시오.
%IPSECTOOL% -w REG -p "Block RPC Ports" -o
변경 내용을 적용하려면 호스트를 다시 시작해야 합니다.

참고
  • RPC 구성을 변경하면 호스트를 다시 시작해야 합니다.
  • IPsec 정책의 변경 사항은 즉시 적용되므로 호스트를 다시 시작할 필요가 없습니다.
워 크스테이션이나 서버를 다시 시작한 후에는 ncacn_ip_tcp 프로토콜 시퀀스를 사용하며 바인딩할 특정 TCP 포트를 지정하지 않은 모든 RPC 인터페이스에 이 범위의 포트가 할당됩니다. 이 작업은 RPC 서버를 시작할 때 RPC 런타임에 의해 수행됩니다.

참고 서버에는 20개 이상의 TCP 포트가 필요합니다. rpcdump.exe 명령을 사용하여 TCP 포트에 바인딩하는 RPC 종점 수를 계산하고 필요한 경우 이 수를 늘릴 수 있습니다. RPC Dump 도구를 구하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd (http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd) (영문)


원문 : http://support.microsoft.com/kb/908472/ko
728x90

댓글