Resumen
En este artículo se describe cómo configurar RPC para usar un intervalo de puertos dinámicos específico y cómo ayudar a proteger los puertos de ese intervalo mediante una directiva de seguridad de protocolo de Internet (IPsec). De forma predeterminada, RPC utiliza puertos del intervalo de puertos efímeros (1024-5000) cuando asigna puertos a aplicaciones RPC que tienen que escuchar en un punto de conexión TCP. Este comportamiento puede dificultar la restricción del acceso a estos puertos para los administradores de red. En este artículo se describen formas de reducir el número de puertos disponibles para las aplicaciones RPC y cómo restringir el acceso a estos puertos mediante una directiva IPsec basada en el Registro.
Dado que los pasos descritos en este artículo implican cambios en todo el equipo que requieren que se reinicie el equipo, todos estos pasos deben realizarse primero en entornos que no son de producción para identificar cualquier problema de compatibilidad de aplicaciones que pueda producirse como resultado de estos cambios.
Más información
Hay varias tareas de configuración que deben completarse para reubicar, reducir y restringir el acceso a los puertos RPC.
En primer lugar, el intervalo de puertos dinámicos de RPC debe restringirse a un intervalo de puertos más pequeño y manejable que sea más fácil de bloquear mediante un firewall o una directiva IPsec. De forma predeterminada, RPC asigna dinámicamente puertos en el intervalo de 1024 a 5000 para los puntos de conexión que no especifican un puerto en el que escuchar.
Nota
En este artículo se usa el intervalo de puertos del 5001 al 5021. Esto reduce el número de puertos disponibles para los puntos de conexión RPC de 3.976 a 20. El número de puertos se seleccionó arbitrariamente y no es una recomendación para el número de puertos necesarios para un sistema específico.
A continuación, se debe crear una directiva IPsec para restringir el acceso a este intervalo de puertos para denegar el acceso a todos los hosts de la red.
Por último, la directiva IPsec se puede actualizar para proporcionar a determinadas direcciones IP o subredes de red acceso a los puertos RPC bloqueados y para excluir todos los demás.
Para iniciar la tarea de volver a configurar el intervalo de puertos dinámicos RPC, descargue la Herramienta de configuración RPC (RPCCfg.exe) y cópiela en la estación de trabajo o en el servidor que se volverá a configurar. Para ello, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/download/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=es Para realizar las tareas posteriores de creación de una directiva IPsec, descargue la herramienta Internet Protocol Security Policies (Ipsecpol.exe) y luego cópiela en la estación de trabajo o en el servidor que se volverá a configurar. Para ello, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/download/details.aspx?displaylang=en&FamilyID=7D40460C-A069-412E-A015-A2AB904B7361 Nota: Para crear una directiva IPsec para Microsoft Windows XP o para una versión posterior del sistema operativo Windows, use Ipseccmd.exe. Ipseccmd.exe forma parte de las herramientas de soporte técnico de Windows XP. La sintaxis y el uso de IPseccmd.exe son los mismos que la sintaxis y el uso de Ipsecpol.exe. Para obtener más información acerca de las herramientas de soporte de Windows XP, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
838079 Herramientas de soporte técnico de Windows XP Service Pack 2
Reubique y reduzca el intervalo de puertos dinámicos RPC mediante RPCCfg.exe
Para reubicar y reducir el intervalo de puertos dinámicos RPC mediante RPCCfg.exe, siga estos pasos:
Copiar RPCCfg.exe en el servidor que se va a configurar
En el símbolo del sistema, escriba rpccfg.exe -pe 5001-5021 -d 0.
Nota: Los puntos de conexión RPC recomiendan este intervalo de puertos porque no es probable que otros usuarios de este intervalo se asignen para su uso. De forma predeterminada, RPC usa el intervalo de puertos de 1024 a 5000 para asignar puertos para puntos de conexión. Sin embargo, los puertos de este intervalo también se asignan dinámicamente para que los use el sistema operativo Windows en todas las aplicaciones de sockets de Windows y pueden agotarse en servidores muy utilizados, como servidores de terminal y servidores de nivel intermedio que realizan muchas llamadas salientes a sistemas remotos.Por ejemplo, cuando Internet Explorer se pone en contacto con un servidor web en el puerto 80, escucha en un puerto en el intervalo 1024-5000 la respuesta del servidor. Un servidor COM de nivel intermedio que realiza llamadas salientes a otros servidores remotos también utiliza un puerto en este intervalo para la respuesta entrante a esa llamada. Mover el intervalo de puertos que RPC usa para sus puntos de conexión al intervalo de puertos 5001 reducirá la posibilidad de que otras aplicaciones usen estos puertos.
Para obtener más información sobre el uso efímero de puertos en sistemas operativos Windows, visite los siguientes sitios web de Microsoft.- Para Windows 2000:
http://technet.microsoft.com/library/bb726981.aspx - Para Windows Server 2003:
http://technet2.microsoft.com/WindowsServer/en/library/823ca085-8b46-4870-a83e-8032637a87c81033.mspx?mfr=true
- Para Windows 2000:
Utilice una directiva de firewall o IPsec para bloquear el acceso a los puertos vulnerables en el host afectado
En los comandos de la sección siguiente, cualquier texto que aparezca entre signos de porcentaje (%) está pensado para representar el texto del comando que debe escribir la persona que crea la directiva IPsec. Por ejemplo, siempre que aparezca el texto "%IPSECTOOL%", la persona que crea la directiva debe sustituirlo por el siguiente texto:
- Para Windows 2000, sustituya "%IPSECTOOL%" por "ipsecpol.exe".
- Para Windows XP o una versión posterior de Windows, sustituya "%IPSECTOOL%" por "ipseccmd.exe".
Para obtener más información acerca de cómo utilizar IPsec para bloquear puertos, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
813878 Cómo bloquear puertos y protocolos de red específicos mediante IPSec
Bloquear el acceso al asignador de extremos de RPC para todas las direcciones IP
Para bloquear el acceso al asignador de extremos de RPC para todas las direcciones IP, use la sintaxis siguiente.
Nota: En Windows XP y en sistemas operativos posteriores, utilice Ipseccmd.exe. En Windows 2000, utilice Ipsecpol.exe (Windows 2000).
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
Nota: No escriba "%IPSECTOOL%" en este comando. "%IPSECTOOL%" tiene como objetivo representar la parte del comando que se debe personalizar. Por ejemplo, en Windows 2000, escriba el comando siguiente desde un directorio que contenga Ipsecpol.exe para bloquear todo el acceso entrante al TCP 135:
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
En Windows XP y en sistemas operativos posteriores, escriba el comando siguiente desde un directorio que contenga Ipseccmd.exe para bloquear todo el acceso entrante a TCP 135:
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK
Bloquear el acceso al intervalo de puertos dinámicos RPC para todas las direcciones IP
Para bloquear el acceso al intervalo de puertos dinámicos RPC para todas las direcciones IP, use la sintaxis siguiente.
Nota: En Windows XP y en sistemas operativos posteriores, utilice Ipseccmd.exe. En Windows 2000, utilice Ipsecpol.exe (Windows 2000).
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP %PORT% Rule" -f *=0:%PORT%:TCP -n BLOCK
Nota No escriba "%IPSECTOOL%" ni "%PORT%" en este comando. "%IPSECTOOL%" y "%PORT%" están pensadas para representar partes del comando que se deben personalizar. Por ejemplo, escriba el comando siguiente en hosts de Windows 2000 para bloquear todo el acceso entrante a TCP 5001:
ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
Para bloquear todo el acceso entrante a TCP 5001, escriba el siguiente comando en hosts de Windows XP y en hosts de sistemas operativos Windows posteriores:
ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK
Repita este comando para cada puerto RPC que deba bloquearse cambiando el número de puerto que aparece en este comando. Los puertos que se deben bloquear se encuentran en el intervalo 5001-5021.
Nota No olvide cambiar el número de puerto en el nombre de la regla (el modificador -r) y en el filtro (el modificador -f).
Opcional: Conceda acceso al asignador de extremos de RPC para subredes específicas si es necesario
Si debe conceder a subredes específicas acceso a los puertos RPC restringidos, primero debe conceder a estas subredes acceso al asignador de puntos de conexión RPC que bloqueó anteriormente. Para conceder acceso de subred específico al asignador de extremos de RPC, use el siguiente comando:
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP 135 from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:135:TCP -n PASS
Nota: En este comando, se aplican las instrucciones siguientes:
"%IPSECTOOL%" representa el comando que se va a usar. Este comando es "ipsecpol.exe" o "ipseccmd.exe". El comando que se utilice depende del sistema operativo que se esté configurando.
"%SUBNET%" representa la subred IP remota a la que desea proporcionar acceso, por ejemplo, 10.1.1.0.
"%MASK%" representa la máscara de subred que se va a usar, por ejemplo, 255.255.255.0.
Por ejemplo, el siguiente comando permite que todos los hosts de la subred 10.1.1.0/255.255.255.0 se conecten al puerto TCP 135. Todos los demás hosts verán sus conexiones denegadas por la regla de bloqueo predeterminada que se creó anteriormente para este puerto.
%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
Opcional: conceda acceso al nuevo intervalo de puertos dinámicos RPC para subredes específicas si es necesario
Cada subred a la que se concedió acceso al asignador de extremos de RPC anteriormente también debería tener acceso a todos los puertos del nuevo intervalo de puertos dinámicos RPC (5001-5021).
Si permite que las subredes alcancen el asignador de extremos RPC, pero no el intervalo de puertos dinámicos, la aplicación puede dejar de responder o puede experimentar otros problemas.
El siguiente comando proporciona a una subred específica acceso a un puerto del nuevo intervalo de puertos dinámicos RPC:
%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP %PORT% from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:%PORT%:TCP -n PASS
Nota: En este comando, se aplican las instrucciones siguientes:
"%IPSECTOOL%" representa el comando que se va a usar. Este comando es "ipsecpol.exe" o "ipseccmd.exe". El comando que se utilice depende del sistema operativo que se esté configurando.
"%PORT%" representa el puerto del intervalo de puertos dinámicos al que se va a proporcionar acceso.
"%SUBNET%" representa la subred IP remota a la que desea proporcionar acceso, por ejemplo, 10.1.1.0.
"%MASK%" representa la máscara de subred que se va a usar, por ejemplo, 255.255.255.0.
Por ejemplo, el siguiente comando permite que todos los hosts de la subred 10.1.1.0/255.255.255.0 se conecten al puerto TCP 5001. Todos los demás hosts verán sus conexiones denegadas por la regla de bloqueo predeterminada que se creó anteriormente para este puerto.
%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
Nota: Este comando debe repetirse para cada subred y puerto del nuevo intervalo de puertos dinámicos RPC.
Asignar la directiva IPsec
Nota: Los comandos de esta sección surten efecto inmediatamente.
Después de crear todas las reglas de bloqueo y todas las reglas de permiso opcionales para los puertos RPC configurados, asigne la directiva mediante el siguiente comando:
%IPSECTOOL% -w REG -p "Block RPC Ports" –x
Nota: Para anular inmediatamente la asignación de la directiva, utilice el siguiente comando:
%IPSECTOOL% -w REG -p "Block RPC Ports" –y
Nota Para eliminar la directiva del Registro, use el siguiente comando:
%IPSECTOOL% -w REG -p "Block RPC Ports" -o
Debe reiniciar el host para que los cambios surtan efecto.
Notas
- Los cambios en la configuración de RPC requieren un reinicio.
- Los cambios en la directiva IPsec surten efecto inmediatamente y no requieren un reinicio.
Después de reiniciar la estación de trabajo o el servidor, cualquier interfaz RPC que use la secuencia de protocolo ncacn_ip_tcp y no especifique un puerto TCP específico al que enlazar tendrá un puerto asignado de este intervalo por el tiempo de ejecución de RPC cuando se inicie el servidor RPC.
Nota El servidor puede requerir más de 20 puertos TCP. Puede usar el comando rpcdump.exe para contar el número de puntos de conexión RPC enlazados a un puerto TCP y aumentar este número si es necesario. Para obtener más información acerca de cómo obtener la herramienta Volcado de RPC, visite el siguiente sitio web de Microsoft: