Usamos cookies propias y de terceros para ayudarte en tu navegación. Si continuas navegando consideramos que aceptas el uso de cookies. OK

miércoles, 10 de diciembre de 2014

Actualizando Fedora 20 a Fedora 21 sin reinstalar



A la luz de una versión de Linux Fedora (21), es necesario conocer como hacer el upgrade sin reinstalar. Para esto existe una herramienta llamada fedup que nos permite hacer el upgrade desde un repositorio, una imagen ISO o directamente con repositorios en linea. Veamos como es el procedimiento, dicho sea de paso, muy sencillo.
Lo primero es decidir que versión de Fedora 21 vamos a instalar, ya que a diferencia de todas las releases anteriores, esta se divide en Fedora 21 Server, Fedora 21Workstation y Fedora 21 Cloud.

Veamos como se hace.

Este método usa los repositorios a través de internet.

1- Primero instalamos la aplicación fedup y luego ejecutamos el upgrade.        
        #sudo yum install fedup
         #sudo fedup --network 21 --product=workstation (En este caso estamos upgradeando a la version Workstation)

2- Una vez que el proceso de fedup finalizó sin errores se hace un reboot y seleccionamos la opción System Upgrade.

3- Ya finalizado el upgrade realizamos una limpieza ejecutando:
     #rpm --rebuilddb
     #yum distro-sync --setopt=deltarpm=0


Y listo, a disfrutar!!

jueves, 2 de octubre de 2014

Agregando una capa adicional de seguridad a nuestro Linux con TCP Wrappers

TCP Wrappers (Envoltorio de TCP) es un sistema de red ACL que trabaja en terminales y que se utiliza para filtrar el acceso de red a servicios de protocolos de internet que corren en sistemas Unix o sus variantes Linux.
Permite que las direcciones IP, los nombres de terminales y/o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.
Permite:
- Abrir el sistema local solo a aquellos a los que quiero permitir el acceso.
- Permitir solo el servicio que uno quiere que ese host remoro acceda.

Se puede utilizar como medida de seguridad o seguridad adicional a un sistema que estamos protegiendo un IPTABLES o IPFILTER. (Veamos la imagen)



Para su funcionamiento, se utilizan dos archivos: /etc/hosts.allow (Permite el acceso) y el /etc/hosts.deny (deniega el acceso).
Cuando un cliente requiere una conexión, ambos archivos son consultados y se toma una desición:
1- Si el daemon está en el hosts.allow se brinda el acceso.
2- Si el daemon está en el hosts.deny se deniega el acceso.
3- Si no hay macheo en hosts.allow ni en hosts.deny, se brinda acceso.

La primera linea que coincida determina la resolución.
Si ambos archivos no existen o estan vacios se deja que todos los clientes accedan a todos los demonios.

