Cómo configurar Windows Firewall para permitir todos los puertos en uso por IIS Express

9

Según entiendo este artículo de Technet , según la página que me trajo allí *, es que puedo configurar el Firewall de Windows para permitir que todo el tráfico entrante en cualquier puerto sea utilizado por un ejecutable especificado.

Me doy cuenta de que la respuesta de facto probablemente sea "No hagas esto", así que por favor entiende ; Estoy ejecutando Visual Studio e IIS Express dentro de una máquina virtual, y quiero poder conectarme desde el sistema operativo host con fines de prueba, y por lo tanto no estoy realmente preocupado por las implicaciones de seguridad de abrir todos los puertos que usa IIS Express.

Creé una regla de entrada con el Programa establecido en %ProgramFiles% (x86)\IIS Express\iisexpress.exe, que es el ejecutable que se ejecuta de acuerdo con el administrador de tareas. Todas las demás especificaciones de reglas se dejan vacías (cualquier dirección local, cualquier dirección remota y puerto local, cualquier puerto remoto, "cualquier" usuario permitido, "cualquier" computadora permitida). Sin embargo, la conexión solo funciona si tengo una regla para el puerto específico que sirve IIS Express.

Dado que facilitaría mi vida (y en gran medida en principio ya que technet dice que debería funcionar), prefiero no tener que agregar una regla de firewall para cada aplicación que creo.

* Tarea "Crear una regla que permita que un programa escuche y acepte el tráfico de red entrante en cualquier puerto que requiera".

usuario1039855
fuente
1
Dado que mencionó que la seguridad no es una preocupación, ¿hay algún problema con la apertura de todos los puertos?
Abraxas
Simplemente apague el firewall en el sistema operativo invitado ... :-) Siempre deshabilito todo lo que pueda en mis sistemas operativos invitados ...
Kody Brown

Respuestas:

1

Hay un par de problemas con los que te encuentras aquí. Una es que en iisexpress.exerealidad no es el proceso responsable de escuchar el tráfico HTTP. Esa funcionalidad se implementa http.sys como parte del modo kernel de la pila de red de Windows . (Esto se hizo por razones de rendimiento. Para obtener más información, consulte Introducción a las arquitecturas de IIS ). Por lo tanto, crear una regla para iisexpress.exeno servirá de nada.

En segundo lugar, http.syspor defecto no permite que los programas que se ejecutan como no administradores escuchen otras computadoras. De acuerdo con Servir tráfico externo con WebMatrix , debe ejecutar este comando en un símbolo del sistema administrativo para permitir que todos los usuarios escuchen otras máquinas a través de http.sys:

netsh http add urlacl url=http://MACHNAME:PORT/ user=everyone

Reemplace MACHNAMEcon el nombre de host que se utilizará para contactar el sitio y PORTcon el puerto del tráfico. He leído que usar en *lugar de un nombre de host específico le permite escuchar en todos los nombres / interfaces, pero no lo he probado personalmente, y en su +lugar se utiliza cierta documentación . De cualquier manera, una vez que haya configurado la ACL, puede crear una regla de firewall entrante para el puerto .

Lectura adicional: Configuración de HTTP y HTTPS .

Comentario al margen: No es una variable de entorno real que apunta a la versión de 32 bits de los archivos de programa: %PROGRAMFILES(X86)%. (Sin embargo, el camino no fue tu problema).

Ben N
fuente