RBAC (Role Based Access Control) en EAP 6.2 – Parte I

Nueva entrada. Últimamente me he visto “forzado” a actualizar esto más a menudo, espero que no sea algo puntual sino que se convierta en hábito 😉

 

Bueno, esta entrada tratará de como configurar la seguridad en la Consola de Administración Web y la Consola de Administración CLI para restringir el acceso a los distintos componentes dependiendo del rol que el usuario tenga aplicado. Todo ello lo haremos gracias a RBAC que, según la guía de seguridad, tiene la siguiente definición:

Es un mecanismo para especificar un conjunto de permisos a los usuarios de gestión. Permite que varios usuarios compartan la responsabilidad de la gestión de JBoss EAP 6.2 sin dar a cada uno de ellos un acceso sin restricciones. Al proporcionar “separación de funciones” para los usuarios de gestión, JBoss EAP 6.2 hace que sea fácil para una organización distribuir la responsabilidad entre las personas o grupos sin otorgar privilegios innecesarios. Esto asegura la máxima seguridad posible de sus servidores y datos, al mismo tiempo que proporciona flexibilidad para la configuración, implementación y administración.

Para ello RBAC nos ofrece 7 perfiles (roles), que delimitarán qué funciones puede realizar un usuario:

Continue reading

JBoss EAP 6 como servicio en RHEL 7

Hace relativamente poco tiempo Red Hat ha puesto a disposición la versión 7.0 GA de su sistema operativo Red Hat Enterprise Linux.

Uno de los cambios más notables en RHEL 7 (ya ahondaré en otro post) es la gestión de servicios que pasa de Upstart (basado en System V) a systemd. Dado que en la documentación oficial de JBoss EAP 6 sólo explica cómo configurar JBoss como servicio basado en SysV recojo en este post los pasos a seguir para configurarlo en systemd.

Otro de los cambios existentes es acerca del firewall, RHEL 7 viene con firewalld (sí, también con iptables, pero se dejará de usar), así que explicaré como configurar firewalld para poder acceder a JBoss.

Empezamos:

Continue reading

Virt-Manager – Habilitar acceso a usuario sin privilegios

Bueno, volviendo a retomar un curso de RHEL 6.3, me surgió una pequeña duda circunstancial, ¿cómo puedo permitir a un usuario sin privilegios el acceso al virt-manager para que pueda crear, modificar, destruir, arrancar, parar, etc.. una o varias máquinas virtuales? La respuesta era clara, o le doy el password de root (cosa que ni quiero, ni se debe 😛 ), o bien incluyo al usuario en el /etc/sudoers (tema que, por razones varias, no me apetecía), otra alternativa era incluir al usuario en el grupo libvirt y/o kvm, pero esto le daría acceso a gestionar los ficheros y directorios a los que dichos grupos tienen acceso. De pronto me encontré con algo bien distinto, ¿por qué no aporvechar PolicyKit paara permitir que un usuario sin privilegios pueda controlar algunas funciones de libvirt? Así que buscando en documentaciones me topé con las siguientes instrucciones:

 

vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

[libvirt Management Access]
Identity=unix-user:username
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Lógicamente debemos cambiar <username> por el usuario que nos convenga. Alternativamente podremos permitir el acceso a un grupo con

Identity=unix-group:groupname

Por último debemos reiniciar el servicio libvirtd

service libvirtd restart

 

Espero que os haya gustado!!

Instalando JBoss EAP 6.2

Aquí va mi primera entrada de JBoss, y no podía estar más fresca, ya que voy a mostrar como instalar la versión más reciente de JBoss EAP, la release 6.2.
Lo realizaré con el asistente guiado.

Para ello lo habitual de un instalador jar:

[flynn@tron ~]$ java -jar jboss-eap-6.2.0-installer.jar

Lo primero que me llama la atención es que han sustituído el logotipo de “JBoss by Red Hat” directamente por el logotipo de Red Hat

red-hat

Otro de los cambios (aunque este está desde la versión 6.1) es el refuerzo de la contraseña del administrador, que nos exige un password de 8 caracteres con un caracter númerico y un caracter no alfa-numérico.