El funcionamiento es sencillo. Los formatos para /etc/hosts.allow y /etc/hosts.deny son idénticos. Cualquier línea en blanco que comience con un símbolo de numeral o almohadilla (#) será ignorada, y cada regla debe estar en su propia línea.

Las reglas se tienen que formatear de la siguiente manera:

<daemon list>: <client list> [: <option>: <option>: ...]

<daemon list> — Una lista separada por comas de los nombres de procesos (no de los nombres de servicios) o el comodín ALL . La lista de demonios también acepta operadores  para permitir mayor flexibilidad.

<client list> — Una lista separada por comas de nombres de host, direcciones IP, patrones especiales  o comodines especiales la cual identifica los hosts afectados por la regla. La lista de clientes también acepta operadores para permitir mayor flexibilidad.

<option> — Una acción opcional o una lista separada con puntos y comas de acciones realizadas cuando la regla es activada. Los campos de opciones soportan expansiones , lanzan comandos desde el shell, otorgan o prohiben el acceso y alteran el comportamiento de la conexión .
Ej:

- Permitir acceso ssh únicamente a unas IPs

/etc/hosts.allow Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.

sshd: 192.168.0.111 192.168.0.112 192.168.0.113

/etc/hosts.deny Denegamos al resto.

sshd: ALL

 
- Bloquear todo excepto lo declarado en /etc/hosts.allow 

/etc/hosts.allow

sshd: 192.168.0.111 192.168.0.112 192.168.0.113

/etc/hosts.deny Denegamos acceso al resto de servicios excepto SSH a las Ips indicadas. La máquina quedará blindada excepto el acceso SSH a las Ips permitidas:

ALL: ALL


- Permitir también el uso de sendmail a una subred y unos hosts concretos
 
/etc/hosts.allow Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.

sshd: 192.168.0.111 192.168.0.112 192.168.0.113
sendmail: 10.0.0.0/24 test.com prueba.com

/etc/hosts.deny

ALL: ALL

 
- Permitir todo y bloquear el acceso total a una única IP

/etc/hosts.allow

ALL: ALL

/etc/hosts.deny

ALL: 172.16.1.1


Comodines
 
Los comodines permiten a los wrappers TCP coincidir más fácilmente grupos de demonios o hosts. Son usados con mayor frecuencia en el campo de lista de cliente de las reglas de acceso.

Se pueden utilizar los siguientes comodines:

    ALL — Hace corresponder todo. Se puede usar para la lista de demonios o en la lista de clientes.

   LOCAL — Hace corresponder todos los nombres de máquinas que no contengan un punto (.), tal como localhost.

   KNOWN — Hace corresponder todas las máquinas cuyos nombres y direcciones son conocidos o donde el usuario es conocido.

  UNKNOWN — Hace corresponder todas las máquinas cuyos nombres y direcciones sean desconocidas o en el caso en el que se desconozca el usuario.

   PARANOID — Hace corresponder todas las máquinas cuyo nombre no se corresponda con la dirección.


Patrones
Los patrones se pueden utilizar en el campo de lista de cliente de las reglas de acceso para especificar de forma más precisa grupos de host clientes.

La siguiente es una lista de los patrones más comúnmente aceptados para una entrada de lista de cliente:

    Nombre de host comenzando con un punto (.) — Al colocar un punto al comienzo de un nombre de host, se hace coincidir todos los hosts compartiendo los componentes listados del nombre. El ejemplo siguiente aplicaría a cualquier host dentro del dominio example.com:

    ALL : .example.com

    Dirección IP que termina con un punto (.) — Al colocar un punto al final de una dirección IP hace corresponder todos los hosts compartiendo el grupo numérico inicial de una dirección IP. El ejemplo siguiente aplicará a cualquier host dentro de la red 192.168.x.x:

    ALL : 192.168.

viernes, 22 de agosto de 2014

Administración de fallos del kernel (dumpadm coreadm)

 En esta entrega veremos como administrar los fallos del kernel en un sistema Solaris. Cuando se produce un error grave en el sistema operativo, éste envía un mensaje a la consola en la que describe el error. El sistema operativo genera un volcado de la memoria en un slice de disco (POR LO GENERAL LA SWAP)(para luego ser analizado) y luego se reinicia.

  •  Hay dos tipos:
  1.  Crash dump (panic del sistema.   Se usa el dumpadm).
  2.  Core dump (panic de un proceso. Se usa coreadm).

  1. VOLCADO POR FALLO DEL SISTEMA (Crash Dump)
  •  El archivo que contiene la configuración se llama /etc/dumpadm.conf. Dicho archivo no se modifica a mano, se modifica por medio del comando dumpadm.
#dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c0d0s1 (swap)
Savecore directory: /var/crash/sys-02
Savecore enabled: yes

El “Dump content” puede variar entre paginas del kernel, all o cuproc. Se cambia mediante el comando # dumpadm –c contenido.
El “Dump device” es el lugar de volcado. Por defecto es la SAWP. Pero puede ser otro lugar. Se cambia mediante #dumpadm –d /directorio.
El “Savecore directory” es el directorio donde se crea el archivo. Este directorio debe estar en un slice que tenga como minimo una cantidad de espacio libre del tamaño de la SWAP. Es conveniente llevarlo a otro slice que no sea el /. Se modifica con #dumpadm –s directorio.
“Savecore enabled” indica si el comando savecore se ejecuta automáticamente durante el inicio.


      2.  VOLCADO POR PANIC DEL PROCESO(Core Dump)

  •  Cuando un proceso falla, el sistema crea un archivo de nucleo central con una copia del espacio de memoria manejada por los procesos. Cuando se crea un archivo del nucleo central, el sistema genera dos copias del mismo: un archivo global y otro por proceso. (Se puede configurar que se creen ambos archivos, uno solo o ninguno.)
  •   Para ver la configuración actual se utiliza el comando #coreadm. El archivo que contiene la confiGuracion es /etc/coreadm.conf.

Algunos ejemplos sobre el uso de los comandos.

Uso del comando dumpadm para mostrar la ubicación del
directorio de archivos del núcleo central
Lleve a cabo los pasos siguientes:

1. Utilice el comando dumpadm sin argumentos para ver la configuración de volcado actual.
# dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c1d0s1 (swap)
Savecore directory: /var/crash/sys01
Savecore enabled: yes

#
Explicación de la salida del comando:
Contenido del volcado: kernel pages
Dispositivo de volcado: /dev/dsk/c1d0s1 (swap)
Directorio savecore: /var/crash/sys01
¿Está savecore habilitado? Sí
 
2. Utiliczar el comando dumpadm para cambiar el dispositivo de
volcado al slice 5 de la segunda unidad de disco.
# dumpadm -d /dev/dsk/c2d0s5
Dump content: kernel pages
Dump device: /dev/dsk/c2d0s5 (dedicated)
Savecore directory: /var/crash/sys01
Savecore enabled: yes

#

4. Obligue al kernel a guardar una instantánea en tiempo real del
sistema en ejecución y escriba una nueva serie de archivos de
volcado del sistema utilizando el comando savecore -L.
# savecore -L
dumping to /dev/dsk/c2d0s5, offset 65536, content: kernel
100% done: 63380 pages dumped, compression ratio 4.28, dump succeeded
System dump time: Fri Apr 20 13:40:20 2007
Constructing namelist /var/crash/sys01/unix.0
Constructing corefile /var/crash/sys01/vmcore.0
100% done: 63380 of 63380 pages saved

#

4. Utilice el comando file para asegurarse de que el volcado se ha realizado correctamente e identificar los archivos del directorio savecore.
La salida debería ser similar a la siguiente si utiliza un sistema x86/x64:
# cd /var/crash/sys01
# ls
bounds unix.0 vmcore.0
# file vmcore.0
vmcore.0: SunOS 5.10 Generic_118855-33 64-bit Intel crash dump from

''
#

Usando el comando coreadm para configurar la posición de almacenamiento de los archivos del núcleo central.

Lleve a cabo los pasos siguientes:
1. Utilice el comando coreadm para mostrar la configuración predeterminada de los archivos del núcleo central.
# coreadm
global core file pattern:
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: disabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: disabled

#

2. Cree un directorio para los archivos del núcleo central y habilite una ruta de archivo del núcleo central global en la que se utilice el directorio creado.
# mkdir /var/core
# coreadm -e global -g /var/core/core.%f.%p


3. Active el registro de volcados del núcleo globales para que se genere un mensaje cuando el sistema cree un archivo del núcleo central global.
# coreadm -e log

4. Acceda a la información de configuración de los archivos del núcleo central para verificar los cambios.
# coreadm
global core file pattern: /var/core/core.%f.%p
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: enabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: enabled

#

5. Abra otra ventana de terminal. En esta ventana, cree un directorio nuevo que se denomine /var/tmp/dir y cambie a ese directorio.
# mkdir /var/tmp/dir
# cd /var/tmp/dir

#

6. Verifique que el directorio de trabajo actual es /var/tmp/dir.
# pwd
/var/tmp/dir


7. Ejecute el comando ps para mostrar el PID del shell asociado con la nueva ventana de terminal. A continuación, utilice el comando kill para enviar una señal SIGFPE (señal 8) al shell. (SIGFPE
hace que se cree un archivo del núcleo central.)
# ps
PID TTY TIME CMD
1204 pts/2 0:00 ksh
1208 pts/2 0:00 ps
# kill -8 1204

Nota – El comando kill -8 interrumpe la actividad del shell y de la ventana de terminal en la que se ejecuta.

8. En la ventana de terminal original, compruebe que el directorio de trabajo actual del shell antiguo presenta un archivo del núcleo central. Utilice el comando file para verificar que el archivo del
núcleo central pertenece al shell anterior.
# cd /var/tmp/dir
# ls
core
# file core

core: ELF 32-bit LSB core file 80386 Version 1, from 'sh'

9. Utilice el comando ls para localizar un archivo del núcleo central en el directorio /var/core.
# ls /var/core
core.sh.1204


10. Lea el mensaje que se genera en la ventana de la consola y el archivo /var/adm/messages a causa de la habilitación del registro de coreadm.
# tail /var/adm/messages
...
Apr 20 13:58:46 sys01 genunix: [ID 603404 kern.notice] NOTICE: core_log:
sh[1204] core dumped: /var/core/core.sh.1204

martes, 5 de agosto de 2014

Virtualización en Solaris (Solaris Zones) Parte II

En la primera entrega vimos las características de las zonas en unix. Ahora vamos a ver como se configuran y los comandos relacionados.
Uno de los comandos más importante es zonecgf
El comando zonecfg se utiliza para configurar cada zona. Se pueden realizar las siguientes operaciones:
  • Crear o borrar la configuración de zona.
  • Establecer las propiedades de los recursos agregados a una configuración.
  • Consultar o verificar una configuración.
  • Recuperar una configuración anterior.
  • Salir de la sesión de zonecfg.

Parámetros de los recursos de zonecfg
La utilidad zonecfg incluye los siguientes tipos de recursos:
  • zonename: define el nombre de la zona y sirve de identificador de lazona para la utilidad de configuración.
  • zonepath: establece el recurso de rutas de acceso a la zona y constituye la ruta al sistema de archivos raíz de la zona.
  • autoboot: determina si la zona se reiniciará cuando se reinicie la zona global.
  • fs: asigna los parámetros de los recursos correspondientes a los sistemas de archivos. El uso del parámetro special permite a la zona local montar recursos del sistema de archivos global en diferentes directorios.

Parámetros del recurso fs:



dir
Punto de montaje de la zona no global.
special
Archivo de dispositivo de bloques que especifica la ubicación del sistema de archivos.
raw
Archivo de dispositivo que debe utilizarse para el comando fsck.
type
Tipo de sistema de archivos.
options
Admite parámetros similares a los utilizados con el comando mount.


  • inherit-pkg-dir: proporciona acceso a los paquetes de software del sistema global. La zona no global recibe el contenido de los paquetes de software situados en el directorio inherit-pkg-dir en modo de sólo lectura. Los recursos contenidos de forma predeterminada en inherit-pkg-dir son: /lib, /platform, /sbiny /usr.
  • net: proporciona a las zonas no globales interfaces lógicas de las interfaces de la zona global. Las interfaces de red se activan cuando la zona pasa del estado “instalada” al estado “preparada”.
  • device: hace referencia a dispositivos para los comandos select, add o remove. Cada zona puede tener dispositivos que deberían configurarse cuando pasa del estado “instalada” al estado “preparada”.
  • attr: permite al administrador global asignar parámetros de atributos genéricos, como el tipo de nombre y el valor. El tipo debe ser int (entero) uint (entero sin signo), Boolean (booleano) o string (cadena).

Proceso de configuración de zonas

El texto siguiente contiene un ejemplo de configuración de una zona llamada work-zone:
1 global# zonecfg -z work-zone
2 zonecfg:work-zone> create
3 zonecfg:work-zone> set zonepath=/export/work-zone
4 zonecfg:work-zone> set autoboot=true
5 zonecfg:work-zone> add fs
6 zonecfg:work-zone:fs> set dir=/mnt
7 zonecfg:work-zone:fs> set special=/dev/dsk/c0t0d0s7
8 zonecfg:work-zone:fs> set raw=/dev/rdsk/c0t0d0s7
9 zonecfg:work-zone:fs> set type=ufs
10 zonecfg:work-zone:fs> add options [logging]
11 zonecfg:work-zone:fs> end
12 zonecfg:work-zone> add inherit-pkg-dir
13 zonecfg:work-zone:inherit-pkg-dir> set dir=/usr/sfw
14 zonecfg:work-zone:inherit-pkg-dir> end
15 zonecfg:work-zone> add net
16 zonecfg:work-zone:net> set physical=ce0
17 zonecfg:work-zone:net> set address=192.168.0.1
18 zonecfg:work-zone:net> end
19 zonecfg:work-zone> add device
20 zonecfg:work-zone:device> set match=/dev/sound/*
21 zonecfg:work-zone:device> end
22 zonecfg:work-zone> add attr
23 zonecfg:work-zone:attr> set name=comentario
24 zonecfg:work-zone:attr> set type=string
25 zonecfg:work-zone:attr> set value="Zona de trabajo"
26 zonecfg:work-zone:attr> end
27 zonecfg:work-zone> verify
28 zonecfg:work-zone> commit
29 zonecfg:work-zone> exit

Línea 1: esta línea inicia la utilidad zonecfg en modo interactivo. La zona se denomina work-zone.
Línea 2: inicia la configuración en la memoria.
Línea 3: el recurso de ruta de acceso de la zona, en este caso /export/work-zone, es la ruta de acceso al directorio raíz de la zona. Cada zona tiene una ruta de acceso a su directorio raíz que es relativa al directorio raíz de la zona global. Esta ruta debe existir en el momento de la instalación. El directorio de la zona global debe tener visibilidad restringida. Debe ser propiedad de root con el modo 700. En este ejemplo, el directorio de la zona global es /export.
Línea 4: indica que la zona debería arrancar automáticamente al arrancar el sistema.
Línea 5: inicia la configuración de un sistema de archivos. El ámbito del comando cambia al de los sistemas de archivos.
Línea 6: establece el punto de montaje del sistema de archivos, en este ejemplo /mnt.
Línea 7: indica que el archivo de dispositivos de bloques especial /dev/dsk/c0t0d0s7 debe montarse como /mnt en work-zone.
Línea 8: establece /dev/rdsk/c0t0d0s7 como archivo de dispositivo sin formato (raw). El demonio zoneadmd ejecuta automáticamente el comando fsck en modo de comprobación no interactiva sobre este dispositivo antes de montar el sistema de archivos.
Línea 9: indica que el tipo de sistema de archivos es UFS.
Línea 10: indica la opción específica del sistema de archivos, habilitar el registro de las actualizaciones del sistema de archivos en este procedimiento.
Línea 11: finaliza la sección de configuración del sistema de archivos de este procedimiento.
Línea 12: inicia la configuración de un sistema de archivos de sólo lectura compartido que se ha montado en bucle desde la zona global.
Línea 13: indica que /usr/sfw debe montarse en bucle desde la zona global.
Línea 14: finaliza la sección de montaje en bucle de este procedimiento.
Línea 15: inicia la sección de configuración de red de este procedimiento.
Línea 16: indica que la interfaz de red física que debe usar esta zona es GigaSwift.
Línea 17: especifica la dirección IP de la interfaz de red, en este procedimiento es 192.168.0.1.
Línea 18: finaliza la sección de configuración de red de este procedimiento.
Línea 19: inicia la sección de configuración de dispositivos de este procedimiento.
Línea 20: proporciona visibilidad sobre la zona no global a los dispositivos que coinciden con el patrón /dev/sound/* de la zona global.
Línea 21: finaliza la sección de configuración de dispositivos de este procedimiento.
Línea 22: inicia la sección de configuración de atributos de este procedimiento.
Línea 23: establece el nombre del atributo, en este caso, comentario.
Línea 24: define el tipo de atributo como una cadena de caracteres.
Línea 25: asigna un valor a la cadena de caracteres, en este procedimiento, “Zona de trabajo”.
Línea 26: finaliza la sección de configuración de atributos de este procedimiento.
Línea 27: comprueba si la configuración actual es correcta. Verifica si todos los recursos tienen todas las propiedades necesarias especificadas.
Línea 28: confirma la configuración actual y la traslada de la memoria al medio de almacenamiento estable. Hasta que se confirma la configuración de la memoria, es posible anular los cambios con el comando revert.
Línea 29: cierra la sección de zonecfg. Puede utiliza la opción -F (forzar) con exit.

La zona ya está preparada para su instalación, arranque y uso.


Visualización de la configuración de las zonas

El comando zonecfg puede utilizarse para ver la configuración de la zona.
# zonecfg -z work-zone info
zonepath: /export/work-zone
autoboot: true
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
inherit-pkg-dir:
dir: /opt/sfw
fs:
dir: /mnt
special: /dev/dsk/c0t0d0s7
raw: /dev/rdsk/c0t0d0s7
type: ufs
options: [logging]
net:
address: 192.168.0.1
physical: ce0
device
match: /dev/sound/*
attr:
name: comentario
type: string
value: "Zona de trabajo"
#

Cuando se traslada la configuración de la zona al medio de almacenamiento estable, el archivo se guarda en el directorio /etc/zones con formato XML.


Por ejemplo:
# more /etc/zones/work-zone.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE zone PUBLIC "-//Sun Microsystems Inc//DTD Zones//EN"
"file:///usr/share/lib/xml/dtd/zo
necfg.dtd.1">
<zone name="work-zone" zonepath="/export/work-zone" autoboot="true">



Uso del comando zoneadm

El comando zoneadm es la principal herramienta de instalación y administración de las zonas no globales. Las operaciones que utilicen este comando deben ejecutarse desde la zona global. Zoneadm permite realizar las siguientes tareas:
● Verificar la configuración de una zona.
● Instalar una zona.
● Arrancar una zona.
● Reiniciar una zona.
● Mostrar información sobre una zona en ejecución.
● Trasladar una zona.
● Desinstalar una zona.
● Suprimir una zona con el comando zonecfg


Verificación de una zona configurada

Es posible verificar una zona antes de instalarla. Si omite este procedimiento, la verificación se efectúa automáticamente al instalarla zona.

Para verificar la configuración de una zona, se utiliza el comando
zoneadm -z nombre_zona verify. Por ejemplo:

global# zoneadm -z work-zone verify
Warning: /export/work-zone does not exist, so it cannot be verified. When
zoneadm install is run, install will try to create /export/work-zone, and
verify will be tried again, but the verify may fail if: the parent
directory of /export/work-zone is group- or other-writable or
/export/work-zone overlaps with any other installed zones.
En este ejemplo, aparece un mensaje para advertir al administrador de que la ruta indicada en zonepath no existe. Esto ilustra el tipo de mensajes que envía el comando zoneadm.
Si no aparece ningún mensaje de error, puede instalar la zona


Instalación de una zona configurada

El comando zoneadm -z nombre_zona install se utiliza para realizar las tareas de instalación de las zonas no globales. Es preciso ser administrador global para instalar una zona. Por ejemplo:

global# zoneadm -z work-zone install

El comando zoneadm list -iv se utiliza para ver la lista de zonas instaladas y su estado:
global# zoneadm list -iv
ID NAME STATE PATH
0 global running /
- work-zone installed /export/work-zone

En este ejemplo, la zona work-zone ha alcanzado el estado de “instalada”.
Se le asignará el ID de zona cuando arranque.


Arranque de una zona

Cuando se arranca una zona, ésta entra en estado de ejecución. Si define la propiedad del recurso autoboot como true al configurar una zona, ésta arranca automáticamente al arrancar la zona global. El valor
predeterminado es false.
Las zonas pueden iniciarse de forma manual desde el estado de instaladas
.
Para arrancar una zona se utiliza el comando zoneadm -z nombre_zona
boot:
global# zoneadm -z work-zone boot
global# zoneadm list -v
ID NAME STATE PATH
0 global running /
1 work-zone running /export/work-zone

En este ejemplo, la zona work-zone ha alcanzado el estado de ejecución.
Durante el proceso de arranque, se le ha asignado el ID 1

Detención de una zona

El comando zoneadm halt se utiliza para suprimir el entorno de aplicaciones y la plataforma virtual de una zona. Una vez hecho, la zona regresa al estado de instalada. Todos los procesos se cancelan, los dispositivos
se desconfiguran, se desactivan las interfaces de red, se desmontan los sistemas de archivos y se destruyen las estructuras de datos del núcleo.

global# zoneadm -z work-zone halt
global# zoneadm list -v
ID NAME STATE PATH
0 global running /
- work-zone installed /export/work-zone
El comando halt no ejecuta ninguna secuencia de comandos de cierre dentro de la zona. El usuario root de la zona puede cerrar la sesión mientras está conectado a la zona y ejecutar en ella secuencias de cierre.


Reinicio de una zona

El comando zoneadm reboot se utiliza para reiniciar una zona. La zona se detiene y vuelve a arrancar.

global# zoneadm -z work-zone reboot
global# zoneadm list -v
ID NAME STATE PATH
0 global running /
2 work-zone running /export/work-zone
En este ejemplo, el ID de zona asignado antes de reiniciar es 1.
Después de volver arrancar, el ID de zona ha cambiado a 2.


Inicio de sesión y operaciones en la zona

El comando zlogin se utiliza para acceder a la zona instalada desde la zona global. Recuerde que, en la configuración predeterminada, los usuarios root no están autorizados a iniciar la sesión en las zonas. Para
acceder a una zona como si estuviese en su consola, utilice la opción -C.
# zlogin -C work-zone
[Connected to zone 'work-zone' console]
La primera vez que la zona arranca después de su instalación, se le pide que especifique un tipo de terminal, el nombre de host, la zona horaria y la contraseña de root.


Traslado de una zona

La función move zone permite trasladar una zona no global de un punto de un sistema a otro punto del mismo sistema. Se hace de tal manera que funciona dentro de un mismo sistema de archivos y entre sistemas de
archivos, siempre de acuerdo con las reglas de zonepath. Es decir, no puede ejecutarse con un sistema de archivos NFS montado.
Para trasladar una zona no global, se utiliza el comando zoneadm.
Por ejemplo:
# zoneadm -z work-zone move /rutanueva
En este ejemplo, /rutanueva indica la nueva ruta especificada con
zonepath para la zona.
Migración de una zona
Una zona no global pueden trasladarse de un sistema a otro utilizando los comandos zonecfg y zoneadm. El procedimiento desconecta la zona (detenida) de su ubicación actual y la conecta a otra ubicación.
La zona global del sistema de destino debe ejecutar lo siguiente:
● La misma versión que el host original
● Las mismas versiones de los paquetes y parches del sistema operativo que el host original
El proceso de desconexión de la zona genera la información necesaria para volver a conectar la zona a un sistema diferente. El proceso de conexión de la zona verifica si la nueva máquina tiene la configuración correcta para alojar la zona.
La migración de una zona de un sistema a otro implica los pasos siguientes:

1. Desconectar la zona: esto la deja en el estado configurada dentro del sistema de origen. Internamente, el sistema genera un archivo de manifiesto con la información necesaria para certificar que la zona podrá conectarse sin problemas al nuevo host.
Para desconectar una zona, primero deténgala y luego realice la desconexión:

host1# zoneadm -z work-zone halt
host1# zoneadm -z work-zone detach
Nota – La operación de desconexión genera metadatos que describen la versión de los paquetes y parches instalados en el host. Esta información se guarda en un archivo XML de zonepath, junto con los directorios
rooty dev. Esto facilita el traslado de zonepath al otro sistema.

2. Migrar los datos: es preciso trasladar a un nuevo sistema host los datos que representan a la zona. El fragmento siguiente contiene un ejemplo de migración de esos datos de host1 a host2.
En host1:
host1# cd /export/zones
host1# tar cf work-zone.tar work-zone
host1# sftp host2
Connecting to host2...
Password:
sftp> cd /export/zones
sftp> put work-zone.tar
Uploading work-zone.tar to /export/zones/work-zone.tar
sftp> quit

En host2:
host2# cd /export/zones
host2# tar xf my-zone.tar

3. Configurar la zona: debe crear la configuración de la zona en el nuevo host utilizando el comando zonecfg. Por ejemplo:
host2# zonecfg -z work-zone
work-zone: No such zone configured

Utilice el comando create para empezar a configurar una zona nueva.
zonecfg:work-zone> create -a /export/zones/work-zone

     /**** Hay que asegurarse que todos los ajustes necesarios se han hecho, ej: configuración de interfaz de red.

zonecfg:work-zone> commit
zonecfg:work-zone> exit

4. Conectar la zona: esta operación verifica si el host puede albergar la zona antes de efectuar la conexión. La zona queda en estado instalada.
La sintaxis para conectar una zona es:
host2# zoneadm -z work-zone attach



Supresión de una zona

Antes de suprimir una zona, no olvide hacer la copia de seguridad de todos lo archivos que quiera conservar. El primer paso de la supresión es detener Solaris 10 y liberar la memoria del sistema.
En el siguiente ejemplo, la zona se suprime del sistema global:
Atención – Esta operación no conlleva el cierre controlado o regular de la zona. Es posible que se pierdan datos de los procesos ejecutados en ella.

# zoneadm list -cp
0:global:running:/
3:work-zone:running:/export/work-zone
# zoneadm -z work-zone halt
# zoneadm list -cp
0:global:running:/
-:work-zone:installed:/zones/work-zone
En este punto, la zona no utiliza ningún recurso del sistema excepto el espacio del sistema de archivos. Desinstale la zona para anular el uso de los archivos.

# zoneadm -z work-zone uninstall
Are you sure you want to uninstall zone work-zone (y/[n])? y
# zoneadm list -cp
0:global:running:/
-:work-zone:configured:/export/work-zone

El último paso es borrar la configuración de la zona del sistema global con el subcomando delete.
# zonecfg -z work-zone delete
Are you sure you want to delete zone work-zone (y/[n])? y
# zoneadm list –cp
0:global:running:/


Modificar una zona: cuando se quiere modificar un recurso, primero se selecciona el recurso y luego se lo modifica.

Ej: se modifica la direccion IP:

# zonecfg -z zona1                             Ingresas a la zona.
zonecfg:zona1> info            Muestra informacion de los recursos de la zona.
zonename: zona1
zonepath: /zona1
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
        dir: /lib
inherit-pkg-dir:
        dir: /platform
inherit-pkg-dir:
        dir: /sbin
net:
        address: 172.20.4.183        Aca está el recurso que queremos modificar.
        physical: e1000g0
        defrouter no especificado
zonecfg:zona1> selec           
select attr              select dedicated-cpu     select net
select capped-cpu        select device            select rctl
select capped-memory     select fs
select dataset           select inherit-pkg-dir
zonecfg:zona1> select net address=172.20.4.183    Seleccionamos el recurso
zonecfg:zona1:net> set address=172.20.4.185    Seteamos el Nuevo valor.
zonecfg:zona1:net> end
zonecfg:zona1> commit                Confirmamos los cambios
zonecfg:zona1> exit

///Hay que tener en cuenta que si usamos commando vmstat en la zona par aver la memoria, estamos viendo la del sistema fisico por mas que tengamos configurado limites. Lo mejor es instalar el software top, este se puede ejecutar en cada zona y ver la memoria con los limites.///



Ej: Asignar limite de memoria a la zona.

# zonecfg -z zona1                Entras a la zona
zonecfg:zona1> info                Muestra informacion a la zona
zonename: zona1
zonepath: /zona1
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
        dir: /lib
inherit-pkg-dir:
        dir: /platform
inherit-pkg-dir:
        dir: /sbin
inherit-pkg-dir:
        dir: /usr
inherit-pkg-dir:
        dir: /usr/sfw
net:
        address: 172.20.4.185
        physical: e1000g0
        defrouter no especificado
zonecfg:zona1>                Despliego los commando presionando la tecla TAB.
add      commit   delete   export   info     revert   set
clear    create   exit     help     remove   select   verify
zonecfg:zona1> add ca
add capped-cpu     add capped-memory    Agrego el recurso de limite de memoria
zonecfg:zona1> add capped-memory
zonecfg:zona1:capped-memory>
cancel          clear swap      help            set physical=
clear locked    end             info            set swap=
clear physical  exit            set locked=
zonecfg:zona1:capped-memory> set physical=50M      Configuro el limite de memoria fisica.
zonecfg:zona1:capped-memory> set swap=100M        Configuro el limite de la swap.
zonecfg:zona1:capped-memory> end
zonecfg:zona1> commit                    Confirmo los cambios.
zonecfg:zona1> info                        Muestro la informacion
zonename: zona1
zonepath: /zona1
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
        dir: /lib
inherit-pkg-dir:
        dir: /platform
inherit-pkg-dir:
        dir: /sbin
inherit-pkg-dir:
        dir: /usr
inherit-pkg-dir:
        dir: /usr/sfw
net:
        address: 172.20.4.185
        physical: e1000g0
        defrouter no especificado
capped-memory:
        physical: 50M
        [swap: 100M]
rctl:
        name: zone.max-swap
        value: (priv=privileged,limit=104857600,action=deny)


Ej: Asignar limite de cpu a la zona.

# zonecfg -z zona1                Entras a la zona
zonecfg:zona1> info                Muestra informacion a la zona
zonename: zona1
zonepath: /zona1
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
        dir: /lib
inherit-pkg-dir:
        dir: /platform
inherit-pkg-dir:
        dir: /sbin
inherit-pkg-dir:
        dir: /usr
inherit-pkg-dir:
        dir: /usr/sfw
net:
        address: 172.20.4.185
        physical: e1000g0
        defrouter no especificado
zonecfg:zona1>                Despliego los commando presionando la tecla TAB.
add      commit   delete   export   info     revert   set
clear    create   exit     help     remove   select   verify
zonecfg:zona1> add ca
add capped-cpu     add capped-memory    Agrego el recurso de limite al cpu
zonecfg:zona1> add capped-cpu
zonecfg:zona1:capped-cpu>
cancel                help            set ncpus=     end             info           
zonecfg:zona1:capped-memory> set ncpus=0.5      Configuro el limite de cpu al 50%.
zonecfg:zona1:capped-memory> end
zonecfg:zona1> commit


jueves, 31 de julio de 2014

Virtualización en Solaris (Solaris Zones) Parte I

Virtualización en Solaris (Solaris Zones)



La tecnología de zonas permite particionar el sistema operativo para incorporar varios sistemas operativos independientes  con su propio espacio de procesos, sus propios usuarios y una asignación de recursos independientes.
La tecnología de partición proporciona servicios de sistema operativo virtuales que le muestran al usuario como si hubiese varias instancias de Solaris en ejecución. Esto permite una administración mas granular y poder hacer funcionar en el mismo servidor físico, aplicaciones incompatibles. Ej: dos servidores web en el mismo puerto.
Cada zona contiene:
*        Propia contraseña root.
*        Su propio espacio de procesos y sistemas de archivos y solo se puede interactuar.



  • Caracteristicas de las zonas:
  1. Seguridad:  los servicios de red se pueden ejecutar en una zona para limitar posibles daños en caso de una violación de la seguridad. El reinicion o cierre de una zona no afecta a las otra zonas.
  2. Aislamiento: las zonas permiten implementar varias aplicaciones en la misma maquina y cada zona esta aislada de otra.
  3. Granularidad: las zonas pueden proporcionar aislamiento con un neviel de granularidad arbritario. Se pueden tener todas las zonas que se quiera y granular los sistemas.
  4. Transparencia: las zonas presentan las mismas API y el mismo entorno que el sistema solaris.  

  • Conceptos sobre las zonas:
  1. Tipos de zonas
  2. Demonios de zonas.
  3. Sistema de archivos de zonas.
  4. Configuracion de red de Zonas.
  5. Estados de las zonas.

1. Tipos de zonas:

Solo se admiten dos tipos de zonas:
La zona global: es única en el sistema operativo. Desde esta zona se permite configurar, instalar, desinstalar o arrancar otras zonas.  Es la única zona que se arranca desde el hardware del sistema y tiene la base de datos de todo el hardware.  Esta zona contiene todos los paquetes de instalación de sistema operativo. Procesos de la zona global pueden intercartuar con alguna zona, pero no alrevez.
Zona no global: estas zonas tienen instalados un subconjunto de los paquetes de software de solaris. Tambien pueden contener los paquetes de software de solaris compartidos de la zona global. Desde estas no se ven otras zonas ni tampoco se puede configurar ella misma.

2. Demonios de las zonas:

El sistema utiliza dos demonios para controlar el funcionamiento de las zonas: zoneadmd y zsched. El demonio zoneadmd es el proceso principal para administrar la plataforma cirtual de la zona. Existe un proceso zoneadmd por cada zona en el sistema. Este demonio se encarga de:
- Administrar el arranque y cierre de las zonas.
- Asignar el ID de zona e iniciar el proceso zsched.
- Establecer los controles de los recursos en toda la zona.
- Preparar los dispositivos de la zona como se especifica en la configuración de ésta.
- Abrir y activar las interfaces de red virtuales.
- Montar sistemas de archivos de bucle y convencionales.

Si el demonio zoneadmd no está en ejecución, el comando zoneadm lo inicia.

3.

4. Configuracion de red de la zonas:

Cada zona no global puede contener una o varias direcciones IP. Estas interfaces están asociadas a la interfaz física a travez de sub interfaces. Las interfaces configuradas con el comando zonecfg se activan y se situan automáticamente en la zona cuando arranca. El comando ifconfig puede utilizarse para agregar o suprimir las interfaces lógicas. SOLO EL ADMINISTRADOR DE LA ZONA GLOBAL PUEDE MODIFICAR LA CONFIGURACION DE LAS INTERFACES Y RUTAS DE RED.
IPMP se puede configurar en la zona global y ampliar su funcionalidad a las zonas no globales situando las direcciones IP de la zona en un grupo IPMP cuando se configura la zona.




5. Estados de las zonas:

Los posibles estados de las zonas son:
- Indefinida: cuando la configuración de la zona no se ha finalizado o cuando la configuración de la zona se ha borrado.
- Configurada: la configuración de la zona ha finalizado.
- Inclompleta: es un estado de transición entre la instalación y desinstalación.
- Instalada: la zona ya se ha instalado y la instancia esta lista.
- Preparada: es una etapa donde se han abierto ya las interfaces de red y se montan los sistemas de archivos. Todavía no se ha iniciado ningún proceso.
- Ejecucion: la zona ya tiene procesos de usuario ejecutándose.
- En proceso de cierre: es un proceso de transición y aparecen cuando una zona se esta deteniendo.

  • Configuracion de las zonas: es preciso realizar estas tareas:
- Identificar los componentes que compondrán la zona.
- Configurar la zona.
- Verificar y confirmar (commit) la zona configurada.

  • Identificación de los componentes de la zona
- Un nombre de zona.
- Una ruta de acceso al sistema de archivo raíz de la zona.
- Las interfaces de red de las zonas.
- Los sistemas de archivos montados en las zonas.
- Los depósitos configurados en las zonas.

  • Asignación del espacio para los sistemas de archivos:
Las zonas no tienen limetes de espacio de disco. El administrador de cada zona es el encargado de espacio que ésta ocupa. El espacio que la zona ocupa depende los paquetes de software y aplicaciones que estén instaladas dentro de la misma.
Como regla general se necesitan 100 MB por cada zona cuando se instalan los paquetes normales. Ademas se puede utilizar cualquel lugar del disco para aalmacenar las zonas.
Se recomienda asignar 40 MB de RAM mas por cada zona, pero no es obligatorio en maquinas donde el espacio de intercambio es suficiente.

Click aquí para ingresar a las Segunda parte.