Descripción General |
|
En Windows, el acceso a los recursos del sistema y a las tareas relacionadas con el mismo se puede controlar mediante privilegios contenidos en un objeto denominado token de acceso (access token). Cuando el Wrapper se ejecuta en nombre de un usuario, el proceso recibe una copia del token de acceso que contiene los privilegios de dicho usuario. La edición Professional del Wrapper permite ajustar estos privilegios a diferentes niveles:
Por seguridad, se recomienda que una aplicación habilite únicamente los privilegios que necesite. Si un privilegio pudiera usarse de forma ocasional, o si debe ser utilizado por alguno de sus procesos secundarios, se puede deshabilitar para conservar la capacidad de volver a habilitarlo en una etapa posterior. Sin embargo, para evitar que la aplicación o cualquiera de sus procesos secundarios vuelva a habilitar un privilegio, la medida más segura es eliminarlo por completo. Si no se especifican privilegios requeridos para un Servicio de Windows, el SCM no modificará el token de acceso del servicio al iniciar, dejándolo con los privilegios asignados por defecto, es decir, aquellos que poseen el usuario y los grupos a los que pertenece la cuenta del servicio. Los siguientes privilegios se asignan comúnmente a los usuarios que ejecutan servicios:
En general, los privilegios anteriores son adecuados (y a veces necesarios) para el proceso del Wrapper, por lo que en la mayoría de las situaciones no debería necesitar cambiarlos. Sin embargo, dependiendo del uso de su aplicación, puede ser mejor para la seguridad eliminar algunos privilegios del token de acceso del proceso de Java o de los procesos secundarios que se ejecutan en respuesta a eventos. NOTADesde la versión 3.7.0, se utiliza la suplantación de identidad (impersonation), cuando está disponible, para verificar el SID del proceso Java entrante cuando el tipo de backend es PIPE (el predeterminado). Esto permite una confirmación rigurosa de la identidad del proceso Java, proporcionando el nivel más robusto de autenticación para la comunicación entre procesos en Windows. Si bien la verificación de SID ofrece la máxima seguridad, no es estrictamente necesaria para una comunicación segura con la JVM; el sistema permanece protegido por múltiples capas independientes, incluidas la autenticación por clave criptográfica y la verificación de PID. ADVERTENCIASe debe prestar especial atención al privilegio SeImpersonatePrivilege. Aunque está habilitado de manera predeterminada para los servicios de Windows, este privilegio puede ser aprovechado para escalar desde una cuenta local a NT AUTHORITY\SYSTEM si la aplicación Java otorga al usuario la capacidad de ejecutar comandos arbitrarios. En tales casos, se recomienda enfáticamente eliminar SeImpersonatePrivilege del proceso de Java. Lo mismo se aplica a los Comandos de eventos. Siempre se deben tomar precauciones para garantizar que el programa o script de destino tenga los permisos de archivo adecuados para que no pueda ser modificado ni reemplazado. Pero, adicionalmente, si el comando configurado otorga al usuario la capacidad de ejecutar sus propios comandos o abrir una consola, también se debería eliminar SeImpersonatePrivilege. NT AUTHORITY\SYSTEM es una cuenta potente que tiene incluso más privilegios que un Administrador en Windows. Obtener acceso a ella representa un problema real de seguridad, ya que permitiría un control casi total sobre el equipo.
Consulte la descripción del privilegio wrapper. Las siguientes propiedades están disponibles para configurar los privilegios:
|
Privilegios requeridos para un Servicio de Windows |
||||||||||||
|
Privilegios en tiempo de ejecución para el proceso del Wrapper |
||||||||||||||||||||||||||||||||||||||||||||||||
|
Las siguientes propiedades se utilizan para ajustar los privilegios del proceso del Wrapper. Solo se pueden ajustar los privilegios que existan en el token de acceso del proceso del Wrapper. De manera predeterminada, el token de acceso contiene los privilegios del usuario bajo el cual se ejecuta el Wrapper y los privilegios de los grupos a los que pertenece este usuario. Para los servicios de Windows, los privilegios predeterminados se pueden sobrescribir estableciendo una lista de privilegios requeridos. Si falta un privilegio, es posible añadirlo a la lista wrapper.ntservice.required_privileges y reinstalar o actualizar el servicio. En el siguiente inicio, el token de acceso del Wrapper debería contener dicho privilegio. Tenga en cuenta que estas propiedades solo surtirán efecto en la primera carga de la configuración y se ignorarán si se recarga la configuración.
|
Privilegios en tiempo de ejecución para el proceso de Java |
||||||||||||||||||||||||
|
Las siguientes propiedades se utilizan para ajustar los privilegios del proceso de Java. Si se configura cualquiera de estas propiedades, el token de acceso del proceso del Wrapper se duplicará y los privilegios especificados se me ajustarán en la copia del token. Posteriormente, el proceso de Java se lanzará en el contexto de seguridad representado por este nuevo token. Solo se pueden ajustar los privilegios que existan en el token de acceso del proceso de Java (y que, por lo tanto, también existan en el token del proceso del Wrapper). Tenga en cuenta que la lista de privilegios se puede cambiar a dos niveles antes de lanzar el proceso de Java: al instalar un servicio de Windows si se especificaron privilegios requeridos, o si uno o más privilegios se han eliminado al iniciar el Wrapper. Los privilegios se reajustarán cada vez que se lance una nueva JVM. Si se permite recargar el archivo de configuración, estas propiedades se pueden cambiar para utilizar diferentes configuraciones de privilegios en la siguiente invocación de la JVM.
|
Privilegios en tiempo de ejecución para Comandos de eventos |
||||||||||||||||||||||||||||||||||||||||||||
|
Las siguientes propiedades se utilizan para ajustar privilegios en comandos lanzados en respuesta a determinados eventos. Si se configura cualquiera de estas propiedades, el token de acceso del proceso del Wrapper se duplicará y los privilegios especificados se ajustarán en la copia del token. Posteriormente, el comando de evento se lanzará en el contexto de seguridad representado por este nuevo token. Solo se pueden ajustar los privilegios que existan en el token de acceso del Comando de evento (y que, por lo tanto, también existan en el token del proceso del Wrapper). Tenga en cuenta que la lista de privilegios se puede cambiar a dos niveles antes de lanzar un comando de evento: al instalar un servicio de Windows si se especificaron privilegios requeridos, o si uno o más privilegios se han eliminado al iniciar el Wrapper. NOTALa capacidad de controlar los privilegios a diferentes niveles al lanzar procesos permite configuraciones como la siguiente: Para habilitar un determinado privilegio para un Comando de evento, este también debe existir para el proceso del Wrapper. Sin embargo, el proceso de Java puede eliminar por completo este privilegio, garantizando así que no lo utilicen ni la aplicación Java ni ninguno de sus procesos secundarios.
|
Registro de Eventos (Logging) |
||||||||||||
|
Consultar los privilegios de un Servicio de Windows |
||||||||||||
Es posible consultar los privilegios requeridos de un servicio de Windows, así como los privilegios en tiempo de ejecución del proceso del Wrapper y de sus procesos secundarios, con un solo comando: .\wrapper.exe -qr .
También es posible consultar los privilegios de un servicio diferente añadiendo '=', seguido del nombre del servicio, a la opción -qr ('-qr=nombreServicio').
|