2password

Otro de los aspectos es la configuración pre-instalación, que nos permite configurar algunos de los servicios de JBoss. Como por ejemplo los niveles de log iniciales:
1

Durante el proceso de instalación nos mostrará el progreso de la misma2

Una vez acabada la instalación, se ha incluido el proceso de configuración donde nos permite configurar:

3

Vault para los passwords:4

Cifrado SSL:5

Un Security Domain:6

Instalar un driver JDBC:7

Configurar un Datasource:8

Y claro, toda esta configuración se aplica tanto al modo Standalone, como al modo Domain, y para hacerlo levanta ambos modos:9

Y lo interesante es que lo hace mediante scripts CLI:10

En resumen, Red Hat ha dado un paso más allá con su servidor middleware, dándole un enfoque más “empresarial” que sus versiones previas. Ahora los administradores JBoss se podrán sentir orgullosos de tener una consola de administración que nada tiene que envidiarle a la de otros vendors.

El nuevo proceso de instalación que nos permite tener un sistema configurado (ojo, que nos permite realizar la instalación desatendida, manteniendo también las configuraciones) antes de acceder a él.

El sabor que me ha dejado ha sido muy bueno.

Y lo más importante, esta release incluye muchas novedades interesantes, que iré abordando poco a poco en nuevos posts, como el RBAC (Role Based Access Control), control de actualizaciones, registro de accesos.

Espero que os haya gustado.

Parted, GPT y LVM

Las limitaciones de la tabla de particiones IBM, limita a un máximo de 4 particiones primarias. Para poder disponer de más particiones, se implementó la partición “extendida” que permitía contener referencias a particiones lógicas, de ese modo podemos disponer de hasta un máximo de 15 particiones (3 primarias, 1 extendida y 11 lógicas).
Aún así, tenemos una pega, debido a que el tamaño de la partición se guarda en sólo 3 bytes, queda limitado a un máximo de 2TiB por partición.
Por ello es necesario usar otra tabla de particiones, la tabla GUID(GPT).
En esta tabla, podremos disponer de un máximo de 128 particiones, por lo que eliminamos la necesidad de crear particiones extendidas y lógicas. Además incrementamos el tamaño de la partición a 8ZiB.

EL comando fdisk sólo nos permite gestionar tablas de particiones IBM, así que si queremos crear y gestionar la tabla de particiones GPT deberemos utilizar la aplicación parted.

Abajo describo una  referencia práctica de uso de parted:

Con esto abrimos la aplicación parted sobre el dispositivo /dev/sda

image

Ahora vamos a crear la tabla de particiones GUID(GPT)

image

Creamos una primera partición de 200MB

image

Como será la partición de arranque, debemos aplicar el “flag” de boot

image

Voy a crear una partición que ocupe el resto del disco

image

Y voy a marcarla para trabajar con LVM

image

La versión de parted incluída en RHEL, todavía no tiene soporte para formatear sistemas de ficheros ext4, por lo que debemos darle formato desde la línea de comandos

image

En último lugar, preparo la estructura LVM para disponer de un esquema para una instalación básica:

image

Listo, ahora a instalar el sistema.

Partprobe y RHEL 6.X

En las versiones RHEL 5.X y anteriores, cuando gestinamos las particiones de los dipositivos con fdisk , se realiza una llamada a la función ioctl() que se encarga de avisar al kernel que la tabla de particiones de un dispositivo ha sido alterada. En ocasiones los recursos del sistema están sobrecargados y la llamada a la función no se realiza correctamente, por lo que nos vemos obligados a recargar las tablas de particiones manualmente con el comando partprobe.

Desde la versión 6.0 de RHEL, se encuentra disponible el paquete parted en su versión 2.1. Las librerías previas de parted tenían un bug que proporcionaba un successful return code en ciertos tipos de discos al ejecutar partprobe, pero que en realidad no había recargado la tabla de particiones. Ante el peligro que eso podía suponer en el dispositvo donde se encuentra nuestro sistema de ficheros raíz ( / ) , desde la versión 2.1 decidieron modificar el comportamiento para que al crear una partición en ese dispositivo la única opción que tuviéramos de recargar la tabla de particiones fuese reiniciar el sistema. Evidentemente, en sistemas en producción, esto puede resultar imposible y traería dolores de cabeza a cualquier sysadmin.

