SafeChildren Banner

Havoc Oracle Solaris Experts
Mostrando entradas con la etiqueta privileges. Mostrar todas las entradas
Mostrando entradas con la etiqueta privileges. Mostrar todas las entradas

martes, 1 de marzo de 2011

Tomcat sobre SMF y RBAC en OpenIndiana y Solaris

Introducción
Ya hemos hablado del uso de Roles y Privilegios en Solaris y cómo aplicarlos a Apache Tomcat para que nos permita iniciar el servicio utilizando un usuario no privilegiado en un puerto inferior a 1024. En nuestro caso de Noviembre 2010 hablábamos de Cómo configurar HTTPS en Apache Tomcat utilizando Roles y Privilegios.

Sin embargo, si queremos gestionar nuestro servicio utilizando Solaris SMF, deberemos hacer algunos cambios en el archivo manifest de Apache Tomcat.

Asignación de Privilegios
Sabemos que para poder utilizar un puerto privilegiado (<1024) con un usuario no privilegiado, deberemos otorgarle el privilegio <net_privaddr>, y eso es lo que hicimos en nuestro post sobre Configurar HTTPS en Apache Tomcat modificando los privilegios en el role <appserver>
# rolemod -K defaultpriv=basic,net_privaddr appserver
 Sin embargo, cuando ejecutamos el servicio utilizando Solaris SMF este privilegio no está "activo" debido a que en nuestro archivo "manifest" no hemos defenido que los tengan, y por lo tanto, sólo tendrá los privilegios "basic".

Modificar el Archivo Manifest
Para añadir los privilegios que deseamos, en nuestro caso <net_privaddr>, simplemente deberemos incluir la propiedad "privileges" en <method_credential>, por ejemplo,
<method_context project='appserver'>
    <method_credential
        user='appserver'
        group='appserver'
        privileges='basic,net_privaddr'/>
</method_context>
De esta forma, estamos indicando a SMF que asigne el privilegio <net_privaddr> además de los básicos, y por lo tanto, ahora si que podemos iniciar nuestro Tomcat utilizando <svcadm enable>

Algunos Privilegios Más
Recordar que si utilizamos < ! >, entonces, en vez de asignar estamos eliminando el privilegio, así que vamos a utilizarlo para evitar que "por alguna problema" puedan llegar a heredarlos, por lo tanto, nuestro parámetro "privileges" será el siguiente:
privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr'
Añadimos Autorizaciones
Ahora vamos a unirlo al post de RBAC y Autorizaciones para Tomcat que escribí hace un tiempo, y veremos como podemos "encajar" todo en un mismo archivo manifest para utilizar: Autorizaciones y Privilegios

Nota: Es muy recomendable que echéis un vistazo al post de las autorizaciones, si no os acordáis ...

Por lo tanto, nuestra definición de Instancia quedará de la siguiente forma:
<instance name='default_64bits' enabled='false'>
 <method_context>
      <method_credential
          user='tomcat6'
          group='webrunner'
 privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr'/>
 </method_context>
 <property_group name='tomcat_6' type='application'>
      <propval name='home' type='astring'
                value='/opt/www/tomcat6' />
      <propval name='jvmargs' type='astring'
                value='-d64 -Xms512m -Xmx512m' />
      <propval name='project' type='astring'
                value='tomcat6' />
      <propval name='java_home' type='astring'
                value='/usr/java' />
      <propval name='value_authorization' type='astring'
                        value='solaris.org.apache.smf.value.tomcat' />
 </property_group>
</instance>

Con esto ya tendríamos todo nuestro Apache Tomcat dentro de Solaris SMF y utilizando Autorizaciones. Podéis descargar el archivo manifest completo desde Manifest Tomcat Roles y Privilegios


Conclusiones
Aunque parece un poco lioso al principio, luego resulta muy sencillo y, a la larga, nos proporciona una gestión mucho más avanzada y simplificada.

Muchas veces os he recomendado el uso de Roles y Privilegios, pero, espero que con estos ejemplos "reales" podáis ver las ventajas que nos ofrece su uso.

Como siempre, vuestras sugerencias son bienvenidas :D


Referencias

lunes, 13 de septiembre de 2010

Modelo de Seguridad de Solaris: RBAC, Roles y Privilegios - Parte 4

Introducción
Continuando con nuestra serie de RBAC, Roles y Privilegios y cómo podemos aplicarlo a nuestras instalaciones. En esta ocasión vamos a ver el privilegio sys_priocntl -aplicado a una zona- que nos permite modificar el planificador de un proceso desde una zona no global

Modificación del planificador en una Zona No Global
Si intentamos ejecutar el comando de cambio de planificador <priocntl> en una zona no global con los privilegios default Solaris nos mostrará un mensaje de error indicando que no tiene permisos, vamos a verlo:
# zonename
testzone
# ps -cf -u smmsp
     UID   PID  PPID  CLS PRI    STIME TTY         TIME CMD
   smmsp  9046  8589  FSS  59 11:44:15 ?           0:00 /usr/lib/sendmail -Ac -q15m
# priocntl -s -c FX -i pid 9046
Permissions error encountered on pid 9046.

Privilegios Zona No Global para cambiar los planificadores
Vamos a ver cómo podemos hacer para habilitar la administración de planificadores en una zona no global, para ello, deberemos incluir el privilegio sys_priocntl
# zonecfg -z testzone
zonecfg:testzone> set limitpriv=default,proc_priocntl,sys_time
zonecfg:testzone> verify
zonecfg:testzone> commit
zonecfg:testzone> exit
# zoneadm -z testzone reboot

Ahora, al conectarnos a la zona y volveremos a ejecutar el comando de cambio de planificador y le asignaremos TS en vez de FSS y veremos el resultado
# ps -cf -u smmsp
     UID   PID  PPID  CLS PRI    STIME TTY         TIME CMD
   smmsp 13064 12635  FSS  29 13:33:58 ?           0:00 /usr/lib/sendmail -Ac -q15m
# priocntl -s -c TS -i pid 13064
# ps -cf -u smmsp
     UID   PID  PPID  CLS PRI    STIME TTY         TIME CMD
   smmsp 13064 12635   TS  52 13:33:58 ?           0:00 /usr/lib/sendmail -Ac -q15m
Esta vez si que hemos podido cambiar nuestro planificador.

Conclusiones
Hemos visto un privilegio bastante útil que nos permitirá modificar los planificadores -y por lo tanto optimizar el uso- de los procesos que se encuentran dentro de una zona, sin tener que acceder a través de la zona global para ello.

Con esta última parte, ya podemos pasar a las siguientes secciones, donde hablaremos de Roles y, como hemos hecho hasta ahora, utilizaremos pequeños ejemplos para poder explicarlo de forma más sencilla.

<< RBAC, Roles y Privilegios en Solaris 10 - Parte 1
<< RBAC, Roles y Privilegios en Solaris 10 - Parte 2
<< RBAC, Roles y Privilegios en Solaris 10 - Parte 3


Referencias