Firewall de Windows 7 no arranca.

Gracias a una Industrialización que hice recientemente de un componente de Microsoft «MPI», he podido descubrir un problema que en algunos ordenadores se estaba produciendo; ya que al instalar el paquete, este, entraba en error por culpa del Servicio de Firewall de Windows.

Para poder analizar este problema, nosotros lanzamos la instalación administrativa mpi.msi /qb!- transforms=mpi.mst /L* c:\temp\mpi.log y le indicamos que sea desatendida y que guarde el log. “El log esta en Francés porque estoy usando un equipo con Windows en ese idioma (Pare-feu Windows = Firewall de Windows)

Anotación: mpi.msi ha sido industrializado. Por eso en este ejemplo tengo el mpi.msi en vez del MSMPISetup.exe que vosotros podréis descargar de la Web de Microsoft. El proceso de extracción y de la anulación de comprobación del MSMPISetup.exe se hace a través de un mpi.mst para modificar los parámetros del mpi.msi

Action start 02:02:56: InstallFinalize.
CAQuietExec:  
CAQuietExec:  Une erreur s'est produite lors de la tentative de prise de contact avec
CAQuietExec:  le service Pare-feu Windows. Assurez-vous que le service est en cours
CAQuietExec:  d'ex‚cution, puis r‚essayez.
CAQuietExec:  
CAQuietExec:  Error 0x80070001: Command line returned an error.
CAQuietExec:  Error 0x80070001: CAQuietExec Failed
CustomAction RemoveMpiexecFwRule returned actual error code 1603 but will be translated to success due to continue marking
CAQuietExec:  
CAQuietExec:  Une erreur s'est produite lors de la tentative de prise de contact avec
CAQuietExec:  le service Pare-feu Windows. Assurez-vous que le service est en cours
CAQuietExec:  d'ex‚cution, puis r‚essayez.
CAQuietExec:  
CAQuietExec:  Error 0x80070001: Command line returned an error.
CAQuietExec:  Error 0x80070001: CAQuietExec Failed
CustomAction RemoveSmpdFwRule returned actual error code 1603 but will be translated to success due to continue marking
CAQuietExec:  
CAQuietExec:  Une erreur s'est produite lors de la tentative de prise de contact avec
CAQuietExec:  le service Pare-feu Windows. Assurez-vous que le service est en cours
CAQuietExec:  d'ex‚cution, puis r‚essayez.
CAQuietExec:  
CAQuietExec:  Error 0x80070001: Command line returned an error.
CAQuietExec:  Error 0x80070001: CAQuietExec Failed
CustomAction InstallMpiexecFwRuleIn returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

Analizando el log, vemos que la instalación entra en error con el código 1603 y que es debido al Servicio del Firewall de Windows. Ahora nos toca analizar porque el Servicio de Firewall esta detenido y para ello, iremos a Administracion de equipo – Visor de eventos – Registros de Windows – Sistema Una vez dentro, tendremos que ir revisando cada evento del sistema, hasta encontrar el Error del Firewall.

Cuando lo tengamos localizado, nos dirá la causa del porque no está iniciado el Servicio “problema de acceso a servicios especiales” y un numero de evento 7024 que podremos consultar en la web de Microsoft.

Después de leer la documentación del evento 7024 y que realmente no nos ayuda con una solución, procedemos a buscar más información en la comunidad de Microsoft y encontramos, que ya reportaron una solución el 14 de Junio del 2011 “The Windows Firewall Service Fails to start – Registry Permissions

Tal como podemos leer ahí, tendremos que revisar que tenga acceso el usuario NT Service\BFE y NT Service\MpsSvc en 5 claves de registro que más abajo mostramos. Muy imporante, en cada clave de registro el usuario NT Service\BFE y NT Service\MpsSvc tiene diferentes privilegios.

  • HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy  || NT Service\BFE – Query Value, Set Value, Create Subkey, Enumerate Sub Keys, Notify, Read Control
  • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy || NT Service\MpsSvc – Query Value, Set Value, Create SubKey, Enumerate SubKeys, Notify, Delete, Read Control
  • HKLM\SYSTEM\CurrentControlSet\Services\ShareAccess\Epoch || NT Service\MpsSvc – Query Value, Set Value
  • HKLM\SYSTEM\CurrentControlSet\Services\ShareAccess\Epoch2 || NT Service\MpsSvc – Query Value, Set Value
  • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy || NT Service\MpsSvc – Query Value, Set Value, Create SubKey, Enumerate SubKeys, Notify, Delete, Read Control

Este proceso lo podremos hacer manualmente o mediante un sencillo script para hacerlo automáticamente. Este Script lo podremos hacer mediante un *.batArchivo de Lotes”. En este tutorial os explicaré las dos formas.

Manualmente:

El proceso es mas tedioso, ya que tendremos que abrir REGEDIT y buscar cada clave de registro. Una vez localizada, pincharemos en ella y clic con el botón derecho del ratón y vamos a permisos.

Para esta clave de registro, si no aparece el usuario NT Service\MpsSvc , tendremos que añadirlo. Para hacerlo, clicaremos en Agregar y a continuación en la nueva ventana, introduciremos el grupo\nombre y clic en aceptar.

Ahora ya tenemos agregado al usuario, lo que nos queda por revisar son los permisos que tiene el MpsSvc. Para ello, tendremos que seleccionar el usuario y hacer clic en Opciones avanzadas.

A continuación, seleccionaremos otra vez el usuario y hacemos clic en Editar.

El procedimiento es un poco latoso, ya que tendremos que buscar cada clave de registro mencionada anteriormente para revisarlas y si no está el usuario, tendremos que ponerlo y editar los permisos que el usuario NT Service\BFE y NT Service\MpsSvc necesita en cada clave de registro.

Automaticamente:

Este es el proceso más rápido, ya que en cuestión de segundos tendrás las claves de registro con el usuario que necesita el Firewall de Windows para que pueda correr el servicio. Como prerrequisito de este *.bat es que vas a necesitar una herramienta de Microsoft «SubInACL» para poder editar/agregar/borrar & … usuarios  “ACL” en las claves de registro

Aqui os dejo el contenido del *.bat

@echo off
SUBINACL /verbose=1 /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy" /grant="NT Service\MpsSvc"=QSCEYDA
SUBINACL /verbose=1 /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch" /grant="NT Service\MpsSvc"=QS
SUBINACL /verbose=1 /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch2" /grant="NT Service\MpsSvc"=QS
SUBINACL /verbose=1 /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" /grant="NT Service\MpsSvc"=QSCEYDA
net start mpssvc
exit

Si sois más perezosos, aquí tenéis el archivo *.bat y el SubInACL

 

Comparte en las Redes Sociales