Cómo gestionar el tipo de inicio del servicio UPnP Device Host con PowerShell

El servicio UPnP (Universal Plug and Play) Device Host es un componente fundamental en muchos entornos informáticos, ya que permite que los dispositivos se conecten y comuniquen sin problemas en una red. Gestionar el tipo de inicio de este servicio es esencial tanto para la eficacia operativa como para la seguridad. Este artículo profundiza en un script de PowerShell diseñado para establecer el tipo de inicio del servicio UPnP Device Host.

Antecedentes

El servicio UPnP Device Host facilita la detección y el control de dispositivos, lo que facilita su conexión a redes sin necesidad de configuración manual. Sin embargo, también presenta riesgos potenciales para la seguridad. Los profesionales de TI y los proveedores de servicios gestionados (MSP) a menudo necesitan controlar el tipo de inicio de este servicio para lograr un equilibrio entre funcionalidad y seguridad.

El script para gestionar el tipo de inicio del servicio UPnP Device Host

#Requires -Version 5.1

<#
.SYNOPSIS
    Set the startup type for the UPnP Device Host service.
.DESCRIPTION
    Set the startup type for the UPnP Device Host service.
.EXAMPLE
    No parameters needed.
    Disables UPnP Host service.
.EXAMPLE
     -StartupType Automatic
    Enables UPnP Host service.
.EXAMPLE
    PS C:> Set-Upnp.ps1 -StartupType Automatic
    Enables UPnP Host service.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
    (c) 2023 NinjaOne
    By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
    OSSecurity
#>

[CmdletBinding()]
param (
    [Parameter()]
    [ValidateSet("Boot", "System", "Automatic", "Manual", "Disabled")]
    [String]
    $StartupType = "Disabled"
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    try {
        Set-Service -Name "upnphost" -StartupType $StartupType
    }
    catch {
        Write-Error $_
        exit 1
    }
}
end {}

 

Accede a más de 300 scripts en el Dojo de NinjaOne

Obtén acceso

Descripción detallada

El script comienza con un atributo CmdletBinding, que indica funciones avanzadas que actúan de forma similar a los cmdlets. El bloque param define los parámetros para el script, con el tipo de inicio por defecto establecido en «Desactivado».

El bloque begin contiene una función, Test-IsElevated, que comprueba si el script se ejecuta con privilegios de administrador. Esto es crucial porque cambiar la configuración del servicio suele requerir permisos elevados.

En el bloque de proceso, el script comprueba primero si hay permisos elevados. Si no está presente, arroja un error. Si los permisos son adecuados, intenta establecer el tipo de inicio del servicio de host de dispositivo UPnP mediante el cmdlet Set-Service. Cualquier error encontrado durante este proceso se detecta y se muestra.

Posibles casos de uso

Imagina a un profesional de TI, Alex, que trabaja en una empresa mediana. Tras una auditoría de seguridad, se recomienda desactivar los servicios UPnP en los servidores que no los utilicen. Alex puede utilizar este script para establecer rápidamente el tipo de inicio del servicio UPnP Device Host en «Desactivado» en varios servidores, garantizando el cumplimiento de la recomendación de seguridad.

Comparaciones

Aunque la interfaz gráfica de usuario de los servicios Windows permite ajustar manualmente los tipos de inicio de los servicios, no es escalable para múltiples sistemas. También es posible utilizar la directiva de grupo, pero puede resultar excesiva para un cambio sencillo y su configuración puede ser compleja. Este script ofrece una solución intermedia: es más escalable que los métodos manuales y más sencillo que las directiva de grupos.

Preguntas frecuentes

  • ¿Puedo utilizar este script en cualquier máquina Windows?
    El script es compatible con Windows 10 y Windows Server 2016 en adelante.
  • ¿Qué pasa si quiero establecer un tipo de inicio por defecto diferente?
    Puedes modificar el valor por defecto de $StartupType en el bloque param.

Implicaciones para la seguridad

Si bien es verdad que el servicio UPnP Device Host ofrece una cierta comodidad, puede representar un riesgo potencial para la seguridad si no se controla. Controlando el tipo de arranque, los profesionales de TI pueden mitigar posibles vulnerabilidades. Sin embargo, hay que tener cuidado de no interrumpir los servicios necesarios, ya que podría afectar a la conectividad y funcionalidad de los dispositivos.

Recomendaciones

  • Prueba siempre el script en un entorno controlado antes de desplegarlo en un entorno de producción.
  • Revisa periódicamente el tipo de inicio de los servicios críticos, como UPnP Device Host, para asegurarte de que se ajustan a la postura de seguridad de la organización.

Reflexiones finales

En el panorama en constante evolución de las TI, herramientas como NinjaOne pueden ser muy valiosas. Con sus amplias capacidades de supervisión y gestión de TI, NinjaOne puede complementar scripts como el que hemos visto, ofreciendo un enfoque global de la gestión de TI. Utilizando tanto los scripts manuales como las herramientas automatizadas, los profesionales de TI pueden garantizar que servicios como UPnP Device Host sean funcionales y seguros.

Próximos pasos

La creación de un equipo de TI próspero y eficaz requiere contar con una solución centralizada que se convierta en tu principal herramienta de prestación de servicios. NinjaOne permite a los equipos de TI supervisar, gestionar, proteger y dar soporte a todos sus dispositivos, estén donde estén, sin necesidad de complejas infraestructuras locales.

Obtén más información sobre NinjaOne Endpoint Management, echa un vistazo a un tour en vivoo tu prueba gratuita de la plataforma NinjaOne.

Categorías:

Quizá también te interese…

×

¡Vean a NinjaOne en acción!

Al enviar este formulario, acepto la política de privacidad de NinjaOne.

Términos y condiciones de NinjaOne

Al hacer clic en el botón «Acepto» que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona «tal cual» y «según disponibilidad», sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).