Ya que empiezan a visitarme de otros países, he decidido modelar la interfaz (y los posts) añadiendo las entradas en dos idiomas: Español (por defecto) e Inglés (opcional). Esto me costará el doble de trabajo, pero hay que globalizarse ;-P
Poco a poco iré actualizando las entradas más antiguas.
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:
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:
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!!
Remodelación….
Después de un tiempo sin actualizar (un tiempo digo… una eternidad), me he decidido a remodelar el entorno, cambiar de tema (gráfico) y de temas también, ya que dejaré un poco de lado (no del todo, tranquilos) el tema de RHEL y me centraré en temas de JBoss, de hecho os voy a dejar un avance de mi experiencia en el proceso de instalación de la nueva versión de JBoss EAP 6.2 que ha salido a la luz recientemente.
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
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.
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:
Durante el proceso de instalación nos mostrará el progreso de la misma
Una vez acabada la instalación, se ha incluido el proceso de configuración donde nos permite configurar:
Y claro, toda esta configuración se aplica tanto al modo Standalone, como al modo Domain, y para hacerlo levanta ambos modos:
Y lo interesante es que lo hace mediante scripts CLI:
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
Ahora vamos a crear la tabla de particiones GUID(GPT)
Creamos una primera partición de 200MB
Como será la partición de arranque, debemos aplicar el “flag” de boot
Voy a crear una partición que ocupe el resto del disco
Y voy a marcarla para trabajar con LVM
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
En último lugar, preparo la estructura LVM para disponer de un esquema para una instalación básica:
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 sda2dave@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 sda3dave@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.