Este comportamiento no ha sido restaurado hasta la versión 2.3 del paquete parted. Pero en la reciente versión 6.3 de RHEL aún se utiliza la 2.1 de  parted.

¿Solución? Pues antes de tirarnos por un puente, o rompernos la cabeza contra el monitor, podemos utilizar otros recursos de gestión de particiones.

Un ejemplo preciso es el comando partx, miembro del paquete util-linux-ng, que tal y como la descripción dice:

The util-linux-ng package contains a large variety of low-level system
utilities that are necessary for a Linux system to function

nos ofrece una gran variedad de utilidades de bajo-nivel en el sistema.

Ok, y ahora ¿cómo usarlo?

Pues echando mano de las páginas del man relativas a partx, tendremos en consideración los siguientes ejemplos:

Recargar las tablas de particiones del dispositivo /dev/sda en el kernel:

dave@xserinfo # sudo cat /proc/partitions

major minor #blocks name

252    0       6291456   sda
252    1       262144     sda1
252    2       4694016   sda2

dave@xserinfo # sudo partx -a /dev/sda

dave@xserinfo # sudo cat /proc/partitions

major minor #blocks name

252    0       6291456   sda
252    1       262144     sda1
252    2       4694016   sda2
252    3       262144     sda3

Como se puede apreciar, sin necesidad de reiniciar el sistema, recargamos la tabla de particiones.

A la hora de eliminar una partición, nos encontraremos con el mismo problema, así que también haremos uso del comando partx para resolverlo:

dave@xserinfo # sudo cat /proc/partitions

major minor #blocks name

252    0       6291456   sda
252    1       262144     sda1
252    2       4694016   sda2
252    3       262144     sda3

dave@xserinfo # sudo partx -d –nr 3 /dev/sda

dave@xserinfo # sudo cat /proc/partitions

major minor #blocks name

252    0       6291456   sda
252    1       262144     sda1
252    2       4694016   sda2

La opción -d elimina una partición de la tabla en uso por el kernel, pero hemos de indicarle el número de partición con la opción –nr, en nuestro ejemplo partx -d –nr 3 /dev/sda. Pero no sólo podemos indicarle una única partición, sino que podemos indicar un rango de particiones, partx -d –nr 3-6 /dev/sda. Esto daría de baja las particiones 3, 4, 5 y 6 del dispositivo sda en el kernel, y sólo tendremos en cuenta que para poder darlas de baja deberán estar desmontadas, si no no las eliminará, pero si es una partición extendida…. DEBEREMOS TENER CUIDADO.

Resetear password de root

Bueno, este es una de esas tareas que todo administrador debe conocer al dedillo, bien porque se olvide de la contraseña o bien porque hayan vulnerado el sistema y cambien el password de root.

Durante el proceso de arranque, en la selección de kernel, podemos agregar parámetros al mismo para alterar el comportamiento del mismo. Uno de estos parámetros puede ser el runlevel.
Cuando aparezca la selección del kernel en el grub, debemos pulsar la tecla ESC para detener el timeout. En el menú resaltamos el kernel con las flechas up/down. Una vez elegido el kernel pulsamos la tecla “a” para agregar el parámetro “1” al final de la línea. Este parámetro arrancará nuestro sistema en runlevel 1, donde estaremos logueados como root sin necesidad de introducir password.
Una vez nos haya levantado la shell sólo hace falta ejecutar el comando passwd y elegir el nuevo password d root.

En RHEL 6, debido a SELinux, antes de cambiar el password debemos desactivar SELinux, así que ejecutaremos “setenforce 0

Ahora sólo nos hace falta ejecutar “init 3” para levantar todos los servicios o “init 5” para levantar el escritorio.